From 98ff58c39e2338bdd4a4c064cc76c111a11d55d0 Mon Sep 17 00:00:00 2001 From: Park Byung Eun Date: Sat, 11 Jul 2020 21:09:04 +0900 Subject: [PATCH] 0710 sync --- .vscode/settings.json | 2 +- angular.json | 41 +- config/custom.webpack.config.js | 19 +- package-lock.json | 1175 +++++++------ package.json | 95 +- src/app/app-provider.module.ts | 13 +- src/app/app-routing.module.ts | 4 +- src/app/app.component.ts | 48 +- src/app/app.module.ts | 102 +- src/app/app.theme.scss | 2 +- .../dialogs/account/account.dialog.module.ts | 48 + src/app/dialogs/account/components/index.ts | 3 + .../components/settings.dialog.component.html | 471 +++++ .../components/settings.dialog.component.scss | 224 +++ .../settings.dialog.component.spec.ts | 26 + .../components/settings.dialog.component.ts | 189 ++ .../default-dialog.layout.component.html | 20 +- .../default-dialog.layout.component.scss | 10 + .../default-dialog.layout.component.ts | 7 +- .../default-drawer.layout.component.html | 32 + .../default-drawer.layout.component.scss | 35 + .../default-drawer.layout.component.spec.ts | 26 + .../default-drawer.layout.component.ts | 45 + .../components/default.layout.component.html | 237 ++- .../components/default.layout.component.scss | 316 ++-- .../components/default.layout.component.ts | 226 ++- src/app/layouts/components/index.ts | 2 + .../components/no-navi.layout.component.scss | 1 + .../components/selector.layout.component.html | 5 +- .../components/selector.layout.component.scss | 17 + .../components/selector.layout.component.ts | 12 +- .../layouts/components/top-bar.component.html | 2 +- .../layouts/components/top-bar.component.scss | 2 +- .../layouts/components/top-bar.component.ts | 60 +- src/app/layouts/layouts.module.ts | 21 +- src/app/models/group-open-info.ts | 4 + src/app/models/login-session.ts | 2 + .../account/account-routing.page.module.ts | 5 + .../components/login.page.component.ts | 5 +- .../components/logout.page.component.html | 1 + .../components/logout.page.component.scss | 6 + .../components/logout.page.component.spec.ts} | 12 +- .../components/logout.page.component.ts | 30 + src/app/pages/chat/chat.page.module.ts | 2 + .../components/chat-room.page.component.html | 66 +- .../components/chat-room.page.component.scss | 33 + .../components/chat-room.page.component.ts | 62 +- .../chat/components/index.page.component.html | 40 +- .../chat/components/index.page.component.scss | 21 + .../components/sidenav.page.component.html | 53 +- .../components/sidenav.page.component.scss | 53 + .../chat/components/sidenav.page.component.ts | 61 +- src/app/pages/chat/models/draw-info.ts | 6 + src/app/pages/chat/models/search-info.ts | 4 + src/app/pages/chat/types/chat-draw.type.ts | 9 + .../components/index.page.component.html | 42 +- .../components/index.page.component.scss | 105 +- .../group/components/index.page.component.ts | 182 +- .../components/sidenav.page.component.html | 49 +- .../components/sidenav.page.component.scss | 5 +- .../components/sidenav.page.component.ts | 86 +- src/app/pages/group/group.page.module.ts | 2 + src/app/pages/group/types/sort-view.type.ts | 5 + .../components/index.page.component.html | 9 +- .../components/index.page.component.scss | 33 + .../components/index.page.component.html | 5 +- .../components/index.page.component.scss | 1 + .../components/index.page.component.ts | 53 +- .../components/sidenav.page.component.html | 23 +- .../components/sidenav.page.component.ts | 66 +- .../organization/organization.page.module.ts | 17 +- .../account/account.section.module.ts | 64 +- .../component-ui/login.component.html | 127 -- .../component-ui/login.component.scss | 160 -- .../component-ui/login.component.spec.ts | 92 - .../component-ui/login.component.ts | 110 -- .../components/login.section.component.html | 67 - .../components/login.section.component.scss | 117 -- .../components/login.section.component.ts | 174 -- src/app/sections/chat/chat.section.module.ts | 27 +- .../chat-search.section.component.html | 26 +- .../chat-search.section.component.scss | 78 + .../chat-search.section.component.ts | 23 +- .../chat-list-item.component.html | 64 - .../chat-list-item.component.spec.ts | 25 - .../component-ui/chat-list-item.component.ts | 63 - .../component-ui/expansion.component.html | 63 - .../component-ui/expansion.component.scss | 0 .../component-ui/expansion.component.ts | 177 -- .../chat/components/component-ui/index.ts | 10 - .../components/form.section.component.html | 270 +-- .../components/form.section.component.scss | 60 + .../chat/components/form.section.component.ts | 427 ++++- .../components/info.section.component.html | 169 +- .../components/info.section.component.scss | 71 +- .../chat/components/info.section.component.ts | 203 ++- .../components/list.section.component.html | 26 +- .../components/list.section.component.scss | 2 + .../chat/components/list.section.component.ts | 347 +--- .../chat/components/list.section.strategy.ts | 31 - .../components/message.section.component.html | 81 +- .../components/message.section.component.scss | 64 + .../components/message.section.component.ts | 557 +++++- .../components/search.section.component.html | 30 +- .../components/search.section.component.scss | 33 + .../components/search.section.component.ts | 57 +- .../dialogs/clipboard.dialog.component.html | 26 + .../dialogs/clipboard.dialog.component.scss | 59 + .../clipboard.dialog.component.spec.ts} | 12 +- .../dialogs/clipboard.dialog.component.ts | 80 + .../chat/dialogs/create.dialog.component.html | 183 +- .../chat/dialogs/create.dialog.component.scss | 148 ++ .../chat/dialogs/create.dialog.component.ts | 134 +- .../dialogs/file-viewer.dialog.component.html | 17 + .../file-viewer.dialog.component.scss} | 0 .../file-viewer.dialog.component.spec.ts | 27 + .../dialogs/file-viewer.dialog.component.ts | 173 ++ .../dialogs/forward.dialog.component.html | 142 ++ .../dialogs/forward.dialog.component.scss | 74 + .../dialogs/forward.dialog.component.spec.ts | 26 + .../chat/dialogs/forward.dialog.component.ts | 356 ++++ src/app/sections/chat/dialogs/index.ts | 14 +- .../dialogs/setting.dialog.component.html | 51 + .../dialogs/setting.dialog.component.scss | 42 + .../dialogs/setting.dialog.component.spec.ts | 26 + .../chat/dialogs/setting.dialog.component.ts | 140 ++ .../dialogs/text-detail.dialog.component.html | 45 + .../dialogs/text-detail.dialog.component.scss | 75 + .../text-detail.dialog.component.spec.ts} | 10 +- .../dialogs/text-detail.dialog.component.ts | 166 ++ .../trans-detail.dialog.component.html | 45 + .../trans-detail.dialog.component.scss | 75 + .../trans-detail.dialog.component.spec.ts | 26 + .../dialogs/trans-detail.dialog.component.ts | 129 ++ .../drawers/add-group.drawer.component.html | 45 + .../drawers/add-group.drawer.component.scss | 31 + .../add-group.drawer.component.spec.ts | 26 + .../drawers/add-group.drawer.component.ts | 268 +++ .../drawers/add-users.drawer.component.html | 56 + .../drawers/add-users.drawer.component.scss | 24 + .../add-users.drawer.component.spec.ts | 26 + .../drawers/add-users.drawer.component.ts | 312 ++++ .../drawers/attach-data.drawer.component.html | 208 +++ .../drawers/attach-data.drawer.component.scss | 146 ++ .../attach-data.drawer.component.spec.ts | 26 + .../drawers/attach-data.drawer.component.ts | 485 ++++++ src/app/sections/chat/drawers/index.ts | 13 + .../drawers/setting.drawer.component.html | 92 + .../drawers/setting.drawer.component.scss | 70 + .../drawers/setting.drawer.component.spec.ts | 26 + .../chat/drawers/setting.drawer.component.ts | 178 ++ .../chat/drawers/users.drawer.component.html | 52 + .../chat/drawers/users.drawer.component.scss | 23 + .../drawers/users.drawer.component.spec.ts} | 12 +- .../chat/drawers/users.drawer.component.ts | 226 +++ .../dialogs/create-chat.dialog.component.html | 131 -- .../dialogs/create-chat.dialog.component.scss | 0 .../dialogs/create-chat.dialog.component.ts | 134 -- .../components/component-ui/dialogs/index.ts | 3 - .../group/components/component-ui/index.ts | 9 - .../profile-list-item.component.html | 42 - .../profile-list-item.component.scss | 101 -- .../profile-list-item.component.ts | 64 - .../component-ui/profile.component.html | 73 - .../component-ui/profile.component.scss | 77 - .../component-ui/profile.component.ts | 280 --- .../component-ui/tenant-search.component.html | 38 - .../component-ui/tenant-search.component.scss | 28 - .../component-ui/tenant-search.component.ts | 73 - src/app/sections/group/components/index.ts | 2 - .../components/info.section.component.html | 190 ++- .../components/info.section.component.scss | 116 +- .../components/info.section.component.ts | 92 +- .../components/list.section.component.html | 20 +- .../components/list.section.component.scss | 14 +- .../components/list.section.component.ts | 565 +++--- .../group/components/list.section.strategy.ts | 31 - .../components/profile.section.component.ts | 45 +- .../components/search.section.component.html | 5 - .../components/search.section.component.scss | 0 .../components/search.section.component.ts | 44 - .../select-group.section.component.html | 135 +- .../select-group.section.component.scss | 79 +- .../select-group.section.component.ts | 315 ++-- .../select-user.section.component.html | 104 +- .../select-user.section.component.scss | 16 +- .../select-user.section.component.ts | 201 ++- .../dialogs/create.dialog.component.html | 123 +- .../dialogs/create.dialog.component.scss | 40 + .../group/dialogs/create.dialog.component.ts | 190 ++- .../edit-inline-input.dialog.component.html | 8 +- .../edit-inline-input.dialog.component.scss | 10 +- .../edit-inline-input.dialog.component.ts | 53 +- .../dialogs/edit-user.dialog.component.html | 69 +- .../dialogs/edit-user.dialog.component.scss | 52 +- .../dialogs/edit-user.dialog.component.ts | 142 +- .../dialogs/manage.dialog.component.html | 92 +- .../dialogs/manage.dialog.component.scss | 80 + .../dialogs/manage.dialog.component.spec.ts | 2 +- .../group/dialogs/manage.dialog.component.ts | 346 ++-- .../sections/group/group.section.module.ts | 5 +- .../components/component-ui/index.ts | 1 - .../components/detail-table.component.html | 169 -- .../components/detail-table.component.scss | 235 --- .../components/detail-table.component.ts | 367 ---- .../sections/organization/components/index.ts | 3 +- .../components/member-list.component.html | 220 ++- .../components/member-list.component.scss | 141 +- .../components/member-list.component.ts | 308 +++- .../components/tree.section.component.html | 4 - .../components/tree.section.component.scss | 2 - .../components/tree.section.component.ts | 101 -- .../components/tree.section.strategy.ts | 32 - .../dialogs/add-group.dialog.component.html | 33 + .../dialogs/add-group.dialog.component.scss | 18 + .../add-group.dialog.component.spec.ts | 26 + .../dialogs/add-group.dialog.component.ts | 234 +++ .../sections/organization/dialogs/index.ts | 4 + .../dialogs/profile.dialog.component.html | 27 + .../dialogs/profile.dialog.component.scss | 19 + .../dialogs/profile.dialog.component.spec.ts | 26 + .../dialogs/profile.dialog.component.ts | 153 ++ .../organization.section.module.ts | 9 +- src/app/services/app-account.service.ts | 34 + .../services/app-authentication.service.ts | 36 +- src/app/services/app-chat.service.ts | 641 ++++--- src/app/services/app-file.service.ts | 278 ++- src/app/services/app-group.service.ts | 471 +++++ src/app/services/app-native.service.ts | 9 +- src/app/services/app-notification.service.ts | 935 ++++++++++ src/app/services/app.service.ts | 155 +- src/app/store/actions.ts | 3 +- src/app/store/app/actions.ts | 5 + src/app/store/app/effects.ts | 77 +- src/app/store/authentication/effects.ts | 6 +- src/app/store/effects.ts | 7 +- src/app/store/reducers.ts | 4 +- src/app/store/room/actions.ts | 3 + src/app/store/room/effects.ts | 90 + src/app/store/room/reducers.ts | 5 + src/app/store/room/state.ts | 9 + src/app/store/state.ts | 2 + src/app/types/app-key.type.ts | 3 +- src/app/types/group-manage.type.ts | 7 + src/app/types/group-user.dialog.type.ts | 6 - src/app/types/index.ts | 3 +- src/app/types/user.type.ts | 14 + .../components/login.component.html | 29 +- .../components/login.component.ts | 55 +- src/app/ucap/chat/chat.module.ts | 10 + .../attach-downcheck.component.html | 78 + .../attach-downcheck.component.scss | 12 + .../attach-downcheck.component.spec.ts} | 12 +- .../components/attach-downcheck.component.ts | 231 +++ .../attach-file-list.component.html | 16 + .../attach-file-list.component.scss | 4 + .../attach-file-list.component.spec.ts | 32 + .../components/attach-file-list.component.ts | 191 +++ .../attach-image-list.component.html | 15 + .../attach-image-list.component.scss | 4 + .../attach-image-list.component.spec.ts | 32 + .../components/attach-image-list.component.ts | 117 ++ .../email-send.selector.component.html | 28 +- .../email-send.selector.component.scss | 23 +- .../email-send.selector.component.ts | 29 +- .../file-upload.selector.component.html | 93 +- .../file-upload.selector.component.scss | 108 +- .../file-upload.selector.component.ts | 13 +- src/app/ucap/chat/components/index.ts | 17 +- .../components/message-box.component.html | 136 +- .../components/message-box.component.scss | 262 +++ .../chat/components/message-box.component.ts | 233 ++- .../components/recent-message.component.html | 40 + .../components/recent-message.component.scss | 18 + .../recent-message.component.spec.ts | 24 + .../components/recent-message.component.ts | 39 + .../components/room-expansion.component.html | 179 +- .../components/room-expansion.component.scss | 38 + .../components/room-expansion.component.ts | 265 ++- .../components/room-expansion.strategy.ts | 31 - .../room-list-item-01.component.html | 21 + .../room-list-item-01.component.scss | 4 + .../room-list-item-01.component.spec.ts | 32 + .../components/room-list-item-01.component.ts | 187 ++ .../chat/components/room-list.component.html | 12 + .../chat/components/room-list.component.scss | 4 + .../components/room-list.component.spec.ts} | 12 +- .../chat/components/room-list.component.ts | 94 + .../components/room-setting.component.html | 77 + .../components/room-setting.component.scss | 15 + .../room-setting.component.spec.ts} | 12 +- .../chat/components/room-setting.component.ts | 138 ++ .../sticker.selector.component.html | 6 +- .../sticker.selector.component.scss | 36 +- .../components/sticker.selector.component.ts | 6 +- .../translation.selector.component.html | 116 +- .../translation.selector.component.scss | 135 +- .../translation.selector.component.ts | 200 ++- ...onent.html => expansion-01.component.html} | 124 +- .../components/expansion-01.component.scss | 56 + .../expansion-01.component.spec.ts} | 12 +- ...component.ts => expansion-01.component.ts} | 381 +++-- .../components/expansion-02.component.html | 55 + .../components/expansion-02.component.scss | 58 + .../components/expansion-02.component.spec.ts | 32 + .../components/expansion-02.component.ts | 425 +++++ .../group/components/expansion.component.scss | 27 - .../group/components/expansion.strategy.ts | 31 - src/app/ucap/group/components/index.ts | 16 +- .../components/name-input.component.html | 43 + .../components/name-input.component.scss | 26 + ...t.spec.ts => name-input.component.spec.ts} | 12 +- .../group/components/name-input.component.ts | 127 ++ .../profile-image-01.component.html | 9 + .../profile-image-01.component.scss | 6 + .../profile-image-01.component.spec.ts | 32 + .../components/profile-image-01.component.ts | 72 + .../components/profile-list-01.component.html | 138 ++ .../components/profile-list-01.component.scss | 39 + .../profile-list-01.component.spec.ts} | 12 +- .../components/profile-list-01.component.ts | 138 ++ .../profile-list-item-02.component.html | 58 +- .../profile-list-item-02.component.scss | 138 +- .../profile-list-item-02.component.ts | 116 +- .../profile-list-item-03.component.html | 72 + .../profile-list-item-03.component.scss | 42 + ...=> profile-list-item-03.component.spec.ts} | 0 .../profile-list-item-03.component.ts | 172 ++ .../profile-list-item.component.html | 98 -- .../profile-list-item.component.scss | 136 -- .../components/profile-list-item.component.ts | 214 --- .../components/profile-list.component.html | 157 +- .../components/profile-list.component.scss | 41 +- .../components/profile-list.component.ts | 225 ++- src/app/ucap/group/group.module.ts | 2 + src/app/ucap/organization/components/index.ts | 6 + .../components/profile-01.component.html | 18 +- .../components/profile-01.component.scss | 207 +-- .../components/profile-01.component.ts | 265 +-- .../profile-image-01.component.html | 10 + .../profile-image-01.component.scss | 6 + .../profile-image-01.component.spec.ts | 32 + .../components/profile-image-01.component.ts | 72 + .../components/profile-list.component.html | 132 +- .../components/profile-list.component.scss | 12 + .../components/profile-list.component.ts | 196 ++- .../components/profile-menu-01.component.html | 89 + .../components/profile-menu-01.component.scss | 6 + .../profile-menu-01.component.spec.ts | 32 + .../components/profile-menu-01.component.ts | 199 +++ .../profile-navigation-list.component.html | 77 + .../profile-navigation-list.component.scss | 105 ++ .../profile-navigation-list.component.spec.ts | 32 + .../profile-navigation-list.component.ts | 408 +++++ .../search-for-tenant.component.html | 3 +- .../search-for-tenant.component.scss | 12 +- .../components/search-for-tenant.component.ts | 46 +- .../components/tree.component.html | 3 +- .../components/tree.component.scss | 2 + .../organization/components/tree.component.ts | 35 +- .../organization/components/tree.strategy.ts | 32 - .../ucap/organization/organization.module.ts | 12 +- .../materialicons/materialicons-v52.woff | Bin 0 -> 102064 bytes .../materialicons/materialicons-v52.woff2 | Bin 0 -> 79448 bytes .../materialiconsoutlined-v21.woff | Bin 0 -> 105004 bytes .../materialiconsoutlined-v21.woff2 | Bin 0 -> 91208 bytes .../materialicons/materialiconsround-v21.woff | Bin 0 -> 119684 bytes .../materialiconsround-v21.woff2 | Bin 0 -> 103344 bytes .../materialicons/materialiconssharp-v22.woff | Bin 0 -> 91072 bytes .../materialiconssharp-v22.woff2 | Bin 0 -> 80464 bytes .../materialiconstwotone-v20.woff | Bin 0 -> 194468 bytes .../materialiconstwotone-v20.woff2 | Bin 0 -> 130116 bytes src/assets/i18n/en/authentication.json | 47 +- src/assets/i18n/en/call.json | 6 +- src/assets/i18n/en/chat.json | 116 +- src/assets/i18n/en/common.json | 106 +- src/assets/i18n/en/group.json | 116 +- src/assets/i18n/en/locale.json | 602 +++++++ src/assets/i18n/en/organization.json | 65 +- src/assets/i18n/ko/authentication.json | 52 +- src/assets/i18n/ko/call.json | 6 +- src/assets/i18n/ko/chat.json | 120 +- src/assets/i18n/ko/common.json | 106 +- src/assets/i18n/ko/group.json | 121 +- src/assets/i18n/ko/locale.json | 602 +++++++ src/assets/i18n/ko/organization.json | 67 +- src/assets/images/bg/bg_group_add.png | Bin 0 -> 45641 bytes src/assets/images/bg_login.png | Bin 278524 -> 0 bytes src/assets/images/file/icon_talk_doc.png | Bin 21753 -> 0 bytes src/assets/images/file/icon_talk_doc_d.png | Bin 21671 -> 0 bytes src/assets/images/file/icon_talk_exe.png | Bin 22012 -> 0 bytes src/assets/images/file/icon_talk_exe_d.png | Bin 21798 -> 0 bytes src/assets/images/file/icon_talk_file.png | Bin 21357 -> 0 bytes src/assets/images/file/icon_talk_file_d.png | Bin 21807 -> 0 bytes src/assets/images/file/icon_talk_hwp.png | Bin 21762 -> 0 bytes src/assets/images/file/icon_talk_hwp_d.png | Bin 21687 -> 0 bytes src/assets/images/file/icon_talk_img.png | Bin 21262 -> 0 bytes src/assets/images/file/icon_talk_img_d.png | Bin 21194 -> 0 bytes src/assets/images/file/icon_talk_ppt.png | Bin 21586 -> 0 bytes src/assets/images/file/icon_talk_ppt_d.png | Bin 21524 -> 0 bytes src/assets/images/file/icon_talk_video.png | Bin 1921 -> 0 bytes src/assets/images/file/icon_talk_video_d.png | Bin 20853 -> 0 bytes src/assets/images/file/icon_talk_xls.png | Bin 21681 -> 0 bytes src/assets/images/file/icon_talk_xls_d.png | Bin 21634 -> 0 bytes src/assets/images/file/icon_talk_zip.png | Bin 21425 -> 0 bytes src/assets/images/file/icon_talk_zip_d.png | Bin 21435 -> 0 bytes src/assets/images/ico/btn_checked_w72.svg | 24 + .../images/ico/btn_icon_chat_capy_g18.svg | 12 + .../images/ico/btn_icon_chat_delete_g18.svg | 15 + .../images/ico/btn_icon_chat_me_g18.svg | 18 + .../images/ico/btn_icon_chat_relay0_g18.svg | 5 + .../images/ico/btn_icon_chat_relay_g18.svg | 5 + .../images/ico/btn_icon_chat_undo_g18.svg | 7 + src/assets/images/ico/btn_list_exit_a24.svg | 18 + .../images/ico/btn_list_profile_set_a24.svg | 11 + .../images/ico/btn_list_setting_a24.svg | 16 + src/assets/images/ico/icon_alert_info_a50.svg | 14 + .../images/ico/icon_normal_chat_g60.svg | 4 + src/assets/images/ico/icon_timer_chat_g60.svg | 4 + src/assets/images/ico/img_coming_soon.png | Bin 0 -> 45216 bytes src/assets/images/ico/img_coming_soon.svg | 142 ++ src/assets/images/ico/img_nophoto.svg | 14 +- .../images/ico/img_nophoto_multiple.svg | 43 + src/assets/images/img_banner01.png | Bin 0 -> 11025 bytes src/assets/images/img_banner01_2x.png | Bin 0 -> 28680 bytes src/assets/images/img_groupphoto_36.png | Bin 1791 -> 0 bytes src/assets/images/img_groupphoto_80.png | Bin 5259 -> 0 bytes src/assets/images/img_nophoto_30.png | Bin 1331 -> 0 bytes src/assets/images/img_nophoto_36.png | Bin 1628 -> 0 bytes src/assets/images/img_nophoto_50.png | Bin 2348 -> 0 bytes src/assets/images/img_nophoto_70.png | Bin 3501 -> 0 bytes src/assets/images/img_nophoto_88.png | Bin 4573 -> 0 bytes src/assets/images/login/bg_login01.png | Bin 1805262 -> 0 bytes src/assets/images/login/bg_login02.png | Bin 3450604 -> 0 bytes src/assets/images/login/bg_login03.png | Bin 1533931 -> 0 bytes src/assets/images/logo/bg_logo_intro.png | Bin 3850 -> 0 bytes src/assets/images/logo/bg_logo_login.png | Bin 5497 -> 0 bytes src/assets/images/logo/logo_topbar.png | Bin 1926 -> 0 bytes src/assets/images/message/thumb_default.png | Bin 3714 -> 0 bytes src/assets/images/theme/theme-default.png | Bin 9813 -> 0 bytes src/assets/images/theme/theme-lgRed.png | Bin 9412 -> 0 bytes src/assets/scss/_fonts.scss | 56 + src/assets/scss/components.scss | 11 - src/assets/scss/global/_default.scss | 255 +++ src/assets/scss/global/_material-ui.scss | 515 ++++-- src/assets/scss/global/_ucap-ui.scss | 3 +- .../scss/global/ucap/_authentication.scss | 40 + src/assets/scss/global/ucap/_chat.scss | 1515 +++++++++++++++++ src/assets/scss/global/ucap/_dialog.scss | 320 ++++ src/assets/scss/global/ucap/_group.scss | 124 ++ .../scss/global/ucap/_organization.scss | 1425 +++++++++++++++- src/assets/scss/lg.scss | 4 - src/assets/scss/mixins/_dom.scss | 70 + .../scss/mixins/_ucap-organization.scss | 74 +- src/assets/scss/partials/_material-ui.scss | 3 - src/assets/scss/setting/_variables.scss | 26 + src/assets/scss/ucap.scss | 11 - src/environments/environment.hmr.ts | 36 +- src/environments/environment.prod.ts | 36 +- src/environments/environment.ts | 34 +- src/environments/environment.type.ts | 13 + .../native/native.browser.prod.ts | 8 + src/environments/native/native.browser.ts | 8 + .../native/native.renderer.prod.ts | 8 + src/environments/native/native.renderer.ts | 8 + src/environments/native/native.ts | 8 + src/index.html | 459 +++++ tsconfig.app.renderer.json | 10 + 468 files changed, 29578 insertions(+), 9309 deletions(-) create mode 100644 src/app/dialogs/account/account.dialog.module.ts create mode 100644 src/app/dialogs/account/components/index.ts create mode 100644 src/app/dialogs/account/components/settings.dialog.component.html create mode 100644 src/app/dialogs/account/components/settings.dialog.component.scss create mode 100644 src/app/dialogs/account/components/settings.dialog.component.spec.ts create mode 100644 src/app/dialogs/account/components/settings.dialog.component.ts create mode 100644 src/app/layouts/components/default-drawer.layout.component.html create mode 100644 src/app/layouts/components/default-drawer.layout.component.scss create mode 100644 src/app/layouts/components/default-drawer.layout.component.spec.ts create mode 100644 src/app/layouts/components/default-drawer.layout.component.ts create mode 100644 src/app/models/group-open-info.ts create mode 100644 src/app/pages/account/components/logout.page.component.html create mode 100644 src/app/pages/account/components/logout.page.component.scss rename src/app/{sections/account/components/login.section.component.spec.ts => pages/account/components/logout.page.component.spec.ts} (65%) create mode 100644 src/app/pages/account/components/logout.page.component.ts create mode 100644 src/app/pages/chat/models/draw-info.ts create mode 100644 src/app/pages/chat/models/search-info.ts create mode 100644 src/app/pages/chat/types/chat-draw.type.ts create mode 100644 src/app/pages/group/types/sort-view.type.ts delete mode 100644 src/app/sections/account/components/component-ui/login.component.html delete mode 100644 src/app/sections/account/components/component-ui/login.component.scss delete mode 100644 src/app/sections/account/components/component-ui/login.component.spec.ts delete mode 100644 src/app/sections/account/components/component-ui/login.component.ts delete mode 100644 src/app/sections/account/components/login.section.component.html delete mode 100644 src/app/sections/account/components/login.section.component.scss delete mode 100644 src/app/sections/account/components/login.section.component.ts delete mode 100644 src/app/sections/chat/components/component-ui/chat-list-item.component.html delete mode 100644 src/app/sections/chat/components/component-ui/chat-list-item.component.spec.ts delete mode 100644 src/app/sections/chat/components/component-ui/chat-list-item.component.ts delete mode 100644 src/app/sections/chat/components/component-ui/expansion.component.html delete mode 100644 src/app/sections/chat/components/component-ui/expansion.component.scss delete mode 100644 src/app/sections/chat/components/component-ui/expansion.component.ts delete mode 100644 src/app/sections/chat/components/component-ui/index.ts delete mode 100644 src/app/sections/chat/components/list.section.strategy.ts create mode 100644 src/app/sections/chat/dialogs/clipboard.dialog.component.html create mode 100644 src/app/sections/chat/dialogs/clipboard.dialog.component.scss rename src/app/sections/chat/{components/component-ui/expansion.component.spec.ts => dialogs/clipboard.dialog.component.spec.ts} (57%) create mode 100644 src/app/sections/chat/dialogs/clipboard.dialog.component.ts create mode 100644 src/app/sections/chat/dialogs/file-viewer.dialog.component.html rename src/app/sections/chat/{components/component-ui/chat-list-item.component.scss => dialogs/file-viewer.dialog.component.scss} (100%) create mode 100644 src/app/sections/chat/dialogs/file-viewer.dialog.component.spec.ts create mode 100644 src/app/sections/chat/dialogs/file-viewer.dialog.component.ts create mode 100644 src/app/sections/chat/dialogs/forward.dialog.component.html create mode 100644 src/app/sections/chat/dialogs/forward.dialog.component.scss create mode 100644 src/app/sections/chat/dialogs/forward.dialog.component.spec.ts create mode 100644 src/app/sections/chat/dialogs/forward.dialog.component.ts create mode 100644 src/app/sections/chat/dialogs/setting.dialog.component.html create mode 100644 src/app/sections/chat/dialogs/setting.dialog.component.scss create mode 100644 src/app/sections/chat/dialogs/setting.dialog.component.spec.ts create mode 100644 src/app/sections/chat/dialogs/setting.dialog.component.ts create mode 100644 src/app/sections/chat/dialogs/text-detail.dialog.component.html create mode 100644 src/app/sections/chat/dialogs/text-detail.dialog.component.scss rename src/app/sections/{group/components/component-ui/dialogs/create-chat.dialog.component.spec.ts => chat/dialogs/text-detail.dialog.component.spec.ts} (65%) create mode 100644 src/app/sections/chat/dialogs/text-detail.dialog.component.ts create mode 100644 src/app/sections/chat/dialogs/trans-detail.dialog.component.html create mode 100644 src/app/sections/chat/dialogs/trans-detail.dialog.component.scss create mode 100644 src/app/sections/chat/dialogs/trans-detail.dialog.component.spec.ts create mode 100644 src/app/sections/chat/dialogs/trans-detail.dialog.component.ts create mode 100644 src/app/sections/chat/drawers/add-group.drawer.component.html create mode 100644 src/app/sections/chat/drawers/add-group.drawer.component.scss create mode 100644 src/app/sections/chat/drawers/add-group.drawer.component.spec.ts create mode 100644 src/app/sections/chat/drawers/add-group.drawer.component.ts create mode 100644 src/app/sections/chat/drawers/add-users.drawer.component.html create mode 100644 src/app/sections/chat/drawers/add-users.drawer.component.scss create mode 100644 src/app/sections/chat/drawers/add-users.drawer.component.spec.ts create mode 100644 src/app/sections/chat/drawers/add-users.drawer.component.ts create mode 100644 src/app/sections/chat/drawers/attach-data.drawer.component.html create mode 100644 src/app/sections/chat/drawers/attach-data.drawer.component.scss create mode 100644 src/app/sections/chat/drawers/attach-data.drawer.component.spec.ts create mode 100644 src/app/sections/chat/drawers/attach-data.drawer.component.ts create mode 100644 src/app/sections/chat/drawers/index.ts create mode 100644 src/app/sections/chat/drawers/setting.drawer.component.html create mode 100644 src/app/sections/chat/drawers/setting.drawer.component.scss create mode 100644 src/app/sections/chat/drawers/setting.drawer.component.spec.ts create mode 100644 src/app/sections/chat/drawers/setting.drawer.component.ts create mode 100644 src/app/sections/chat/drawers/users.drawer.component.html create mode 100644 src/app/sections/chat/drawers/users.drawer.component.scss rename src/app/sections/{group/components/component-ui/tenant-search.component.spec.ts => chat/drawers/users.drawer.component.spec.ts} (57%) create mode 100644 src/app/sections/chat/drawers/users.drawer.component.ts delete mode 100644 src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.html delete mode 100644 src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.scss delete mode 100644 src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.ts delete mode 100644 src/app/sections/group/components/component-ui/dialogs/index.ts delete mode 100644 src/app/sections/group/components/component-ui/index.ts delete mode 100644 src/app/sections/group/components/component-ui/profile-list-item.component.html delete mode 100644 src/app/sections/group/components/component-ui/profile-list-item.component.scss delete mode 100644 src/app/sections/group/components/component-ui/profile-list-item.component.ts delete mode 100644 src/app/sections/group/components/component-ui/profile.component.html delete mode 100644 src/app/sections/group/components/component-ui/profile.component.scss delete mode 100644 src/app/sections/group/components/component-ui/profile.component.ts delete mode 100644 src/app/sections/group/components/component-ui/tenant-search.component.html delete mode 100644 src/app/sections/group/components/component-ui/tenant-search.component.scss delete mode 100644 src/app/sections/group/components/component-ui/tenant-search.component.ts delete mode 100644 src/app/sections/group/components/list.section.strategy.ts delete mode 100644 src/app/sections/group/components/search.section.component.html delete mode 100644 src/app/sections/group/components/search.section.component.scss delete mode 100644 src/app/sections/group/components/search.section.component.ts delete mode 100644 src/app/sections/organization/components/component-ui/index.ts delete mode 100644 src/app/sections/organization/components/detail-table.component.html delete mode 100644 src/app/sections/organization/components/detail-table.component.scss delete mode 100644 src/app/sections/organization/components/detail-table.component.ts delete mode 100644 src/app/sections/organization/components/tree.section.component.html delete mode 100644 src/app/sections/organization/components/tree.section.component.scss delete mode 100644 src/app/sections/organization/components/tree.section.component.ts delete mode 100644 src/app/sections/organization/components/tree.section.strategy.ts create mode 100644 src/app/sections/organization/dialogs/add-group.dialog.component.html create mode 100644 src/app/sections/organization/dialogs/add-group.dialog.component.scss create mode 100644 src/app/sections/organization/dialogs/add-group.dialog.component.spec.ts create mode 100644 src/app/sections/organization/dialogs/add-group.dialog.component.ts create mode 100644 src/app/sections/organization/dialogs/index.ts create mode 100644 src/app/sections/organization/dialogs/profile.dialog.component.html create mode 100644 src/app/sections/organization/dialogs/profile.dialog.component.scss create mode 100644 src/app/sections/organization/dialogs/profile.dialog.component.spec.ts create mode 100644 src/app/sections/organization/dialogs/profile.dialog.component.ts create mode 100644 src/app/services/app-account.service.ts create mode 100644 src/app/services/app-group.service.ts create mode 100644 src/app/services/app-notification.service.ts create mode 100644 src/app/store/room/actions.ts create mode 100644 src/app/store/room/effects.ts create mode 100644 src/app/store/room/reducers.ts create mode 100644 src/app/store/room/state.ts create mode 100644 src/app/types/group-manage.type.ts delete mode 100644 src/app/types/group-user.dialog.type.ts create mode 100644 src/app/types/user.type.ts create mode 100644 src/app/ucap/chat/components/attach-downcheck.component.html create mode 100644 src/app/ucap/chat/components/attach-downcheck.component.scss rename src/app/{sections/group/components/component-ui/profile-list-item.component.spec.ts => ucap/chat/components/attach-downcheck.component.spec.ts} (55%) create mode 100644 src/app/ucap/chat/components/attach-downcheck.component.ts create mode 100644 src/app/ucap/chat/components/attach-file-list.component.html create mode 100644 src/app/ucap/chat/components/attach-file-list.component.scss create mode 100644 src/app/ucap/chat/components/attach-file-list.component.spec.ts create mode 100644 src/app/ucap/chat/components/attach-file-list.component.ts create mode 100644 src/app/ucap/chat/components/attach-image-list.component.html create mode 100644 src/app/ucap/chat/components/attach-image-list.component.scss create mode 100644 src/app/ucap/chat/components/attach-image-list.component.spec.ts create mode 100644 src/app/ucap/chat/components/attach-image-list.component.ts create mode 100644 src/app/ucap/chat/components/recent-message.component.html create mode 100644 src/app/ucap/chat/components/recent-message.component.scss create mode 100644 src/app/ucap/chat/components/recent-message.component.spec.ts create mode 100644 src/app/ucap/chat/components/recent-message.component.ts delete mode 100644 src/app/ucap/chat/components/room-expansion.strategy.ts create mode 100644 src/app/ucap/chat/components/room-list-item-01.component.html create mode 100644 src/app/ucap/chat/components/room-list-item-01.component.scss create mode 100644 src/app/ucap/chat/components/room-list-item-01.component.spec.ts create mode 100644 src/app/ucap/chat/components/room-list-item-01.component.ts create mode 100644 src/app/ucap/chat/components/room-list.component.html create mode 100644 src/app/ucap/chat/components/room-list.component.scss rename src/app/{sections/group/components/component-ui/profile.component.spec.ts => ucap/chat/components/room-list.component.spec.ts} (66%) create mode 100644 src/app/ucap/chat/components/room-list.component.ts create mode 100644 src/app/ucap/chat/components/room-setting.component.html create mode 100644 src/app/ucap/chat/components/room-setting.component.scss rename src/app/{sections/organization/components/detail-table.component.spec.ts => ucap/chat/components/room-setting.component.spec.ts} (52%) create mode 100644 src/app/ucap/chat/components/room-setting.component.ts rename src/app/ucap/group/components/{expansion.component.html => expansion-01.component.html} (50%) create mode 100644 src/app/ucap/group/components/expansion-01.component.scss rename src/app/{sections/organization/components/tree.section.component.spec.ts => ucap/group/components/expansion-01.component.spec.ts} (66%) rename src/app/ucap/group/components/{expansion.component.ts => expansion-01.component.ts} (62%) create mode 100644 src/app/ucap/group/components/expansion-02.component.html create mode 100644 src/app/ucap/group/components/expansion-02.component.scss create mode 100644 src/app/ucap/group/components/expansion-02.component.spec.ts create mode 100644 src/app/ucap/group/components/expansion-02.component.ts delete mode 100644 src/app/ucap/group/components/expansion.component.scss delete mode 100644 src/app/ucap/group/components/expansion.strategy.ts create mode 100644 src/app/ucap/group/components/name-input.component.html create mode 100644 src/app/ucap/group/components/name-input.component.scss rename src/app/ucap/group/components/{expansion.component.spec.ts => name-input.component.spec.ts} (67%) create mode 100644 src/app/ucap/group/components/name-input.component.ts create mode 100644 src/app/ucap/group/components/profile-image-01.component.html create mode 100644 src/app/ucap/group/components/profile-image-01.component.scss create mode 100644 src/app/ucap/group/components/profile-image-01.component.spec.ts create mode 100644 src/app/ucap/group/components/profile-image-01.component.ts create mode 100644 src/app/ucap/group/components/profile-list-01.component.html create mode 100644 src/app/ucap/group/components/profile-list-01.component.scss rename src/app/{sections/group/components/search.section.component.spec.ts => ucap/group/components/profile-list-01.component.spec.ts} (66%) create mode 100644 src/app/ucap/group/components/profile-list-01.component.ts create mode 100644 src/app/ucap/group/components/profile-list-item-03.component.html create mode 100644 src/app/ucap/group/components/profile-list-item-03.component.scss rename src/app/ucap/group/components/{profile-list-item.component.spec.ts => profile-list-item-03.component.spec.ts} (100%) create mode 100644 src/app/ucap/group/components/profile-list-item-03.component.ts delete mode 100644 src/app/ucap/group/components/profile-list-item.component.html delete mode 100644 src/app/ucap/group/components/profile-list-item.component.scss delete mode 100644 src/app/ucap/group/components/profile-list-item.component.ts create mode 100644 src/app/ucap/organization/components/profile-image-01.component.html create mode 100644 src/app/ucap/organization/components/profile-image-01.component.scss create mode 100644 src/app/ucap/organization/components/profile-image-01.component.spec.ts create mode 100644 src/app/ucap/organization/components/profile-image-01.component.ts create mode 100644 src/app/ucap/organization/components/profile-menu-01.component.html create mode 100644 src/app/ucap/organization/components/profile-menu-01.component.scss create mode 100644 src/app/ucap/organization/components/profile-menu-01.component.spec.ts create mode 100644 src/app/ucap/organization/components/profile-menu-01.component.ts create mode 100644 src/app/ucap/organization/components/profile-navigation-list.component.html create mode 100644 src/app/ucap/organization/components/profile-navigation-list.component.scss create mode 100644 src/app/ucap/organization/components/profile-navigation-list.component.spec.ts create mode 100644 src/app/ucap/organization/components/profile-navigation-list.component.ts delete mode 100644 src/app/ucap/organization/components/tree.strategy.ts create mode 100644 src/assets/fonts/materialicons/materialicons-v52.woff create mode 100644 src/assets/fonts/materialicons/materialicons-v52.woff2 create mode 100644 src/assets/fonts/materialicons/materialiconsoutlined-v21.woff create mode 100644 src/assets/fonts/materialicons/materialiconsoutlined-v21.woff2 create mode 100644 src/assets/fonts/materialicons/materialiconsround-v21.woff create mode 100644 src/assets/fonts/materialicons/materialiconsround-v21.woff2 create mode 100644 src/assets/fonts/materialicons/materialiconssharp-v22.woff create mode 100644 src/assets/fonts/materialicons/materialiconssharp-v22.woff2 create mode 100644 src/assets/fonts/materialicons/materialiconstwotone-v20.woff create mode 100644 src/assets/fonts/materialicons/materialiconstwotone-v20.woff2 create mode 100644 src/assets/i18n/en/locale.json create mode 100644 src/assets/i18n/ko/locale.json create mode 100644 src/assets/images/bg/bg_group_add.png delete mode 100644 src/assets/images/bg_login.png delete mode 100644 src/assets/images/file/icon_talk_doc.png delete mode 100644 src/assets/images/file/icon_talk_doc_d.png delete mode 100644 src/assets/images/file/icon_talk_exe.png delete mode 100644 src/assets/images/file/icon_talk_exe_d.png delete mode 100644 src/assets/images/file/icon_talk_file.png delete mode 100644 src/assets/images/file/icon_talk_file_d.png delete mode 100644 src/assets/images/file/icon_talk_hwp.png delete mode 100644 src/assets/images/file/icon_talk_hwp_d.png delete mode 100644 src/assets/images/file/icon_talk_img.png delete mode 100644 src/assets/images/file/icon_talk_img_d.png delete mode 100644 src/assets/images/file/icon_talk_ppt.png delete mode 100644 src/assets/images/file/icon_talk_ppt_d.png delete mode 100644 src/assets/images/file/icon_talk_video.png delete mode 100644 src/assets/images/file/icon_talk_video_d.png delete mode 100644 src/assets/images/file/icon_talk_xls.png delete mode 100644 src/assets/images/file/icon_talk_xls_d.png delete mode 100644 src/assets/images/file/icon_talk_zip.png delete mode 100644 src/assets/images/file/icon_talk_zip_d.png create mode 100644 src/assets/images/ico/btn_checked_w72.svg create mode 100644 src/assets/images/ico/btn_icon_chat_capy_g18.svg create mode 100644 src/assets/images/ico/btn_icon_chat_delete_g18.svg create mode 100644 src/assets/images/ico/btn_icon_chat_me_g18.svg create mode 100644 src/assets/images/ico/btn_icon_chat_relay0_g18.svg create mode 100644 src/assets/images/ico/btn_icon_chat_relay_g18.svg create mode 100644 src/assets/images/ico/btn_icon_chat_undo_g18.svg create mode 100644 src/assets/images/ico/btn_list_exit_a24.svg create mode 100644 src/assets/images/ico/btn_list_profile_set_a24.svg create mode 100644 src/assets/images/ico/btn_list_setting_a24.svg create mode 100644 src/assets/images/ico/icon_alert_info_a50.svg create mode 100644 src/assets/images/ico/icon_normal_chat_g60.svg create mode 100644 src/assets/images/ico/icon_timer_chat_g60.svg create mode 100644 src/assets/images/ico/img_coming_soon.png create mode 100644 src/assets/images/ico/img_coming_soon.svg create mode 100644 src/assets/images/ico/img_nophoto_multiple.svg create mode 100644 src/assets/images/img_banner01.png create mode 100644 src/assets/images/img_banner01_2x.png delete mode 100644 src/assets/images/img_groupphoto_36.png delete mode 100644 src/assets/images/img_groupphoto_80.png delete mode 100644 src/assets/images/img_nophoto_30.png delete mode 100644 src/assets/images/img_nophoto_36.png delete mode 100644 src/assets/images/img_nophoto_50.png delete mode 100644 src/assets/images/img_nophoto_70.png delete mode 100644 src/assets/images/img_nophoto_88.png delete mode 100644 src/assets/images/login/bg_login01.png delete mode 100644 src/assets/images/login/bg_login02.png delete mode 100644 src/assets/images/login/bg_login03.png delete mode 100644 src/assets/images/logo/bg_logo_intro.png delete mode 100644 src/assets/images/logo/bg_logo_login.png delete mode 100644 src/assets/images/logo/logo_topbar.png delete mode 100644 src/assets/images/message/thumb_default.png delete mode 100644 src/assets/images/theme/theme-default.png delete mode 100644 src/assets/images/theme/theme-lgRed.png delete mode 100644 src/assets/scss/components.scss create mode 100644 src/assets/scss/global/ucap/_dialog.scss delete mode 100644 src/assets/scss/lg.scss delete mode 100644 src/assets/scss/partials/_material-ui.scss delete mode 100644 src/assets/scss/ucap.scss create mode 100644 src/environments/native/native.browser.prod.ts create mode 100644 src/environments/native/native.browser.ts create mode 100644 src/environments/native/native.renderer.prod.ts create mode 100644 src/environments/native/native.renderer.ts create mode 100644 src/environments/native/native.ts create mode 100644 tsconfig.app.renderer.json diff --git a/.vscode/settings.json b/.vscode/settings.json index 600b409..318cb70 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,5 +12,5 @@ }, "go.testFlags": ["-v"], "go.testTimeout": "100s", - "debug.node.autoAttach": "off" + "debug.node.autoAttach": "on" } diff --git a/angular.json b/angular.json index 6fd5534..ab0f452 100644 --- a/angular.json +++ b/angular.json @@ -37,6 +37,10 @@ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" + }, + { + "replace": "src/environments/native/native.ts", + "with": "src/environments/native/native.browser.prod.ts" } ], "optimization": true, @@ -51,7 +55,7 @@ { "type": "initial", "maximumWarning": "2mb", - "maximumError": "5mb" + "maximumError": "6mb" }, { "type": "anyComponentStyle", @@ -60,16 +64,19 @@ } ] }, - "production-es5": { + "production-renderer": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" + }, + { + "replace": "src/environments/native/native.ts", + "with": "src/environments/native/native.renderer.prod.ts" } ], - "es5BrowserSupport": true, - "outputPath": "dist/ucap-lg-web-es5", - "tsConfig": "tsconfig.app.es5.json", + "outputPath": "dist/ucap-lg-renderer", + "tsConfig": "tsconfig.app.renderer.json", "optimization": true, "outputHashing": "all", "sourceMap": false, @@ -82,7 +89,7 @@ { "type": "initial", "maximumWarning": "2mb", - "maximumError": "5mb" + "maximumError": "6mb" }, { "type": "anyComponentStyle", @@ -96,18 +103,26 @@ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.hmr.ts" + }, + { + "replace": "src/environments/native/native.ts", + "with": "src/environments/native/native.browser.ts" } ] }, - "hmr-es5": { + "hmr-renderer": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.hmr.ts" + }, + { + "replace": "src/environments/native/native.ts", + "with": "src/environments/native/native.renderer.ts" } ], - "es5BrowserSupport": true, - "tsConfig": "tsconfig.app.es5.json" + "es5BrowserSupport": false, + "tsConfig": "tsconfig.app.renderer.json" } } }, @@ -121,16 +136,16 @@ "production": { "browserTarget": "ucap-lg-web:build:production" }, - "production-5": { - "browserTarget": "ucap-lg-web:build:production-es5" + "production-renderer": { + "browserTarget": "ucap-lg-web:build:production-renderer" }, "hmr": { "hmr": true, "browserTarget": "ucap-lg-web:build:hmr" }, - "hmr-es5": { + "hmr-renderer": { "hmr": true, - "browserTarget": "ucap-lg-web:build:hmr-es5" + "browserTarget": "ucap-lg-web:build:hmr-renderer" } } }, diff --git a/config/custom.webpack.config.js b/config/custom.webpack.config.js index e6d19be..78356a9 100644 --- a/config/custom.webpack.config.js +++ b/config/custom.webpack.config.js @@ -1,13 +1,20 @@ const path = require('path'); module.exports = (config, options) => { - const PRODUCTION = process.env.NODE_ENV === 'production'; + const PRODUCTION = + !!process.env.NODE_ENV && 'production' === process.env.NODE_ENV; + const RENDERER = + !!process.env.NATIVE_ENV && 'renderer' === process.env.NATIVE_ENV; - config.target = 'web'; - config.node = { - global: true, - fs: 'empty' - }; + if (RENDERER) { + config.target = 'electron-renderer'; + } else { + config.target = 'web'; + config.node = { + global: true, + fs: 'empty' + }; + } config.resolve.alias = { ...config.resolve.alias, diff --git a/package-lock.json b/package-lock.json index b161522..9d4c475 100644 --- a/package-lock.json +++ b/package-lock.json @@ -348,66 +348,33 @@ } }, "@angular-devkit/schematics": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/schematics/-/schematics-9.0.7.tgz", - "integrity": "sha512-ryPC+l24f3gX5DFMTLkDM/q2Kp6LPzBn6400k7j4qVdb1cIrZx+JUQd7F4iAksTTkX15EQPanptQXeztUrl9Ng==", + "version": "9.1.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/schematics/-/schematics-9.1.11.tgz", + "integrity": "sha512-1A3Oryhl8hpibJK2J5j2FYNzjfvBJcR4wuNRKzl27kBvVsdRXLQzMD3aAgqFvlMgUWhloQs4tZwuinu0E2VP1A==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "ora": "4.0.2", - "rxjs": "6.5.3" + "@angular-devkit/core": "9.1.11", + "ora": "4.0.3", + "rxjs": "6.5.4" }, "dependencies": { "@angular-devkit/core": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.0.7.tgz", - "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==", + "version": "9.1.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", + "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", "dev": true, "requires": { - "ajv": "6.10.2", - "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.4", - "rxjs": "6.5.3", + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", "source-map": "0.7.3" } }, - "ajv": { - "version": "6.10.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "magic-string": { - "version": "0.25.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/magic-string/-/magic-string-0.25.4.tgz", - "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "rxjs": { - "version": "6.5.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -416,9 +383,9 @@ } }, "@angular/animations": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/animations/-/animations-9.0.7.tgz", - "integrity": "sha512-74gY7onajmmnksy5E0/32bFv3B9NuWxV64kqD15YjGrh8AWe1BHt5enQI+rJ2tO8m2DKnwZsctis6k0Kcy+YKQ==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/animations/-/animations-9.1.12.tgz", + "integrity": "sha512-tphpf9QHnOPoL2Jl7KpR+R5aHNW3oifLEmRUTajJYJGvo1uzdUDE82+V9OGOinxJsYseCth9gYJhN24aYTB9NA==" }, "@angular/cdk": { "version": "9.2.4", @@ -429,68 +396,56 @@ } }, "@angular/cli": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/cli/-/cli-9.0.7.tgz", - "integrity": "sha512-/9CUNSSVyTtTNUADZ/VXJDEdhineMN/rfd35w6VsHiob49tKkeOTggaoiSne3RY4VCTqlo7GGf4KhhVXEMGnDQ==", + "version": "9.1.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/cli/-/cli-9.1.11.tgz", + "integrity": "sha512-EGDd9ZCGitn6F/x5sK7M1PmdfBg+8LoZ6nrfYEhWY8c2CMCVfVrLPLHq6r8uFiflcvd/nlcrVZQ52zt4a2vDaQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.7", - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7", - "@schematics/angular": "9.0.7", - "@schematics/update": "0.900.7", + "@angular-devkit/architect": "0.901.11", + "@angular-devkit/core": "9.1.11", + "@angular-devkit/schematics": "9.1.11", + "@schematics/angular": "9.1.11", + "@schematics/update": "0.901.11", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", - "debug": "^4.1.1", + "debug": "4.1.1", "ini": "1.3.5", - "inquirer": "7.0.0", - "npm-package-arg": "6.1.1", - "npm-pick-manifest": "3.0.2", - "open": "7.0.0", - "pacote": "9.5.8", + "inquirer": "7.1.0", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.0.0", + "open": "7.0.3", + "pacote": "9.5.12", "read-package-tree": "5.3.1", - "rimraf": "3.0.0", - "semver": "6.3.0", + "rimraf": "3.0.2", + "semver": "7.1.3", "symbol-observable": "1.2.0", - "universal-analytics": "^0.4.20", - "uuid": "^3.3.2" + "universal-analytics": "0.4.20", + "uuid": "7.0.2" }, "dependencies": { "@angular-devkit/architect": { - "version": "0.900.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/architect/-/architect-0.900.7.tgz", - "integrity": "sha512-hfiTVYc72kzbXrzK4tea6jnTDnSKpE1D+vEptBXN2tdXEVNEAQI5Qm5L1zVDtt16UdqoUTUypIgUc9jcNH1mUQ==", + "version": "0.901.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/architect/-/architect-0.901.11.tgz", + "integrity": "sha512-RmYOq1VEJdQLzwMno+C56WtgscAtoR/7i4tX5b5VxRa2RmQKTxowllYWwgrF5445VGUqzap9H6zJFXvlY2FA0w==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "rxjs": "6.5.3" + "@angular-devkit/core": "9.1.11", + "rxjs": "6.5.4" } }, "@angular-devkit/core": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.0.7.tgz", - "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==", + "version": "9.1.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", + "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", "dev": true, "requires": { - "ajv": "6.10.2", - "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.4", - "rxjs": "6.5.3", + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", "source-map": "0.7.3" } }, - "ajv": { - "version": "6.10.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-colors": { "version": "4.1.1", "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -506,58 +461,68 @@ "ms": "^2.1.1" } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "magic-string": { - "version": "0.25.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/magic-string/-/magic-string-0.25.4.tgz", - "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "ms": { "version": "2.1.2", "resolved": "https://nexus.loafle.net/repository/npm-all/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "open": { + "version": "7.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/open/-/open-7.0.3.tgz", + "integrity": "sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "rxjs": { - "version": "6.5.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "semver": { + "version": "7.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "dev": true + }, + "uuid": { + "version": "7.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/uuid/-/uuid-7.0.2.tgz", + "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==", + "dev": true } } }, "@angular/common": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/common/-/common-9.0.7.tgz", - "integrity": "sha512-B58YgxZva1DBaeayOBsaUOOkoyR+GRibuNC3gfOMm2vXeW9eCNX+jvDtw767GnKm2yGzIq8wB3x6GHojN00dPw==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/common/-/common-9.1.12.tgz", + "integrity": "sha512-XSIqkbM6VV1yixF9zuzeE5eqN1VsiXS517K2VU0XgCRSAzhVhLOeKsdYjeLf7PdSu/HgW/Tr81H+isi9A9I0YA==" }, "@angular/compiler": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler/-/compiler-9.0.7.tgz", - "integrity": "sha512-hFpkuGpzxpK5h59LHHAjTFWsY6DCXZwgJFqvCuTPxWi/srvLGZRXrpC6Z1SlgHI9xxXaPfoa4uWw2VfA3BnqEg==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler/-/compiler-9.1.12.tgz", + "integrity": "sha512-suefk0OFkaJpUUKnV+phbL4T8fmVGHvzkereY5eqybQlumOez8NPL1PJcygAylh/E6OIAYm8SWookYwM6ZY9dg==" }, "@angular/compiler-cli": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler-cli/-/compiler-cli-9.0.7.tgz", - "integrity": "sha512-+RXghex63v0Vi8vpQtDpWiqpAAnrTaN3bHT5fntRenq5+Ok5vL1MJ1mzbTmBXs2tuwTqNlwMm2AlZB7G/xcDMQ==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/compiler-cli/-/compiler-cli-9.1.12.tgz", + "integrity": "sha512-bbqJ+fbY+aQejSYuHUjE1qYJCXkZBM5Hru9eN7m/j376u83MQ5jWdC290uYx+ipsXcPTa/YRZ44jpL+5cCzIrg==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -571,28 +536,59 @@ "semver": "^6.3.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "yargs": "13.1.0" + "yargs": "15.3.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "find-up": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "fs-extra": { @@ -612,14 +608,19 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "locate-path": { + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://nexus.loafle.net/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "p-limit": { @@ -632,12 +633,12 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -646,6 +647,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -659,48 +666,59 @@ "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "yargs": { - "version": "13.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/yargs/-/yargs-13.1.0.tgz", - "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "version": "15.3.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.0.0" + "yargs-parser": "^18.1.0" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "18.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -710,9 +728,9 @@ } }, "@angular/core": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/core/-/core-9.0.7.tgz", - "integrity": "sha512-E9XZH5Dl+9MWG3MDC6wrKllhA8Rljpz66HOIeqKv2fHPed8kzuJZU3WJWLtbhDAXFwtGTyTZ4c82ZLSmqwTorg==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/core/-/core-9.1.12.tgz", + "integrity": "sha512-WVA/eh3fzjx0apOzkKot4YRRUsGkHj50zFQWrAOMgivGaj1YVrvhf+m3hpglj5fn/BkLiFDl8RT0wAE8z9X+gQ==" }, "@angular/flex-layout": { "version": "9.0.0-beta.31", @@ -720,14 +738,14 @@ "integrity": "sha512-g94u2mecDl87ORvFRuOBshV/S/ETE4bybClU2e1xXKWNG+rhRHchChneHSonc29ZLyROTjHhmAtKOYojL92uLA==" }, "@angular/forms": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/forms/-/forms-9.0.7.tgz", - "integrity": "sha512-PaHAmjMJDtg/3aGCPuq5BCRC1eZ/DBCpva9f7NrA1kqk0LcLdebm0v2uHwTOBtiz/VEgPvxiS4tXC4rjvUtfEg==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/forms/-/forms-9.1.12.tgz", + "integrity": "sha512-LhjnZlC4WEsEsAJfOZLte+Lks3WBAFVeRv2lzoQNFVr/IMzBNDVfjEaaSqKF1cei3cjY39Df2nYDMJM7HfqbJA==" }, "@angular/language-service": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/language-service/-/language-service-9.0.7.tgz", - "integrity": "sha512-IZG1kvw48JyFRy7bfMHqBixWrEHZmXmkP5DWsi5Tw6KusaczkMghI20BevCkodPcajXWHAUHNKyp1tlE3OnH0w==", + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/language-service/-/language-service-9.1.12.tgz", + "integrity": "sha512-0qfIAn5fP5lD+JW6il5HBHGS89rv+idRv5aooDkHqBhuBo4V2VuB1wNy5eP49GZbHKMW1xPAzv1MqeMdk+zwQA==", "dev": true }, "@angular/material": { @@ -741,19 +759,19 @@ "integrity": "sha512-V5xkL+YUec3nDGRaJB72mJTUtdUvGaG9WCQEdr45viDWFGjQaEpS6msuScBLp0PwsN8Wt0n69eZg0ULgxPBa5g==" }, "@angular/platform-browser": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser/-/platform-browser-9.0.7.tgz", - "integrity": "sha512-Por8omrEiSV2U/K2mm/Kuv+2R2rJkbAZ3ctEM6CWj9Y4Gz2akjOCxmEgWhhBeqdigcC3T1v707f52osf9jWBkg==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser/-/platform-browser-9.1.12.tgz", + "integrity": "sha512-rPa/hJcLfdId6bYB0b6pFUo3QIgjZlvUlmtKMGdrLNLYR8XQxPa2Y/UdN/5YeZ12htGw6GXrX9U8U7nTbUSpkw==" }, "@angular/platform-browser-dynamic": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.7.tgz", - "integrity": "sha512-jwpyd93ofcRtchbayKD5v4GN4Lc7vbPe6dMUiwfnVnVAql0bOD/3YRI7w5qJ0Xx0sgQT+9Xo6jTXYnyUsZpEww==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.12.tgz", + "integrity": "sha512-NmwUZaQeMnA6f+vP9Fp9P+qjL72H8dKlxLS76ujlKHVf75pP5oahWS8wfl7KXel1tKW3FQWMMffmKf5/NHRiSw==" }, "@angular/router": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/router/-/router-9.0.7.tgz", - "integrity": "sha512-uKru9F/Zju//gg6INl54abnlpLdEUUO/GpCfMk4zqu8LCZGNFta6OY7VT+9DK9Vdrh/XUD70oE9WoelcRwwTYA==" + "version": "9.1.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular/router/-/router-9.1.12.tgz", + "integrity": "sha512-+qCaXa9y0nsRhzjAYBqmGoQ2YkrdXgftZwuFDf6t4qEi30EXa0oS97KrlFq0M5GKdLIDGrbUm9PcdHSTOI+ZhA==" }, "@angularclass/hmr": { "version": "2.1.3", @@ -1655,24 +1673,24 @@ "dev": true }, "@ngrx/effects": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/effects/-/effects-9.1.2.tgz", - "integrity": "sha512-H9jbGUzP5izk9Ap8BQJicO1+xheyDyHBbvv6b1NkaRHpDizhPOSBjoFWExFfsejXo0dafaIsu6aI+y+Fp+LSsg==" + "version": "9.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/effects/-/effects-9.2.0.tgz", + "integrity": "sha512-8V09zDIPehGpzgfcgyczelovsVYJvDQhN9wHt37K5A+YCG0CI8nj8FmKokHATwv/S62YqFrOVnr/TZacxpDhBw==" }, "@ngrx/entity": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/entity/-/entity-9.1.2.tgz", - "integrity": "sha512-V6sN/W2rLZFFMlzML3AcHYrA6h9mRMpSVqpsMF4ZLhubmQWP4BG24vyJX8ExtH46OU7ick8aiYqrNzF4rJMiag==" + "version": "9.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/entity/-/entity-9.2.0.tgz", + "integrity": "sha512-xSnS4EmksfvIobl2KMpljE1RMYuJGq7j5cCb9TnlsXkEc7cUa0TyGviSsxceSpk9WKtKARPR/AcVrVCESucF6Q==" }, "@ngrx/router-store": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/router-store/-/router-store-9.1.2.tgz", - "integrity": "sha512-zqAm7fOdJ34dY2Tlts2YV9MDcDP2CqB+hLEytjo/bOIkUo/lQA1R5VAUI+Z8+tUlmPqSVIJkzsGuCxO6XnLEjQ==" + "version": "9.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/router-store/-/router-store-9.2.0.tgz", + "integrity": "sha512-thu6aU9YWM64oNEk4Srx/mNSeQ2SPJKlTji8MSzfr06qgCMyPSXZBYlfs8HqY+af3eB7XBEhb/4ew4JJ6xC9zw==" }, "@ngrx/store": { - "version": "9.1.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/store/-/store-9.1.2.tgz", - "integrity": "sha512-FQXFonF8hSGJDqgLaoWHy2mkeJwVdoa3jLoT1YpkJWxsFMG4U0T6JYG4VrtuymDgo9XwWBBJqIiNpdTgHhofSQ==" + "version": "9.2.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ngrx/store/-/store-9.2.0.tgz", + "integrity": "sha512-V8AI3mxbMztVpbZpALkLZYlGkofKcu9GaOCY5e+sZ1VcJ90oxhFjBpnmd6MuVdmhep1XAHALb1B8ZbBFn+xsgQ==" }, "@ngrx/store-devtools": { "version": "9.1.2", @@ -1750,65 +1768,32 @@ } }, "@schematics/angular": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/angular/-/angular-9.0.7.tgz", - "integrity": "sha512-3UCeexYx/YVo3kboyPZ8KgqBTduMA18AAm3s2yrC0qj41fBFVVZAZLa74uouTf4RYVgy9kR7J3uv6VLxrJPOnQ==", + "version": "9.1.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/angular/-/angular-9.1.11.tgz", + "integrity": "sha512-nExcWmsQvcj9IrofXuHmXmvmehD36O93uFR/a2LisYxao7j6Pe31Qs4Xzk6K67Kxpbypicqr8wAN3LtCOuy20A==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7" + "@angular-devkit/core": "9.1.11", + "@angular-devkit/schematics": "9.1.11" }, "dependencies": { "@angular-devkit/core": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.0.7.tgz", - "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==", + "version": "9.1.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", + "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", "dev": true, "requires": { - "ajv": "6.10.2", - "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.4", - "rxjs": "6.5.3", + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", "source-map": "0.7.3" } }, - "ajv": { - "version": "6.10.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "magic-string": { - "version": "0.25.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/magic-string/-/magic-string-0.25.4.tgz", - "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "rxjs": { - "version": "6.5.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -1817,96 +1802,49 @@ } }, "@schematics/update": { - "version": "0.900.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/update/-/update-0.900.7.tgz", - "integrity": "sha512-e9tX2DGNYfj/k9mVICpQt2bWIYyD92dlsip7LzPeZGt+R9zCp5w19uBLa8Z00OgEGzFR1krhRvkQE5OxkkAnVw==", + "version": "0.901.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@schematics/update/-/update-0.901.11.tgz", + "integrity": "sha512-btqcX1dFL0R+KrTCDu/W+jF19gmoXEC73HWvbhJhU5CvpOF4RC51msjAs9u3J45KyWC2RoYdQCxuasKQZ962lw==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7", + "@angular-devkit/core": "9.1.11", + "@angular-devkit/schematics": "9.1.11", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", - "npm-package-arg": "^7.0.0", - "pacote": "9.5.8", - "rxjs": "6.5.3", - "semver": "6.3.0", + "npm-package-arg": "^8.0.0", + "pacote": "9.5.12", + "rxjs": "6.5.4", + "semver": "7.1.3", "semver-intersect": "1.4.0" }, "dependencies": { "@angular-devkit/core": { - "version": "9.0.7", - "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.0.7.tgz", - "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==", + "version": "9.1.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@angular-devkit/core/-/core-9.1.11.tgz", + "integrity": "sha512-uiEkDvWfMgPHuO4jVgBEr9Kl/LuxHaWYGD2ZtKsOnnHYZyRGp61ot7UcDF+KNdXTiq01JJH84VTd3IttEewmhQ==", "dev": true, "requires": { - "ajv": "6.10.2", - "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.4", - "rxjs": "6.5.3", + "ajv": "6.12.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.4", "source-map": "0.7.3" } }, - "ajv": { - "version": "6.10.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "magic-string": { - "version": "0.25.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/magic-string/-/magic-string-0.25.4.tgz", - "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "npm-package-arg": { - "version": "7.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/npm-package-arg/-/npm-package-arg-7.0.0.tgz", - "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", - "dev": true, - "requires": { - "hosted-git-info": "^3.0.2", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "rxjs": { - "version": "6.5.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "semver": { + "version": "7.1.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "dev": true } } }, @@ -1915,10 +1853,11 @@ "resolved": "https://nexus.loafle.net/repository/npm-all/@tokenizer/token/-/token-0.1.1.tgz", "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==" }, - "@tweenjs/tween.js": { - "version": "17.4.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@tweenjs/tween.js/-/tween.js-17.4.0.tgz", - "integrity": "sha512-J3fzl1F6wvh8KXVVcIuHN12xi1ZDcPA/0Vix+ZcJYwZWVHUwfIqfvzYXXEw7ybeev6477KCTt9fKydU+ajUqcg==" + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true }, "@types/debug": { "version": "4.1.5", @@ -1948,15 +1887,6 @@ "@types/node": "*" } }, - "@types/i18next-node-fs-backend": { - "version": "2.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/i18next-node-fs-backend/-/i18next-node-fs-backend-2.1.0.tgz", - "integrity": "sha512-bOOeT89UO/bYLJoQHdN5S3pggj7mMmFfQMBpDdUQOQIQkENGpnTwhNsIM/kjl1NE2HEihjlRZUNVV60Ze86UZA==", - "dev": true, - "requires": { - "i18next": ">=17.0.11" - } - }, "@types/jasmine": { "version": "3.5.10", "resolved": "https://nexus.loafle.net/repository/npm-all/@types/jasmine/-/jasmine-3.5.10.tgz", @@ -2002,11 +1932,6 @@ "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", "dev": true }, - "@types/tween.js": { - "version": "17.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/@types/tween.js/-/tween.js-17.2.0.tgz", - "integrity": "sha512-mOsqurEtFEzwgkVc/jDVE2XrjZBYTbrmDUyCr9GXmnfc6q5otokxFtKvSY/B21zgz9LVRIvRTawKczjKi57wrA==" - }, "@types/webpack-sources": { "version": "0.1.7", "resolved": "https://nexus.loafle.net/repository/npm-all/@types/webpack-sources/-/webpack-sources-0.1.7.tgz", @@ -2027,14 +1952,14 @@ } }, "@ucap/api": { - "version": "0.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api/-/api-0.0.2.tgz", - "integrity": "sha512-rEV+wjlGI8FgJPCaVBp5cTu17tHliyrikLhsmyLrYOFeNvnn4GoljGeTyuItx1gJ1eIu65iGttL3dLtwfQ07Dg==" + "version": "0.0.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api/-/api-0.0.4.tgz", + "integrity": "sha512-CYGdwVeLd6yIky2f+nsQAWfY22weSM0aLADeXRD1p/GhK4nw6UKTJX++J1qyRAfigp4Y9cO+6GJLc2zRMJ0oGQ==" }, "@ucap/api-common": { - "version": "0.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-common/-/api-common-0.0.3.tgz", - "integrity": "sha512-rifcCToIXdWZb9R3UXu2bXDqj/KBX3xfxHPFgx+Wp1TBUh6d+xszNYN7+mZbDKKSOYUgpVeuaF8leKkTwXUh9g==" + "version": "0.0.11", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/api-common/-/api-common-0.0.11.tgz", + "integrity": "sha512-QAuFb6APPtL3og5s4z9n5X0ubLxmO4QobbPg6NoFlGGA9LBMwxDrA/8mUe+VF8+ni2lv3JdiqvdxzlzFCphmew==" }, "@ucap/api-external": { "version": "0.0.5", @@ -2057,24 +1982,19 @@ "integrity": "sha512-/9w5uTgDkTV4nzMlyPzAyJCfR9E3VqnBQGYdVlyk8NFlVN3WOEzf8FdyRNfvUqyc4DAQFr3CDl06nL5pmua4hQ==" }, "@ucap/core": { - "version": "0.0.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/core/-/core-0.0.8.tgz", - "integrity": "sha512-e0BvZ4NHvqQhz0B4BKkUstFjvkvDkrKEcmAbSkDuzxS5KA1AfkXVYkn3eaIVQhYqWLXoyZwu3TSihS0scDitoA==" + "version": "0.0.14", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/core/-/core-0.0.14.tgz", + "integrity": "sha512-7JuyGBTRYjzu5fPp0v0MBAW6KwweMCfhoPiTPhGkSpwjJByCWaX1h2QQgn23s1DhKMAZrOiasAZozw72m9fYtg==" }, "@ucap/logger": { - "version": "0.0.12", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/logger/-/logger-0.0.12.tgz", - "integrity": "sha512-Egpsx50skGT+8ejalPzJRTZfNcgkrQ8RAueN+Oh2Y1bTkXqRkimrD0bHlOQzJrQ+86Ghi3YZZAseLf/38bCm1Q==" + "version": "0.0.13", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/logger/-/logger-0.0.13.tgz", + "integrity": "sha512-pNZAJmHJ1YBBCCYhpHcaSplAuBelPhgQqvva+0zRzsu3eSoBp+OlHrMgPL7Qu/dpqn3BSb6D2CyrhldwUBvn8Q==" }, "@ucap/native": { - "version": "0.0.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/native/-/native-0.0.6.tgz", - "integrity": "sha512-AsR3zwvZ45sah82IxNRip0YyelbJ7qc6vXdyh3qfhFcIFvADPd+THYN1xErDy6qx5mCpIvbUHRb7Ggz3qtUucw==" - }, - "@ucap/native-browser": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/native-browser/-/native-browser-0.0.5.tgz", - "integrity": "sha512-gmf17wyXWCmQQB3CoOpxL66u4XJaNfXb5behlVzJn2lZZjqFmaOi+VTOQ8h8FIK9bkdG1Cc0v9KBLAnOyniTZw==" + "version": "0.0.19", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/native/-/native-0.0.19.tgz", + "integrity": "sha512-IllRnQ4YDb1tfMJcu5W05CNz3tlp2IDrK3c1mL3aG5IF7BkbAaUQ2aens90uzBzJXngNLOIrtV5hMNzveLiWXQ==" }, "@ucap/ng-api-common": { "version": "0.0.1", @@ -2102,9 +2022,9 @@ "integrity": "sha512-GA9MDcwCvtxI0gOysgRm7DDHIfKfhCkDSa69QBFIEgWbob2OdGYKvxfymr6lGdl+vY7AqjlJXvSFkA1b0rTy1A==" }, "@ucap/ng-core": { - "version": "0.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-core/-/ng-core-0.0.1.tgz", - "integrity": "sha512-okuTcVh/9VkF9dA1d/nsPuLL8ft2+4E77mgqfuPI2mI6IA7udQpC+hdMtyqtAN4LmT39iF1VGFv7UJYRK7fN7w==" + "version": "0.0.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-core/-/ng-core-0.0.7.tgz", + "integrity": "sha512-ZC6LE3A0bg+REGbzDI/i1ad7mGpKsw6X0UtZ+Q8TUthHNv0DfWEieHFCgfYTRY1u022XyQ4ViOsrq9KunU1vfw==" }, "@ucap/ng-i18n": { "version": "0.0.6", @@ -2117,14 +2037,9 @@ "integrity": "sha512-mtPOig+wmsUhlBz2D16i4UX8Cy2D7y+Q42hVq9Ks5pvo3IKgZrC5AAwjfpWjgHRBPMXwbuaWlRxx2jFmjBqD5g==" }, "@ucap/ng-native": { - "version": "0.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-native/-/ng-native-0.0.1.tgz", - "integrity": "sha512-SE/jxzmBQ/DkAc7CVsA1HcMny6fSRadk65y8EMQDRiMiP5Wzd+n8uzdDlmQdK1zBPK3glYaOi7PP34TQpIkLig==" - }, - "@ucap/ng-native-browser": { - "version": "0.0.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-native-browser/-/ng-native-browser-0.0.1.tgz", - "integrity": "sha512-2qqmz8n5DfrHsmYW8OMRcFBRAG60OICIAay3B5KO4nEnZjShelKOZCL2nGAkX+/QSgjtHpgb0h8cj2g6nOZIVg==" + "version": "0.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-native/-/ng-native-0.0.5.tgz", + "integrity": "sha512-4HJ9AOTCRd7K1EtuvYhHBSB8a9HwjgYSLVxwEkh64AH8eFw4CRKnn4TWHkqX+q5uEuWRzKPBnH7mZBsM27m3IA==" }, "@ucap/ng-pi": { "version": "0.0.1", @@ -2212,44 +2127,44 @@ "integrity": "sha512-0s5OdVsZ5Vi2X/aN6lOubPp4qS+b1GKWyNQ8gJlct9+tdzE5SZXfdQygBH1txImDnRC9jxZx5chiCwGqcbk6YA==" }, "@ucap/ng-store-authentication": { - "version": "0.0.11", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-authentication/-/ng-store-authentication-0.0.11.tgz", - "integrity": "sha512-YwLMW+GIR3Rs7LaP+1xOH9KLI5jlpZx8oS7Zl32m6Wbym4ModIcGh21rRrqFhNXky4s9zl+ziaTRpFNCKJRgng==" + "version": "0.0.14", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-authentication/-/ng-store-authentication-0.0.14.tgz", + "integrity": "sha512-6GUU+lerlrwVB8mT3qDBO5rxo7S5OYaLAb2K5HLxx9T+ZfAC+3maTjc28xeJaVgPfoLapI0jFuGgTlmwlBL6dg==" }, "@ucap/ng-store-chat": { - "version": "0.0.13", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-chat/-/ng-store-chat-0.0.13.tgz", - "integrity": "sha512-o+BCCSMxneUenRHEW47sSY22+Zt3lyr202Lg4bub9OVRbW5CVohHez8H+JwK+w+Lf8KbqG32V1ZjKLGclTpboA==" + "version": "0.0.66", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-chat/-/ng-store-chat-0.0.66.tgz", + "integrity": "sha512-fSbIfu0fVcITs+crcKLjcivJSaW0KOqps1TQ5QawZekaQlJYw36rA8TbOF/qL9g1L0Vw9NphKe85Wwm5t2yJOQ==" }, "@ucap/ng-store-group": { - "version": "0.0.14", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-group/-/ng-store-group-0.0.14.tgz", - "integrity": "sha512-sUmdHO7TD5B33DMAoEnelvqbLXTsWPnK2HC8XQ0FdlfGyUtf3kGpwS4BxduUi5wiZckR3hfuBdpCShIhf/qmeQ==" + "version": "0.0.22", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-group/-/ng-store-group-0.0.22.tgz", + "integrity": "sha512-XRFBpmJ9SPPwvessI+fxyL4GdWF+p/TU7RSWm6abbBcA7YGO//2gH0ghY8iPwsNVh3UhECy5LxkJx3fOGsJdhA==" }, "@ucap/ng-store-organization": { - "version": "0.0.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-organization/-/ng-store-organization-0.0.8.tgz", - "integrity": "sha512-vWWyPukVWeUPOxXkdWPN9s36V4EuMVuR8vPfOfKwnh09TxV8Efl19jIYYtNo92L1H/lF0OKfaz5eR9Aw76v+FA==" + "version": "0.0.20", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-store-organization/-/ng-store-organization-0.0.20.tgz", + "integrity": "sha512-YpM0+IP6yvv/3B01YHQ/abwK2enamA4Gx1IN2fpD0NyOu7DfFt6mV6EEz32IN0DpY1gZ8jyU/ESchnDbRmPu5w==" }, "@ucap/ng-ui": { - "version": "0.0.19", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui/-/ng-ui-0.0.19.tgz", - "integrity": "sha512-UuZSzWM4tBR+e5Z/1PFdNenHS00Pn4K7dTafIicG29YjHE5sTXXRqjDCVrKNxJQoMSEPWjUj7qnTgYwP2U83Vg==" + "version": "0.0.97", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui/-/ng-ui-0.0.97.tgz", + "integrity": "sha512-bmrpdiA1qnDWviV91buXCTOLGb49zeyt3T7AnOrZ87/wuVZAWdGaNUbEJtwYjZxnO3w2I5WOsKFzttq2vYU2LQ==" }, "@ucap/ng-ui-authentication": { - "version": "0.0.24", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-authentication/-/ng-ui-authentication-0.0.24.tgz", - "integrity": "sha512-6QMJ8dieTnbPANsBzg2Ll3HH5q6Bzl2iSM19yHq8Ct7XOmElrYqrEZmxbDyYO+aCXIAwd2t7vu+rTsHfz3XOQg==" + "version": "0.0.29", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-authentication/-/ng-ui-authentication-0.0.29.tgz", + "integrity": "sha512-kSQFFqSmtf+8aOmMqL0U+aUzCSmnPaWcJcDQfxuYPdRvlAYd4kMOWRcd/klvUrCpSf7P8jPsI7557rwmYHt3jA==" }, "@ucap/ng-ui-chat": { - "version": "0.0.9", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-chat/-/ng-ui-chat-0.0.9.tgz", - "integrity": "sha512-6qvzcTuylkxVjsqajsLW15laOyOskxVMy238/Ju1yYvwCRyHygwS1i67APoG5tv+SWu+l38f9uWIqzfy7WYHkQ==" + "version": "0.0.72", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-chat/-/ng-ui-chat-0.0.72.tgz", + "integrity": "sha512-sA5+3/sD9EN2BB2D2HZ9qrpGbkssWN7GF/UAvd8x4ECnVZPXaadNgLsSfOuZkSOVuM+6nTSyuglmnkjrPQBb8w==" }, "@ucap/ng-ui-group": { - "version": "0.0.33", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-group/-/ng-ui-group-0.0.33.tgz", - "integrity": "sha512-c//Jq00drbMGE3Cgwlh19ScXllGERX2eMVWkVjm311Y8HN9oBBT6Aq2uCM23/76P866oNrhecVDfDHgGYzPRjA==" + "version": "0.0.78", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-group/-/ng-ui-group-0.0.78.tgz", + "integrity": "sha512-GhHevEcbJJEppdcLOPFSQiAhn0psqrbKHe1I/X+c2wRGeIaJ/+UfseJ5CEqif8IQzU5caigM+q8E0bEFXiSFgQ==" }, "@ucap/ng-ui-material": { "version": "0.0.4", @@ -2257,9 +2172,9 @@ "integrity": "sha512-ySPULAbP+nQ65hBG2VWZ2H5Hr7muuTGGNXs6A+S3lsxLaW452wM3GNyUBhvUopr8LaSsoOPpp4nK1JeC0fG6pA==" }, "@ucap/ng-ui-organization": { - "version": "0.0.55", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-organization/-/ng-ui-organization-0.0.55.tgz", - "integrity": "sha512-vfpKd3fbd+I0Od8aB2nIFfjuI7wj3Ziu/uiTEmZxKwZy7uZrNYm59BPbctKW3AQsQ4UtnLofhlBbAA7e9pT80Q==" + "version": "0.0.202", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ng-ui-organization/-/ng-ui-organization-0.0.202.tgz", + "integrity": "sha512-ibK62UXrEFvz5oauxAqsJmaXmu0+iqIqY1W01RNHgl6TrzcWv0ytB54j20viAEhD8rclKfUD8Wa6GvzLolCa6w==" }, "@ucap/ng-ui-skin-default": { "version": "0.0.1", @@ -2277,9 +2192,9 @@ "integrity": "sha512-RKVPzRAKOByr3CZ+vX+ch9wy49m094Iw7lhy6b51qL+EOjNtf2a3bjJ1qP9Jtbhxy4ssbpbjdFsASbTD+gc2sQ==" }, "@ucap/pi": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/pi/-/pi-0.0.5.tgz", - "integrity": "sha512-9zWQzOgwn9Q1VFhNYgD4+hfl728gulSDKjIm/+jplp1zjr5qlmMVyUcywXNd3ClWvA0I5FR+6nwNFv2Q1u3QYg==" + "version": "0.0.8", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/pi/-/pi-0.0.8.tgz", + "integrity": "sha512-exfW6CRRN3XyMrnmoXX0e3lv0ICNHbLeYSZN5/BBYXp+Rilu9UMYlbveotlVZuh6RuDSIUOHZG4xElRApYzzBg==" }, "@ucap/protocol": { "version": "0.0.17", @@ -2297,14 +2212,14 @@ "integrity": "sha512-Q8ej93Zx0MDVh6fNrvoydOKAEDJyc4+6i6QqJh3PmZkaqTeQ8+C4kUX32N5tGSbsNZRVFNHp7yDWzKCnVRbidg==" }, "@ucap/protocol-event": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-event/-/protocol-event-0.0.5.tgz", - "integrity": "sha512-RR74BKQaMIVqPo6TUYxFTUrIVc2ZSrsZXtereqymk24UKfL3eJ/8Oa7Gi7CYqAUPUDV815g4iTilXWr+Ok201w==" + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-event/-/protocol-event-0.0.6.tgz", + "integrity": "sha512-nFpNd2jTgzGlrtLWhuWnaPfP3DxxSprHy516BPASlD/iRY2TNmNgFJmZvUY1y5pbEv99azEGjvP5rhy6IECk7w==" }, "@ucap/protocol-file": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-file/-/protocol-file-0.0.5.tgz", - "integrity": "sha512-3XRwtlpcrm2oZeckoOzzAUcqADPCGbgdEb4psfNnphTbGX9nYaBUTpWuLYwD3tVe7Wg4fytaHemcAu8yVZUANw==" + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-file/-/protocol-file-0.0.6.tgz", + "integrity": "sha512-iJk/Y5QmAm7GSD0lVjK0EWFhRWWgxE49dBtfyIa04N9NrOHLi0wNlxrwPmiuW1+b8r2wih5OJoJo6zaUZ+KyIw==" }, "@ucap/protocol-group": { "version": "0.0.5", @@ -2312,9 +2227,9 @@ "integrity": "sha512-3e35omfU61Q9dnbFPqbXIKkQ+2ph6CHD8oNFC0lH9a2rTS5G1EMeeFk/7f963+K3elWdj+OvWTdmbe2cd4PhRw==" }, "@ucap/protocol-info": { - "version": "0.0.6", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-info/-/protocol-info-0.0.6.tgz", - "integrity": "sha512-qpt0jfmHDyaMGyADzaDMKbbkfD04yEC0u4KDyoMdjnTi0RXA6cilDRGr9TW/bezB9OxS40yNLK6REfh7aSmcUA==" + "version": "0.0.9", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-info/-/protocol-info-0.0.9.tgz", + "integrity": "sha512-uRo+B5Xj9jsyVJ5w6Ec6L7a8HJ6PFc5DAzVPkgQEYeHbo6IGsom07udDFFS0/oV6bJNi3BjyL0eakKDTOMwTTA==" }, "@ucap/protocol-inner": { "version": "0.0.4", @@ -2337,9 +2252,9 @@ "integrity": "sha512-XvCeg9UG33NuBx8Uo4PegDWlTF30z8Hk3kkbDPtCTLwyVdlg3DSKs5YYd8UiKkUxhxWKukvd5SZtxBtcbup5yQ==" }, "@ucap/protocol-room": { - "version": "0.0.5", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-room/-/protocol-room-0.0.5.tgz", - "integrity": "sha512-RSzLtnz5JVeDz9Y8gP17+LO6OG2NtLIPpW+JuHnqhfJyB93v2QmqqK5T7NbGYok72jRp4m7cJZEp1tLNYCKcmA==" + "version": "0.0.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-room/-/protocol-room-0.0.7.tgz", + "integrity": "sha512-vGTwAK31CbV49bj6UMpJ2WfxLbVkPDvZV1aaFmwvB0HqqqXgyyaM9Cvlm5xrMguLDE//t9uu1jVi8vBYgALdMA==" }, "@ucap/protocol-service": { "version": "0.0.4", @@ -2352,9 +2267,9 @@ "integrity": "sha512-h1+HcR5bmwugclKinl4XVCYRPkLzxc3Rou593JtXWHESCvcDMm9bEEuv/E4E5T+UE7L1pF1chZY+du1/tOeU9g==" }, "@ucap/protocol-sync": { - "version": "0.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-sync/-/protocol-sync-0.0.4.tgz", - "integrity": "sha512-jcRb13WLSBa7s/yeAyRwUPfT+/AgRMTiISMdCZhs271gwoyvqS6I1jgsUxv6s52vqNroUEvX7nsPKX3Xxy6ajA==" + "version": "0.0.6", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/protocol-sync/-/protocol-sync-0.0.6.tgz", + "integrity": "sha512-gGraaSItVbJkgiIPMQ1RKQLVRdYD0B2h7Um00EWxHqHw9kXrHHmEGIGI7y+WnLjlF/ZaksdoWfOGPUmiJhaahQ==" }, "@ucap/protocol-umg": { "version": "0.0.5", @@ -2362,9 +2277,9 @@ "integrity": "sha512-qxBog4wSit25HEq5a2pBtVE4NPQoqwmTeFuCqZBERc1x6Bw1zoA2aCVQ6yRFCNBguTyH0NQMSBFq6rnXwNrgBg==" }, "@ucap/ui-scss": { - "version": "0.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ui-scss/-/ui-scss-0.0.4.tgz", - "integrity": "sha512-n7npexk0wkoLuPm2d4qaM8IgG3qskJVSLgWfr9UQ7sGjNOQp7UI8TP7NYmoPHObDB8i7Nzn2RP/CL0sawgvoLg==" + "version": "0.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/@ucap/ui-scss/-/ui-scss-0.0.5.tgz", + "integrity": "sha512-V67uhXQ/FN27ISwHBy6w/os7fUqsCellgfLabw5aH4lWKpDqL9AX2eao6uhUNedCW9E6Kb/7cxXfv6sUyyLhxw==" }, "@ucap/web-socket": { "version": "0.0.10", @@ -2749,6 +2664,7 @@ "version": "1.0.10", "resolved": "https://nexus.loafle.net/repository/npm-all/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -4278,6 +4194,58 @@ "sha.js": "^2.4.8" } }, + "cross-env": { + "version": "7.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/cross-env/-/cross-env-7.0.2.tgz", + "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://nexus.loafle.net/repository/npm-all/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -5027,12 +4995,23 @@ "dev": true }, "encoding": { - "version": "0.1.12", - "resolved": "https://nexus.loafle.net/repository/npm-all/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "version": "0.1.13", + "resolved": "https://nexus.loafle.net/repository/npm-all/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, "end-of-stream": { @@ -5245,7 +5224,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://nexus.loafle.net/repository/npm-all/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esrecurse": { "version": "4.2.1", @@ -6218,12 +6198,23 @@ "dev": true }, "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "version": "3.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } } }, "hpack.js": { @@ -6392,14 +6383,10 @@ "@babel/runtime": "^7.5.5" } }, - "i18next-node-fs-backend": { - "version": "2.1.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/i18next-node-fs-backend/-/i18next-node-fs-backend-2.1.3.tgz", - "integrity": "sha512-CreMFiVl3ChlMc5ys/e0QfuLFOZyFcL40Jj6jaKD6DxZ/GCUMxPI9BpU43QMWUgC7r+PClpxg2cGXAl0CjG04g==", - "requires": { - "js-yaml": "3.13.1", - "json5": "2.0.0" - } + "i18next-fs-backend": { + "version": "1.0.7", + "resolved": "https://nexus.loafle.net/repository/npm-all/i18next-fs-backend/-/i18next-fs-backend-1.0.7.tgz", + "integrity": "sha512-aAZ3rvshe1Zbl6JSCWrWWqbZS5JpmVNG+84YqLcgdYcm9uAxzw4xWxnA/a3044Nm2PKXE62CT+pIZjk7OEYtTw==" }, "i18next-xhr-backend": { "version": "3.2.2", @@ -6548,23 +6535,23 @@ "dev": true }, "inquirer": { - "version": "7.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.15", "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" }, "dependencies": { @@ -6574,6 +6561,47 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -6589,34 +6617,24 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } @@ -7206,6 +7224,7 @@ "version": "3.13.1", "resolved": "https://nexus.loafle.net/repository/npm-all/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -7253,14 +7272,6 @@ "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", "dev": true }, - "json5": { - "version": "2.0.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/json5/-/json5-2.0.0.tgz", - "integrity": "sha512-0EdQvHuLm7yJ7lyG5dp7Q3X2ku++BG5ZHaJ5FTnaXpKqDrw4pMxel5Bt3oAYMthnrthFBdnZ1FcsXTPyrQlV0w==", - "requires": { - "minimist": "^1.2.0" - } - }, "jsonfile": { "version": "4.0.0", "resolved": "https://nexus.loafle.net/repository/npm-all/jsonfile/-/jsonfile-4.0.0.tgz", @@ -7779,6 +7790,11 @@ "p-is-promise": "^2.0.0" } }, + "memoize-one": { + "version": "5.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/memoize-one/-/memoize-one-5.1.1.tgz", + "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" + }, "memory-fs": { "version": "0.5.0", "resolved": "https://nexus.loafle.net/repository/npm-all/memory-fs/-/memory-fs-0.5.0.tgz", @@ -8242,15 +8258,6 @@ "resize-observer-polyfill": "^1.5.0" } }, - "ngx-virtual-scroller": { - "version": "4.0.3", - "resolved": "https://nexus.loafle.net/repository/npm-all/ngx-virtual-scroller/-/ngx-virtual-scroller-4.0.3.tgz", - "integrity": "sha512-JBqUJ/f7GRCZDnI/JeiFoTmYR8rC/Hyv8L5I7ImePM6f/hwiFNRsrK8Abdd0E3TwklwgmZAK875te9XQJrgsyQ==", - "requires": { - "@tweenjs/tween.js": "17.4.0", - "@types/tween.js": "17.2.0" - } - }, "nice-try": { "version": "1.0.5", "resolved": "https://nexus.loafle.net/repository/npm-all/nice-try/-/nice-try-1.0.5.tgz", @@ -8372,6 +8379,23 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, "npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://nexus.loafle.net/repository/npm-all/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", @@ -8379,27 +8403,20 @@ "dev": true }, "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "version": "8.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", "dev": true, "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, "semver": { - "version": "5.7.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -8416,28 +8433,28 @@ } }, "npm-pick-manifest": { - "version": "3.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", - "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/npm-pick-manifest/-/npm-pick-manifest-6.0.0.tgz", + "integrity": "sha512-PdJpXMvjqt4nftNEDpCgjBUF8yI3Q3MyuAmVB9nemnnCg32F4BPL/JFBfdj8DubgHCYUFQhtLWmBPvdsFtjWMg==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } }, "npm-registry-fetch": { - "version": "4.0.4", - "resolved": "https://nexus.loafle.net/repository/npm-all/npm-registry-fetch/-/npm-registry-fetch-4.0.4.tgz", - "integrity": "sha512-6jb34hX/iYNQebqWUHtU8YF6Cjb1H6ouTFPClYsyiW6lpFkljTpdeftm53rRojtja1rKAvKNIIiTS5Sjpw4wsA==", + "version": "4.0.5", + "resolved": "https://nexus.loafle.net/repository/npm-all/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz", + "integrity": "sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q==", "dev": true, "requires": { "JSONStream": "^1.3.4", @@ -8449,11 +8466,35 @@ "safe-buffer": "^5.2.0" }, "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://nexus.loafle.net/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://nexus.loafle.net/repository/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -8700,33 +8741,84 @@ } }, "ora": { - "version": "4.0.2", - "resolved": "https://nexus.loafle.net/repository/npm-all/ora/-/ora-4.0.2.tgz", - "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "version": "4.0.3", + "resolved": "https://nexus.loafle.net/repository/npm-all/ora/-/ora-4.0.3.tgz", + "integrity": "sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg==", "dev": true, "requires": { - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.2.0", "is-interactive": "^1.0.0", "log-symbols": "^3.0.0", - "strip-ansi": "^5.2.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://nexus.loafle.net/repository/npm-all/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://nexus.loafle.net/repository/npm-all/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://nexus.loafle.net/repository/npm-all/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } @@ -8840,9 +8932,9 @@ "dev": true }, "pacote": { - "version": "9.5.8", - "resolved": "https://nexus.loafle.net/repository/npm-all/pacote/-/pacote-9.5.8.tgz", - "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==", + "version": "9.5.12", + "resolved": "https://nexus.loafle.net/repository/npm-all/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", "dev": true, "requires": { "bluebird": "^3.5.3", @@ -8859,6 +8951,7 @@ "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", "npm-package-arg": "^6.1.0", "npm-packlist": "^1.1.12", "npm-pick-manifest": "^3.0.0", @@ -8899,6 +8992,12 @@ "y18n": "^4.0.0" } }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://nexus.loafle.net/repository/npm-all/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, "minipass": { "version": "2.9.0", "resolved": "https://nexus.loafle.net/repository/npm-all/minipass/-/minipass-2.9.0.tgz", @@ -8909,6 +9008,29 @@ "yallist": "^3.0.0" } }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://nexus.loafle.net/repository/npm-all/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://nexus.loafle.net/repository/npm-all/rimraf/-/rimraf-2.7.1.tgz", @@ -11531,7 +11653,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://nexus.loafle.net/repository/npm-all/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", @@ -13342,6 +13465,12 @@ "lodash": "^4.17.15" } }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": "https://nexus.loafle.net/repository/npm-all/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==", + "dev": true + }, "webpack-sources": { "version": "1.4.3", "resolved": "https://nexus.loafle.net/repository/npm-all/webpack-sources/-/webpack-sources-1.4.3.tgz", diff --git a/package.json b/package.json index 66e237c..c7e5b4c 100644 --- a/package.json +++ b/package.json @@ -5,42 +5,41 @@ "ng": "ng", "start": "ng serve", "start:hmr": "ng serve --configuration hmr", - "start:hmr-es5": "ng serve --configuration hmr-es5", + "start:hmr-renderer": "ng serve --configuration hmr-renderer", "build": "ng build", "build:production": "ng build --prod", - "build:production-es5": "ng build --configuration production-es5", + "build:production-renderer": "cross-env NATIVE_ENV=renderer ng build --prod --configuration production-renderer --base-href ./", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { - "@angular/animations": "~9.0.6", - "@angular/cdk": "^9.1.3", - "@angular/common": "~9.0.6", - "@angular/compiler": "~9.0.6", - "@angular/core": "~9.0.6", - "@angular/flex-layout": "^9.0.0-beta.29", - "@angular/forms": "~9.0.6", - "@angular/material": "^9.1.3", - "@angular/material-moment-adapter": "^9.1.3", - "@angular/platform-browser": "~9.0.6", - "@angular/platform-browser-dynamic": "~9.0.6", - "@angular/router": "~9.0.6", - "@ngrx/effects": "^9.0.0", - "@ngrx/entity": "^9.0.0", - "@ngrx/router-store": "^9.0.0", - "@ngrx/store": "^9.0.0", - "@ucap/api": "~0.0.2", - "@ucap/api-common": "~0.0.5", + "@angular/animations": "^9.1.11", + "@angular/cdk": "^9.2.4", + "@angular/common": "^9.1.11", + "@angular/compiler": "^9.1.11", + "@angular/core": "^9.1.11", + "@angular/flex-layout": "^9.0.0-beta.31", + "@angular/forms": "^9.1.11", + "@angular/material": "^9.2.4", + "@angular/material-moment-adapter": "^9.2.4", + "@angular/platform-browser": "^9.1.11", + "@angular/platform-browser-dynamic": "^9.1.11", + "@angular/router": "^9.1.11", + "@ngrx/effects": "^9.2.0", + "@ngrx/entity": "^9.2.0", + "@ngrx/router-store": "^9.2.0", + "@ngrx/store": "^9.2.0", + "@ucap/api": "~0.0.4", + "@ucap/api-common": "~0.0.11", "@ucap/api-external": "~0.0.5", "@ucap/api-message": "~0.0.3", "@ucap/api-prompt": "~0.0.3", "@ucap/api-public": "~0.0.4", - "@ucap/core": "~0.0.10", - "@ucap/logger": "~0.0.12", - "@ucap/native": "~0.0.6", - "@ucap/native-browser": "~0.0.5", + "@ucap/core": "~0.0.14", + "@ucap/logger": "~0.0.13", + "@ucap/native": "~0.0.19", "@ucap/ng-api-common": "~0.0.1", "@ucap/ng-api-external": "~0.0.1", "@ucap/ng-api-message": "~0.0.1", @@ -49,8 +48,7 @@ "@ucap/ng-core": "~0.0.7", "@ucap/ng-logger": "~0.0.2", "@ucap/ng-i18n": "~0.0.6", - "@ucap/ng-native": "~0.0.1", - "@ucap/ng-native-browser": "~0.0.1", + "@ucap/ng-native": "~0.0.5", "@ucap/ng-pi": "~0.0.1", "@ucap/ng-protocol": "~0.0.3", "@ucap/ng-protocol-authentication": "~0.0.3", @@ -68,35 +66,35 @@ "@ucap/ng-protocol-status": "~0.0.3", "@ucap/ng-protocol-sync": "~0.0.3", "@ucap/ng-protocol-umg": "~0.0.3", - "@ucap/ng-store-authentication": "~0.0.11", - "@ucap/ng-store-chat": "~0.0.16", - "@ucap/ng-store-group": "~0.0.14", - "@ucap/ng-store-organization": "~0.0.8", + "@ucap/ng-store-authentication": "~0.0.14", + "@ucap/ng-store-chat": "~0.0.66", + "@ucap/ng-store-group": "~0.0.22", + "@ucap/ng-store-organization": "~0.0.20", "@ucap/ng-web-socket": "~0.0.2", "@ucap/ng-web-storage": "~0.0.3", - "@ucap/ng-ui": "~0.0.19", - "@ucap/ng-ui-organization": "~0.0.83", - "@ucap/ng-ui-authentication": "~0.0.25", - "@ucap/ng-ui-group": "~0.0.33", - "@ucap/ng-ui-chat": "~0.0.12", + "@ucap/ng-ui": "0.0.97", + "@ucap/ng-ui-organization": "~0.0.202", + "@ucap/ng-ui-authentication": "~0.0.29", + "@ucap/ng-ui-group": "~0.0.78", + "@ucap/ng-ui-chat": "~0.0.72", "@ucap/ng-ui-material": "~0.0.4", "@ucap/ng-ui-skin-default": "~0.0.1", - "@ucap/pi": "~0.0.5", + "@ucap/pi": "~0.0.8", "@ucap/protocol": "~0.0.17", "@ucap/protocol-authentication": "~0.0.5", "@ucap/protocol-buddy": "~0.0.5", - "@ucap/protocol-event": "~0.0.5", - "@ucap/protocol-file": "~0.0.4", + "@ucap/protocol-event": "~0.0.6", + "@ucap/protocol-file": "~0.0.6", "@ucap/protocol-group": "~0.0.5", - "@ucap/protocol-info": "~0.0.6", + "@ucap/protocol-info": "~0.0.9", "@ucap/protocol-inner": "~0.0.4", "@ucap/protocol-option": "~0.0.7", "@ucap/protocol-ping": "~0.0.6", "@ucap/protocol-query": "~0.0.5", - "@ucap/protocol-room": "~0.0.6", + "@ucap/protocol-room": "~0.0.7", "@ucap/protocol-service": "~0.0.4", "@ucap/protocol-status": "~0.0.5", - "@ucap/protocol-sync": "~0.0.4", + "@ucap/protocol-sync": "~0.0.6", "@ucap/protocol-umg": "~0.0.5", "@ucap/ui-scss": "~0.0.5", "@ucap/web-socket": "~0.0.10", @@ -109,13 +107,13 @@ "file-type": "^14.1.4", "i18next": "^19.3.3", "i18next-browser-languagedetector": "^4.0.2", - "i18next-node-fs-backend": "^2.1.3", + "i18next-fs-backend": "^1.0.6", "i18next-xhr-backend": "^3.2.2", "libphonenumber-js": "^1.7.47", + "memoize-one": "^5.1.1", "moment": "^2.24.0", "moment-timezone": "^0.5.28", "ngx-perfect-scrollbar": "^9.0.0", - "ngx-virtual-scroller": "^4.0.3", "pino": "^6.0.0", "queueing-subject": "^0.3.4", "rxjs": "~6.5.4", @@ -126,16 +124,16 @@ "devDependencies": { "@angular-builders/custom-webpack": "^9.0.0", "@angular-devkit/build-angular": "~0.900.6", - "@angular/cli": "~9.0.6", - "@angular/compiler-cli": "~9.0.6", - "@angular/language-service": "~9.0.6", + "@angular/cli": "^9.1.9", + "@angular/compiler-cli": "^9.1.11", + "@angular/language-service": "^9.1.11", "@angularclass/hmr": "^2.1.3", "@ngrx/store-devtools": "^9.0.0", - "@types/i18next-node-fs-backend": "^2.1.0", "@types/jasmine": "~3.5.0", "@types/jasminewd2": "~2.0.3", "@types/node": "^12.11.1", "codelyzer": "^5.1.2", + "cross-env": "^7.0.2", "fs-extra": "^9.0.0", "jasmine-core": "~3.5.0", "jasmine-spec-reporter": "~4.2.1", @@ -148,6 +146,7 @@ "ts-node": "~8.3.0", "tslint": "~5.18.0", "typescript": "~3.7.5", - "webpack-bundle-analyzer": "^3.7.0" + "webpack-bundle-analyzer": "^3.7.0", + "webpack-node-externals": "^1.7.2" } } diff --git a/src/app/app-provider.module.ts b/src/app/app-provider.module.ts index 781e27e..625d68f 100644 --- a/src/app/app-provider.module.ts +++ b/src/app/app-provider.module.ts @@ -12,10 +12,13 @@ import { AppAuthenticationGuard } from './guards/app-authentication.guard'; import { AppSessionResolver } from './resolvers/app-session.resolver'; import { AppAuthenticationService } from './services/app-authentication.service'; +import { AppNotificationService } from './services/app-notification.service'; import { AppNativeService } from './services/app-native.service'; import { AppService } from './services/app.service'; import { AppChatService } from './services/app-chat.service'; import { AppFileService } from './services/app-file.service'; +import { AppGroupService } from './services/app-group.service'; +import { AppAccountService } from './services/app-account.service'; const GUARDS = [AppAuthenticationGuard]; const RESOLVERS = [AppSessionResolver]; @@ -24,7 +27,10 @@ const SERVICES = [ AppAuthenticationService, AppNativeService, AppFileService, - AppChatService + AppChatService, + AppNotificationService, + AppGroupService, + AppAccountService ]; const axiosFactory = () => { @@ -35,6 +41,9 @@ const axiosFactory = () => { return i; }; +const nativeServiceFactory = (nativeService: any) => + new environment.productConfig.nativeServiceClass(nativeService); + const appInit = (appService: AppService) => { return () => appService.initialize(); }; @@ -51,7 +60,7 @@ const appInit = (appService: AppService) => { }, { provide: UCAP_NATIVE_SERVICE, - useClass: environment.productConfig.nativeServiceClass, + useFactory: nativeServiceFactory, deps: [AXIOS_INSTANCE], multi: false }, diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index f0787e5..0833757 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -81,7 +81,9 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes)], + imports: [ + RouterModule.forRoot(routes, { useHash: true, enableTracing: false }) + ], exports: [RouterModule] }) export class AppRoutingModule {} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 4cd4364..24f685f 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,28 +1,48 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { + Component, + OnDestroy, + OnInit, + AfterViewInit, + Renderer2 +} from '@angular/core'; import { Store } from '@ngrx/store'; import { AppActions } from '@app/store/actions'; -import { fromEvent, interval, Subscription } from 'rxjs'; -import { debounce } from 'rxjs/operators'; +import { fromEvent, interval, Subject } from 'rxjs'; +import { debounce, takeUntil } from 'rxjs/operators'; +import { AppAuthenticationService } from './services/app-authentication.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) -export class AppComponent implements OnInit, OnDestroy { - private resizeWindowSubscription: Subscription; +export class AppComponent implements OnInit, OnDestroy, AfterViewInit { + private ngOnDestroySubject: Subject = new Subject(); - constructor(private store: Store) { - this.resizeWindowSubscription = fromEvent(window, 'resize') - .pipe(debounce(() => interval(100))) + constructor( + private renderer2: Renderer2, + private store: Store, + private appAuthenticationService: AppAuthenticationService + ) { + fromEvent(window, 'resize') + .pipe( + takeUntil(this.ngOnDestroySubject), + debounce(() => interval(100)) + ) .subscribe((event: any) => { this.dispatchWindowSize({ width: event.target.innerWidth, height: event.target.innerHeight }); }); + + // fromEvent(window, 'beforeunload') + // .pipe(takeUntil(this.ngOnDestroySubject)) + // .subscribe((event: any) => { + // this.appAuthenticationService.logout(); + // }); } ngOnInit(): void { @@ -33,11 +53,19 @@ export class AppComponent implements OnInit, OnDestroy { } ngOnDestroy(): void { - if (!!this.resizeWindowSubscription) { - this.resizeWindowSubscription.unsubscribe(); + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); } } + ngAfterViewInit(): void { + const preloader = this.renderer2.selectRootElement( + '#ucap-lg-web-preloader' + ); + this.renderer2.setStyle(preloader, 'display', 'none'); + } + private dispatchWindowSize(size: { width: number; height: number }) { this.store.dispatch(AppActions.windowResized(size)); } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d3d55e2..02210bb 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -59,6 +59,8 @@ import { effects } from '@app/store/effects'; import { ROOT_REDUCERS } from '@app/store/reducers'; import { metaReducers } from '@app/store/state'; +import { AppAccountDialogModule } from '@app/dialogs/account/account.dialog.module'; + import { environment } from '@environments'; @NgModule({ @@ -69,6 +71,56 @@ import { environment } from '@environments'; FlexLayoutModule, + /** + * StoreModule.forRoot is imported once in the root module, accepting a reducer + * function or object map of reducer functions. If passed an object of + * reducers, combineReducers will be run creating your application + * meta-reducer. This returns all providers for an @ngrx/store + * based application. + */ + StoreModule.forRoot(ROOT_REDUCERS, { + metaReducers, + runtimeChecks: { + strictStateImmutability: true, + strictActionImmutability: true, + strictStateSerializability: true, + strictActionSerializability: true + } + }), + + /** + * @ngrx/router-store keeps router state up-to-date in the store. + */ + StoreRouterConnectingModule.forRoot({ + routerState: RouterState.Minimal + }), + + /** + * Store devtools instrument the store retaining past versions of state + * and recalculating new states. This enables powerful time-travel + * debugging. + * + * To use the debugger, install the Redux Devtools extension for either + * Chrome or Firefox + * + * See: https://github.com/zalmoxisus/redux-devtools-extension + */ + StoreDevtoolsModule.instrument({ + name: 'UCAP Store App' + + // In a production build you would want to disable the Store Devtools + // logOnly: environment.production, + }), + + /** + * EffectsModule.forRoot() is imported once in the root module and + * sets up the effects class to be initialized immediately when the + * application starts. + * + * See: https://ngrx.io/guide/effects#registering-root-effects + */ + EffectsModule.forRoot([...effects]), + LoggerModule.forRoot({}), CommonApiModule.forRoot(environment.commonApiModuleConfig), @@ -118,55 +170,7 @@ import { environment } from '@environments'; AppLayoutsModule, - /** - * StoreModule.forRoot is imported once in the root module, accepting a reducer - * function or object map of reducer functions. If passed an object of - * reducers, combineReducers will be run creating your application - * meta-reducer. This returns all providers for an @ngrx/store - * based application. - */ - StoreModule.forRoot(ROOT_REDUCERS, { - metaReducers, - runtimeChecks: { - strictStateImmutability: true, - strictActionImmutability: true, - strictStateSerializability: true, - strictActionSerializability: true - } - }), - - /** - * @ngrx/router-store keeps router state up-to-date in the store. - */ - StoreRouterConnectingModule.forRoot({ - routerState: RouterState.Minimal - }), - - /** - * Store devtools instrument the store retaining past versions of state - * and recalculating new states. This enables powerful time-travel - * debugging. - * - * To use the debugger, install the Redux Devtools extension for either - * Chrome or Firefox - * - * See: https://github.com/zalmoxisus/redux-devtools-extension - */ - StoreDevtoolsModule.instrument({ - name: 'UCAP Store App' - - // In a production build you would want to disable the Store Devtools - // logOnly: environment.production, - }), - - /** - * EffectsModule.forRoot() is imported once in the root module and - * sets up the effects class to be initialized immediately when the - * application starts. - * - * See: https://ngrx.io/guide/effects#registering-root-effects - */ - EffectsModule.forRoot([...effects]) + AppAccountDialogModule ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/app.theme.scss b/src/app/app.theme.scss index 2dbb7d3..7d7c0c3 100644 --- a/src/app/app.theme.scss +++ b/src/app/app.theme.scss @@ -22,7 +22,7 @@ $typography: mat-typography-config( // Define the palettes for your theme using the Material Design palettes available in palette.scss // (imported above). For each palette, you can optionally specify a default, lighter, and darker // hue. Available color palettes: https://material.io/design/color/ -$lgRed-app-primary: mat-palette($ucap-color-primary); +$lgRed-app-primary: mat-palette($ucap-color-primary, 600); $lgRed-app-accent: mat-palette($ucap-color-accent, 700); // The warn palette is optional (defaults to red). diff --git a/src/app/dialogs/account/account.dialog.module.ts b/src/app/dialogs/account/account.dialog.module.ts new file mode 100644 index 0000000..c756cb2 --- /dev/null +++ b/src/app/dialogs/account/account.dialog.module.ts @@ -0,0 +1,48 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { FlexLayoutModule } from '@angular/flex-layout'; + +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatSelectModule } from '@angular/material/select'; +import { MatTabsModule } from '@angular/material/tabs'; + +import { I18nModule } from '@ucap/ng-i18n'; +import { UiModule } from '@ucap/ng-ui'; + +import { AppLayoutsModule } from '@app/layouts/layouts.module'; +import { AppAccountSectionModule } from '@app/sections/account/account.section.module'; + +import { COMPONENTS } from './components'; + +@NgModule({ + imports: [ + CommonModule, + ReactiveFormsModule, + FlexLayoutModule, + + MatButtonModule, + MatCheckboxModule, + MatIconModule, + MatInputModule, + MatRadioModule, + MatSelectModule, + MatTabsModule, + + I18nModule, + + UiModule, + + AppLayoutsModule, + AppAccountSectionModule + ], + exports: [...COMPONENTS], + declarations: [...COMPONENTS], + entryComponents: [...COMPONENTS] +}) +export class AppAccountDialogModule {} diff --git a/src/app/dialogs/account/components/index.ts b/src/app/dialogs/account/components/index.ts new file mode 100644 index 0000000..1ad8877 --- /dev/null +++ b/src/app/dialogs/account/components/index.ts @@ -0,0 +1,3 @@ +import { SettingsDialogComponent } from './settings.dialog.component'; + +export const COMPONENTS = [SettingsDialogComponent]; diff --git a/src/app/dialogs/account/components/settings.dialog.component.html b/src/app/dialogs/account/components/settings.dialog.component.html new file mode 100644 index 0000000..ed932b0 --- /dev/null +++ b/src/app/dialogs/account/components/settings.dialog.component.html @@ -0,0 +1,471 @@ +
+ +
+ {{ 'organization:settings.label' | ucapI18n }} +
+
+ + + +

{{ 'organization:settings.sub.general' | ucapI18n }}

+
+
+ + +
+
+ {{ + 'organization:settings.language.messenger' | ucapI18n + }} + +
+
+ + + + {{ 'locale:languages.' + languageCode | ucapI18n }} + + + +
+
+
+
+ {{ + 'organization:settings.language.hr' | ucapI18n + }} + +
+
+ + + + {{ 'locale:languages.' + languageCode | ucapI18n }} + + + +
+
+
+
+ {{ 'organization:settings.timezone' | ucapI18n }} + +
+
+ + + + + {{ timezone.displayName }} + + + + +
+
+
+
+ + +

{{ 'organization:settings.sub.notification' | ucapI18n }}

+
+
+ +
+
+ {{ 'organization:settings.notification.receival' | ucapI18n }} +
+
+ + + {{ + 'organization:settings.notification.receive' | ucapI18n + }} + + + {{ + 'organization:settings.notification.notReceive' | ucapI18n + }} + + +
+
+
+
+ {{ 'organization:settings.notification.method' | ucapI18n }} +
+
+ + + + {{ + 'organization:settings.notification.methodTypeSound' + | ucapI18n + }} + + + {{ + 'organization:settings.notification.methodTypeAlert' + | ucapI18n + }} + + + {{ + 'organization:settings.notification.methodTypeSoundAndAlert' + | ucapI18n + }} + + + +
+
+
+
+ {{ + 'organization:settings.notification.settingOfAlertWindow' + | ucapI18n + }} +
+
+ + + + 5{{ 'common:units.second' | ucapI18n }} + + + 10{{ 'common:units.second' | ucapI18n }} + + + 15{{ 'common:units.second' | ucapI18n }} + + + 20{{ 'common:units.second' | ucapI18n }} + + + +
+
+
+
+ {{ + 'organization:settings.notification.receiveForMobile' + | ucapI18n + }} +
+
+
    +
  • + + {{ + 'organization:settings.notification.receiveForMessageTypePopup' + | ucapI18n + }} + +
  • +
+
+
+
+
+ + +

{{ 'chat:settings.label' | ucapI18n }}

+
+
+ +
+
파일 전송
+
+
+ 다운로드 폴더 +
+
+ + + + +
+ +
+
+
+
+ + +

{{ 'call:settings.label' | ucapI18n }}

+
+
+ +
+
+ Click to Call + + | PC Messenger에서 Click to Call 기능을 사용할 기기 설정 +
+
+ + 휴대폰 + 사무실 + +
+
+
+
+ + +

{{ 'authentication:password.settings.label' | ucapI18n }}

+
+
+ +
+
+ {{ 'authentication:password.fields.changePassword' | ucapI18n }} +
+
+
+ {{ + 'authentication:password.fields.currentPassword' | ucapI18n + }} +
+
+ + + + Hint + +
+
+
+
+ {{ 'authentication:password.fields.newPassword' | ucapI18n }} +
+
+ + + + 반드시 영어 소문자, 숫자, 특수문자 중 2가지 이상 사용해야 + 합니다. + + + + + + Error + +
+
+ +
+
+
+ info_outline + {{ 'authentication:password.notice.condition' | ucapI18n }} +
+
+ {{ 'authentication:password.notice.condition1' | ucapI18n }} +
+
+ {{ 'authentication:password.notice.condition2' | ucapI18n }} +
+
+ {{ 'authentication:password.notice.condition3' | ucapI18n }} +
+
+ {{ 'authentication:password.notice.condition4' | ucapI18n }} +
+
+ {{ 'authentication:password.notice.condition5' | ucapI18n }} +
+
+
+
+
+
+
+
+
+ + +
+
+
diff --git a/src/app/dialogs/account/components/settings.dialog.component.scss b/src/app/dialogs/account/components/settings.dialog.component.scss new file mode 100644 index 0000000..fbd800c --- /dev/null +++ b/src/app/dialogs/account/components/settings.dialog.component.scss @@ -0,0 +1,224 @@ +@import '~@ucap/lg-scss/mixins'; +.dialog-container { + width: 100%; + height: 100%; + + .dialog-body { + width: 100%; + height: 100%; + .messenger-settings-area { + border-top: 10px solid #f1f2f6; + background-color: #fff; + display: flex; + flex-direction: column; + width: 100%; + padding: 10px 16px 9px; + &:first-of-type { + border-top: 0; + padding: 20px 16px 9px; + } + .title-settings-subject { + color: #5c444b; + font-size: 1.071em; + font-weight: 600; + line-height: 1.2; + padding: 6px 0 7px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + min-height: 30px; + span { + flex: 0 0 auto; + } + em { + flex: 0 1 auto; + justify-self: start; + font-style: normal; + font-size: 0.929em; + color: #999; + font-weight: 400; + @include wordBreak(); + @include ellipsis-column(1); + width: 100%; + } + .btn-subject-info { + width: 30px; + height: 30px; + line-height: 30px; + font-size: 18px; + } + } + .settings-contents { + ul { + li { + padding: 6px 0 7px; + } + } + .settings-radio-group { + padding: 6px 0 7px; + height: 42px; + display: flex; + flex-direction: row; + align-items: center; + .mat-radio-button { + margin-left: 20%; + &:first-child { + margin-left: 0; + } + } + } + } + .settings-contents02 { + display: flex; + flex-direction: row; + align-items: center; + margin-top: 25px; + @include screen(xs) { + flex-direction: column; + } + .subtitle-settings-info { + font-size: 0.929em; + color: #262626; + align-self: baseline; + @include screen(xs) { + flex: 1 0 auto; + } + } + .settings-sub-content { + display: flex; + flex-direction: column; + margin-left: 25px; + width: 60%; + @include screen(xs) { + flex: 0 1 auto; + width: 100% !important; + margin-left: 0; + } + .setting-input-obj { + @include ucapMatFormField(0, 0, 0%, 100%, 100%, 60px, 11px); + overflow: hidden; + margin-top: 15px; + &:first-of-type { + margin-top: 0; + @include screen(xs) { + margin-top: 15px; + } + } + .mat-hint { + line-height: 1.3; + } + } + &.sub-set-content { + width: auto; + flex: 1 1 auto; + .input-set-obj { + @include ucapMatFormField(0, 0, 0%, 100%, 100%, 55px, 11px); + } + } + } + } + } + + .default-settings-area { + display: flex; + flex-direction: column; + align-items: flex-start; + .login-setting-box { + } + .language-setting-box, + .time-setting-box { + .settings-contents { + width: 50%; + height: 50px; + @include screen(mid) { + width: 70%; + } + @include screen(xs) { + width: 100%; + } + .setting-select-obj { + @include ucapMatFormField(0, 0, 100%, 100%, 100%, 40px, 28px); + //@include ucapMatSelect(25px, 0 0); + + .general-timezone-viewport { + height: 250px; + width: 100%; + } + } + } + } + } + .allim-settings-area { + display: flex; + flex-direction: column; + align-items: flex-start; + .allim-way-box, + .allim-time-box { + .settings-contents { + width: 50%; + height: 50px; + @include screen(mid) { + width: 70%; + } + @include screen(xs) { + width: 100%; + } + .setting-select-obj { + @include ucapMatFormField(0, 0, 100%, 100%, 100%, 40px, 28px); + //@include ucapMatSelect(25px, 0 0); + } + } + } + } + .chat-settings-area { + } + .call-settings-area { + } + .secret-num-settings-area { + .pass-info-box { + dl { + border: 1px solid #dfe0e8; + background-color: #f7f8fa; + dt { + height: 30px; + background-color: #fff; + display: flex; + flex-direction: row; + align-items: center; + font-size: 0.857em; + font-weight: 600; + .bullet-ico-info { + flex: 0 0 36px; + text-align: center; + font-size: 16px; + width: 30px; + height: 30px; + line-height: 30px; + } + } + dd { + font-size: 0.857em; + color: #666; + line-height: 1.6; + margin: 2px 36px 3px; + &:first-of-type { + margin-top: 10px; + } + &:last-of-type { + margin-bottom: 10px; + } + } + } + } + } + } + .btn-box { + display: flex; + flex-direction: row; + justify-content: flex-end; + button { + @include ucap-button-flat-stroked(120px); + } + } +} diff --git a/src/app/dialogs/account/components/settings.dialog.component.spec.ts b/src/app/dialogs/account/components/settings.dialog.component.spec.ts new file mode 100644 index 0000000..692e93d --- /dev/null +++ b/src/app/dialogs/account/components/settings.dialog.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { SettingsDialogComponent } from './settings.dialog.component'; + +describe('app::account::SettingsDialogComponent', () => { + let component: SettingsDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SettingsDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SettingsDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/dialogs/account/components/settings.dialog.component.ts b/src/app/dialogs/account/components/settings.dialog.component.ts new file mode 100644 index 0000000..a2bf624 --- /dev/null +++ b/src/app/dialogs/account/components/settings.dialog.component.ts @@ -0,0 +1,189 @@ +import moment from 'moment'; +import 'moment-timezone'; + +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject, + ViewChild +} from '@angular/core'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog +} from '@angular/material/dialog'; +import { MatSelectChange, MatSelect } from '@angular/material/select'; + +import { NativeService, NativeType } from '@ucap/native'; + +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; + +import { environment } from '@environments'; + +import { + Settings, + GeneralSetting, + NotificationSetting, + ChatSetting, + PresenceSetting +} from '@app/models/settings'; +import { I18nService } from '@ucap/ng-i18n'; +import { VirtualScrollViewportComponent } from '@ucap/ng-ui'; +import { FormControl } from '@angular/forms'; +import { MatOptionSelectionChange } from '@angular/material/core'; + +export interface TimezoneData { + displayName: string; + name: string; +} + +export interface SettingsDialogData { + settings: Settings; +} +export interface SettingsDialogResult {} + +@Component({ + selector: 'app-sections-account-settings', + templateUrl: './settings.dialog.component.html', + styleUrls: ['./settings.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SettingsDialogComponent implements OnInit, OnDestroy { + @ViewChild('vsTimezone', { static: false }) + vsTimezone: VirtualScrollViewportComponent; + + @ViewChild('selectForTimezone', { static: false }) + selectForTimezone: MatSelect; + + formControlForTimezone = new FormControl(); + + platform: 'browser' | 'electron' = 'electron'; + + generalSetting: GeneralSetting; + notificationSetting: NotificationSetting; + chatSetting: ChatSetting; + presenceSetting: PresenceSetting; + + timezoneList: TimezoneData[]; + timezonePlaceholder: string; + + supportedLanguages = environment.productConfig.supportedLanguages; + supportedHrLanguages = + environment.productConfig.organization.supportedLanguages; + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: SettingsDialogData, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private i18nService: I18nService, + private changeDetectorRef: ChangeDetectorRef, + public matDialog: MatDialog + ) { + this.nativeService.platform_nativeType().then((type) => { + switch (type) { + case NativeType.Browser: + this.platform = 'browser'; + break; + case NativeType.Electron: + this.platform = 'electron'; + break; + default: + break; + } + }); + + this.generalSetting = data.settings.general; + this.notificationSetting = data.settings.notification; + this.chatSetting = data.settings.chat; + this.presenceSetting = data.settings.presence; + } + + private ngOnDestroySubject: Subject = new Subject(); + + ngOnInit(): void { + this.generateTimezoneData(); + + this.i18nService.languageChanged$ + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((lang) => { + this.generateTimezoneData(); + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onSelectionChangeLanguage(event: MatSelectChange) {} + + onSelectionChangeHrLanguage(event: MatSelectChange) {} + + onOpenedChangeTimezone(opened: boolean) { + if (opened) { + this.setTimezoneData(); + this.vsTimezone.checkViewportSize(); + } + } + + onSelectionChangeTimezone(event: MatOptionSelectionChange) { + if (!event.isUserInput) { + return; + } + } + + onClosed(event: MouseEvent): void { + this.dialogRef.close(); + } + + onCancel() {} + + onConfirm() {} + + private generateTimezoneData() { + const timezoneData = this.i18nService.t('locale:timezone', { + returnObjects: true + }); + + let timezoneList: TimezoneData[] = []; + for (const name of moment.tz.names()) { + const displayName = `(UTC${moment.tz(name).format('Z')}) ${ + timezoneData[name] + }`; + timezoneList.push({ + displayName, + name + }); + if (name === this.generalSetting.timezone) { + this.timezonePlaceholder = displayName; + } + } + timezoneList = timezoneList.sort((a: TimezoneData, b: TimezoneData) => { + return a.displayName.localeCompare(b.displayName); + }); + + this.timezoneList = timezoneList; + } + + private setTimezoneData() { + const timezoneIndex = this.timezoneList.findIndex( + (t) => t.name === this.generalSetting.timezone + ); + + if (-1 !== timezoneIndex) { + if (!!this.vsTimezone && !!this.selectForTimezone) { + this.vsTimezone.scrollToIndex(timezoneIndex); + this.selectForTimezone.value = this.timezoneList[timezoneIndex].name; + } + } + } +} diff --git a/src/app/layouts/components/default-dialog.layout.component.html b/src/app/layouts/components/default-dialog.layout.component.html index 21954be..20b6def 100644 --- a/src/app/layouts/components/default-dialog.layout.component.html +++ b/src/app/layouts/components/default-dialog.layout.component.html @@ -1,11 +1,17 @@
-
+
+
+ +
-
- - - +
+
+
+
+ +
+
+ +
+
+
+ + + +
+
+ +
+
diff --git a/src/app/layouts/components/default-drawer.layout.component.scss b/src/app/layouts/components/default-drawer.layout.component.scss new file mode 100644 index 0000000..b29a996 --- /dev/null +++ b/src/app/layouts/components/default-drawer.layout.component.scss @@ -0,0 +1,35 @@ +.layout-container { + width: 100%; + height: 100%; + + .layout-header { + align-items: center; + justify-content: space-between; + color: #333; + font-weight: 600; + font-size: 1.143em; + border-bottom: 1px solid #333; + margin: 0 16px; + .layout-header-content { + width: 100%; + height: 100%; + } + } + .layout-body { + overflow: auto; + + .layout-body-content { + width: 100%; + height: 100%; + } + } + .layout-action { + display: flex; + align-items: center; + justify-content: flex-end; + .layout-action-content { + width: 100%; + height: 100%; + } + } +} diff --git a/src/app/layouts/components/default-drawer.layout.component.spec.ts b/src/app/layouts/components/default-drawer.layout.component.spec.ts new file mode 100644 index 0000000..94bfc75 --- /dev/null +++ b/src/app/layouts/components/default-drawer.layout.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { DefaultDrawerLayoutComponent } from './default-drawer.layout.component'; + +describe('app::layouts::DefaultDrawerLayoutComponent', () => { + let component: DefaultDrawerLayoutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [DefaultDrawerLayoutComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DefaultDrawerLayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/layouts/components/default-drawer.layout.component.ts b/src/app/layouts/components/default-drawer.layout.component.ts new file mode 100644 index 0000000..bcb3ed9 --- /dev/null +++ b/src/app/layouts/components/default-drawer.layout.component.ts @@ -0,0 +1,45 @@ +import { Subject } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + EventEmitter, + Output +} from '@angular/core'; + +@Component({ + selector: 'app-layouts-default-drawer', + templateUrl: './default-drawer.layout.component.html', + styleUrls: ['./default-drawer.layout.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class DefaultDrawerLayoutComponent implements OnInit, OnDestroy { + @Input() + disableClose = false; + + @Output() + closed = new EventEmitter(); + + constructor(private changeDetectorRef: ChangeDetectorRef) {} + + private ngOnDestroySubject: Subject; + + ngOnInit(): void { + this.ngOnDestroySubject = new Subject(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onClickClose(event: MouseEvent): void { + this.closed.emit(event); + } +} diff --git a/src/app/layouts/components/default.layout.component.html b/src/app/layouts/components/default.layout.component.html index 1ae90fa..cd0f482 100644 --- a/src/app/layouts/components/default.layout.component.html +++ b/src/app/layouts/components/default.layout.component.html @@ -3,12 +3,13 @@
-
+
-
+
-
+
-
+
-
- -
- + + +
+ + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ dialpad +
+
M-Messenger @@ -242,7 +398,41 @@
- + +
+
+ Today{{ moment().format('YYYY.MM.DD') }} +
+
+ + + + +
+ +
+
+
+
@@ -269,3 +459,16 @@
+ + + + + + diff --git a/src/app/layouts/components/default.layout.component.scss b/src/app/layouts/components/default.layout.component.scss index 2ee8d09..68102d8 100644 --- a/src/app/layouts/components/default.layout.component.scss +++ b/src/app/layouts/components/default.layout.component.scss @@ -12,18 +12,20 @@ .navitab-page { //GNB ///////////////////////////////////// .gnb { - background-color: $gray-ref0; + //background-color: $gray-ref0; + background-color: #f1f2f6; width: 60px; height: 100%; display: flex; flex-direction: column; justify-content: space-between; align-items: center; - border-right: 1px solid rgba(204, 204, 204, 0.8); + border-right: 1px solid rgba(0, 0, 0, 0.2); .mat-gnb-toolbar { - flex-basis: 64px; + flex-basis: 40px; + padding: 2px 12px 10px; .img-logo { - margin: 9px 0 5px; + margin: 6px 0 0 1px; } } .left-container { @@ -33,13 +35,14 @@ } .global-menu { width: 100%; - background-color: $gray-ref0; + //background-color: $gray-ref0; flex-grow: 1; } .btn-homepage-area { flex-flow: column-reverse; position: relative; button { + /* padding: 30px 0 12px; &::before { content: ''; @@ -51,6 +54,21 @@ top: 9px; left: calc(50% - 10px); } + */ + padding: 30px 0 12px; + border-radius: 21px; + min-width: 42px; + &::before { + content: ''; + width: 30px; + height: 30px; + background-image: url(../../../assets/images/ico/btn_gnb_hompage.svg); + background-size: 30px; + display: block; + position: absolute; + top: 5px; + left: calc(50% - 15px); + } em { font-style: normal; font-size: 8px; @@ -61,139 +79,6 @@ } } } - ::ng-deep .global-menu { - //display: flex; - //flex-direction: row; - .mat-tab-header { - border-bottom: none !important; - width: 100%; - } - .mat-tab-label-container { - .mat-tab-list { - .mat-tab-labels { - display: flex; - flex-flow: column; - justify-content: space-around; - height: 272px; - border-bottom: none; - - .mat-tab-label { - width: 100%; - height: 32px; - padding: 0; - min-width: 0 !important; - .mat-tab-label-content { - .icon-item { - display: inline-flex; - width: 32px; - height: 32px; - border-radius: 50%; - justify-content: center; - align-items: center; - //transform: scale(0.9); - transition: transform 0.3s cubic-bezier(0.4, 0, 0, 1); - - svg { - //width: 24px; - //height: 24px; - stroke: $gray-re9; - stroke-width: 2; - stroke-linecap: square; - stroke-linejoin: miter; - fill: none; - g { - &#icon_gnb_organiztion_g32 { - .prefix__cls-1, - .prefix__cls-4 { - fill: none; - } - .prefix__cls-1 { - stroke: #999; - stroke-width: 2px; - } - .prefix__cls-3 { - stroke: none; - } - } - &#icon_gnb_message_g32 { - .prefix__cls-1 { - fill: none; - stroke: #999; - stroke-width: 2px; - stroke-linejoin: round; - } - } - } - } - .mat-badge-content { - right: -9px !important; - border: 1px solid #ffbf2a; - //width: 24px; - //height: 24px; - box-sizing: content-box; - top: -10px !important; - } - } - } - &.mat-tab-label-active { - opacity: 0; - svg { - stroke: #fff !important; - g { - &#prefix_23, - &#icon_gnb_chat_g32, - &#icon_gnb_call_g32 { - path { - &:nth-child(2) { - fill: #fff !important; - } - } - } - &#icon_gnb_organiztion_g32 { - .prefix__cls-1 { - stroke: #fff !important; - } - path { - &:nth-last-of-type(2) { - stroke: #fff !important; - } - } - } - &#icon_gnb_message_g32 { - .prefix__cls-1 { - stroke: #fff !important; - } - path { - &:nth-child(3) { - stroke: #fff !important; - } - } - } - } - } - } - &[aria-selected='true'] { - opacity: 1; - .mat-tab-label-content { - .icon-item { - transform: scale(1); - } - } - } - } - } - .mat-ink-bar { - opacity: 0; - } - } - } - .mat-tab-body-wrapper { - .mat-tab-body { - height: 100%; - width: 100%; - } - } - } } /////////////////////////////////////GNB // } @@ -213,6 +98,7 @@ .left-sidenav { width: 370px; max-width: 90%; + border-right: 1px solid rgba(0, 0, 0, 0.2); .left-sidenav-container { width: 100%; @@ -222,8 +108,10 @@ size: 13px; color: $gray-re70; } - line-height: 15px; - padding: 25px 0 0 17px; + height: 40px; + display: flex; + align-items: center; + padding: 0 16px; } } } @@ -232,6 +120,96 @@ .content-sidenav-container { width: 100%; height: 100%; + overflow: hidden; //20200611 + .content-sidenav-top-bar { + .content-sidenav-top-bar-content { + height: 40px; + width: auto; + background-color: transparent; + display: flex; + flex-direction: row; + align-items: center; + flex-grow: 1; + font-size: 12px; + justify-content: space-between; + .toolbar-info-area { + display: flex; + flex-grow: 1; + align-items: center; + &.date-info { + @include font-family($font-light); + font-weight: 600; + font-size: 12px; + color: $gray-re70; + padding-left: 30px; + @include screen(mid) { + padding-left: 16px; + display: none; + } + span { + width: 54px; + height: 16px; + border-radius: 30px; + border: solid 1px $lipstick; + background-color: #ffffff; + font-size: 11px; + + display: flex; + align-items: center; + justify-content: center; + color: $lipstick; + margin-right: 8px; + } + } + &.toolbar-ctrl { + flex-flow: row-reverse; + .topbar-search { + order: 2; + margin-right: 8px; + .ico-search-icon { + width: 18px; + height: 18px; + font-size: 18px; + line-height: 18px; + color: #707070; + } + } + .my-profile { + height: 30px; + width: 30px; + margin-right: 20px; + order: 1; + //profile ///////////// + .user-profile-thumb { + @include profile-avatar-default( + 0, + 14, + $green, + 18px + ); //오른 아래 공간, 모바일 온라인 아이콘 크기, 모바일 아이콘 색, 모바일 아이콘 bg크기 + + .presence { + //PC 상태 + @include presence-state(10px); //원크기 + position: relative; + align-self: flex-end; + margin-left: -10px; + order: 2; + } + .profileImage { + @include avatar-img(30px, 0); //아바타 크기, 왼쪽공간 + order: 1; + } + } + ///// profile// + } + .app-layout-native-title-bar-actions { + order: 0; + } + } + } + } + } .content-sidenav-body { overflow: auto; @@ -250,7 +228,7 @@ justify-content: space-between; width: 100%; height: 38px; - border-top: 1px solid $line-color-gray01; + border-top: 1px solid rgba(0, 0, 0, 0.2); background-color: $white; .foot-info { display: flex; @@ -264,6 +242,13 @@ .var-txt { padding-left: 8px; color: $gray-re70; + text-align: center; + @include screen(custom, max, 414) { + padding-left: 22px; + flex-basis: 38%; + flex-grow: 0; + line-height: 1.2; + } &::before { content: ''; width: 1px; @@ -271,10 +256,19 @@ display: inline-block; background-color: #d4d4d4; margin-right: 8px; + @include screen(custom, max, 414) { + margin-left: -10px; + } } &:first-of-type { + @include screen(custom, max, 414) { + padding-left: 0; + } &::before { width: 0; + @include screen(custom, max, 414) { + margin-left: -4px; + } } } &.new-var { @@ -287,11 +281,13 @@ padding-right: 20px; p { margin: 0; + text-align: right; span { color: $lipstick; } em { margin-left: 10px; + white-space: nowrap; } } } @@ -301,3 +297,41 @@ } } } + +// Float action button +.ico-font-float { + svg { + .prefix_cls-2 { + fill: transparent; + stroke-width: 2px; + stroke: rgba(255, 255, 255, 1); + } + .prefix_cls-3 { + stroke: rgba(255, 255, 255, 1); + } + .prefix_cls-4 { + fill: rgba(255, 255, 255, 1); + } + } + &:hover { + svg { + .prefix_cls-2 { + stroke: rgba(255, 255, 255, 0.7); + } + .prefix_cls-3 { + stroke: rgba(255, 255, 255, 0.7); + } + .prefix_cls-4 { + fill: rgba(255, 255, 255, 0.7); + } + } + } +} + +.ico-font-dialpad { + font-size: 28px !important; + line-height: 44px; + &:hover { + color: rgba(255, 255, 255, 0.7); + } +} diff --git a/src/app/layouts/components/default.layout.component.ts b/src/app/layouts/components/default.layout.component.ts index de48dd1..f432c37 100644 --- a/src/app/layouts/components/default.layout.component.ts +++ b/src/app/layouts/components/default.layout.component.ts @@ -1,17 +1,40 @@ -import { Subscription } from 'rxjs'; +import moment from 'moment'; + +import { Subject, of } from 'rxjs'; +import { takeUntil, filter, take, map, catchError } from 'rxjs/operators'; import { Component, ViewChild, OnDestroy, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; +import { + Router, + RouterEvent, + NavigationEnd, + PRIMARY_OUTLET, + ActivatedRoute, + Params +} from '@angular/router'; import { Store, select } from '@ngrx/store'; +import { MatDialog } from '@angular/material/dialog'; +import { MatMenuTrigger } from '@angular/material/menu'; import { MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs'; import { MatSidenav } from '@angular/material/sidenav'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { UserInfoSS } from '@ucap/protocol-query'; + import { LogService } from '@ucap/ng-logger'; +import { UserSelector } from '@ucap/ng-store-organization'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { RoomSelector } from '@ucap/ng-store-chat'; import { AppSelector } from '@app/store/state'; import { AppChatService } from '@app/services/app-chat.service'; +import { QueryParams as ChatQueryParams } from '@app/pages/chat/types/params.type'; +import { CreateDialogComponent } from '@app/sections/group/dialogs/create.dialog.component'; +import { AppAccountService } from '@app/services/app-account.service'; +import { QueryParams as OrganizationParams } from '@app/pages/organization/types/params.type'; +import { User } from '@ucap/protocol-info'; const NAVS = ['group', 'chat', 'organization', 'message']; @@ -27,79 +50,170 @@ export class DefaultLayoutComponent implements OnInit, OnDestroy { @ViewChild('leftSidenav', { static: true }) leftSidenav: MatSidenav; + isShowLeftSideNav = false; + + @ViewChild('profileMenuTrigger', { static: true }) + profileMenuTrigger: MatMenuTrigger; + showStatusbar = true; + tabIndex: string; + queryParams: Params; + + unreadCountChat = 0; + /** FAB */ fabButtonShow = true; + fabUseCustomDefaultIcon = true; // default in this prj fabButtons: { icon: string; tooltip?: string; divisionType?: string }[]; + versionInfo2Res: VersionInfo2Response; + user: User; - private windowSizeSubscription: Subscription; + moment = moment; + + private ngOnDestroySubject: Subject = new Subject(); constructor( private router: Router, + private activatedRoute: ActivatedRoute, private store: Store, + private appAccountService: AppAccountService, private appChatService: AppChatService, - private logService: LogService - ) {} + private logService: LogService, + public dialog: MatDialog + ) { + this.setFabInitial(NAVS[0]); + this.router.events + .pipe( + takeUntil(this.ngOnDestroySubject), + filter((event) => event instanceof RouterEvent) + ) + .subscribe((event) => { + switch (event.constructor) { + case NavigationEnd: + { + const t = this.router.parseUrl((event as NavigationEnd).url); + const p = t.root.children[PRIMARY_OUTLET]; + if (!p || !p.segments || 0 === p.segments.length) { + break; + } + const index = p.segments[0].path; + this.setTabGroup(index); + this.setFabInitial(index); + } + break; + default: + break; + } + }); + + this.activatedRoute.queryParams + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((params) => { + this.queryParams = params; + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + } ngOnInit(): void { - this.windowSizeSubscription = this.store - .pipe(select(AppSelector.windowSize)) + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(AppSelector.windowSize)) .subscribe((size) => { if (size.width < 780) { if (this.leftSidenav.opened) { this.leftSidenav.close(); } + this.isShowLeftSideNav = false; + this.leftSidenav.mode = 'over'; } else { if (!this.leftSidenav.opened) { this.leftSidenav.open(); } + this.isShowLeftSideNav = true; + this.leftSidenav.mode = 'side'; } }); - this.setTabGroup(this.router.url); + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + }); - this.setFabInitial(NAVS[0]); + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(RoomSelector.unreadTotal) + ) + .subscribe((unreadTotal) => { + this.unreadCountChat = unreadTotal; + }); } ngOnDestroy(): void { - if (!this.windowSizeSubscription) { - this.windowSizeSubscription.unsubscribe(); + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); } } + onOpenProfile(userInfo: UserInfoSS) { + this.profileMenuTrigger.openMenu(); + } + onSelectedTabChange(event: MatTabChangeEvent) { - if (4 === event.index) { - this.router.navigate( - ['group', { outlets: { content: 'chat/index' } }], - {} - ); - return; - } - this.router.navigate([ + const commands: any = [ NAVS[event.index], { outlets: { content: 'index' } } - ]); + ]; + const orgInitialParams: Params = {}; + + if ( + event.index === 1 && // is chat. + !!this.queryParams && + !!this.queryParams[ChatQueryParams.ROOM_ID] + ) { + // 다른 화면에서 채팅으로 바로 유입할 경우에는 navigate 초기화를 무시한다. + this.queryParams = undefined; + return; + } + // if (!!this.tabIndex && this.tabIndex === 'chat') { + // if (!!this.queryParams && !!this.queryParams[ChatQueryParams.ROOM_ID]) { + // return; + // } else { + + // } + // } else { + // } + + if (event.index === 2 && !!this.user) { + orgInitialParams[OrganizationParams.DEPT_SEQ] = String( + this.user.departmentCode + ); + } + this.router.navigate(commands, { queryParams: orgInitialParams }); + if (!this.isShowLeftSideNav) { + this.leftSidenav.open(); + } this.setFabInitial(NAVS[event.index]); } onClickToggleLeftSidenav() { - if (this.leftSidenav.opened) { - this.leftSidenav.close(); - } else { - this.leftSidenav.open(); - } - } - - private setTabGroup(url: string) { - if (!!this.navTabGroup) { - this.navTabGroup.selectedIndex = NAVS.findIndex((v) => - url.startsWith(`/${v}`) - ); + if (!this.isShowLeftSideNav) { + this.leftSidenav.toggle(); } } setFabInitial(type: string) { + this.tabIndex = type; switch (type) { case 'group': { @@ -172,7 +286,20 @@ export class DefaultLayoutComponent implements OnInit, OnDestroy { switch (btn.divisionType) { case 'GROUP_NEW_ADD': { - this.logService.debug('GROUP_NEW_ADD'); + const dialogRef = this.dialog.open(CreateDialogComponent, { + panelClass: 'max-create-dialog' + }); + + dialogRef + .afterClosed() + .pipe( + take(1), + map((result) => {}), + catchError((err) => { + return of(err); + }) + ) + .subscribe(); } break; case 'CAHT_NEW_ADD': @@ -195,4 +322,37 @@ export class DefaultLayoutComponent implements OnInit, OnDestroy { break; } } + + onClickSearch(event: Event) { + event.stopPropagation(); + } + + onSelectedProfileManage() { + this.profileMenuTrigger.closeMenu(); + } + + onSelectedNotice() { + this.profileMenuTrigger.closeMenu(); + } + + onSelectedSettings() { + this.profileMenuTrigger.closeMenu(); + this.appAccountService.dialogForSettings(); + } + + onSelectedLogout() { + this.router.navigate(['/account/logout']); + } + + onSelectedExit() {} + + onDoneForProfileMenu() { + this.profileMenuTrigger.closeMenu(); + } + + private setTabGroup(url: string) { + if (!!this.navTabGroup) { + this.navTabGroup.selectedIndex = NAVS.findIndex((v) => url === v); + } + } } diff --git a/src/app/layouts/components/index.ts b/src/app/layouts/components/index.ts index 78d1e3a..2e67d24 100644 --- a/src/app/layouts/components/index.ts +++ b/src/app/layouts/components/index.ts @@ -4,6 +4,7 @@ import { DefaultLayoutComponent } from './default.layout.component'; import { NoNaviLayoutComponent } from './no-navi.layout.component'; import { DefaultDialogLayoutComponent } from './default-dialog.layout.component'; +import { DefaultDrawerLayoutComponent } from './default-drawer.layout.component'; import { SelectorLayoutComponent } from './selector.layout.component'; export const COMPONENTS = [ @@ -12,6 +13,7 @@ export const COMPONENTS = [ NoNaviLayoutComponent, DefaultDialogLayoutComponent, + DefaultDrawerLayoutComponent, SelectorLayoutComponent ]; diff --git a/src/app/layouts/components/no-navi.layout.component.scss b/src/app/layouts/components/no-navi.layout.component.scss index 7d4bc06..7285ecc 100644 --- a/src/app/layouts/components/no-navi.layout.component.scss +++ b/src/app/layouts/components/no-navi.layout.component.scss @@ -1,2 +1,3 @@ .layout-container { + background-color: #f3f4f5; } diff --git a/src/app/layouts/components/selector.layout.component.html b/src/app/layouts/components/selector.layout.component.html index 4651501..12b0a6a 100644 --- a/src/app/layouts/components/selector.layout.component.html +++ b/src/app/layouts/components/selector.layout.component.html @@ -9,9 +9,10 @@ matSuffix aria-label="Clear" class="btn-close" - color="accent" + color="primary" + (click)="onClickClose($event)" > - highlight_off + close
diff --git a/src/app/layouts/components/selector.layout.component.scss b/src/app/layouts/components/selector.layout.component.scss index e69de29..722b82c 100644 --- a/src/app/layouts/components/selector.layout.component.scss +++ b/src/app/layouts/components/selector.layout.component.scss @@ -0,0 +1,17 @@ +.selector { + border-bottom: 1px solid #ccc; + .selector-title { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding: 0 5px 0 16px; + //border-top: 1px solid #ccc; + } + .selector-contents { + background-color: #fff; + border-top: 1px solid #ccc; + } + .footer { + } +} diff --git a/src/app/layouts/components/selector.layout.component.ts b/src/app/layouts/components/selector.layout.component.ts index 5d3104a..9127fd5 100644 --- a/src/app/layouts/components/selector.layout.component.ts +++ b/src/app/layouts/components/selector.layout.component.ts @@ -2,9 +2,10 @@ import { Component, OnInit, OnDestroy, - Input, ChangeDetectionStrategy, - ChangeDetectorRef + ChangeDetectorRef, + EventEmitter, + Output } from '@angular/core'; @Component({ @@ -14,9 +15,16 @@ import { changeDetection: ChangeDetectionStrategy.OnPush }) export class SelectorLayoutComponent implements OnInit, OnDestroy { + @Output() + closed = new EventEmitter(); + constructor(private changeDetectorRef: ChangeDetectorRef) {} ngOnInit(): void {} ngOnDestroy(): void {} + + onClickClose(event: MouseEvent): void { + this.closed.emit(); + } } diff --git a/src/app/layouts/components/top-bar.component.html b/src/app/layouts/components/top-bar.component.html index 6521605..9770328 100644 --- a/src/app/layouts/components/top-bar.component.html +++ b/src/app/layouts/components/top-bar.component.html @@ -1,10 +1,10 @@
+
diff --git a/src/app/layouts/components/top-bar.component.scss b/src/app/layouts/components/top-bar.component.scss index 9ef7b36..34e8778 100644 --- a/src/app/layouts/components/top-bar.component.scss +++ b/src/app/layouts/components/top-bar.component.scss @@ -2,5 +2,5 @@ width: 100%; height: 100%; padding: 0; - background-color: #ffffff; + background-color: transparent; } diff --git a/src/app/layouts/components/top-bar.component.ts b/src/app/layouts/components/top-bar.component.ts index 92fd79e..fa193e8 100644 --- a/src/app/layouts/components/top-bar.component.ts +++ b/src/app/layouts/components/top-bar.component.ts @@ -1,7 +1,16 @@ -import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { Component, OnInit, OnDestroy, Inject } from '@angular/core'; + +import * as detectBrowser from 'detect-browser'; import { Store } from '@ngrx/store'; +import { NativeService, WindowState, NativeType } from '@ucap/native'; + +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; + @Component({ selector: 'app-layouts-top-bar', templateUrl: './top-bar.component.html', @@ -9,13 +18,54 @@ import { Store } from '@ngrx/store'; }) export class TopBarComponent implements OnInit, OnDestroy { platform = 'win32'; - native = true; + windowState: WindowState; - constructor(private store: Store) {} + private ngOnDestroySubject: Subject = new Subject(); - ngOnInit() {} + constructor( + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private store: Store + ) { + this.nativeService.platform_nativeType().then((type) => { + switch (type) { + case NativeType.Browser: + this.platform = 'browser'; + break; + case NativeType.Electron: + { + const info = detectBrowser.detect(); + if (info.os.startsWith('Windows')) { + this.platform = 'win32'; + } else if (info.os.startsWith('Mac OS')) { + this.platform = 'darwin'; + } else if (info.os.startsWith('Linux')) { + this.platform = 'linux'; + } else { + } + } + break; - ngOnDestroy(): void {} + default: + break; + } + }); + } + + ngOnInit() { + this.nativeService + .window_onState$() + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((windowState) => { + this.windowState = windowState; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } onClosedTitleBar() {} diff --git a/src/app/layouts/layouts.module.ts b/src/app/layouts/layouts.module.ts index e958ce8..932e697 100644 --- a/src/app/layouts/layouts.module.ts +++ b/src/app/layouts/layouts.module.ts @@ -5,21 +5,25 @@ import { RouterModule } from '@angular/router'; import { FlexLayoutModule } from '@angular/flex-layout'; +import { MatBadgeModule } from '@angular/material/badge'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatSelectModule } from '@angular/material/select'; import { MatSidenavModule } from '@angular/material/sidenav'; import { MatTabsModule } from '@angular/material/tabs'; import { MatToolbarModule } from '@angular/material/toolbar'; +import { MatTooltipModule } from '@angular/material/tooltip'; import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; import { UiModule } from '@ucap/ng-ui'; +import { AppOrganizationModule } from '@app/ucap/organization/organization.module'; + import { COMPONENTS } from './components'; import { DIALOGS } from './dialogs'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; -import { MatSelectModule } from '@angular/material/select'; @NgModule({ imports: [ @@ -28,17 +32,22 @@ import { MatSelectModule } from '@angular/material/select'; FlexLayoutModule, + MatBadgeModule, MatButtonModule, MatIconModule, + MatMenuModule, + MatSelectModule, MatSidenavModule, MatTabsModule, MatToolbarModule, - MatSelectModule, + MatTooltipModule, PerfectScrollbarModule, I18nModule, - UiModule + UiModule, + + AppOrganizationModule ], exports: [...COMPONENTS, ...DIALOGS], declarations: [...COMPONENTS, ...DIALOGS], @@ -46,7 +55,7 @@ import { MatSelectModule } from '@angular/material/select'; providers: [ { provide: UCAP_I18N_NAMESPACE, - useValue: ['chat', 'common'] + useValue: ['common'] } ] }) diff --git a/src/app/models/group-open-info.ts b/src/app/models/group-open-info.ts new file mode 100644 index 0000000..342c265 --- /dev/null +++ b/src/app/models/group-open-info.ts @@ -0,0 +1,4 @@ +export interface GroupOpenInfo { + lastGroupSeq: number; + groupSeqs: number[]; +} diff --git a/src/app/models/login-session.ts b/src/app/models/login-session.ts index edc64fb..2645a78 100644 --- a/src/app/models/login-session.ts +++ b/src/app/models/login-session.ts @@ -1,8 +1,10 @@ import { LoginSession as UCAPLoginSession } from '@ucap/core'; +import { GroupOpenInfo } from './group-open-info'; export interface LoginSession extends UCAPLoginSession { loginPw?: string; initPw?: boolean; encData?: string; alive?: boolean; + groupInfo?: GroupOpenInfo; } diff --git a/src/app/pages/account/account-routing.page.module.ts b/src/app/pages/account/account-routing.page.module.ts index 9edf13c..3abbe8e 100644 --- a/src/app/pages/account/account-routing.page.module.ts +++ b/src/app/pages/account/account-routing.page.module.ts @@ -3,6 +3,7 @@ import { Routes, RouterModule } from '@angular/router'; import { ForgotPasswordPageComponent } from './components/forgot-password.page.component'; import { LoginPageComponent } from './components/login.page.component'; +import { LogoutPageComponent } from './components/logout.page.component'; import { ResetPasswordPageComponent } from './components/reset-password.page.component'; const routes: Routes = [ @@ -17,6 +18,10 @@ const routes: Routes = [ { path: 'reset_password', component: ResetPasswordPageComponent + }, + { + path: 'logout', + component: LogoutPageComponent } ]; diff --git a/src/app/pages/account/components/login.page.component.ts b/src/app/pages/account/components/login.page.component.ts index 6e3e0eb..2233f5f 100644 --- a/src/app/pages/account/components/login.page.component.ts +++ b/src/app/pages/account/components/login.page.component.ts @@ -25,13 +25,11 @@ export class LoginPageComponent implements OnInit, OnDestroy { readonly fixedCompanyCode = environment.companyConfig.fixedCompanyCode; - private ngOnDestroySubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); constructor(private localStorageService: LocalStorageService) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.localStorageService .encGet$( AppKey.UserStore, @@ -43,6 +41,7 @@ export class LoginPageComponent implements OnInit, OnDestroy { ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } diff --git a/src/app/pages/account/components/logout.page.component.html b/src/app/pages/account/components/logout.page.component.html new file mode 100644 index 0000000..d6bcfb8 --- /dev/null +++ b/src/app/pages/account/components/logout.page.component.html @@ -0,0 +1 @@ +
Logout
diff --git a/src/app/pages/account/components/logout.page.component.scss b/src/app/pages/account/components/logout.page.component.scss new file mode 100644 index 0000000..294bf9b --- /dev/null +++ b/src/app/pages/account/components/logout.page.component.scss @@ -0,0 +1,6 @@ +@import '~@ucap/lg-scss/mixins'; + +.logout-container { + width: 100%; + height: 100%; +} diff --git a/src/app/sections/account/components/login.section.component.spec.ts b/src/app/pages/account/components/logout.page.component.spec.ts similarity index 65% rename from src/app/sections/account/components/login.section.component.spec.ts rename to src/app/pages/account/components/logout.page.component.spec.ts index 15a95af..09cbb17 100644 --- a/src/app/sections/account/components/login.section.component.spec.ts +++ b/src/app/pages/account/components/logout.page.component.spec.ts @@ -1,28 +1,28 @@ import { TestBed, async } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { LoginSectionComponent } from './login.section.component'; +import { LogoutPageComponent } from './logout.page.component'; -describe('app::sections::account::LoginSectionComponent', () => { +describe('app::pages::account::LogoutPageComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule], - declarations: [LoginSectionComponent] + declarations: [LogoutPageComponent] }).compileComponents(); })); it('should create the app', () => { - const fixture = TestBed.createComponent(LoginSectionComponent); + const fixture = TestBed.createComponent(LogoutPageComponent); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it(`should have as title 'ucap-lg-web'`, () => { - const fixture = TestBed.createComponent(LoginSectionComponent); + const fixture = TestBed.createComponent(LogoutPageComponent); const app = fixture.componentInstance; }); it('should render title', () => { - const fixture = TestBed.createComponent(LoginSectionComponent); + const fixture = TestBed.createComponent(LogoutPageComponent); fixture.detectChanges(); const compiled = fixture.nativeElement; expect(compiled.querySelector('.content span').textContent).toContain( diff --git a/src/app/pages/account/components/logout.page.component.ts b/src/app/pages/account/components/logout.page.component.ts new file mode 100644 index 0000000..5db26a2 --- /dev/null +++ b/src/app/pages/account/components/logout.page.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; + +import { LocalStorageService } from '@ucap/ng-web-storage'; + +import { environment } from '@environments'; + +import { UserStore } from '@app/models/user-store'; +import { AppKey } from '@app/types/app-key.type'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +@Component({ + selector: 'app-pages-account-logout', + templateUrl: './logout.page.component.html', + styleUrls: ['./logout.page.component.scss'] +}) +export class LogoutPageComponent implements OnInit, OnDestroy { + private ngOnDestroySubject: Subject = new Subject(); + + constructor(private localStorageService: LocalStorageService) {} + + ngOnInit(): void {} + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } +} diff --git a/src/app/pages/chat/chat.page.module.ts b/src/app/pages/chat/chat.page.module.ts index d49c340..60cff30 100644 --- a/src/app/pages/chat/chat.page.module.ts +++ b/src/app/pages/chat/chat.page.module.ts @@ -8,6 +8,7 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatButtonModule } from '@angular/material/button'; import { MatSidenavModule } from '@angular/material/sidenav'; +import { MatTooltipModule } from '@angular/material/tooltip'; import { AppChatSectionModule } from '@app/sections/chat/chat.section.module'; @@ -27,6 +28,7 @@ import { UCAP_I18N_NAMESPACE, I18nModule } from '@ucap/ng-i18n'; MatCheckboxModule, MatButtonModule, MatSidenavModule, + MatTooltipModule, AppChatSectionModule, AppChatRoutingPageModule, diff --git a/src/app/pages/chat/components/chat-room.page.component.html b/src/app/pages/chat/components/chat-room.page.component.html index ddde23d..e2f0dd5 100644 --- a/src/app/pages/chat/components/chat-room.page.component.html +++ b/src/app/pages/chat/components/chat-room.page.component.html @@ -3,22 +3,72 @@
-
- -
-
- +
+
+ +
+
+ +
- Right Sections. + + + + + + +
diff --git a/src/app/pages/chat/components/chat-room.page.component.scss b/src/app/pages/chat/components/chat-room.page.component.scss index e69de29..3e1d1a2 100644 --- a/src/app/pages/chat/components/chat-room.page.component.scss +++ b/src/app/pages/chat/components/chat-room.page.component.scss @@ -0,0 +1,33 @@ +@import '~@ucap/lg-scss/mixins'; + +.contents-main { + position: relative; + .subtitle { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16); + position: relative; + z-index: 4; + } + .message-box-container { + overflow: hidden; + height: 100%; + .message-area { + position: relative; + height: 100%; + overflow: hidden; + } + .message-input { + max-height: 70%; + overflow-x: hidden; + overflow-y: auto; + padding: 1px 0; + background-color: $white; + } + } + .rightDrawer { + min-width: 360px; + max-width: 100%; + @include screen(xs) { + min-width: 100%; + } + } +} diff --git a/src/app/pages/chat/components/chat-room.page.component.ts b/src/app/pages/chat/components/chat-room.page.component.ts index 6205d58..8cf2b5b 100644 --- a/src/app/pages/chat/components/chat-room.page.component.ts +++ b/src/app/pages/chat/components/chat-room.page.component.ts @@ -3,8 +3,13 @@ import { ActivatedRoute, Params } from '@angular/router'; import { MatDrawer } from '@angular/material/sidenav'; -import { Subscription } from 'rxjs'; +import { Subscription, Subject, BehaviorSubject } from 'rxjs'; import { QueryParams } from '../types/params.type'; +import { ChatDrawType } from '../types/chat-draw.type'; +import { takeUntil } from 'rxjs/operators'; +import { DrawInfo } from '../models/draw-info'; +import { Store } from '@ngrx/store'; +import { RoomActions, ChattingActions } from '@ucap/ng-store-chat'; @Component({ selector: 'app-pages-chat-room', @@ -12,30 +17,65 @@ import { QueryParams } from '../types/params.type'; styleUrls: ['./chat-room.page.component.scss'] }) export class ChatRoomPageComponent implements OnInit, OnDestroy { - private paramsSubscription: Subscription; isChatSearch = false; roomId: string; + translationSimpleview = false; + + drawerType: ChatDrawType | null; + returnDrawerType: ChatDrawType | null; + eventSendTriggerSubject: BehaviorSubject = new BehaviorSubject(0); @ViewChild('chatRightDrawer', { static: false }) chatRightDrawer: MatDrawer; - constructor(private activatedRoute: ActivatedRoute) {} + ChatDrawType = ChatDrawType; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private activatedRoute: ActivatedRoute + ) {} ngOnInit(): void { - this.paramsSubscription = this.activatedRoute.queryParams.subscribe( - (params: Params) => { + this.activatedRoute.queryParams + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((params: Params) => { const seqParam = params[QueryParams.ROOM_ID]; + // initializing by roomId Change. + if (this.roomId !== seqParam) { + if (!!this.chatRightDrawer) { + this.chatRightDrawer.close(); + } + } + + // setting roomId. this.roomId = !!seqParam ? seqParam : undefined; - } - ); + }); } ngOnDestroy(): void { - if (!!this.paramsSubscription) { - this.paramsSubscription.unsubscribe(); + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); } + + if (!!this.eventSendTriggerSubject) { + this.eventSendTriggerSubject.complete(); + } + + // this.store.dispatch(RoomActions.clearSelectedRoom({ roomId: this.roomId })); + this.store.dispatch(ChattingActions.clearActiveRoomId({})); } - onRightDrawerToggle(): void { - this.chatRightDrawer.toggle(); + + onRightDrawerToggle(type: DrawInfo | null): void { + this.drawerType = type.chatDrawType; + this.returnDrawerType = !!type.returnDrawType ? type.returnDrawType : null; + this.chatRightDrawer.open(); + } + onRightDrawerClose(): void { + this.drawerType = null; + this.returnDrawerType = null; + this.chatRightDrawer.close(); } } diff --git a/src/app/pages/chat/components/index.page.component.html b/src/app/pages/chat/components/index.page.component.html index b5bbc78..7624710 100644 --- a/src/app/pages/chat/components/index.page.component.html +++ b/src/app/pages/chat/components/index.page.component.html @@ -1 +1,39 @@ -Index page of chat is works! +
+
+ + + + + + + + + +
+

+ {{ 'chat:room.noSelectRoom' | ucapI18n }} +

+
diff --git a/src/app/pages/chat/components/index.page.component.scss b/src/app/pages/chat/components/index.page.component.scss index e69de29..49addc5 100644 --- a/src/app/pages/chat/components/index.page.component.scss +++ b/src/app/pages/chat/components/index.page.component.scss @@ -0,0 +1,21 @@ +.index-page-chat-info { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + .ico-page-chat { + width: 166px; + height: 142px; + margin-top: -80px; + } + .chat-index-copy { + font-size: 1.429em; + color: #666; + padding: 10px 20px; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + margin: 50px 0 0; + } +} diff --git a/src/app/pages/chat/components/sidenav.page.component.html b/src/app/pages/chat/components/sidenav.page.component.html index 6904461..09d3353 100644 --- a/src/app/pages/chat/components/sidenav.page.component.html +++ b/src/app/pages/chat/components/sidenav.page.component.html @@ -1,13 +1,41 @@
-

{{ 'label.chat' | ucapI18n }}

+

{{ 'chat:label.chat' | ucapI18n }}

- +
- + - - - diff --git a/src/app/pages/group/components/sidenav.page.component.scss b/src/app/pages/group/components/sidenav.page.component.scss index 5a24e7f..b09bab2 100644 --- a/src/app/pages/group/components/sidenav.page.component.scss +++ b/src/app/pages/group/components/sidenav.page.component.scss @@ -1,6 +1,6 @@ @import '~@ucap/lg-scss/mixins'; -.sidenav-container { +.sidenav-container.group { overflow: hidden; display: flex; flex-flow: column; @@ -24,9 +24,6 @@ align-items: center; font-weight: 600; } - .menu-btn { - justify-self: end; - } } } } diff --git a/src/app/pages/group/components/sidenav.page.component.ts b/src/app/pages/group/components/sidenav.page.component.ts index 9e0c0f8..a08f9a5 100644 --- a/src/app/pages/group/components/sidenav.page.component.ts +++ b/src/app/pages/group/components/sidenav.page.component.ts @@ -1,39 +1,46 @@ import { of, Subject } from 'rxjs'; -import { take, map, catchError, takeUntil } from 'rxjs/operators'; +import { take, map, catchError } from 'rxjs/operators'; import { Component, OnInit, OnDestroy, ChangeDetectorRef, - ViewChild + ViewChild, + ChangeDetectionStrategy } from '@angular/core'; -import { ActivatedRoute, Router, Params } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { Store } from '@ngrx/store'; import { MatDialog } from '@angular/material/dialog'; -import { ParamsUtil } from '@ucap/ng-core'; import { LogService } from '@ucap/ng-logger'; import { I18nService } from '@ucap/ng-i18n'; +import { SearchData } from '@app/ucap/organization/models/search-data'; + import { CreateDialogComponent } from '@app/sections/group/dialogs/create.dialog.component'; import { ListSectionComponent } from '@app/sections/group/components/list.section.component'; -import { SearchData } from '@app/ucap/organization/models/search-data'; -import { QueryParams } from '@app/pages/organization/types/params.type'; +import { UserInfo } from '@ucap/protocol-sync'; +import { SortViewType } from '../types/sort-view.type'; @Component({ selector: 'app-pages-group-sidenav', templateUrl: './sidenav.page.component.html', - styleUrls: ['./sidenav.page.component.scss'] + styleUrls: ['./sidenav.page.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class SidenavPageComponent implements OnInit, OnDestroy { @ViewChild('sectionGroupList', { static: false }) sectionGroupList: ListSectionComponent; set companySearchData(searchData: SearchData) { - this._companySearchData = searchData; + if (!!searchData && searchData.searchWord !== '') { + this._companySearchData = { ...searchData, bySearch: true }; + } else { + this._companySearchData = { ...searchData, bySearch: false }; + } } get companySearchData() { return this._companySearchData; @@ -41,9 +48,10 @@ export class SidenavPageComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _companySearchData: SearchData; - showType: string; + showType: SortViewType; + sortViewType = SortViewType; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private activatedRoute: ActivatedRoute, @@ -53,17 +61,19 @@ export class SidenavPageComponent implements OnInit, OnDestroy { private store: Store, private changeDetectorRef: ChangeDetectorRef, public dialog: MatDialog - ) { - this.i18nService.setDefaultNamespace('group'); - } + ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - - this.showType = 'ALL'; + this.showType = SortViewType.all; + this.showGroupMenuIcon(SortViewType.all); } - ngOnDestroy(): void {} + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } onClickFab(event: MouseEvent) {} @@ -72,8 +82,7 @@ export class SidenavPageComponent implements OnInit, OnDestroy { case 'GROUP_NEW': { const dialogRef = this.dialog.open(CreateDialogComponent, { - width: '100%', - height: '100%' + panelClass: 'max-create-dialog' }); dialogRef @@ -105,23 +114,48 @@ export class SidenavPageComponent implements OnInit, OnDestroy { } } - onClickShowGroupMenu(menuType: string) { + onClickShowGroupMenu(menuType: SortViewType) { switch (menuType) { - case 'ALL': + case SortViewType.all: { - this.showType = 'ALL'; + this.showType = SortViewType.all; } break; - case 'ONLINE_BUDDY': + case SortViewType.onlineBuddy: { - this.showType = 'ONLINE_BUDDY'; + this.showType = SortViewType.onlineBuddy; } break; - case 'ON_OFF': + case SortViewType.onOff: { - this.showType = 'ON_OFF'; + this.showType = SortViewType.onOff; } break; } } + onSearchCancel() { + this.companySearchData = { ...this.companySearchData, searchWord: '' }; + } + + showGroupMenuIcon(menuType: SortViewType): string { + if (this.showType === menuType) { + return 'check_circle'; + } + + return 'check_circle_outline'; + } + + onClickUser(userInfo: UserInfo) { + this.router.navigate( + [ + 'group', + { + outlets: { content: 'index' } + } + ], + { + queryParams: { id: Number(userInfo.seq) } + } + ); + } } diff --git a/src/app/pages/group/group.page.module.ts b/src/app/pages/group/group.page.module.ts index 0d6ae50..12cf04c 100644 --- a/src/app/pages/group/group.page.module.ts +++ b/src/app/pages/group/group.page.module.ts @@ -6,6 +6,7 @@ import { FlexLayoutModule } from '@angular/flex-layout'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatMenuModule } from '@angular/material/menu'; +import { MatTabsModule } from '@angular/material/tabs'; import { UiModule } from '@ucap/ng-ui'; @@ -26,6 +27,7 @@ import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; MatButtonModule, MatIconModule, MatMenuModule, + MatTabsModule, AppOrganizationModule, diff --git a/src/app/pages/group/types/sort-view.type.ts b/src/app/pages/group/types/sort-view.type.ts new file mode 100644 index 0000000..85d2309 --- /dev/null +++ b/src/app/pages/group/types/sort-view.type.ts @@ -0,0 +1,5 @@ +export enum SortViewType { + all = 'ALL', + onlineBuddy = 'ONLINE_BUDDY', + onOff = 'ON_OFF' +} diff --git a/src/app/pages/message/components/index.page.component.html b/src/app/pages/message/components/index.page.component.html index 3920a95..102cc60 100644 --- a/src/app/pages/message/components/index.page.component.html +++ b/src/app/pages/message/components/index.page.component.html @@ -1 +1,8 @@ -Index page of message is works! + +
+
+
+ Coming Soon + 곧 새로운 모습으로 찾아 뵙겠습니다. +
+
diff --git a/src/app/pages/message/components/index.page.component.scss b/src/app/pages/message/components/index.page.component.scss index e69de29..81699d2 100644 --- a/src/app/pages/message/components/index.page.component.scss +++ b/src/app/pages/message/components/index.page.component.scss @@ -0,0 +1,33 @@ +.index-page-empty { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + .ico-coming-soon { + width: 200px; + height: 200px; + margin-top: -100px; + background-image: url(../../../../assets/images/ico/img_coming_soon.png); + background-size: 100% auto; + } + .coming-soon-index-copy { + text-align: center; + font-size: 2.4em; + color: #666; + font-weight: 600; + padding: 0 20px; + //border-top: 1px solid #ccc; + //border-bottom: 1px solid #ccc; + span { + display: block; + } + .guide-text { + padding-top: 10px; + font-size: 0.54em; + color: #999; + font-weight: normal; + } + } +} diff --git a/src/app/pages/organization/components/index.page.component.html b/src/app/pages/organization/components/index.page.component.html index aedd9e3..ef04481 100644 --- a/src/app/pages/organization/components/index.page.component.html +++ b/src/app/pages/organization/components/index.page.component.html @@ -1,7 +1,10 @@
- +
diff --git a/src/app/pages/organization/components/index.page.component.scss b/src/app/pages/organization/components/index.page.component.scss index 360f071..644d01c 100644 --- a/src/app/pages/organization/components/index.page.component.scss +++ b/src/app/pages/organization/components/index.page.component.scss @@ -1,4 +1,5 @@ .index-page-container { width: 100%; height: 100%; + overflow: hidden; } diff --git a/src/app/pages/organization/components/index.page.component.ts b/src/app/pages/organization/components/index.page.component.ts index 1393e9c..879f70f 100644 --- a/src/app/pages/organization/components/index.page.component.ts +++ b/src/app/pages/organization/components/index.page.component.ts @@ -1,21 +1,28 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; -import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core'; +import { + Component, + OnInit, + OnDestroy, + ChangeDetectorRef, + ChangeDetectionStrategy +} from '@angular/core'; import { ActivatedRoute, Router, Params } from '@angular/router'; -import { Store } from '@ngrx/store'; - import { ParamsUtil } from '@ucap/ng-core'; +import { AppAuthenticationService } from '@app/services/app-authentication.service'; import { SearchData } from '@app/ucap/organization/models/search-data'; import { QueryParams } from '../types/params.type'; +import { UserStore } from '@app/models/user-store'; @Component({ selector: 'app-pages-organization-index', templateUrl: './index.page.component.html', - styleUrls: ['./index.page.component.scss'] + styleUrls: ['./index.page.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class IndexPageComponent implements OnInit, OnDestroy { set companySearchData(searchData: SearchData) { @@ -32,18 +39,19 @@ export class IndexPageComponent implements OnInit, OnDestroy { deptSeq: string; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); + private userStore: UserStore; constructor( - private store: Store, + private appAuthenticationService: AppAuthenticationService, private router: Router, private activatedRoute: ActivatedRoute, private changeDetectorRef: ChangeDetectorRef - ) {} + ) { + this.userStore = this.appAuthenticationService.getUserStore(); + } ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.activatedRoute.queryParams .pipe(takeUntil(this.ngOnDestroySubject)) .subscribe((params) => { @@ -57,22 +65,31 @@ export class IndexPageComponent implements OnInit, OnDestroy { false ); + if (!!deptSeq && this.deptSeq !== deptSeq) { + this.deptSeq = deptSeq; + } + this.deptSearchData = { deptSeq: bySearch ? undefined : deptSeq, - companyCode: bySearch ? companyCode : undefined, - searchWord: bySearch ? searchWord : undefined, + companyCode: !!companyCode + ? companyCode + : this.userStore.companyCode, + searchWord: bySearch ? decodeURIComponent(searchWord) : undefined, bySearch }; this._companySearchData = { ...this.deptSearchData }; + + this.changeDetectorRef.markForCheck(); } }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -80,9 +97,21 @@ export class IndexPageComponent implements OnInit, OnDestroy { onChangedCompanySearch() { const queryParams: Params = {}; queryParams[QueryParams.COMPANY_CODE] = this._companySearchData.companyCode; - queryParams[QueryParams.SEARCH_WORD] = this._companySearchData.searchWord; + queryParams[QueryParams.SEARCH_WORD] = encodeURIComponent( + this._companySearchData.searchWord + ); queryParams[QueryParams.BY_SEARCH] = String(true); + this._navigate(queryParams); + } + + onCanceledSearch() { + const queryParams: Params = {}; + queryParams[QueryParams.DEPT_SEQ] = String(this.deptSeq); + this._navigate(queryParams); + } + + private _navigate(queryParams: Params = {}) { this.router.navigate( [ 'organization', diff --git a/src/app/pages/organization/components/sidenav.page.component.html b/src/app/pages/organization/components/sidenav.page.component.html index abde0bc..e351468 100644 --- a/src/app/pages/organization/components/sidenav.page.component.html +++ b/src/app/pages/organization/components/sidenav.page.component.html @@ -1,22 +1,12 @@
-

조직도

-
- -
- -
- businessLG CNS +
+ business{{ displayRootDept | ucapOrganizationTranslate: 'name' }}
@@ -26,8 +16,3 @@ >
- - - - - diff --git a/src/app/pages/organization/components/sidenav.page.component.ts b/src/app/pages/organization/components/sidenav.page.component.ts index 7b496bb..67beca3 100644 --- a/src/app/pages/organization/components/sidenav.page.component.ts +++ b/src/app/pages/organization/components/sidenav.page.component.ts @@ -1,27 +1,44 @@ -import { Subject } from 'rxjs'; +import { Subject, combineLatest } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; -import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core'; +import { + Component, + OnInit, + OnDestroy, + ChangeDetectorRef, + ChangeDetectionStrategy +} from '@angular/core'; import { Router, ActivatedRoute, Params } from '@angular/router'; +import { Store, select } from '@ngrx/store'; + import { LogService } from '@ucap/ng-logger'; import { DeptInfo } from '@ucap/protocol-query'; +import { DepartmentSelector, UserSelector } from '@ucap/ng-store-organization'; +import { LoginSelector } from '@ucap/ng-store-authentication'; + +import { environment } from '@environments'; + import { QueryParams } from '../types/params.type'; @Component({ selector: 'app-pages-ogranization-sidenav', templateUrl: './sidenav.page.component.html', - styleUrls: ['./sidenav.page.component.scss'] + styleUrls: ['./sidenav.page.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush }) export class SidenavPageComponent implements OnInit, OnDestroy { initialExpanded: number; + displayRoot = false; + displayRootDept: DeptInfo; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private router: Router, private activatedRoute: ActivatedRoute, + private store: Store, private changeDetectorRef: ChangeDetectorRef, private logService: LogService ) { @@ -29,22 +46,56 @@ export class SidenavPageComponent implements OnInit, OnDestroy { } ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); + // this.activatedRoute.queryParams + // .pipe(takeUntil(this.ngOnDestroySubject)) + // .subscribe((params) => { + // if (!!params) { + // const deptSeq = params[QueryParams.DEPT_SEQ]; + // if (!!deptSeq) { + // this.initialExpanded = Number(deptSeq); + // } + // } + // }); - this.activatedRoute.queryParams + combineLatest([ + this.activatedRoute.queryParams, + this.store.pipe(select(UserSelector.user)) + ]) .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe((params) => { + .subscribe(([params, user]) => { + let existParams = false; if (!!params) { const deptSeq = params[QueryParams.DEPT_SEQ]; if (!!deptSeq) { + existParams = true; this.initialExpanded = Number(deptSeq); } } + + if (!existParams) { + this.initialExpanded = user.departmentCode; + } + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(DepartmentSelector.departmentInfoList) + ) + .subscribe((deptInfoList) => { + if (!environment.productConfig.organization.displayRoot) { + if (!!deptInfoList && deptInfoList.length > 0) { + this.displayRootDept = deptInfoList.find( + (item) => item.type === 'R' + ); + } + } }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -52,7 +103,6 @@ export class SidenavPageComponent implements OnInit, OnDestroy { onClickedTree(node: DeptInfo) { const queryParams: Params = {}; queryParams[QueryParams.DEPT_SEQ] = String(node.seq); - queryParams[QueryParams.BY_SEARCH] = String(false); this.router.navigate( [ diff --git a/src/app/pages/organization/organization.page.module.ts b/src/app/pages/organization/organization.page.module.ts index fc0ac19..333d8fa 100644 --- a/src/app/pages/organization/organization.page.module.ts +++ b/src/app/pages/organization/organization.page.module.ts @@ -12,6 +12,9 @@ import { AppOrganizationSectionModule } from '@app/sections/organization/organiz import { AppOrganizationRoutingPageModule } from './organization-routing.page.module'; import { COMPONENTS } from './components'; +import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; +import { UiModule } from '@ucap/ng-ui'; +import { OrganizationUiModule } from '@ucap/ng-ui-organization'; @NgModule({ imports: [ @@ -24,9 +27,19 @@ import { COMPONENTS } from './components'; AppOrganizationModule, AppOrganizationSectionModule, - AppOrganizationRoutingPageModule + AppOrganizationRoutingPageModule, + + I18nModule, + OrganizationUiModule, + UiModule ], declarations: [...COMPONENTS], - entryComponents: [] + entryComponents: [], + providers: [ + { + provide: UCAP_I18N_NAMESPACE, + useValue: ['organization', 'common'] + } + ] }) export class AppOrganizationPageModule {} diff --git a/src/app/sections/account/account.section.module.ts b/src/app/sections/account/account.section.module.ts index e4339cc..2c1baf9 100644 --- a/src/app/sections/account/account.section.module.ts +++ b/src/app/sections/account/account.section.module.ts @@ -4,67 +4,49 @@ import { ReactiveFormsModule } from '@angular/forms'; import { FlexLayoutModule } from '@angular/flex-layout'; -import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; -import { AuthenticationUiModule } from '@ucap/ng-ui-authentication'; - import { MatButtonModule } from '@angular/material/button'; -import { MatButtonToggleModule } from '@angular/material/button-toggle'; -import { MatCardModule } from '@angular/material/card'; import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatDatepickerModule } from '@angular/material/datepicker'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatFormFieldModule } from '@angular/material/form-field'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatProgressBarModule } from '@angular/material/progress-bar'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatRadioModule } from '@angular/material/radio'; import { MatSelectModule } from '@angular/material/select'; -import { MatSidenavModule } from '@angular/material/sidenav'; -import { MatSliderModule } from '@angular/material/slider'; import { MatTabsModule } from '@angular/material/tabs'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatToolbarModule } from '@angular/material/toolbar'; + +import { I18nModule } from '@ucap/ng-i18n'; +import { UiModule } from '@ucap/ng-ui'; +import { AuthenticationUiModule } from '@ucap/ng-ui-authentication'; +import { OrganizationUiModule } from '@ucap/ng-ui-organization'; + +import { AppLayoutsModule } from '@app/layouts/layouts.module'; +import { AppOrganizationModule } from '@app/ucap/organization/organization.module'; import { COMPONENTS } from './components'; @NgModule({ imports: [ CommonModule, - FlexLayoutModule, - MatCheckboxModule, - I18nModule, - AuthenticationUiModule, - ReactiveFormsModule, + FlexLayoutModule, + MatButtonModule, - MatButtonToggleModule, - MatCardModule, - MatDatepickerModule, - MatDialogModule, + MatCheckboxModule, MatIconModule, MatInputModule, - MatMenuModule, - MatProgressBarModule, - MatProgressSpinnerModule, - MatCheckboxModule, + MatRadioModule, MatSelectModule, - MatSidenavModule, - MatSliderModule, MatTabsModule, - MatTooltipModule, - MatToolbarModule, - MatFormFieldModule, - MatSelectModule + + I18nModule, + + UiModule, + AuthenticationUiModule, + OrganizationUiModule, + + AppLayoutsModule, + AppOrganizationModule ], exports: [...COMPONENTS], declarations: [...COMPONENTS], - entryComponents: [], - providers: [ - { - provide: UCAP_I18N_NAMESPACE, - useValue: ['authentication'] - } - ] + entryComponents: [] }) export class AppAccountSectionModule {} diff --git a/src/app/sections/account/components/component-ui/login.component.html b/src/app/sections/account/components/component-ui/login.component.html deleted file mode 100644 index 0a5d579..0000000 --- a/src/app/sections/account/components/component-ui/login.component.html +++ /dev/null @@ -1,127 +0,0 @@ - diff --git a/src/app/sections/account/components/component-ui/login.component.scss b/src/app/sections/account/components/component-ui/login.component.scss deleted file mode 100644 index c2b4910..0000000 --- a/src/app/sections/account/components/component-ui/login.component.scss +++ /dev/null @@ -1,160 +0,0 @@ -@import '../../../../../assets/scss/components'; - -.login-box { - @extend %clearfix; - padding: 0 0 45px; - width: 420px; - margin: auto; - text-align: center; - flex-basis: auto; - align-items: center; - .logo-img { - display: block; - text-align: center; - img { - margin-bottom: 7px; - vertical-align: top; - @include screen(mid) { - width: 120px; - } - @include screen(xs) { - width: 100px; - margin-bottom: 6px; - } - } - } - @extend %guideline; - - .login-content { - @extend %guideline2; //Guide Line2 - margin: 30px auto 0; - .login-input-area { - border: 1px solid #cccccc; - border-radius: 2px; - width: 100%; - max-width: 420px; - min-width: 150px; - height: 60px; - background-color: $white; - margin-top: 10px; - &.login-select-form { - height: 60px; - line-height: 60px; - padding: 0 16px; - @include screen(mid) { - height: 50px; - line-height: 50px; - } - @include screen(xs) { - height: 42px; - line-height: 42px; - } - } - &:first-of-type { - margin-top: 0px; - } - &.idpass-type { - padding-left: 50px; - position: relative; - &::before { - font-family: 'material Icons'; - font-size: 24px; - text-align: center; - line-height: 60px; - content: 'perm_identity'; - display: block; - position: absolute; - top: 0; - left: 16px; - @include screen(mid) { - line-height: 50px; - } - @include screen(xs) { - line-height: 42px; - } - } - &.pass-type { - &::before { - content: 'https'; - } - } - .login-idpass-txt { - width: 368px; - height: 60px; - line-height: 60px; - font-size: 14px; - @include screen(mid) { - width: 358 - 60 + px; - height: 50px; - line-height: 50px; - font-size: 14px; - } - @include screen(xs) { - width: 308 - 60 + px; - font-size: 14px; - height: 42px; - line-height: 42px; - } - input { - font-size: 18px; - line-height: 58px; - margin-top: 0; - vertical-align: top; - background-color: $white; - padding: 0 10px 0 5px; - @include screen(mid) { - font-size: 16px; - line-height: 48px; - } - @include screen(xs) { - font-size: 14px; - line-height: 40px; - } - } - } - } - @include screen(mid) { - margin-top: 8px; - } - } - .login-input-submit { - width: 100%; - height: 60px; - background-color: $black; - border-radius: 2px; - color: $white; - font-size: 20px; - @include font-family($font-semibold); - border: 0; - margin-top: 12px; - font-weight: 600; - cursor: pointer; - @include screen(mid) { - margin-top: 8px; - font-size: 16px; - height: 50px; - } - @include screen(xs) { - font-size: 14px; - height: 42px; - } - } - @include screen(mid) { - margin-top: 23px; - width: 350px; - .login-input-area { - height: 50px; - } - } - @include screen(xs) { - margin-top: 23px; - width: 300px; - .login-input-area { - height: 42px; - } - } - } -} -.login-company { - width: 100%; -} diff --git a/src/app/sections/account/components/component-ui/login.component.spec.ts b/src/app/sections/account/components/component-ui/login.component.spec.ts deleted file mode 100644 index a9ba1f3..0000000 --- a/src/app/sections/account/components/component-ui/login.component.spec.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { LoginComponent } from './login.component'; -import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; -import { CommonModule } from '@angular/common'; -import { ChangeDetectorRef } from '@angular/core'; -import { I18nService, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; -import { AuthenticationUiModule } from '../authentication-ui.module'; -import { MatSelectModule } from '@angular/material/select'; -import { Company } from '@ucap/api-external'; -import { LogService } from '@ucap/ng-logger'; -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; - -describe('ui::authentication::LoginComponent', () => { - let component: LoginComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - imports: [ - BrowserModule, - BrowserAnimationsModule, - - CommonModule, - ReactiveFormsModule, - - MatButtonModule, - MatCheckboxModule, - MatFormFieldModule, - MatIconModule, - MatInputModule, - MatProgressSpinnerModule, - MatSelectModule - ], - providers: [ - AuthenticationUiModule, - // { provide: FormBuilder, useValue: new FormBuilder() }, - // { provide: ChangeDetectorRef, useValue: ChangeDetectorRef }, - { provide: I18nService, useValue: new I18nService(new LogService({})) }, - { - provide: UCAP_I18N_NAMESPACE, - useValue: 'authentication' - } - ] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(LoginComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - component.companyList = [ - { companyName: 'LG CNS', companyCode: 'GUC100' }, - { companyName: 'LG UCAP', companyCode: 'GUC101' } - ] as Company[]; - component.loginId = 'test'; - component.companyCode = 'GUC100'; - fixture.detectChanges(); - - component.ngOnInit(); - - expect(component).toBeTruthy(); - }); - - it('login', (done) => { - component.companyList = [ - { companyName: 'LG CNS', companyCode: 'GUC100' }, - { companyName: 'LG UCAP', companyCode: 'GUC101' } - ] as Company[]; - component.loginId = 'test'; - component.companyCode = 'GUC100'; - - component.ngOnInit(); - - component.login.subscribe((value) => { - console.log(value); - done(); - }); - - component.onClickLogin(); - }); -}); diff --git a/src/app/sections/account/components/component-ui/login.component.ts b/src/app/sections/account/components/component-ui/login.component.ts deleted file mode 100644 index 168da02..0000000 --- a/src/app/sections/account/components/component-ui/login.component.ts +++ /dev/null @@ -1,110 +0,0 @@ -import moment from 'moment'; - -import { - Component, - OnInit, - Input, - Output, - EventEmitter, - ViewChild, - ElementRef, - ChangeDetectorRef -} from '@angular/core'; -import { - FormGroup, - FormBuilder, - Validators, - FormControl, - ValidatorFn -} from '@angular/forms'; -import { Company } from '@ucap/api-external'; -import { LoginTry } from '@ucap/pi'; - -@Component({ - selector: 'ucap-authentication-login-local', - templateUrl: './login.component.html', - styleUrls: ['./login.component.scss'] -}) -export class LoginComponent implements OnInit { - @Input() - companyList: Company[]; - - @Input() - fixedCompanyCode: string; - - @Input() - companyCode: string; - - @Input() - loginId: string; - - @Input() - disable = false; - - @Input() - processing = false; - - @Input() - loginTry: LoginTry; - - @Output() - login = new EventEmitter<{ - companyCode: string; - loginId: string; - loginPw: string; - notValid: () => void; - }>(); - - @ViewChild('loginPw', { static: true }) loginPwElementRef: ElementRef; - - loginForm: FormGroup; - companyCodeFormControl = new FormControl(''); - loginIdFormControl = new FormControl(''); - loginPwFormControl = new FormControl(''); - loginFailed = false; - - moment = moment; - - constructor( - private formBuilder: FormBuilder, - private changeDetectorRef: ChangeDetectorRef - ) {} - - ngOnInit() { - const companyCodeValidators: ValidatorFn[] = [Validators.required]; - this.companyCodeFormControl.setValidators(companyCodeValidators); - if (!!this.fixedCompanyCode) { - this.companyCodeFormControl.setValue(this.fixedCompanyCode); - } - if (!!this.companyCode) { - this.companyCodeFormControl.setValue(this.companyCode); - } - const loginIdValidators: ValidatorFn[] = [Validators.required]; - this.loginIdFormControl.setValidators(loginIdValidators); - if (!!this.loginId) { - this.loginIdFormControl.setValue(this.loginId); - } - const loginPwValidators: ValidatorFn[] = [Validators.required]; - this.loginPwFormControl.setValidators(loginPwValidators); - - this.loginForm = this.formBuilder.group({ - companyCodeFormControl: this.companyCodeFormControl, - loginIdFormControl: this.loginIdFormControl, - loginPwFormControl: this.loginPwFormControl - }); - - this.changeDetectorRef.detectChanges(); - } - - onClickLogin() { - this.login.emit({ - companyCode: this.loginForm.get('companyCodeFormControl').value, - loginId: this.loginForm.get('loginIdFormControl').value, - loginPw: this.loginForm.get('loginPwFormControl').value, - notValid: () => { - this.loginFailed = true; - this.loginPwElementRef.nativeElement.focus(); - } - }); - } -} diff --git a/src/app/sections/account/components/login.section.component.html b/src/app/sections/account/components/login.section.component.html deleted file mode 100644 index f37b25c..0000000 --- a/src/app/sections/account/components/login.section.component.html +++ /dev/null @@ -1,67 +0,0 @@ - diff --git a/src/app/sections/account/components/login.section.component.scss b/src/app/sections/account/components/login.section.component.scss deleted file mode 100644 index a35480b..0000000 --- a/src/app/sections/account/components/login.section.component.scss +++ /dev/null @@ -1,117 +0,0 @@ -@import '../../../../assets/scss/components'; - -h1 { - @include font-family($font-light); - font-size: 24px; - text-align: center; - color: $txt-color01; - font-weight: 600; - line-height: 1.2; - @include screen(mid) { - font-size: 19px; - } - @include screen(xs) { - font-size: 14px; - } -} - -.login-section-container { - width: 100%; - height: 100%; - overflow: auto; -} - -.login-chk-area { - margin-top: 6px; - font-size: 13px; - text-align: left; - @include screen(xs) { - font-size: 12px; - } -} -.login-pass-info { - overflow: hidden; - margin-top: 83px; - ul { - display: flex; - justify-content: center; - li { - height: 24px; - position: relative; - display: inline-flex; - align-items: center; - padding: 0 12% 0 8%; - &::before { - content: ''; - height: 11px; - width: 1px; - display: flex; - background-color: $gray-re4a; - position: absolute; - top: 6.5px; - left: 0; - } - &:first-child { - padding-left: 0; - &::before { - display: none; - } - } - &:last-child { - padding-right: 0; - } - a { - line-height: 24px; - font-size: 12px; - color: $gray-re4a; - padding-left: 34px; - position: relative; - white-space: nowrap; - &::before { - font-family: 'material Icons'; - font-size: 18px; - text-align: center; - content: 'search'; - color: $white; - display: block; - width: 24px; - height: 24px; - border-radius: 50%; - background-color: $black; - position: absolute; - top: 0; - left: 0; - } - &.fir-pass { - &::before { - content: 'sync'; - } - } - } - } - } -} - -.login-button-area { - margin-top: 14px; - @include screen(xs) { - margin-top: 20px; - } - button { - border: 0; - margin: 0; - width: 100%; - height: 46px; - border-radius: 4px; - background-color: #e0e3e7; - font-size: 12px; - color: $gray-re4a; - cursor: pointer; - @include screen(mid) { - height: 38px; - } - @include screen(xs) { - height: 34px; - } - } -} diff --git a/src/app/sections/account/components/login.section.component.ts b/src/app/sections/account/components/login.section.component.ts deleted file mode 100644 index 3f2b6ae..0000000 --- a/src/app/sections/account/components/login.section.component.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { Subject } from 'rxjs'; -import { take, takeUntil } from 'rxjs/operators'; - -import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core'; - -import { MatCheckbox } from '@angular/material/checkbox'; - -import { Store, select } from '@ngrx/store'; - -import { Company } from '@ucap/api-external'; -import { LoginTry } from '@ucap/pi'; - -import { LogService } from '@ucap/ng-logger'; -import { I18nService } from '@ucap/ng-i18n'; -import { SessionStorageService } from '@ucap/ng-web-storage'; -import { PiService } from '@ucap/ng-pi'; -import { ProtocolService } from '@ucap/ng-protocol'; -import { CompanyActions, CompanySelector } from '@ucap/ng-store-organization'; -import { LoginActions } from '@ucap/ng-store-authentication'; - -import { UserStore } from '@app/models/user-store'; -import { LoginSession } from '@app/models/login-session'; -import { AppKey } from '@app/types/app-key.type'; -import { AppAuthenticationService } from '@app/services/app-authentication.service'; - -@Component({ - selector: 'app-sections-account-login', - templateUrl: './login.section.component.html', - styleUrls: ['./login.section.component.scss'] -}) -export class LoginSectionComponent implements OnInit, OnDestroy { - @Input() - companyGroupCode: string; - - @Input() - fixedCompanyCode: string; - - @Input() - userStore: UserStore; - - @Input() - useRememberMe: boolean; - - @Input() - useAutoLogin: boolean; - - @ViewChild('chkUseRememberMe', { static: false }) - chkUseRememberMe: MatCheckbox; - - @ViewChild('chkUseAutoLogin', { static: false }) - chkUseAutoLogin: MatCheckbox; - - loginSession: LoginSession; - companyList: Company[]; - disableLoginForm = false; - loginProcessing = false; - loginTry: LoginTry; - - private ngOnDestroySubject = new Subject(); - - constructor( - private piService: PiService, - private protocolService: ProtocolService, - private sessionStorageService: SessionStorageService, - private i18nService: I18nService, - private store: Store, - private appAuthenticationService: AppAuthenticationService, - private logService: LogService - ) {} - - ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - - this.appAuthenticationService - .getLoginSession$() - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe((loginSession) => (this.loginSession = loginSession)); - - this.sessionStorageService - .get$(AppKey.LoginTry) - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe((loginTry) => (this.loginTry = loginTry)); - - this.protocolService.disconnect(); - - this.store.dispatch( - CompanyActions.companies({ - req: { companyGroupCode: this.companyGroupCode } - }) - ); - - this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(CompanySelector.companyList) - ) - .subscribe((companyList) => { - this.companyList = companyList; - }); - } - - ngOnDestroy(): void { - if (!!this.ngOnDestroySubject) { - this.ngOnDestroySubject.complete(); - } - } - - onLogin(event: { - companyCode: string; - loginId: string; - loginPw: string; - notValid: () => void; - }) { - const useRememberMe: boolean = this.chkUseRememberMe.checked; - const useAutoLogin: boolean = this.chkUseAutoLogin.checked; - - this.disableLoginForm = true; - this.loginProcessing = true; - - this.piService - .login2({ - companyCode: event.companyCode, - loginId: event.loginId, - loginPw: event.loginPw, - deviceType: this.loginSession.deviceType - }) - .pipe(take(1)) - .subscribe( - (res) => { - if ('success' !== res.status.toLowerCase()) { - this.onWebLoginFailure(event, res.status); - return; - } else { - this.store.dispatch( - LoginActions.webLoginSuccess({ - companyCode: event.companyCode, - loginId: event.loginId, - loginPw: event.loginPw, - autoLogin: useAutoLogin, - rememberMe: useRememberMe, - login2Response: res - }) - ); - return; - } - }, - (error) => { - this.onWebLoginFailure(event, error); - }, - () => { - this.disableLoginForm = false; - this.loginProcessing = false; - } - ); - } - - onClickForgotPassword(lng: string) { - this.i18nService.changeLanguage(lng); - } - - private onWebLoginFailure( - event: { - companyCode: string; - loginId: string; - loginPw: string; - notValid: () => void; - }, - error: any - ) { - this.store.dispatch(LoginActions.webLoginFailure({ error })); - - event.notValid(); - } -} diff --git a/src/app/sections/chat/chat.section.module.ts b/src/app/sections/chat/chat.section.module.ts index 88a834a..bf706f0 100644 --- a/src/app/sections/chat/chat.section.module.ts +++ b/src/app/sections/chat/chat.section.module.ts @@ -21,18 +21,28 @@ import { MatTreeModule } from '@angular/material/tree'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MatStepperModule } from '@angular/material/stepper'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatTabsModule } from '@angular/material/tabs'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; import { UiModule } from '@ucap/ng-ui'; import { ChatUiModule } from '@ucap/ng-ui-chat'; +import { OrganizationUiModule } from '@ucap/ng-ui-organization'; +import { AppOrganizationModule } from '@app/ucap/organization/organization.module'; + import { AppChatModule } from '@app/ucap/chat/chat.module'; import { AppLayoutsModule } from '@app/layouts/layouts.module'; import { AppGroupSectionModule } from '../group/group.section.module'; import { COMPONENTS } from './components'; import { DIALOGS } from './dialogs'; +import { DRAWERS } from './drawers'; +import { AppGroupModule } from '@app/ucap/group/group.module'; @NgModule({ imports: [ @@ -56,6 +66,11 @@ import { DIALOGS } from './dialogs'; MatTreeModule, MatTooltipModule, MatStepperModule, + MatDividerModule, + MatSlideToggleModule, + MatRadioModule, + MatTabsModule, + MatProgressBarModule, PerfectScrollbarModule, ScrollingModule, @@ -65,12 +80,16 @@ import { DIALOGS } from './dialogs'; AppLayoutsModule, AppGroupSectionModule, + AppOrganizationModule, ChatUiModule, - AppChatModule + OrganizationUiModule, + + AppChatModule, + AppGroupModule ], - exports: [...COMPONENTS, ...DIALOGS], - declarations: [...COMPONENTS, ...DIALOGS], - entryComponents: [...DIALOGS], + exports: [...COMPONENTS, ...DIALOGS, ...DRAWERS], + declarations: [...COMPONENTS, ...DIALOGS, ...DRAWERS], + entryComponents: [...DIALOGS, ...DRAWERS], providers: [ { provide: UCAP_I18N_NAMESPACE, diff --git a/src/app/sections/chat/components/chat-search.section.component.html b/src/app/sections/chat/components/chat-search.section.component.html index 02f1d49..1761c2b 100644 --- a/src/app/sections/chat/components/chat-search.section.component.html +++ b/src/app/sections/chat/components/chat-search.section.component.html @@ -1,13 +1,11 @@ -
+
- N건의 검색결과가 있습니다. - 1/N + N건의 검색결과가 있습니다. + 1/N
diff --git a/src/app/sections/chat/components/chat-search.section.component.scss b/src/app/sections/chat/components/chat-search.section.component.scss index e69de29..9df7e86 100644 --- a/src/app/sections/chat/components/chat-search.section.component.scss +++ b/src/app/sections/chat/components/chat-search.section.component.scss @@ -0,0 +1,78 @@ +@import '~@ucap/lg-scss/mixins'; + +.search-container { + padding: 0 16px; + background-color: $white; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16); + display: flex; + flex-direction: column; + align-items: center; + //position: relative; + //포지션 변경 + position: absolute; + z-index: 5; + top: -80px; + width: 100%; + visibility: hidden; + transition: all 0.2s linear; + .searchbox { + display: flex; + flex-flow: row nowrap; + width: 100%; + max-width: 900px; + border: 1px solid $lipstick; + background-color: $white; + .search-in-box { + @include ucapMatFormField(0, 0, 100%, auto, auto, 38px, 38px); + padding-left: 10px; + .btn-close { + margin-top: 2px; + color: #fd78a1 !important; + } + } + .btn-ico-search { + @include ucapMatButton(38px, 38px, 0, 20px); + } + } + .search-result { + width: 100%; + max-width: 900px; + display: flex; + flex-flow: row nowrap; + height: 40px; + justify-content: space-between; + align-items: center; + .text { + flex-grow: 1; + font-size: 0.857em; + color: $gray-re3; + strong { + font-size: 0.929em; + font-weight: 600; + } + } + .result-count { + justify-self: self-end; + font-size: 0.929em; + } + .btn-area { + margin-right: -5px; + margin-left: 12px; + display: flex; + align-items: center; + &:before { + content: ''; + width: 1px; + height: 10px; + display: inline-block; + background-color: $gray-rec; + } + } + } + //on + &.chat-search-show { + visibility: visible; + transition: all 0.2s linear; + top: 0; + } +} diff --git a/src/app/sections/chat/components/chat-search.section.component.ts b/src/app/sections/chat/components/chat-search.section.component.ts index cf2052e..3d08843 100644 --- a/src/app/sections/chat/components/chat-search.section.component.ts +++ b/src/app/sections/chat/components/chat-search.section.component.ts @@ -5,8 +5,10 @@ import { Output, EventEmitter, ChangeDetectorRef, - ChangeDetectionStrategy + ChangeDetectionStrategy, + Input } from '@angular/core'; +import { SearchInfo } from '@app/pages/chat/models/search-info'; @Component({ selector: 'app-sections-chat-chat-search', @@ -15,20 +17,19 @@ import { changeDetection: ChangeDetectionStrategy.OnPush }) export class ChatSearchSectionComponent implements OnInit, OnDestroy { - searchObj: any = { - isSearch: false, - searchWord: '' - }; + @Input() + isChatSearch = false; @Output() - chatSearch = new EventEmitter<{ - isSearch: false; - searchWord: ''; - }>(); + chatSearch = new EventEmitter(); @Output() closeChatSearch = new EventEmitter(); + searchObj: SearchInfo = { + isShowSearch: false, + searchWord: '' + }; constructor(private changeDetectorRef: ChangeDetectorRef) {} ngOnInit(): void {} @@ -39,9 +40,9 @@ export class ChatSearchSectionComponent implements OnInit, OnDestroy { alert(searchWord); this.searchObj = { - isSearch: true, + isShowSearch: true, searchWord - }; + } as SearchInfo; this.chatSearch.emit(this.searchObj); } diff --git a/src/app/sections/chat/components/component-ui/chat-list-item.component.html b/src/app/sections/chat/components/component-ui/chat-list-item.component.html deleted file mode 100644 index 12b95ab..0000000 --- a/src/app/sections/chat/components/component-ui/chat-list-item.component.html +++ /dev/null @@ -1,64 +0,0 @@ -
-
- -
-
- {{ roomName }} - ({{ roomInfo.joinUserCount }}) -
-
{{ roomInfo.finalEventMessage }}
-
{{ roomInfo.finalEventDate | ucapDate: 'LT' }}
- - - - - - -
- - - {{ roomName }} - - - - diff --git a/src/app/sections/chat/components/component-ui/chat-list-item.component.spec.ts b/src/app/sections/chat/components/component-ui/chat-list-item.component.spec.ts deleted file mode 100644 index 4eeee62..0000000 --- a/src/app/sections/chat/components/component-ui/chat-list-item.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { ChatListItemComponent } from './chat-list-item.component'; - -describe('ChatListItemComponent', () => { - let component: ChatListItemComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ ChatListItemComponent ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(ChatListItemComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/sections/chat/components/component-ui/chat-list-item.component.ts b/src/app/sections/chat/components/component-ui/chat-list-item.component.ts deleted file mode 100644 index ce68555..0000000 --- a/src/app/sections/chat/components/component-ui/chat-list-item.component.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { - Component, - OnInit, - ChangeDetectionStrategy, - Input, - OnDestroy, - EventEmitter, - Output, - ChangeDetectorRef -} from '@angular/core'; -import { RoomInfo, RoomType } from '@ucap/protocol-room'; - -@Component({ - selector: 'app-chat-list-item', - templateUrl: './chat-list-item.component.html', - styleUrls: ['./chat-list-item.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class ChatListItemComponent implements OnInit, OnDestroy { - @Input() - roomInfo: RoomInfo; - - @Input() - profileImageRoot: string; - - @Input() - defaultProfileImage: string; - - @Input() - profileImage: string; - - @Input() - roomName: string; - - @Input() - checkable = false; - - @Input() - checked = false; - - @Output() - toggleItem = new EventEmitter<{ - checked: boolean; - roomInfo: RoomInfo; - }>(); - - RoomType = RoomType; - - constructor(private changeDetectorRef: ChangeDetectorRef) {} - - ngOnInit(): void {} - - ngOnDestroy(): void {} - - onToggleItem(value: boolean): void { - this.toggleItem.emit({ - checked: value, - roomInfo: this.roomInfo - }); - - this.changeDetectorRef.detectChanges(); - } -} diff --git a/src/app/sections/chat/components/component-ui/expansion.component.html b/src/app/sections/chat/components/component-ui/expansion.component.html deleted file mode 100644 index 254d78c..0000000 --- a/src/app/sections/chat/components/component-ui/expansion.component.html +++ /dev/null @@ -1,63 +0,0 @@ -
- - - - - -
  • -
    - -
    -
  • -
    - - -
  • -
    - -
    - - -
    -
    -
      -
      -
      - -
      -
    -
  • -
    -
    -
    -
    diff --git a/src/app/sections/chat/components/component-ui/expansion.component.scss b/src/app/sections/chat/components/component-ui/expansion.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/sections/chat/components/component-ui/expansion.component.ts b/src/app/sections/chat/components/component-ui/expansion.component.ts deleted file mode 100644 index 8db4212..0000000 --- a/src/app/sections/chat/components/component-ui/expansion.component.ts +++ /dev/null @@ -1,177 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - Input, - ViewChild, - ContentChild, - TemplateRef, - ChangeDetectionStrategy, - ChangeDetectorRef, - Directive -} from '@angular/core'; - -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { FlatTreeControl } from '@angular/cdk/tree'; - -import { MatTreeFlattener, MatTree } from '@angular/material/tree'; - -import { VirtualScrollTreeFlatDataSource } from '@ucap/ng-ui'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; -import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; -import { RoomInfo } from '@ucap/protocol-room'; - -export interface ChatGroupNode { - nodeType: string; - roomInfo?: RoomInfo; - children?: ChatGroupNode[]; -} - -export interface FlatNode { - expandable: boolean; - level: number; - node: ChatGroupNode; -} - -@Directive({ - selector: '[ucapChatExpansionNode]' -}) -export class ExpansionNodeDirective {} - -@Directive({ - selector: '[ucapChatExpansionHeader]' -}) -export class ExpansionHeaderDirective {} - -@Component({ - selector: 'ucap-chat-expansion', - templateUrl: './expansion.component.html', - styleUrls: ['./expansion.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class ExpansionComponent implements OnInit, OnDestroy { - @Input() - set chatGroup(list: { division: string; roomList: RoomInfo[] }[]) { - if (!list || 0 === list.length) { - } else { - list.sort((a, b) => - a.division < b.division ? 1 : a.division > b.division ? -1 : 0 - ); - - for (const item of list) { - const nodeType = item.division; - const node: ChatGroupNode = { - nodeType, - children: [] - }; - - item.roomList.sort((a, b) => - a.finalEventDate < b.finalEventDate - ? 1 - : a.finalEventDate > b.finalEventDate - ? -1 - : 0 - ); - - item.roomList.forEach((roomInfo) => { - node.children.push({ - nodeType, - roomInfo - }); - }); - - if (!!this.nodeMap.get(item.division)) { - this.nodeMap[item.division].push(node); - } else { - this.nodeMap.set(item.division, [node]); - } - } - } - this.refreshNodes(); - } - - @ViewChild('treeList', { static: false }) - treeList: MatTree; - - @ViewChild('cvsvList', { static: false }) - cvsvList: CdkVirtualScrollViewport; - - @ViewChild(PerfectScrollbarDirective, { static: false }) - psDirectiveRef?: PerfectScrollbarDirective; - - @ContentChild(ExpansionNodeDirective, { - read: TemplateRef, - static: false - }) - nodeTemplate: TemplateRef; - - @ContentChild(ExpansionHeaderDirective, { - read: TemplateRef, - static: false - }) - headerTemplate: TemplateRef; - - treeControl: FlatTreeControl; - treeFlattener: MatTreeFlattener; - dataSource: VirtualScrollTreeFlatDataSource; - - private nodeMap: Map = new Map(); - // tslint:disable-next-line: variable-name - private _ngOnDestroySubject: Subject; - - constructor(private changeDetectorRef: ChangeDetectorRef) { - this.treeControl = new FlatTreeControl( - (node) => node.level, - (node) => node.expandable - ); - - this.treeFlattener = new MatTreeFlattener( - (node: ChatGroupNode, level: number) => { - return { - expandable: !!node.children && node.children.length > 0, - level, - nodeType: node.nodeType, - node - }; - }, - (node) => node.level, - (node) => node.expandable, - (node) => node.children - ); - - this.dataSource = new VirtualScrollTreeFlatDataSource< - ChatGroupNode, - FlatNode - >(this.treeControl, this.treeFlattener); - } - - ngOnInit(): void { - this._ngOnDestroySubject = new Subject(); - - this.dataSource.cdkVirtualScrollViewport = this.cvsvList; - this.treeControl.expansionModel.changed - .pipe(takeUntil(this._ngOnDestroySubject)) - .subscribe(() => { - this.cvsvList.checkViewportSize(); - this.psDirectiveRef.update(); - }); - } - - ngOnDestroy(): void { - if (!!this._ngOnDestroySubject) { - this._ngOnDestroySubject.next(); - this._ngOnDestroySubject.complete(); - } - } - - isHeader = (_: number, node: FlatNode) => 0 === node.level; - - private refreshNodes() { - const rootNode: ChatGroupNode[] = []; - this.nodeMap.forEach((node) => rootNode.push(...node)); - - this.dataSource.data = rootNode; - this.changeDetectorRef.detectChanges(); - } -} diff --git a/src/app/sections/chat/components/component-ui/index.ts b/src/app/sections/chat/components/component-ui/index.ts deleted file mode 100644 index 80b2d82..0000000 --- a/src/app/sections/chat/components/component-ui/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ChatListItemComponent } from './chat-list-item.component'; -import { - ExpansionComponent, - ExpansionNodeDirective, - ExpansionHeaderDirective -} from './expansion.component'; - -export const COMPONENTS = [ChatListItemComponent, ExpansionComponent]; - -export const DIRECTIVES = [ExpansionNodeDirective, ExpansionHeaderDirective]; diff --git a/src/app/sections/chat/components/form.section.component.html b/src/app/sections/chat/components/form.section.component.html index ede3691..2b1baf5 100644 --- a/src/app/sections/chat/components/form.section.component.html +++ b/src/app/sections/chat/components/form.section.component.html @@ -1,123 +1,159 @@ - - - +
    + + + - + - - + + - - + + -
    - - - +
    + + {{ 'chat:label.inputChatMessage' | ucapI18n }} + + + - -
    -
    - - - - - - - - + +
    + +
    + + + + + + + + +
    diff --git a/src/app/sections/chat/components/form.section.component.scss b/src/app/sections/chat/components/form.section.component.scss index e69de29..0017854 100644 --- a/src/app/sections/chat/components/form.section.component.scss +++ b/src/app/sections/chat/components/form.section.component.scss @@ -0,0 +1,60 @@ +@import '~@ucap/lg-scss/mixins'; + +.ucap-chat-input-container { + display: flex; + flex-direction: column; + justify-content: space-between; + border-top: 1px solid #ccc; + background-color: $white; + .chat-form-area { + max-height: 100%; + min-height: 20px; + background-color: $white; + padding-left: 30px; + font-size: 0.929em; + margin: 8px 0; + overflow-x: hidden; + overflow-y: auto; + flex: 1 1 auto; + @include screen(xs) { + padding-left: 16px; + } + textarea { + min-height: 22px; + overflow: hidden; + } + } + .button-area { + display: flex; + flex-direction: row; + align-items: center; + height: 34px; + background-color: rgba(0, 0, 0, 0.02); + border-top: 1px solid #eeeeee; + padding: 0 16px; + flex: 0 0 0; + @include screen(xs) { + padding: 0; + } + .btn-icon-chat { + @include ucapMatButton(34px, 34px, 0, 34px); + &.btn-icon-chat-gams { + width: 60px; + @include font-family($font-semibold); + font-weight: 600; + } + } + .btn-message-send { + width: 38px; + height: 38px; + box-shadow: 0px 2px 2px 0 rgba(0, 0, 0, 0.3); + border: solid 3px #ffffff; + background-image: linear-gradient(225deg, #fadfaa 5%, #f92465 95%); + font-size: 1.714em; + position: absolute; + z-index: 10; + bottom: 25px; + right: 20px; + } + } +} diff --git a/src/app/sections/chat/components/form.section.component.ts b/src/app/sections/chat/components/form.section.component.ts index f2f42b3..f187c3c 100644 --- a/src/app/sections/chat/components/form.section.component.ts +++ b/src/app/sections/chat/components/form.section.component.ts @@ -1,4 +1,4 @@ -import { Subject, of, Observable, forkJoin } from 'rxjs'; +import { Subject, of, merge } from 'rxjs'; import { takeUntil, map, catchError, take } from 'rxjs/operators'; import { @@ -9,51 +9,68 @@ import { ChangeDetectorRef, Input, ViewChild, - ElementRef + ElementRef, + EventEmitter, + Output } from '@angular/core'; -import { Store, select } from '@ngrx/store'; -import { Dictionary } from '@ngrx/entity'; +import { Store, select } from '@ngrx/store'; + +import { MatDialog } from '@angular/material/dialog'; + +import { StickerFilesInfo } from '@ucap/ng-core'; +import { StatusCode, FileUploadItem } from '@ucap/api'; +import { + TranslationSaveResponse, + TranslationSaveRequest +} from '@ucap/api-common'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { + SendEventMailType, + SendEventEmailRequest, + SendEventEmailResponse, + StatusCode as PiStatusCode +} from '@ucap/pi'; import { RoomInfo } from '@ucap/protocol-room'; import { - SendRequest as SendEventRequest, - EventType + EventType, + MassTranslationEventJson, + TranslationEventJson } from '@ucap/protocol-event'; import { LoginResponse } from '@ucap/protocol-authentication'; +import { AuthResponse } from '@ucap/protocol-query'; +import { User } from '@ucap/protocol-info'; -import { ChattingActions } from '@ucap/ng-store-chat'; +import { I18nService } from '@ucap/ng-i18n'; +import { LogService } from '@ucap/ng-logger'; +import { CommonApiService } from '@ucap/ng-api-common'; +import { PiService } from '@ucap/ng-pi'; + +import { UserSelector } from '@ucap/ng-store-organization'; import { LoginSelector, - ConfigurationSelector + ConfigurationSelector, + AuthorizationSelector } from '@ucap/ng-store-authentication'; -import { StickerFilesInfo, KEY_STICKER_HISTORY } from '@ucap/ng-core'; +import { ChattingSelector, RoomSelector } from '@ucap/ng-store-chat'; + import { AlertDialogComponent, AlertDialogData, - AlertDialogResult + AlertDialogResult, + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult } from '@ucap/ng-ui'; -import { I18nService } from '@ucap/ng-i18n'; -import { LogService } from '@ucap/ng-logger'; -import { MatDialog } from '@angular/material/dialog'; -import { - TranslationSaveResponse, - MassTalkSaveRequest, - FileTalkSaveResponse, - FileTalkSaveRequest -} from '@ucap/api-common'; -import { environment } from '@environments'; -import { LocalStorageService } from '@ucap/ng-web-storage'; -import { CommonApiService } from '@ucap/ng-api-common'; import { LoginSession } from '@app/models/login-session'; import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { StatusCode, FileUploadItem } from '@ucap/api'; import { AppFileService } from '@app/services/app-file.service'; -import { VersionInfo2Response } from '@ucap/api-public'; import { FileUploadSelectorComponent } from '@app/ucap/chat/components/file-upload.selector.component'; -import { FileUtil } from '@ucap/core'; import { AppChatService } from '@app/services/app-chat.service'; +import { environment } from '@environments'; + export enum SelectorType { EMPTY = '', STICKER = 'STICKER', @@ -69,9 +86,17 @@ export enum SelectorType { changeDetection: ChangeDetectionStrategy.OnPush }) export class FormSectionComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); @Input() set roomId(roomId: string) { - this._roomId = roomId; + if (!!roomId && this.roomId !== roomId) { + this._roomId = roomId; + + this.roomIdSubject.next(roomId); + + this.initializeRoomData(); + } } get roomId(): string { return this._roomId; @@ -79,9 +104,17 @@ export class FormSectionComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _roomId: string; + @Output() + changeTranslationSimpleview = new EventEmitter(); + + @Output() + eventSendTrigger = new EventEmitter(); + versionInfo2Res: VersionInfo2Response; loginSession: LoginSession; loginRes: LoginResponse; + user: User; + authRes: AuthResponse; currentRoomInfo: RoomInfo; @@ -91,8 +124,9 @@ export class FormSectionComponent implements OnInit, OnDestroy { selectedSticker: StickerFilesInfo; /** About Translation */ - translationSimpleview = false; - translationPreview = false; + isTranslationProcess = false; + translationSimpleview = true; + translationPreview = true; destLocale = 'en'; // default English :: en translationPreviewInfo: { previewInfo: TranslationSaveResponse | null; @@ -108,14 +142,13 @@ export class FormSectionComponent implements OnInit, OnDestroy { SelectorType = SelectorType; - private ngOnDestroySubject: Subject; constructor( + private piService: PiService, private appFileService: AppFileService, private appChatService: AppChatService, private store: Store, private i18nService: I18nService, private dialog: MatDialog, - private localStorageService: LocalStorageService, private logService: LogService, private appAuthenticationService: AppAuthenticationService, private commonApiService: CommonApiService, @@ -123,8 +156,6 @@ export class FormSectionComponent implements OnInit, OnDestroy { ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.store .pipe( takeUntil(this.ngOnDestroySubject), @@ -133,56 +164,83 @@ export class FormSectionComponent implements OnInit, OnDestroy { .subscribe((versionInfo2Res) => { this.versionInfo2Res = versionInfo2Res; }); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + }); + this.store .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) .subscribe((loginRes) => { this.loginRes = loginRes; }); - this.appAuthenticationService - .getLoginSession$() - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe((loginSession) => (this.loginSession = loginSession)); this.store .pipe( takeUntil(this.ngOnDestroySubject), - select( - (state: any) => state.chat.room.rooms.entities as Dictionary - ) + select(AuthorizationSelector.authResponse) ) - .subscribe((rooms) => { - if (!!this.roomId) { - this.currentRoomInfo = rooms[this.roomId]; - - this.changeDetectorRef.detectChanges(); - } + .subscribe((authRes) => { + this.authRes = authRes; }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } } + initializeRoomData() { + if (!!this.messageInput) { + this.messageInput.nativeElement.value = ''; + } + this.selectorType = SelectorType.EMPTY; + this.translationSimpleview = false; + this.changeTranslationSimpleview.emit(false); + this.translationPreview = true; + this.destLocale = 'en'; // default English :: en + this.translationPreviewInfo = null; + + this.store + .pipe( + takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject)), + select(RoomSelector.room, this.roomId) + ) + .subscribe((room) => { + this.currentRoomInfo = room; + this.changeDetectorRef.markForCheck(); + }); + + this.loginSession = this.appAuthenticationService.getLoginSession(); + } /** About Selector */ onOpenSelector(type: SelectorType): void { this.selectorType = type; - this.changeDetectorRef.detectChanges(); + this.changeDetectorRef.markForCheck(); } clearSelector(): void { this.selectorType = SelectorType.EMPTY; this.selectedSticker = null; - this.changeDetectorRef.detectChanges(); + this.changeDetectorRef.markForCheck(); } /** Element Handling */ focus(clearField: boolean = true): void { if (!!this.messageInput) { if (!!clearField) { + if (this.selectorType !== SelectorType.TRANSLATION) { + this.clearSelector(); + } this.messageInput.nativeElement.value = ''; - - this.clearSelector(); } this.messageInput.nativeElement.focus(); } @@ -201,6 +259,7 @@ export class FormSectionComponent implements OnInit, OnDestroy { } else { // selector open self.onOpenSelector(SelectorType.FILEUPLOAD); + self.changeDetectorRef.detectChanges(); // FileuploadItem Init. & FileSelector Init. const fileUploadItems = FileUploadItem.fromFiles(fileList); @@ -213,6 +272,7 @@ export class FormSectionComponent implements OnInit, OnDestroy { self.appChatService .sendMessageOfAttachFile( self.loginRes, + self.user, self.loginSession.deviceType, self.currentRoomInfo.roomId, fileUploadItems @@ -226,10 +286,13 @@ export class FormSectionComponent implements OnInit, OnDestroy { } }) .catch((err) => { - alert(err); + self.clearSelector(); if (!!self.fileUploadSelector) { self.fileUploadSelector.onUploadComplete(); } + + const msg = this.i18nService.t('common:file.errors.failToUpload'); + alert(msg); }); } }) @@ -240,13 +303,16 @@ export class FormSectionComponent implements OnInit, OnDestroy { } onKeydown(event: KeyboardEvent) { - if (event.key === 'PageUp' || event.key === 'PageDown') { - event.preventDefault(); - return false; - } else if (event.key === 'Enter' && !event.shiftKey) { - event.preventDefault(); - this.send(); - } + // if (event.key === 'PageUp' || event.key === 'PageDown') { + // event.preventDefault(); + // return false; + // } else if (event.key === 'Enter' && !event.shiftKey) { + // event.preventDefault(); + // this.send(); + // } + event.preventDefault(); + event.stopPropagation(); + this.send(); } onSelectedSticker(stickerInfo: StickerFilesInfo) { @@ -254,9 +320,37 @@ export class FormSectionComponent implements OnInit, OnDestroy { this.focus(false); } + onPasteReply(event: ClipboardEvent) { + event.preventDefault(); + + // this.platform_readFromClipboard().then(async (data) => { + // console.log(data); + // console.log(data.html); + // console.log(data.image); + // console.log(data.imageDataUrl); + // console.log(data.text); + + // console.log(JSON.stringify(event.clipboardData.items)); + // if ((!!data.image && !!data.text) || !!data.image) { + // } + // }); + // for (const item of items) { + // if (item.type.indexOf('image') === 0) { + // blob = item.getAsFile(); + // } + // } + + // console.log(JSON.stringify(event.clipboardData.items)); + // this.nativeService.platform_readFromClipboard().then(async (data) => { + // console.log(data); + // console.log(JSON.stringify(event.clipboardData.items)); + // if ((!!data.image && !!data.text) || !!data.image) { + // } + // }); + } async send() { const roomId = this.currentRoomInfo.roomId; - const userSeq = this.loginRes.userSeq; + const userSeq = String(this.user.info.seq); let message = this.messageInput.nativeElement.value; if (!!message || message.trim().length > 0) { @@ -272,11 +366,11 @@ export class FormSectionComponent implements OnInit, OnDestroy { AlertDialogData, AlertDialogResult >(AlertDialogComponent, { + panelClass: 'min-create-dialog', data: { - title: this.i18nService.t('errors.label'), - message: this.i18nService.t('errors.inputChatMessage') - }, - panelClass: '' + title: this.i18nService.t('chat:errors.label'), + message: this.i18nService.t('chat:errors.inputChatMessage') + } }); return; } @@ -301,14 +395,7 @@ export class FormSectionComponent implements OnInit, OnDestroy { this.clearSelector(); } else { - this.appChatService.sendMessageOfTranslate( - this.loginRes, - this.loginSession.deviceType, - this.destLocale, - roomId, - message, - this.selectedSticker - ); + this.sendMessageOfTranslate(message); } } else if (!!this.selectedSticker) { /** CASE : Sticker */ @@ -326,6 +413,7 @@ export class FormSectionComponent implements OnInit, OnDestroy { /** CASE : MASS TEXT */ this.appChatService.sendMessageOfMassText( this.loginRes, + this.user, this.loginSession.deviceType, roomId, message @@ -335,6 +423,205 @@ export class FormSectionComponent implements OnInit, OnDestroy { this.appChatService.sendMessageOfNormal(userSeq, roomId, message); } + this.eventSendTrigger.emit(0); this.focus(); } + + sendMessageOfTranslate(message: string) { + if (!!this.isTranslationProcess) { + return; + } + + this.isTranslationProcess = true; + + this.commonApiService + .translationSave({ + userSeq: String(this.user.info.seq), + token: this.loginRes.tokenString, + deviceType: this.loginSession.deviceType, + original: message, + roomId: this.roomId, + srcLocale: '', + destLocale: this.destLocale + } as TranslationSaveRequest) + .pipe( + take(1), + map((res) => { + if (res.statusCode === StatusCode.Success) { + let sentMessage = ''; + let eventType = EventType.Translation; + let previewObject: TranslationEventJson | MassTranslationEventJson; + if (res.translationSeq > 0) { + // Mass Text Translation + previewObject = res; + sentMessage = res.returnJson; + eventType = EventType.MassTranslation; + } else { + // Normal Text Translation + previewObject = { + locale: this.destLocale, + original: message, + translation: res.translation, + stickername: '', + stickerfile: !!this.selectedSticker + ? this.selectedSticker.index + : '' + }; + sentMessage = JSON.stringify(previewObject); + eventType = EventType.Translation; + } + + if (!!this.translationPreview) { + this.translationPreviewInfo = { + previewInfo: res, + translationType: eventType + }; + this.changeDetectorRef.markForCheck(); + } else { + this._sendTranslationMessage(sentMessage, eventType); + } + } else { + // error + this._translationError(); + } + }), + catchError((error) => { + this._translationError(); + return of(this.logService.error('error', error)); + }) + ) + .subscribe(() => { + this.isTranslationProcess = false; + }); + } + + onChangeTranslationSimpleView(value: boolean) { + this.translationSimpleview = value; + this.changeTranslationSimpleview.emit(value); + } + onChangeTranslationPreView(value: boolean) { + this.translationPreview = value; + } + onChangeDestLocale(destLocale: string) { + this.destLocale = destLocale; + } + onSendTranslationMessage(params: { + previewInfo: TranslationSaveResponse | null; + translationType: EventType.Translation | EventType.MassTranslation; + }) { + let sentMessage = ''; + if (params.translationType === EventType.MassTranslation) { + // Mass Text Translation + sentMessage = params.previewInfo.returnJson; + } else { + sentMessage = JSON.stringify({ + locale: params.previewInfo.destLocale, + original: params.previewInfo.original, + translation: params.previewInfo.translation, + stickername: '', + stickerfile: !!this.selectedSticker ? this.selectedSticker.index : '' + }); + } + + this._sendTranslationMessage(sentMessage, params.translationType); + } + + private _translationError() { + this.isTranslationProcess = false; + this.dialog.open( + AlertDialogComponent, + { + data: { + title: this.i18nService.t('chat:errors.label'), + message: this.i18nService.t('chat:errors.translateServerError') + }, + panelClass: 'min-create-dialog' + } + ); + } + private _sendTranslationMessage(sentMessage: string, eventType: EventType) { + this.appChatService.sendMessageOfTranslate( + String(this.user.info.seq), + this.roomId, + eventType, + sentMessage + ); + this.translationPreviewInfo = undefined; + this.focus(); + } + + onSendEventEmail(type: SendEventMailType): void { + this.store + .pipe(take(1), select(ChattingSelector.eventList, this._roomId)) + .subscribe((eventList) => { + if (!!eventList && eventList.length > 0) { + const self = this; + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:label.emailSend'), + html: this.i18nService.t( + type === SendEventMailType.ALL + ? 'chat:dialog.confirmSendEventEmailAll' + : 'chat:dialog.confirmSendEventEmailMe' + ) + } + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + const req: SendEventEmailRequest = { + userSeq: String(this.user.info.seq), + deviceType: this.loginSession.deviceType, + tokenKey: this.loginRes.tokenString, + roomSeq: this._roomId, + eventSeq: String(eventList[0].seq), + sendType: type + }; + this.piService + .sendEventEmail(req) + .pipe(take(1)) + .subscribe( + (res: SendEventEmailResponse) => { + if (res.intStatusCode === PiStatusCode.Success) { + this.dialog.open< + AlertDialogComponent, + AlertDialogData, + AlertDialogResult + >(AlertDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:label.emailSend'), + message: this.i18nService.t( + 'chat:dialog.sendEventEmailSuccess' + ) + } + }); + + self.selectorType = SelectorType.EMPTY; + } else { + this.logService.error(res.strErrorMessage); + } + }, + (error) => { + this.logService.error(error); + }, + () => {} + ); + + this.logService.debug( + this.i18nService.t('chat:dialog.sendEventEmailSuccess') + ); + } + }); + } + }); + } } diff --git a/src/app/sections/chat/components/info.section.component.html b/src/app/sections/chat/components/info.section.component.html index 28ffc53..57ead93 100644 --- a/src/app/sections/chat/components/info.section.component.html +++ b/src/app/sections/chat/components/info.section.component.html @@ -1,74 +1,163 @@ - -
    - + +
    +
    + +
    - {{ roomName }} - timer{{ roomName }} + - ({{ currentRoomInfo?.joinUserCount }}) - + {{ currentRoomInfo?.joinUserCount }} + -
    +
    - - - --> +
    + + + + +
    +
    +
    + inbox{{ 'chat:label.data' | ucapI18n }} + +
    +
    + + + +
    +
    + + + + + + +
    +
    diff --git a/src/app/sections/chat/components/info.section.component.scss b/src/app/sections/chat/components/info.section.component.scss index 98fcdb2..bc0e029 100644 --- a/src/app/sections/chat/components/info.section.component.scss +++ b/src/app/sections/chat/components/info.section.component.scss @@ -4,12 +4,73 @@ height: 50px; min-height: 50px; background-color: $white; - display: flex; - flex-direction: row; - justify-content: space-between; - align-content: center; - .mat-toolbar-row { + .info-chat-toolbar-content { height: 50px; min-height: 50px; + display: flex; + flex-direction: row; + align-content: center; + justify-content: space-between; + @include screen(xs) { + padding-right: 0; + } + .chat-room-profile { + align-self: center; + margin-right: 15px; + height: 38px; + flex: 0 0 0; + @include profile-avatar-default( + 0, + 14, + $warm-pink, + 18px + ); //오른 아래 공간, 모바일 온라인 아이콘 크기, 모바일 아이콘 색, 모바일 아이콘 bg크기 + .profile-image { + @include avatar-img(36px, 0); //아바타 크기, 왼쪽공간 + background-color: #d1f6ff; + } + } + .chat-room-subject { + flex: 1 1 auto; + color: $gray-re3; + font-size: 14px; + font-weight: 600; + display: flex !important; + flex-direction: row; + align-items: center; + @include ellipsis-column(1); + .ico-timer-unit { + max-width: 18px !important; + height: 18px !important; + line-height: 18px; + font-size: 12px; + text-align: center; + border-radius: 50%; + margin-right: 6px; + flex: 0 0 24px; + } + span { + flex: 0 1 auto; + @include ellipsis(1); + //width: ; + } + strong { + flex: 1 1 auto; + display: flex; + flex-direction: row; + padding-left: 4px; + } + } + .btn-chat-room-top { + flex: 1 0 160px; + align-items: center; + display: flex; + flex-direction: inline-flex; + justify-content: flex-end; + //대화방 즐겨찾기 - 개발보류 + .btn-icon-favorite { + display: none; + } + } } } diff --git a/src/app/sections/chat/components/info.section.component.ts b/src/app/sections/chat/components/info.section.component.ts index 566b122..40541e8 100644 --- a/src/app/sections/chat/components/info.section.component.ts +++ b/src/app/sections/chat/components/info.section.component.ts @@ -1,3 +1,6 @@ +import { combineLatest, Subject, merge } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + import { Component, OnInit, @@ -8,22 +11,26 @@ import { EventEmitter, ChangeDetectorRef } from '@angular/core'; -import { Dictionary } from '@ngrx/entity'; -import { Store, select } from '@ngrx/store'; -import { combineLatest, Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; -import { RoomSelector, RoomActions } from '@ucap/ng-store-chat'; -import { - LoginSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; +import { Store, select } from '@ngrx/store'; +import { Dictionary } from '@ngrx/entity'; + +import { MatDialog } from '@angular/material/dialog'; + +import { LocaleCode } from '@ucap/core'; +import { I18nService } from '@ucap/ng-i18n'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { RoomInfo, RoomType, UpdateRequest } from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; import { + RoomSelector, + RoomActions, RoomUserMap, RoomUserShortMap -} from '@ucap/ng-store-chat/lib/store/room/state'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { RoomInfo, RoomType, UpdateRequest } from '@ucap/protocol-room'; +} from '@ucap/ng-store-chat'; import { TranslatePipe as OrganizationTranslate, @@ -31,9 +38,8 @@ import { } from '@ucap/ng-ui-organization'; import { AppChatService } from '@app/services/app-chat.service'; -import { I18nService } from '@ucap/ng-i18n'; -import { VersionInfo2Response } from '@ucap/api-public'; -import { LocaleCode } from '@ucap/core'; +import { ChatDrawType } from '@app/pages/chat/types/chat-draw.type'; +import { DrawInfo } from '@app/pages/chat/models/draw-info'; @Component({ selector: 'app-sections-chat-info', @@ -42,10 +48,17 @@ import { LocaleCode } from '@ucap/core'; changeDetection: ChangeDetectionStrategy.OnPush }) export class InfoSectionComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); + @Input() set roomId(roomId: string) { this._roomId = roomId; + this.roomIdSubject.next(roomId); + + this.initializeRoomData(); + // request selected room if (!!this.roomId) { this.store.dispatch( @@ -55,8 +68,6 @@ export class InfoSectionComponent implements OnInit, OnDestroy { }) ); } - - this.getRoomInfo(); } get roomId(): string { return this._roomId; @@ -68,31 +79,31 @@ export class InfoSectionComponent implements OnInit, OnDestroy { openChatSearch = new EventEmitter(); @Output() - rightDrawerToggle = new EventEmitter(); + rightDrawerToggle = new EventEmitter(); versionInfo2Res: VersionInfo2Response; - loginRes: LoginResponse; + user: User; defaultProfileImage: string; defaultProfileImageMulti: string; currentRoomInfo: RoomInfo; roomList: RoomInfo[]; - roomUsersDictionary: Dictionary; - roomUsersShortDictionary: Dictionary; + roomUsersMap: RoomUserMap; + roomUsersShortMap: RoomUserShortMap; roomName: string; roomImage: string; RoomType = RoomType; organizationTranslate: OrganizationTranslate; - private ngOnDestroySubject: Subject; constructor( private store: Store, private appChatService: AppChatService, private i18nService: I18nService, private translateService: TranslateService, + private dialog: MatDialog, private changeDetectorRef: ChangeDetectorRef ) { // language setting @@ -105,12 +116,10 @@ export class InfoSectionComponent implements OnInit, OnDestroy { // default image setting this.defaultProfileImage = this.appChatService.defaultProfileImage; - this.defaultProfileImageMulti = this.appChatService.defaultProfileImage; + this.defaultProfileImageMulti = this.appChatService.defaultProfileImageMulti; } ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.store .pipe( takeUntil(this.ngOnDestroySubject), @@ -119,76 +128,58 @@ export class InfoSectionComponent implements OnInit, OnDestroy { .subscribe((versionInfo2Res) => { this.versionInfo2Res = versionInfo2Res; }); - - combineLatest([ - this.store.pipe(select(LoginSelector.loginRes)), - this.store.pipe(select(RoomSelector.rooms)), - this.store.pipe( - select( - (state: any) => - state.chat.room.roomUsers.entities as Dictionary - ) - ), - this.store.pipe( - select( - (state: any) => - state.chat.room.roomUsersShort.entities as Dictionary< - RoomUserShortMap - > - ) - ) - ]) - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe(([loginRes, rooms, roomUsers, roomUsersShort]) => { - this.loginRes = loginRes; - if (!!loginRes && !!this.roomId) { - this.roomList = rooms; - this.roomUsersDictionary = roomUsers; - this.roomUsersShortDictionary = roomUsersShort; - - this.getRoomInfo(); - } - }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + } + + initializeRoomData() { + combineLatest([ + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(RoomSelector.room, this.roomId)), + this.store.pipe(select(RoomSelector.roomUser, this.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.roomId)) + ]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([user, room, roomUsers, roomUsersShort]) => { + this.user = user; + this.currentRoomInfo = room; + this.roomUsersMap = roomUsers; + this.roomUsersShortMap = roomUsersShort; + + this.getRoomInfo(); + }); } getRoomInfo(): void { - // room render. - if (!this.roomList || this.roomList.length === 0) { - return; - } - this.roomName = '...'; - const idx = this.roomList.findIndex( - (roomInfo) => roomInfo.roomId === this.roomId - ); - if (idx > -1 && !!this.roomList && this.roomList.length > 0) { - this.currentRoomInfo = this.roomList[idx]; - } - if (!!this.currentRoomInfo) { // Setting RoomName. this.roomName = this.appChatService.getRoomName( this.organizationTranslate, - this.loginRes, + this.user, this.currentRoomInfo, - this.roomUsersDictionary, - this.roomUsersShortDictionary + this.roomUsersMap, + this.roomUsersShortMap ); this.roomImage = this.appChatService.getRoomProfileImage( + this.user, this.currentRoomInfo, - this.loginRes, - this.roomUsersDictionary, - this.roomUsersShortDictionary + this.roomUsersMap, + this.roomUsersShortMap ); } - this.changeDetectorRef.detectChanges(); + this.changeDetectorRef.markForCheck(); } onToggleAlarm(roomInfo: RoomInfo): void { @@ -209,11 +200,9 @@ export class InfoSectionComponent implements OnInit, OnDestroy { } as UpdateRequest }) ); - this.changeDetectorRef.detectChanges(); + this.changeDetectorRef.markForCheck(); } - onOpenRoomUserList(roomInfo: RoomInfo): void {} - onOpenChatSearch(): void { this.openChatSearch.emit(); } @@ -221,4 +210,64 @@ export class InfoSectionComponent implements OnInit, OnDestroy { onRightDrawerToggle(): void { this.rightDrawerToggle.emit(); } + + onClickRoomMenu(type: string): void { + switch (type) { + case 'ATTACH_IMAGE': + this.rightDrawerToggle.emit({ chatDrawType: ChatDrawType.AttachImage }); + break; + case 'ATTACH_VIDEO': + this.rightDrawerToggle.emit({ chatDrawType: ChatDrawType.AttachVideo }); + break; + case 'ATTACH_FILE': + this.rightDrawerToggle.emit({ chatDrawType: ChatDrawType.AttachFile }); + break; + case 'ADD_GROUP': + this.rightDrawerToggle.emit({ chatDrawType: ChatDrawType.AddGroup }); + break; + case 'ROOM_USERS': + this.rightDrawerToggle.emit({ chatDrawType: ChatDrawType.RoomUsers }); + break; + case 'CHANGE_ROOM_USERS': + this.rightDrawerToggle.emit({ chatDrawType: ChatDrawType.Invite }); + break; + case 'SETTING': + this.rightDrawerToggle.emit({ chatDrawType: ChatDrawType.Setting }); + break; + case 'EXIT': + this.appChatService.exitRoomDialog(this.currentRoomInfo); + break; + } + } + + getShowContextMenu(menuType: string) { + if ( + ['EVENT', 'ROOM_USERS', 'CHANGE_ROOM_USERS', 'ADD_GROUP', 'SETTING'].some( + (v) => v === menuType + ) + ) { + if ( + !this.currentRoomInfo || + !this.currentRoomInfo.roomType || + [RoomType.Mytalk, RoomType.Allim, RoomType.Bot, RoomType.Link].some( + (v) => v === this.currentRoomInfo.roomType + ) + ) { + return false; + } + } + // else if (['CHAT_EXPORT'].some((v) => v === menuType)) { + // if ( + // !this.currentRoomInfo || + // !this.currentRoomInfo.roomType || + // [RoomType.Allim, RoomType.Bot, RoomType.Link].some( + // (v) => v === this.currentRoomInfo.roomType + // ) + // ) { + // return false; + // } + // } + + return true; + } } diff --git a/src/app/sections/chat/components/list.section.component.html b/src/app/sections/chat/components/list.section.component.html index 8df303e..a24f6ce 100644 --- a/src/app/sections/chat/components/list.section.component.html +++ b/src/app/sections/chat/components/list.section.component.html @@ -1,30 +1,12 @@ -
    +
    -
    - -
    diff --git a/src/app/sections/chat/components/list.section.component.scss b/src/app/sections/chat/components/list.section.component.scss index 356b3ad..063068d 100644 --- a/src/app/sections/chat/components/list.section.component.scss +++ b/src/app/sections/chat/components/list.section.component.scss @@ -1,2 +1,4 @@ .list-container { + height: calc(100% - 90px) !important; + min-height: auto !important; } diff --git a/src/app/sections/chat/components/list.section.component.ts b/src/app/sections/chat/components/list.section.component.ts index b6d33ee..cf1387f 100644 --- a/src/app/sections/chat/components/list.section.component.ts +++ b/src/app/sections/chat/components/list.section.component.ts @@ -1,5 +1,5 @@ -import { Subject, combineLatest } from 'rxjs'; -import { takeUntil, take } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; import { Component, @@ -9,91 +9,24 @@ import { ChangeDetectorRef, Input, EventEmitter, - Output, - NgZone + Output } from '@angular/core'; -import { Store, select } from '@ngrx/store'; - -import { - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY -} from '@angular/cdk/scrolling'; - -import { LoginResponse } from '@ucap/protocol-authentication'; - import { LogService } from '@ucap/ng-logger'; -import { SessionStorageService } from '@ucap/ng-web-storage'; -import { - LoginSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; -import { RoomSelector, RoomActions } from '@ucap/ng-store-chat'; -import { - RoomInfo, - RoomType, - ExitAllRequest, - UpdateRequest, - ExitRequest -} from '@ucap/protocol-room'; -import { - RoomUserMap, - RoomUserShortMap -} from '@ucap/ng-store-chat/lib/store/room/state'; -import { Dictionary } from '@ngrx/entity'; -import { - TranslatePipe as OrganizationTranslate, - TranslateService -} from '@ucap/ng-ui-organization'; -import { I18nService } from '@ucap/ng-i18n'; -import { AppChatService } from '@app/services/app-chat.service'; -import { - DateService, - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult -} from '@ucap/ng-ui'; -import { VersionInfo2Response } from '@ucap/api-public'; -import { MatDialog } from '@angular/material/dialog'; -import { Router } from '@angular/router'; - -export class ChatVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(60, 150, 200); // (itemSize, minBufferPx, maxBufferPx) - } -} +import { RoomInfo } from '@ucap/protocol-room'; +import { Router, ActivatedRoute, Params } from '@angular/router'; +import { QueryParams } from '@app/pages/chat/types/params.type'; +import { SearchInfo } from '@app/pages/chat/models/search-info'; @Component({ selector: 'app-sections-chat-list', templateUrl: './list.section.component.html', styleUrls: ['./list.section.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: ChatVirtualScrollStrategy - } - ], changeDetection: ChangeDetectionStrategy.OnPush }) export class ListSectionComponent implements OnInit, OnDestroy { @Input() - set searchObj(obj: { isShowSearch: boolean; searchWord: string }) { - this._searchObj = obj; - - if (obj.isShowSearch && obj.searchWord.localeCompare('') !== 0) { - this.onRoomSearch(obj); - } else { - this._searchObj.isShowSearch = false; - this.searchRoomList = []; - } - this.searchResultList.emit(this.searchRoomList); - } - - get searchObj() { - return this._searchObj; - } - // tslint:disable-next-line: variable-name - _searchObj: any; + searchObj: SearchInfo; @Input() checkable = false; @@ -110,277 +43,53 @@ export class ListSectionComponent implements OnInit, OnDestroy { roomInfo: RoomInfo; }>(); - @Output() - delRoom = new EventEmitter(); - - versionInfo2Res: VersionInfo2Response; - loginRes: LoginResponse; - - defaultProfileImage: string; - defaultProfileImageMulti: string; - + currentRoomId: string; roomList: RoomInfo[]; - roomUsersDictionary: Dictionary; - roomUsersShortDictionary: Dictionary; - searchRoomList: RoomInfo[]; - - roomGroup: { division: string; roomList: RoomInfo[] }[]; - - organizationTranslate: OrganizationTranslate; - - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private router: Router, - private appChatService: AppChatService, - private dateService: DateService, - private sessionStorageService: SessionStorageService, - private i18nService: I18nService, - private translateService: TranslateService, - private store: Store, - private dialog: MatDialog, + private activatedRoute: ActivatedRoute, private changeDetectorRef: ChangeDetectorRef, - private ngZone: NgZone, private logService: LogService - ) { - // default image setting - this.defaultProfileImage = this.appChatService.defaultProfileImage; - this.defaultProfileImageMulti = this.appChatService.defaultProfileImage; - } + ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - - // language setting - this.translateService.setDefaultLang(this.i18nService.currentLng); - this.translateService.use(this.i18nService.currentLng); - this.organizationTranslate = new OrganizationTranslate( - this.translateService, - this.changeDetectorRef - ); - this.i18nService.setDefaultNamespace('chat'); - - this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(ConfigurationSelector.versionInfo2Response) - ) - .subscribe((versionInfo2Res) => { - this.versionInfo2Res = versionInfo2Res; - }); - - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; - }); - - combineLatest([ - this.store.pipe(select(RoomSelector.rooms)), - this.store.pipe(select(RoomSelector.standbyRooms)) - ]) + this.activatedRoute.queryParams .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe(([rooms, standbyRooms]) => { - rooms = (rooms || []).filter((info) => { - return ( - info.isJoinRoom && - !standbyRooms.find((standbyRoom) => standbyRoom === info.roomId) - ); - }); - this.roomList = rooms; - - this.changeDetectorRef.detectChanges(); - }); - - combineLatest([ - this.store.pipe( - select( - (state: any) => - state.chat.room.roomUsers.entities as Dictionary - ) - ), - this.store.pipe( - select( - (state: any) => - state.chat.room.roomUsersShort.entities as Dictionary< - RoomUserShortMap - > - ) - ) - ]) - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe(([roomUsers, roomUsersShort]) => { - this.roomUsersDictionary = roomUsers; - this.roomUsersShortDictionary = roomUsersShort; - this.changeDetectorRef.detectChanges(); + .subscribe((params: Params) => { + const seqParam = params[QueryParams.ROOM_ID]; + this.currentRoomId = !!seqParam ? seqParam : undefined; }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } - getRoomName(roomInfo: RoomInfo): string { - if (!roomInfo) { - return ''; - } - - const roomName = this.appChatService.getRoomName( - this.organizationTranslate, - this.loginRes, - roomInfo, - this.roomUsersDictionary, - this.roomUsersShortDictionary - ); - - return roomName; - } - - getRoomProfileImage(roomInfo: RoomInfo): string { - let roomImage = ''; - if (!!roomInfo) { - roomImage = this.appChatService.getRoomProfileImage( - roomInfo, - this.loginRes, - this.roomUsersDictionary, - this.roomUsersShortDictionary - ); - } - - return roomImage; - } - - isToday(date: any) { - return this.dateService.isToday(date); - } - - onRoomSearch(obj: { isShowSearch: boolean; searchWord: string }) { - const searchRoomList: RoomInfo[] = []; - - this.roomList.forEach((roomInfo) => { - if (roomInfo.roomName.indexOf(obj.searchWord) > -1) { - searchRoomList.push(roomInfo); - } else { - const roomUsers = this.appChatService.getRoomUserList( - this.loginRes, - roomInfo.roomId, - this.roomUsersDictionary, - this.roomUsersShortDictionary - ); - - if ( - roomUsers.existUsers && - roomUsers.users.filter( - (userInfo) => - userInfo.name.indexOf(obj.searchWord) > -1 || - userInfo.nameEn.indexOf(obj.searchWord) > -1 || - userInfo.nameCn.indexOf(obj.searchWord) > -1 - ).length > 0 - ) { - searchRoomList.push(roomInfo); - } - } - }); - - this.searchRoomList = searchRoomList; - } - - getChecked(roomInfo: RoomInfo): boolean { - if (this.selectedRoomList.some((info) => info.roomId === roomInfo.roomId)) { - return true; - } else { - return false; - } - } - onToggleItem(event: { checked: boolean; roomInfo: RoomInfo }): void { this.toggleItem.emit(event); } - onClickRoomItem(event: MouseEvent, roomInfo: RoomInfo): void { - event.preventDefault(); - event.stopPropagation(); - - if (!!this.checkable) { - this.onToggleItem({ - checked: !this.getChecked(roomInfo), - roomInfo - }); - } else { - this.onOpenChatRoom(roomInfo); - } - } - onOpenChatRoom(roomInfo: RoomInfo): void { - this.ngZone.run(() => { - this.router.navigate( - [ - 'chat', - { - outlets: { content: 'chatroom' } - } - ], + this.router.navigate( + [ + 'chat', { - queryParams: { roomId: roomInfo.roomId } + outlets: { content: 'chatroom' } } - ); - }); - } - - onToggleAlarm(roomInfo: RoomInfo): void { - if (!roomInfo) { - return; - } - - this.store.dispatch( - RoomActions.update({ - req: { - roomId: roomInfo.roomId, - roomName: - roomInfo.roomName.trim().length === 0 - ? ' ' - : roomInfo.roomName.trim(), - receiveAlarm: !roomInfo.receiveAlarm, - syncAll: false - } as UpdateRequest - }) - ); - this.changeDetectorRef.detectChanges(); - } - - onDelRoom(roomInfo: RoomInfo): void { - if (!roomInfo) { - return; - } - - const dialogRef = this.dialog.open< - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult - >(ConfirmDialogComponent, { - data: { - title: this.i18nService.t('dialog.title.exitFromRoom'), - html: this.i18nService.t('dialog.confirmExitFromRoom') + ], + { + queryParams: { roomId: roomInfo.roomId } } - }); + ); + } - dialogRef - .afterClosed() - .pipe(take(1)) - .subscribe((result) => { - if (!!result && !!result.choice) { - this.store.dispatch( - RoomActions.del({ - req: { - roomId: roomInfo.roomId - } as ExitRequest - }) - ); - } - }); - this.changeDetectorRef.detectChanges(); + onSearchResultList(searchResultList: RoomInfo[]) { + this.searchResultList.emit(searchResultList); } } diff --git a/src/app/sections/chat/components/list.section.strategy.ts b/src/app/sections/chat/components/list.section.strategy.ts deleted file mode 100644 index 54b08bc..0000000 --- a/src/app/sections/chat/components/list.section.strategy.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Observable, Subject } from 'rxjs'; - -import { - VirtualScrollStrategy, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; -import { distinctUntilChanged } from 'rxjs/operators'; - -export class ChatGroupVirtualScrollStrategy implements VirtualScrollStrategy { - scrolledIndexChange: Observable; - - private indexSubject = new Subject(); - private viewport: CdkVirtualScrollViewport | null = null; - - constructor() { - this.scrolledIndexChange = this.indexSubject.pipe(distinctUntilChanged()); - } - - attach(viewport: CdkVirtualScrollViewport): void { - this.viewport = viewport; - } - detach(): void { - this.indexSubject.complete(); - this.viewport = null; - } - onContentScrolled(): void {} - onDataLengthChanged(): void {} - onContentRendered(): void {} - onRenderedOffsetChanged(): void {} - scrollToIndex(index: number, behavior: ScrollBehavior): void {} -} diff --git a/src/app/sections/chat/components/message.section.component.html b/src/app/sections/chat/components/message.section.component.html index e4001a5..cd8b349 100644 --- a/src/app/sections/chat/components/message.section.component.html +++ b/src/app/sections/chat/components/message.section.component.html @@ -1,33 +1,58 @@ - - +
    + + -
    -
    - -
    +
    +
    + +
    - + - - -
    - 스크롤 상단일때 도착한 최근 메시지 표시 영역 +
    + + +
    diff --git a/src/app/sections/chat/components/message.section.component.scss b/src/app/sections/chat/components/message.section.component.scss index e69de29..876f9f5 100644 --- a/src/app/sections/chat/components/message.section.component.scss +++ b/src/app/sections/chat/components/message.section.component.scss @@ -0,0 +1,64 @@ +@import '~@ucap/lg-scss/mixins'; + +.ucap-message-section { + display: flex; + flex-direction: column; + height: 100%; + padding: 0 30px; + overflow: auto; + min-width: 450px; + @include screen(xs) { + padding: 0 16px; + min-width: 100%; + } + .icon-button-arrow { + @include ucapMatButton(36px, 36px, 6px, 36px); + border-color: $lipstick; + background-color: rgba(255, 255, 255, 0.5); + box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16); + position: sticky; + z-index: 5; + width: 36px; + align-self: flex-end; + margin-right: -10px; + &.top-position { + bottom: 90%; + order: 2; + } + &.bottom-position { + bottom: 30px; + order: 3; + } + &:hover { + background-color: rgba(255, 255, 255, 0.8); + } + } + + .chat-area { + flex-grow: 1; + order: 1; + padding-top: 30px; + display: flex; + flex-direction: column; + .ucap-chat-more-event { + padding: 20px 0 0; + .btn-more-pre { + @include ucapMatButton(100%, 30px, 2px, 30px); + font-size: 0.857em; + } + } + .recent-receive-message { + transition: all 0.4s; + position: sticky; + bottom: 0; + left: 0; + z-index: 5; + margin: 0 -30px; + background-color: rgba(0, 0, 0, 0.6); + color: #fff; + @include screen(xs) { + margin: 0 -15px; + } + } + } +} diff --git a/src/app/sections/chat/components/message.section.component.ts b/src/app/sections/chat/components/message.section.component.ts index f53e53b..d838862 100644 --- a/src/app/sections/chat/components/message.section.component.ts +++ b/src/app/sections/chat/components/message.section.component.ts @@ -1,11 +1,7 @@ -import { - Subject, - Observable, - BehaviorSubject, - Subscription, - merge -} from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import moment from 'moment'; + +import { Subject, merge, combineLatest, Observable } from 'rxjs'; +import { takeUntil, take } from 'rxjs/operators'; import { Component, @@ -13,26 +9,85 @@ import { OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, - Input + Input, + AfterViewInit, + ViewChild, + ElementRef } from '@angular/core'; -import { Info, EventJson, EventType, FileType } from '@ucap/protocol-event'; + import { Store, select } from '@ngrx/store'; -import { Chatting } from '@ucap/ng-store-chat/lib/store/chatting/state'; -import { ChattingSelector, RoomSelector } from '@ucap/ng-store-chat'; +import { Dictionary } from '@ngrx/entity'; + +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; + +import { TransMassTalkDownloadRequest } from '@ucap/api-common'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { + Info, + EventJson, + EventType, + FileType, + MassTranslationEventJson +} from '@ucap/protocol-event'; import { UserInfo as RoomUserInfo, UserInfoShort as RoomUserInfoShort, - RoomInfo + RoomInfo, + UpdateTimerSetRequest, + UpdateRequest, + RoomType } from '@ucap/protocol-room'; import { LoginResponse } from '@ucap/protocol-authentication'; +import { FileInfo } from '@ucap/protocol-file'; +import { User } from '@ucap/protocol-info'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { UserSelector } from '@ucap/ng-store-organization'; import { LoginSelector, ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { + ChattingSelector, + RoomSelector, + ChattingActions, + RoomActions, + Chatting +} from '@ucap/ng-store-chat'; + +import { + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult, + ClipboardService, + SelectFileInfo +} from '@ucap/ng-ui'; + +import { LoginSession } from '@app/models/login-session'; import { AppChatService } from '@app/services/app-chat.service'; -import { VersionInfo2Response } from '@ucap/api-public'; -import moment from 'moment'; -import { Dictionary } from '@ngrx/entity'; +import { AppAuthenticationService } from '@app/services/app-authentication.service'; +import { + ProfileDialogComponent, + ProfileDialogData, + ProfileDialogResult +} from '@app/sections/organization/dialogs/profile.dialog.component'; + +import { + ForwardDialogComponent, + ForwardDialogData, + ForwardDialogResult +} from '../dialogs/forward.dialog.component'; +import { + FileViewerDialogComponent, + FileViewerDialogData, + FileViewerDialogResult +} from '../dialogs/file-viewer.dialog.component'; +import { + SettingDialogComponent, + SettingDialogData, + SettingDialogResult +} from '../dialogs/setting.dialog.component'; @Component({ selector: 'app-sections-chat-message', @@ -41,7 +96,11 @@ import { Dictionary } from '@ngrx/entity'; changeDetection: ChangeDetectionStrategy.OnPush }) -export class MessageSectionComponent implements OnInit, OnDestroy { +export class MessageSectionComponent + implements OnInit, OnDestroy, AfterViewInit { + private roomIdSubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); + @Input() set roomId(roomId: string) { this._roomId = roomId; @@ -56,13 +115,20 @@ export class MessageSectionComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _roomId: string; + @Input() + translationSimpleview: boolean; + + @Input() + eventSendTrigger$: Observable; + versionInfo2Res: VersionInfo2Response; loginRes: LoginResponse; - - roomIdSubject = new Subject(); + user: User; + loginSession: LoginSession; currentRoomInfo: RoomInfo; - chatting$: Observable; + currentChatting: Chatting; + currentFileInfoList: FileInfo[] = []; roomUsers: RoomUserInfoShort[] = []; // eventList$: Observable[]>; eventList: Info[]; @@ -71,11 +137,26 @@ export class MessageSectionComponent implements OnInit, OnDestroy { EventType = EventType; FileType = FileType; - private ngOnDestroySubject = new Subject(); + /** Timer 대화방의 대화 삭제를 위한 interval */ + interval: any; + + /** new Chat room setting dialog */ + settingDialogRef: MatDialogRef; + + /** About Scroll */ + isInitScrollbottom = true; + @ViewChild('chatMessagesContainer', { static: false }) + chatMessagesContainer: ElementRef; + + String = String; + constructor( private appChatService: AppChatService, private store: Store, - private changeDetectorRef: ChangeDetectorRef + private changeDetectorRef: ChangeDetectorRef, + private dialog: MatDialog, + private i18nService: I18nService, + private appAuthenticationService: AppAuthenticationService ) { this.defaultProfileImage = this.appChatService.defaultProfileImage; } @@ -86,44 +167,69 @@ export class MessageSectionComponent implements OnInit, OnDestroy { takeUntil(this.ngOnDestroySubject), select(ConfigurationSelector.versionInfo2Response) ) - .subscribe((versionInfo2Res) => { - this.versionInfo2Res = versionInfo2Res; - }); - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; - }); + .subscribe((versionInfo2Res) => (this.versionInfo2Res = versionInfo2Res)); this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select( - (state: any) => state.chat.room.rooms.entities as Dictionary - ) - ) - .subscribe((rooms) => { - if (!!this.roomId) { - this.currentRoomInfo = rooms[this.roomId]; - } + .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) + .subscribe((loginRes) => (this.loginRes = loginRes)); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => (this.user = user)); + + this.eventSendTrigger$ + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((_) => { + // Fires when I enter the event + this.gotoScrollToBottom(); }); } + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + + if (!!this.interval) { + clearInterval(this.interval); + this.interval = undefined; + } + } + + ngAfterViewInit() {} + initializeRoomData() { - this.chatting$ = this.store.pipe( - takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject)), - select(ChattingSelector.chatting, this.roomId) - ); + /** About initialize roomId */ + this.isInitScrollbottom = true; + + this.loginSession = this.appAuthenticationService.getLoginSession(); this.store .pipe( takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject)), - select(ChattingSelector.eventList, this.roomId) + select(RoomSelector.room, this.roomId) ) - .subscribe((eventList) => { - this.eventList = eventList; + .subscribe((room) => { + this.currentRoomInfo = room; - this.changeDetectorRef.detectChanges(); + // About Interval + if (!!this.interval) { + clearInterval(this.interval); + this.interval = undefined; + } + if (!!this.currentRoomInfo && !!this.currentRoomInfo.isTimeRoom) { + this.interval = setInterval(() => { + this.store.dispatch( + ChattingActions.intervalClearEvent({ roomId: this.roomId }) + ); + }, 1000); + } }); this.store @@ -134,13 +240,110 @@ export class MessageSectionComponent implements OnInit, OnDestroy { .subscribe((roomUserShort) => { if (!!roomUserShort) { this.roomUsers = roomUserShort.userInfos; + this.changeDetectorRef.markForCheck(); + } + }); + + this.store + .pipe( + takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject)), + select(ChattingSelector.chatting, this.roomId) + ) + .subscribe((chatting) => { + this.currentChatting = chatting; + if ( + !!chatting && + !!chatting.fileInfoList && + chatting.fileInfoList.ids.length > 0 + ) { + const tempFileInfoList: FileInfo[] = []; + const fileInfoDic = chatting.fileInfoList.entities as Dictionary< + FileInfo + >; + + for (const key in fileInfoDic) { + if (key === undefined) { + continue; + } + + if (fileInfoDic.hasOwnProperty(key)) { + const fileInfo = fileInfoDic[key]; + tempFileInfoList.push(fileInfo); + } + } + + this.currentFileInfoList = tempFileInfoList; + } + }); + + this.eventList = []; + this.store + .pipe( + takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject)), + select(ChattingSelector.eventList, this.roomId) + ) + .subscribe((eventList) => { + if (!!eventList && eventList.length > 0) { + this.eventList = eventList; + this.changeDetectorRef.markForCheck(); + + if (!!this.isInitScrollbottom) { + this.gotoScrollToBottom(); + this.isInitScrollbottom = false; + } + } + }); + + /** Settings popup that opens when you first open a chat room */ + combineLatest([ + this.store.pipe(select(RoomSelector.room, this.roomId)), + this.store.pipe(select(RoomSelector.standbyRooms)) + ]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([roomInfo, standbyRooms]) => { + if ( + !!roomInfo && + roomInfo.roomId === this.roomId && + roomInfo.roomType !== RoomType.Mytalk && + roomInfo.roomType !== RoomType.Single && + !!standbyRooms && + standbyRooms.length > 0 && + standbyRooms.findIndex((roomId) => roomId === this.roomId) > -1 + ) { + if (!this.settingDialogRef) { + this.settingDialogRef = this.dialog.open< + SettingDialogComponent, + SettingDialogData, + SettingDialogResult + >(SettingDialogComponent, { + panelClass: 'min-create-dialog', + data: { + roomId: this.roomId + } + }); + + this.settingDialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result: SettingDialogResult) => { + if (!!result && !!result.choice) { + this._standByRoomSetting(result); + } + }); + + this.changeDetectorRef.markForCheck(); + } } }); } - ngOnDestroy(): void { - if (!!this.ngOnDestroySubject) { - this.ngOnDestroySubject.complete(); + gotoScrollToBottom() { + if (!!this.chatMessagesContainer) { + const self = this; + setTimeout(() => { + self.chatMessagesContainer.nativeElement.scrollTop = + self.chatMessagesContainer.nativeElement.scrollHeight; + }, 500); } } @@ -185,4 +388,256 @@ export class MessageSectionComponent implements OnInit, OnDestroy { .filter((user) => user.lastReadEventSeq < message.seq).length; return unreadCnt === 0 ? '' : unreadCnt; } + + onClickShowPreviousEvents(event: MouseEvent) { + event.preventDefault(); + event.stopPropagation(); + + if (!!this.currentChatting.remainEvent) { + this.store.dispatch( + ChattingActions.moreEvents({ + roomId: this.roomId + }) + ); + } + } + + async onClickMessageContextMenu(params: { + menuType: string; + message: Info; + }) { + switch (params.menuType) { + case 'COPY': + { + switch (params.message.type) { + case EventType.Character: + { + this.appChatService.copyFromContentText( + (params.message as Info).sentMessage + ); + } + break; + case EventType.MassText: + { + this.appChatService.massTextDownload({ + userSeq: String(this.user.info.seq), + deviceType: this.loginSession.deviceType, + token: this.loginRes.tokenString, + eventMassSeq: params.message.seq + }); + } + break; + case EventType.Translation: + { + } + break; + case EventType.MassTranslation: + { + } + break; + default: + break; + } + } + break; + case 'RECALL': + { + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:label.recallEvent'), + html: this.i18nService.t('chat:dialog.confirmRecallEvent') + } + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.store.dispatch( + ChattingActions.cancel({ + roomId: this.currentRoomInfo.roomId, + eventSeq: params.message.seq, + deviceType: this.loginSession.deviceType + }) + ); + } + }); + } + break; + case 'FORWARD': + { + const dialogRef = this.dialog.open< + ForwardDialogComponent, + ForwardDialogData, + ForwardDialogResult + >(ForwardDialogComponent, { + panelClass: 'max-create-dialog' + }); + dialogRef + .afterOpened() + .pipe(take(1)) + .subscribe(() => { + dialogRef.componentInstance.psUpdate(); + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + const userSeqs: string[] = []; + let roomSeq = ''; + if ( + !!result.selelctUserList && + result.selelctUserList.length > 0 + ) { + result.selelctUserList.map((user) => + userSeqs.push(String(user.seq)) + ); + } + if (!!result.selectRoom) { + roomSeq = result.selectRoom.roomId; + } + if (userSeqs.length > 0 || roomSeq.trim().length > 0) { + this.store.dispatch( + ChattingActions.forward({ + senderSeq: String(this.user.info.seq), + deviceType: this.loginSession.deviceType, + req: { + roomId: '-999', + eventType: params.message.type, + sentMessage: params.message.sentMessage + }, + trgtUserSeqs: userSeqs, + trgtRoomId: roomSeq + }) + ); + } + } + }); + } + break; + case 'FORWARD_TO_ME': + { + if (this.loginRes.talkWithMeBotSeq > -1) { + const seqs = this.user.talkWithMeBotSeq as any; + this.store.dispatch( + ChattingActions.forward({ + senderSeq: String(this.user.info.seq), + deviceType: this.loginSession.deviceType, + req: { + roomId: '-999', + eventType: params.message.type, + sentMessage: params.message.sentMessage + }, + trgtUserSeqs: [seqs] + }) + ); + } + } + break; + case 'DELETE': + { + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:dialog.title.removeChat'), + html: this.i18nService.t('chat:dialog.confirmRemoveChat') + } + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.store.dispatch( + ChattingActions.del({ + roomId: this.currentRoomInfo.roomId, + eventSeq: params.message.seq + }) + ); + } + }); + } + break; + } + } + + onMassTranslationDetail(params: { + message: Info; + contentsType: string; + }) { + const req = { + userSeq: String(this.user.info.seq), + token: this.loginRes.tokenString, + deviceType: this.loginSession.deviceType, + eventTransSeq: params.message.sentMessageJson.translationSeq.toString() + } as TransMassTalkDownloadRequest; + this.appChatService.massTranslationMessageDetail( + req, + params.message, + params.contentsType, + this.roomId + ); + } + + onFileViewer(selectFileInfo: SelectFileInfo) { + const data: FileViewerDialogData = { + fileInfos: this.currentFileInfoList, + selectFileInfo, + downloadUrl: this.versionInfo2Res.downloadUrl, + deviceType: this.loginSession.deviceType, + token: this.loginRes.tokenString, + userSeq: String(this.user.info.seq) + }; + this.appChatService.openFileviwer(data); + } + + private _standByRoomSetting(result: SettingDialogResult) { + if (result.timerInterval > 0 && !!result.roomInfo.isTimeRoom) { + this.store.dispatch( + RoomActions.updateTimeRoomInterval({ + req: { + roomId: result.roomInfo.roomId, + timerInterval: result.timerInterval + } as UpdateTimerSetRequest + }) + ); + } else { + this.store.dispatch( + RoomActions.update({ + req: { + roomId: result.roomInfo.roomId, + roomName: result.roomName, + receiveAlarm: result.roomInfo.receiveAlarm, + syncAll: result.syncAll + } as UpdateRequest + }) + ); + } + } + + onOpenProfile(userSeq: string): void { + const result = this.dialog.open< + ProfileDialogComponent, + ProfileDialogData, + ProfileDialogResult + >(ProfileDialogComponent, { + panelClass: 'mid-create-dialog', + data: { + userSeq + } + }); + } } diff --git a/src/app/sections/chat/components/search.section.component.html b/src/app/sections/chat/components/search.section.component.html index b25f174..292fe4d 100644 --- a/src/app/sections/chat/components/search.section.component.html +++ b/src/app/sections/chat/components/search.section.component.html @@ -1,14 +1,16 @@
    - +
    diff --git a/src/app/sections/chat/components/search.section.component.scss b/src/app/sections/chat/components/search.section.component.scss index e69de29..863ac06 100644 --- a/src/app/sections/chat/components/search.section.component.scss +++ b/src/app/sections/chat/components/search.section.component.scss @@ -0,0 +1,33 @@ +@import '~@ucap/lg-scss/mixins'; + +.search-container { + padding: 0 16px 10px; + background-color: $white; + .searchbox { + display: flex; + flex-flow: row nowrap; + width: 100%; + border: 1px solid $lipstick; + background-color: $white; + .search-in-box { + flex-grow: 1; + @include ucapMatFormField( + 0, + 0, + auto, + auto, + auto, + 38px, + 38px + ); //$border: 1px solid #cccccc, $border-radius: 0, $width: 100%, $max-width, $min-width, $height, $line-height, $background-color: white + padding-left: 10px; + .btn-close { + margin-top: 2px; + color: #fd78a1 !important; + } + } + .btn-ico-search { + @include ucapMatButton(38px, 38px, 0, 20px); + } + } +} diff --git a/src/app/sections/chat/components/search.section.component.ts b/src/app/sections/chat/components/search.section.component.ts index 4651d79..6ae71b5 100644 --- a/src/app/sections/chat/components/search.section.component.ts +++ b/src/app/sections/chat/components/search.section.component.ts @@ -1,3 +1,6 @@ +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil, debounceTime } from 'rxjs/operators'; + import { Component, OnInit, @@ -12,15 +15,14 @@ import { FormGroup, FormBuilder } from '@angular/forms'; import { Store, select } from '@ngrx/store'; +import { MatAutocompleteTrigger } from '@angular/material/autocomplete'; + +import { User } from '@ucap/protocol-info'; + import { LogService } from '@ucap/ng-logger'; -import { takeUntil, debounceTime } from 'rxjs/operators'; -import { Subject, combineLatest } from 'rxjs'; import { RoomSelector } from '@ucap/ng-store-chat'; -import { LoginSelector } from '@ucap/ng-store-authentication'; - -import { LoginResponse } from '@ucap/protocol-authentication'; -import { MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { UserSelector } from '@ucap/ng-store-organization'; @Component({ selector: 'app-sections-chat-search', @@ -37,7 +39,7 @@ export class SearchSectionComponent implements OnInit, OnDestroy { @Output() searchCancel = new EventEmitter(); - loginRes: LoginResponse; + user: User; fgSearch: FormGroup; recommendedWordList: string[]; @@ -45,7 +47,7 @@ export class SearchSectionComponent implements OnInit, OnDestroy { @ViewChild(MatAutocompleteTrigger) autocomplete: MatAutocompleteTrigger; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private store: Store, @@ -55,8 +57,6 @@ export class SearchSectionComponent implements OnInit, OnDestroy { ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.fgSearch = this.formBuilder.group({ searchInput: null }); @@ -75,25 +75,39 @@ export class SearchSectionComponent implements OnInit, OnDestroy { this.filteredRecommendedWordList = []; } - this.changeDetectorRef.detectChanges(); + this.changeDetectorRef.markForCheck(); }); this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; }); combineLatest([ this.store.pipe(select(RoomSelector.rooms)), this.store.pipe(select(RoomSelector.roomUsers)), - this.store.pipe(select(RoomSelector.roomUsersShort)) + this.store.pipe(select(RoomSelector.roomUsersShort)), + this.store.pipe(select(RoomSelector.standbyRooms)) ]) .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe(([rooms, roomUsers, roomUsersShort]) => { - rooms = rooms || []; - roomUsers = roomUsers || []; - roomUsersShort = roomUsersShort || []; + .subscribe(([rooms, roomUsers, roomUsersShort, standbyRooms]) => { + rooms = (rooms || []).filter((info) => { + return ( + info.isJoinRoom && + !standbyRooms.find((standbyRoom) => standbyRoom === info.roomId) + ); + }); + roomUsers = (roomUsers || []).filter( + (userMap) => + rooms.findIndex((roomInfo) => roomInfo.roomId === userMap.roomId) > + -1 + ); + roomUsersShort = (roomUsersShort || []).filter( + (userMap) => + rooms.findIndex((roomInfo) => roomInfo.roomId === userMap.roomId) > + -1 + ); const recommendedWordList = []; for (const r of rooms) { @@ -103,7 +117,7 @@ export class SearchSectionComponent implements OnInit, OnDestroy { } for (const ru of roomUsers) { for (const u of ru.userInfos) { - if (!!this.loginRes && u.seq !== Number(this.loginRes.userSeq)) { + if (!!this.user && String(u.seq) !== String(this.user.info.seq)) { if (!!u.name && '' !== u.name.trim() && u.isJoinRoom) { recommendedWordList.push(u.name); } @@ -112,7 +126,7 @@ export class SearchSectionComponent implements OnInit, OnDestroy { } for (const ru of roomUsersShort) { for (const u of ru.userInfos) { - if (!!this.loginRes && u.seq !== Number(this.loginRes.userSeq)) { + if (!!this.user && String(u.seq) !== String(this.user.info.seq)) { if (!!u.name && '' !== u.name.trim() && u.isJoinRoom) { recommendedWordList.push(u.name); } @@ -129,6 +143,7 @@ export class SearchSectionComponent implements OnInit, OnDestroy { ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } diff --git a/src/app/sections/chat/dialogs/clipboard.dialog.component.html b/src/app/sections/chat/dialogs/clipboard.dialog.component.html new file mode 100644 index 0000000..3edaaeb --- /dev/null +++ b/src/app/sections/chat/dialogs/clipboard.dialog.component.html @@ -0,0 +1,26 @@ +
    + +
    +
    클립보드
    +
    {{ data.content.imageDataUrl }}
    +
    +
    + +
    + +
    +
    +
    +
    + + +
    +
    +
    diff --git a/src/app/sections/chat/dialogs/clipboard.dialog.component.scss b/src/app/sections/chat/dialogs/clipboard.dialog.component.scss new file mode 100644 index 0000000..c274a9d --- /dev/null +++ b/src/app/sections/chat/dialogs/clipboard.dialog.component.scss @@ -0,0 +1,59 @@ +.forwrad-dialog-container { + width: 100%; + height: 100%; + + overflow: hidden; + .select-user-section-search { + padding: 0 0 10px; + } + + .forwrad-dialog-content { + height: calc(100% - 50px); + .tap-container { + height: 100%; + } + } + .organization-tree-simple { + height: 50px; + display: flex; + flex-direction: row; + align-items: center; + background-color: #f1f2f6; + padding: 0 16px; + overflow: hidden; + .organization-dept { + display: flex; + align-content: center; + &:first-child { + .btn-navigate-next { + display: none; + } + } + &:last-child { + .dept-name { + background-color: #fd578a; + color: #ffffff; + border: none; + } + } + .dept-name { + border-radius: 100px; + height: 30px; + box-shadow: none; + border: 1px solid #999999; + color: #666666; + } + .btn-navigate-next { + width: 30px; + height: 30px; + color: #cccccc; + } + } + } + .organization-tree { + width: 100%; + height: calc(100% - 30px); + padding-bottom: 10px; + display: none; + } +} diff --git a/src/app/sections/chat/components/component-ui/expansion.component.spec.ts b/src/app/sections/chat/dialogs/clipboard.dialog.component.spec.ts similarity index 57% rename from src/app/sections/chat/components/component-ui/expansion.component.spec.ts rename to src/app/sections/chat/dialogs/clipboard.dialog.component.spec.ts index 31dc1f4..831cf64 100644 --- a/src/app/sections/chat/components/component-ui/expansion.component.spec.ts +++ b/src/app/sections/chat/dialogs/clipboard.dialog.component.spec.ts @@ -2,20 +2,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { DebugElement } from '@angular/core'; -import { ExpansionComponent } from './expansion.component'; +import { ForwardDialogComponent } from './forward.dialog.component'; -describe('ucap::ui-group::ExpansionComponent', () => { - let component: ExpansionComponent; - let fixture: ComponentFixture; +describe('app::ui-chat::ForwardDialogComponent', () => { + let component: ForwardDialogComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ExpansionComponent] + declarations: [ForwardDialogComponent] }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(ExpansionComponent); + fixture = TestBed.createComponent(ForwardDialogComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/sections/chat/dialogs/clipboard.dialog.component.ts b/src/app/sections/chat/dialogs/clipboard.dialog.component.ts new file mode 100644 index 0000000..c2fdf30 --- /dev/null +++ b/src/app/sections/chat/dialogs/clipboard.dialog.component.ts @@ -0,0 +1,80 @@ +import { Subject, combineLatest } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject +} from '@angular/core'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog +} from '@angular/material/dialog'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { Store, select } from '@ngrx/store'; +import { takeUntil } from 'rxjs/operators'; +import { AppChatService } from '@app/services/app-chat.service'; +import { + TranslatePipe as OrganizationTranslate, + TranslateService +} from '@ucap/ng-ui-organization'; + +export interface ClipboardDialogData { + content: { + text?: string; + rtf?: string; + html?: string; + image?: Buffer; + imageDataUrl?: string; + }; +} +export interface ClipboardDialogResult {} + +@Component({ + selector: 'app-dialog-chat-clipboard', + templateUrl: './clipboard.dialog.component.html', + styleUrls: ['./clipboard.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ClipboardDialogComponent implements OnInit, OnDestroy { + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: ClipboardDialogData, + private store: Store, + private i18nService: I18nService, + public dialog: MatDialog, + private changeDetectorRef: ChangeDetectorRef, + private appChatService: AppChatService, + private translateService: TranslateService + ) { + // language setting + this.translateService.setDefaultLang(this.i18nService.currentLng); + this.translateService.use(this.i18nService.currentLng); + } + + private ngOnDestroySubject: Subject = new Subject(); + + ngOnInit(): void {} + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onClosed(event: MouseEvent): void { + this.dialogRef.close({ choice: false }); + } + + onCancel() { + this.dialogRef.close({ choice: false }); + } + onConfirm() {} +} diff --git a/src/app/sections/chat/dialogs/create.dialog.component.html b/src/app/sections/chat/dialogs/create.dialog.component.html index 433b7a2..d8dd678 100644 --- a/src/app/sections/chat/dialogs/create.dialog.component.html +++ b/src/app/sections/chat/dialogs/create.dialog.component.html @@ -2,81 +2,164 @@
    - {{ 'dialog.title.newChatRoom' | ucapI18n }} + + {{ 'dialog.title.newChatRoom' | ucapI18n }} + + + {{ (!!isTimer ? 'dialog.timerRoom' : 'dialog.normalRoom') | ucapI18n }} + +
    + + {{ 'dialog.title.subSelectRoomType' | ucapI18n }} + + + {{ 'dialog.title.subSelectUser' | ucapI18n }} + +
    +
    - -
    - {{ 'dialog.normalRoom' | ucapI18n }} - -
    -
    + +
    +
    + {{ 'dialog.normalRoom' | ucapI18n }} +
    +
    +
    + + + +
    +
    -
    - {{ 'dialog.timerRoom' | ucapI18n }} - -
    +
    + {{ 'dialog.timerRoom' | ucapI18n }} +
    +
    +
    + + + +
    +
    - +
    + +
    +
    + + +

    + {{ 'dialog.selectedUserList' | ucapI18n }} +

    + ({{ selectedUserList?.length }}/{{ maxChatRoomUser - 1 }}) +
    +
    +
    -
    - + +
    + +
    diff --git a/src/app/sections/chat/dialogs/forward.dialog.component.scss b/src/app/sections/chat/dialogs/forward.dialog.component.scss new file mode 100644 index 0000000..0d19337 --- /dev/null +++ b/src/app/sections/chat/dialogs/forward.dialog.component.scss @@ -0,0 +1,74 @@ +@import '~@ucap/lg-scss/mixins'; +.forwrad-dialog-container { + width: 100%; + height: 100%; + + .dialog-body { + width: 100%; + height: 100%; + display: flex; + flex-direction: row; + @include screen(custom, max, 768) { + flex-direction: column; + } + } + overflow: hidden; + .select-user-section-search { + padding: 0 0 10px; + } + + .forwrad-dialog-content { + height: calc(100% - 50px); + .tap-container { + height: 100%; + } + } + + .ucap-dialog-app-group-select-user { + flex: 1 0 auto; + //width: 60%; + height: 100%; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(custom, max, 768) { + width: 100%; + height: 78%; + margin-bottom: 2%; + } + } + .ucap-dialog-organization-profile-selection { + position: relative; + //width: 40%; + flex: 0 1 40%; + padding-left: $default-space; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(custom, max, 768) { + width: 100%; + height: 20%; + padding: 0; + flex: 0 1 auto; + } + .ucap-organization-selected-list { + width: 100%; + height: 100%; + display: flex; + border: 1px solid #cccccc; + border-bottom: none; + overflow: auto; + background-color: #ffffff; + .ucap-organization-selected-header { + display: flex; + align-items: center; + padding: 0 10px; + height: 40px; + //background-color: #eeeeee; + .description { + strong { + color: #e42f66; + } + } + } + } + } +} diff --git a/src/app/sections/chat/dialogs/forward.dialog.component.spec.ts b/src/app/sections/chat/dialogs/forward.dialog.component.spec.ts new file mode 100644 index 0000000..831cf64 --- /dev/null +++ b/src/app/sections/chat/dialogs/forward.dialog.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { ForwardDialogComponent } from './forward.dialog.component'; + +describe('app::ui-chat::ForwardDialogComponent', () => { + let component: ForwardDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ForwardDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ForwardDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/chat/dialogs/forward.dialog.component.ts b/src/app/sections/chat/dialogs/forward.dialog.component.ts new file mode 100644 index 0000000..cb12cfb --- /dev/null +++ b/src/app/sections/chat/dialogs/forward.dialog.component.ts @@ -0,0 +1,356 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject, + ViewChild +} from '@angular/core'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog +} from '@angular/material/dialog'; + +import { Store, select } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; +import { UserInfo as RoomUserInfo, RoomInfo } from '@ucap/protocol-room'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { GroupSelector } from '@ucap/ng-store-group'; + +import { + AlertDialogComponent, + AlertDialogData, + AlertDialogResult +} from '@ucap/ng-ui'; + +import { SearchData } from '@app/ucap/organization/models/search-data'; +import { Expansion02Component as AppExpansion02Component } from '@app/ucap/group/components/expansion-02.component'; +import { environment } from '@environments'; + +export type UserInfoTypes = + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN + | RoomUserInfo; + +export interface ForwardDialogData {} +export interface ForwardDialogResult { + choice: boolean; + selelctUserList?: UserInfoTypes[]; + selectRoom?: RoomInfo; +} + +@Component({ + selector: 'app-dialog-chat-forward', + templateUrl: './forward.dialog.component.html', + styleUrls: ['./forward.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ForwardDialogComponent implements OnInit, OnDestroy { + @ViewChild('appGroupExpansion', { static: false }) + appGroupExpansion: AppExpansion02Component; + + set companySearchData(searchData: SearchData) { + if (!!searchData && searchData.searchWord !== '') { + this._companySearchData = { ...searchData, bySearch: true }; + } else { + this._companySearchData = { ...searchData, bySearch: false }; + } + + this.onChangedCompanySearch(); + } + get companySearchData() { + return this._companySearchData; + } + // tslint:disable-next-line: variable-name + _companySearchData: SearchData; + + private ngOnDestroySubject: Subject = new Subject(); + + maxChatRoomUser: number; + + selectedRoom: RoomInfo; + selectedUserList: UserInfoTypes[] = []; + + versionInfo2Res: VersionInfo2Response; + + groupList: GroupDetailData[]; + + isSearch = false; + searchedList: UserInfoSS[] = []; + currentTabIndex: number; + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: ForwardDialogData, + private store: Store, + private i18nService: I18nService, + public dialog: MatDialog, + private changeDetectorRef: ChangeDetectorRef + ) { + this.maxChatRoomUser = environment.productConfig.chat.maxChatRoomUser; + } + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(GroupSelector.groups)) + .subscribe((groups) => { + this.groupList = groups; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + psUpdate() { + this.appGroupExpansion.psUpdate(); + } + onClosed(event: MouseEvent): void { + this.dialogRef.close({ choice: false }); + } + + onSelectedIndexChange(value: number): void { + this.currentTabIndex = value; + this._resetSelectedObject(); + } + + private _resetSelectedObject(): void { + this.selectedRoom = undefined; + this.selectedUserList = []; + } + + onSearched(searchedUserInfos: UserInfoSS[]): void { + this.searchedList = searchedUserInfos; + } + + onToggleCheckUser(datas: { checked: boolean; userInfo: UserInfoSS }[]) { + if (!datas || 0 === datas.length) { + return; + } + + const pushs: UserInfoSS[] = []; + const pops: UserInfoSS[] = []; + + datas.forEach((d) => { + const i = this.selectedUserList.findIndex( + (u) => u.seq === d.userInfo.seq + ); + if (d.checked) { + if (-1 === i) { + pushs.push(d.userInfo); + } + } else { + if (-1 < i) { + pops.push(d.userInfo); + } + } + }); + + if (0 < pushs.length) { + this.selectedUserList = [...this.selectedUserList, ...pushs]; + } + + if (0 < pops.length) { + this.selectedUserList = this.selectedUserList.filter( + (u) => -1 === pops.findIndex((p) => p.seq === u.seq) + ); + } + } + + onToggleCheckGroup(params: { + isChecked: boolean; + groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; + }) { + if (params.isChecked) { + params.groupBuddyList.buddyList.forEach((item) => { + if ( + this.selectedUserList.filter((user) => user.seq === item.seq) + .length === 0 + ) { + this.selectedUserList = [...this.selectedUserList, item]; + } + }); + } else { + this.selectedUserList = this.selectedUserList.filter( + (item) => + params.groupBuddyList.buddyList.filter((del) => del.seq === item.seq) + .length === 0 + ); + } + } + + onCancel() { + this.dialogRef.close({ choice: false }); + } + onConfirm() { + if ( + !this.selectedRoom && + !!this.selectedUserList && + this.selectedUserList.length === 0 + ) { + const result = this.dialog.open< + AlertDialogComponent, + AlertDialogData, + AlertDialogResult + >(AlertDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:errors.label'), + message: this.i18nService.t('chat:errors.inputChatMessage') + } + }); + return; + } + + this.dialogRef.close({ + choice: true, + selectRoom: this.selectedRoom, + selelctUserList: this.selectedUserList + }); + } + + onToggleRoom(roomInfo: RoomInfo): void { + if (!!roomInfo) { + this.selectedRoom = roomInfo; + } + } + + getCheckedByRoomInfo(roomInfo: RoomInfo): boolean { + if ( + !!this.selectedRoom && + this.selectedRoom.roomId.localeCompare(roomInfo.roomId) === 0 + ) { + return true; + } + + return false; + } + onChangeUserList(data: { checked: boolean; userInfo: UserInfoSS }) { + const i = this.selectedUserList.findIndex( + (u) => String(u.seq) === String(data.userInfo.seq) + ); + + if (data.checked) { + if (-1 === i) { + this.selectedUserList = [...this.selectedUserList, data.userInfo]; + } + } else { + if (-1 < i) { + this.selectedUserList = this.selectedUserList.filter( + (u) => String(u.seq) !== String(data.userInfo.seq) + ); + } + } + } + + onChangeGroupList(params: { + isChecked: boolean; + groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; + }) { + if (params.isChecked) { + params.groupBuddyList.buddyList.forEach((item) => { + if ( + this.selectedUserList.filter( + (user) => String(user.seq) === String(item.seq) + ).length === 0 + ) { + this.selectedUserList = [...this.selectedUserList, item]; + } + }); + } else { + this.selectedUserList = this.selectedUserList.filter( + (item) => + params.groupBuddyList.buddyList.filter( + (del) => String(del.seq) === String(item.seq) + ).length === 0 + ); + } + } + + onChangedCompanySearch() { + if (!!this.companySearchData && this.companySearchData.bySearch) { + this.isSearch = true; + } + } + + getCheckedSearchAllItem(): boolean { + const targetRoomList = this.searchedList; + + if ( + !targetRoomList || + targetRoomList.length === 0 || + targetRoomList.filter( + (item) => + !( + this.selectedUserList.filter( + (info) => String(info.seq) === String(item.seq) + ).length > 0 + ) + ).length > 0 + ) { + return false; + } else { + return true; + } + } + + onToggleSearchAllItem(value: boolean): void { + if (!!value) { + const targetRoomList = this.searchedList; + this.selectedUserList = targetRoomList.slice(); + } else { + this.selectedUserList = []; + } + this.changeDetectorRef.markForCheck(); + } + + onCanceled() { + this.isSearch = false; + this.searchedList = []; + this.companySearchData = { ...this.companySearchData, searchWord: '' }; + } + + onRemovedProfileSelection(userInfo: UserInfo) { + const i = this.selectedUserList.findIndex( + (u) => String(u.seq) === String(userInfo.seq) + ); + + if (-1 < i) { + this.selectedUserList = this.selectedUserList.filter( + (u) => String(u.seq) !== String(userInfo.seq) + ); + } + } + removableForSelection = (userInfo: UserInfo) => { + return true; + }; + colorForSelection = (userInfo: UserInfo) => { + return 'accent'; + }; +} diff --git a/src/app/sections/chat/dialogs/index.ts b/src/app/sections/chat/dialogs/index.ts index 5a5d084..c7cf92f 100644 --- a/src/app/sections/chat/dialogs/index.ts +++ b/src/app/sections/chat/dialogs/index.ts @@ -1,3 +1,15 @@ import { CreateDialogComponent } from './create.dialog.component'; +import { ForwardDialogComponent } from './forward.dialog.component'; +import { TextDetailDialogComponent } from './text-detail.dialog.component'; +import { FileViewerDialogComponent } from './file-viewer.dialog.component'; +import { TransDetailDialogComponent } from './trans-detail.dialog.component'; +import { SettingDialogComponent } from './setting.dialog.component'; -export const DIALOGS = [CreateDialogComponent]; +export const DIALOGS = [ + CreateDialogComponent, + ForwardDialogComponent, + TextDetailDialogComponent, + FileViewerDialogComponent, + TransDetailDialogComponent, + SettingDialogComponent +]; diff --git a/src/app/sections/chat/dialogs/setting.dialog.component.html b/src/app/sections/chat/dialogs/setting.dialog.component.html new file mode 100644 index 0000000..92f55be --- /dev/null +++ b/src/app/sections/chat/dialogs/setting.dialog.component.html @@ -0,0 +1,51 @@ +
    + +
    +
    + {{ 'chat:dialog.title.roomNameGuide' | ucapI18n }} +
    +
    + {{ 'chat:dialog.title.roomTimerGuide' | ucapI18n }} +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + timer +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    diff --git a/src/app/sections/chat/dialogs/setting.dialog.component.scss b/src/app/sections/chat/dialogs/setting.dialog.component.scss new file mode 100644 index 0000000..7f7c53d --- /dev/null +++ b/src/app/sections/chat/dialogs/setting.dialog.component.scss @@ -0,0 +1,42 @@ +.room-setting-dialog-container { + width: 100%; + height: 100%; + .dialog-body { + flex-direction: column; + .guide-info { + display: flex; + flex-direction: row; + padding: 10px; + &-img { + justify-content: center; + align-items: center; + display: flex; + flex: 0 0 60px; + width: 60px; + height: 60px; + border-radius: 50%; + overflow: hidden; + margin-right: 24px; + background-color: #f1f2f6; + img { + width: 60px; + height: 60px; + } + .mat-icon { + height: 40px; + width: 40px; + font-size: 40px; + color: #999999; + } + } + &-text { + flex: 1 1 auto; + font-size: 0.94em; + } + } + .setting-info { + padding: 10px; + margin-top: 10px; + } + } +} diff --git a/src/app/sections/chat/dialogs/setting.dialog.component.spec.ts b/src/app/sections/chat/dialogs/setting.dialog.component.spec.ts new file mode 100644 index 0000000..831cf64 --- /dev/null +++ b/src/app/sections/chat/dialogs/setting.dialog.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { ForwardDialogComponent } from './forward.dialog.component'; + +describe('app::ui-chat::ForwardDialogComponent', () => { + let component: ForwardDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ForwardDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ForwardDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/chat/dialogs/setting.dialog.component.ts b/src/app/sections/chat/dialogs/setting.dialog.component.ts new file mode 100644 index 0000000..b89e969 --- /dev/null +++ b/src/app/sections/chat/dialogs/setting.dialog.component.ts @@ -0,0 +1,140 @@ +import { Subject } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject +} from '@angular/core'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog, + MatDialogConfig +} from '@angular/material/dialog'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { Store, select } from '@ngrx/store'; +import { takeUntil } from 'rxjs/operators'; +import { RoomInfo } from '@ucap/protocol-room'; +import { RoomSelector } from '@ucap/ng-store-chat'; + +export interface SettingDialogData { + roomId: string; + rect?: any; +} +export interface SettingDialogResult { + choice: boolean; + roomInfo?: RoomInfo; + roomName?: string; + syncAll?: boolean; + timerInterval?: number; +} + +@Component({ + selector: 'app-dialog-chat-setting', + templateUrl: './setting.dialog.component.html', + styleUrls: ['./setting.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SettingDialogComponent implements OnInit, OnDestroy { + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: SettingDialogData, + private store: Store, + private i18nService: I18nService, + private dialog: MatDialog, + private changeDetectorRef: ChangeDetectorRef + ) {} + + currentRoomInfo: RoomInfo; + currentParams: { + invalid: boolean; + roomName: string; + checkedMe: string; + timerInterval: number; + }; + + ngOnInit(): void { + if (!!this.data.rect) { + const matDialogConfig: MatDialogConfig = new MatDialogConfig(); + matDialogConfig.position = { + left: `${this.data.rect.left}px`, + top: '90px' + }; + + this.dialogRef.updatePosition(matDialogConfig.position); + } + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(RoomSelector.room, this.data.roomId) + ) + .subscribe((room) => { + if (!!room) { + this.currentRoomInfo = room; + this.changeDetectorRef.markForCheck(); + } + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onClosed(event: MouseEvent): void { + this.dialogRef.close({ choice: false }); + } + + onChangedRoomSetting(param: { + invalid: boolean; + roomName: string; + checkedMe: string; + timerInterval: number; + }) { + this.currentParams = param; + } + + onCancel() { + this.dialogRef.close({ choice: false }); + } + onConfirm() { + if ( + !!this.currentRoomInfo && + !!this.currentRoomInfo.isTimeRoom && + this.currentParams.timerInterval > 0 + ) { + this.dialogRef.close({ + choice: true, + roomInfo: this.currentRoomInfo, + timerInterval: this.currentParams.timerInterval + }); + } else if (this.currentParams.invalid) { + console.debug( + '유효하지 않은 이름: ', + this.currentParams.invalid, + this.currentParams.roomName + ); + } else { + this.dialogRef.close({ + choice: true, + roomInfo: this.currentRoomInfo, + roomName: this.currentParams.roomName, + syncAll: + !!this.currentParams && this.currentParams.checkedMe === 'all' + ? true + : false + }); + } + } +} diff --git a/src/app/sections/chat/dialogs/text-detail.dialog.component.html b/src/app/sections/chat/dialogs/text-detail.dialog.component.html new file mode 100644 index 0000000..8789f53 --- /dev/null +++ b/src/app/sections/chat/dialogs/text-detail.dialog.component.html @@ -0,0 +1,45 @@ +
    + +
    + {{ 'dialog.title.detail' | ucapI18n }} +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    diff --git a/src/app/sections/chat/dialogs/text-detail.dialog.component.scss b/src/app/sections/chat/dialogs/text-detail.dialog.component.scss new file mode 100644 index 0000000..c9e145d --- /dev/null +++ b/src/app/sections/chat/dialogs/text-detail.dialog.component.scss @@ -0,0 +1,75 @@ +@import '~@ucap/lg-scss/mixins'; +.dialog-container { + width: 100%; + height: 100%; + + .dialog-body { + width: 100%; + height: 100%; + .profile { + display: flex; + flex-direction: row; + padding-bottom: 10px; + margin-bottom: 10px; + border-bottom: 1px solid #ccc; + .profile-image { + border-radius: 50%; + overflow: hidden; + width: 36px; + height: 36px; + margin-left: 0; + background-color: #ffe8cb; + img { + max-width: 100%; + height: auto; + vertical-align: top; + border: none; + } + } + .user-info { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + padding-left: 16px; + .user-n-g { + display: flex; + flex-flow: row-reverse nowrap; + align-items: flex-end; + height: 22px; + .user-name { + @include ellipsis-column(1); + height: 22px; + font-size: 14px; + font-weight: 600; + order: 1; + -ms-flex-order: 1; + } + .user-grade { + @include ellipsis(1); + align-self: stretch; + font: { + size: 13px; + } + margin-left: 4px; + order: 0; + -ms-flex-order: 0; + } + .write-date { + font-size: 12px; + } + } + } + } + .contents { + width: 100%; + height: calc(100% - 60px); + overflow: hidden; + perfect-scrollbar { + width: 100%; + height: 100%; + padding-right: 10px; + } + } + } +} diff --git a/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.spec.ts b/src/app/sections/chat/dialogs/text-detail.dialog.component.spec.ts similarity index 65% rename from src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.spec.ts rename to src/app/sections/chat/dialogs/text-detail.dialog.component.spec.ts index 46e44a0..550915f 100644 --- a/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.spec.ts +++ b/src/app/sections/chat/dialogs/text-detail.dialog.component.spec.ts @@ -2,20 +2,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { DebugElement } from '@angular/core'; -import { CreateChatDialogComponent } from './create-chat.dialog.component'; +import { TextDetailDialogComponent } from './text-detail.dialog.component'; describe('ucap::ui-organization::CreateChatDialogComponent', () => { - let component: CreateChatDialogComponent; - let fixture: ComponentFixture; + let component: TextDetailDialogComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [CreateChatDialogComponent] + declarations: [TextDetailDialogComponent] }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(CreateChatDialogComponent); + fixture = TestBed.createComponent(TextDetailDialogComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/sections/chat/dialogs/text-detail.dialog.component.ts b/src/app/sections/chat/dialogs/text-detail.dialog.component.ts new file mode 100644 index 0000000..c62546f --- /dev/null +++ b/src/app/sections/chat/dialogs/text-detail.dialog.component.ts @@ -0,0 +1,166 @@ +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject, + ElementRef +} from '@angular/core'; + +import { Subject, of, combineLatest } from 'rxjs'; +import { take, map, catchError, takeUntil } from 'rxjs/operators'; +import { select, Store } from '@ngrx/store'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog +} from '@angular/material/dialog'; + +import { DeviceType } from '@ucap/core'; +import { StatusCode } from '@ucap/api'; +import { NativeService } from '@ucap/native'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { MassTalkDownloadRequest } from '@ucap/api-common'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; +import { Info, EventJson } from '@ucap/protocol-event'; + +import { CommonApiService } from '@ucap/ng-api-common'; +import { LogService } from '@ucap/ng-logger'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; +import { RoomSelector } from '@ucap/ng-store-chat'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; + +import { AppChatService } from '@app/services/app-chat.service'; + +export type UserInfoTypes = RoomUserInfo | RoomUserInfoShort; + +export interface TextDetailDialogData { + message: Info; + roomId: string; + userSeq: string; + deviceType: DeviceType; + token: string; + eventMassSeq?: number; +} +export interface TextDetailDialogResult {} + +@Component({ + selector: 'app-dialog-chat-text-detail', + templateUrl: './text-detail.dialog.component.html', + styleUrls: ['./text-detail.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TextDetailDialogComponent implements OnInit, OnDestroy { + userInfo: UserInfoTypes; + contents: string; + + defaultProfileImage: string; + versionInfo2Res: VersionInfo2Response; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + public dialogRef: MatDialogRef< + TextDetailDialogData, + TextDetailDialogResult + >, + @Inject(MAT_DIALOG_DATA) public data: TextDetailDialogData, + public dialog: MatDialog, + private store: Store, + private elementRef: ElementRef, + private commonApiService: CommonApiService, + private appChatService: AppChatService, + private logService: LogService, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + this.defaultProfileImage = this.appChatService.defaultProfileImage; + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this.commonApiService + .massTalkDownload({ + userSeq: this.data.userSeq, + deviceType: this.data.deviceType, + eventMassSeq: this.data.eventMassSeq, + token: this.data.token + } as MassTalkDownloadRequest) + .pipe( + take(1), + map((res) => { + if (res.statusCode === StatusCode.Success) { + this.contents = res.content; + + this.changeDetectorRef.markForCheck(); + + setTimeout(() => { + if ( + !!this.elementRef.nativeElement && + !!this.elementRef.nativeElement.querySelector('a') + ) { + const elements = this.elementRef.nativeElement.querySelectorAll( + 'a' + ); + elements.forEach((element) => { + element.addEventListener( + 'click', + this.onClickEvent.bind(this) + ); + }); + } + }, 500); + } else { + this.logService.error( + `commonApiService] massTalkDownload ${res?.errorMessage}` + ); + } + }), + catchError((error) => of({ error })) + ) + .subscribe(); + + combineLatest([ + this.store.pipe(select(RoomSelector.roomUser, this.data.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.data.roomId)) + ]) + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe(([roomUsers, roomUsersShort]) => { + const userList: UserInfoTypes[] = + roomUsers?.userInfos || roomUsersShort?.userInfos; + this.userInfo = userList.find( + (item) => item.seq + '' === this.data.message.senderSeq + '' + ); + this.changeDetectorRef.markForCheck(); + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onClickEvent(event: MouseEvent) { + this.nativeService.platform_openDefaultBrowser( + (event.target as HTMLAnchorElement).text + ); + } + + onClosed(event: MouseEvent): void { + this.dialogRef.close(); + } +} diff --git a/src/app/sections/chat/dialogs/trans-detail.dialog.component.html b/src/app/sections/chat/dialogs/trans-detail.dialog.component.html new file mode 100644 index 0000000..8dccc5a --- /dev/null +++ b/src/app/sections/chat/dialogs/trans-detail.dialog.component.html @@ -0,0 +1,45 @@ +
    + +
    + {{ 'dialog.title.detail' | ucapI18n }} +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    diff --git a/src/app/sections/chat/dialogs/trans-detail.dialog.component.scss b/src/app/sections/chat/dialogs/trans-detail.dialog.component.scss new file mode 100644 index 0000000..c9e145d --- /dev/null +++ b/src/app/sections/chat/dialogs/trans-detail.dialog.component.scss @@ -0,0 +1,75 @@ +@import '~@ucap/lg-scss/mixins'; +.dialog-container { + width: 100%; + height: 100%; + + .dialog-body { + width: 100%; + height: 100%; + .profile { + display: flex; + flex-direction: row; + padding-bottom: 10px; + margin-bottom: 10px; + border-bottom: 1px solid #ccc; + .profile-image { + border-radius: 50%; + overflow: hidden; + width: 36px; + height: 36px; + margin-left: 0; + background-color: #ffe8cb; + img { + max-width: 100%; + height: auto; + vertical-align: top; + border: none; + } + } + .user-info { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + padding-left: 16px; + .user-n-g { + display: flex; + flex-flow: row-reverse nowrap; + align-items: flex-end; + height: 22px; + .user-name { + @include ellipsis-column(1); + height: 22px; + font-size: 14px; + font-weight: 600; + order: 1; + -ms-flex-order: 1; + } + .user-grade { + @include ellipsis(1); + align-self: stretch; + font: { + size: 13px; + } + margin-left: 4px; + order: 0; + -ms-flex-order: 0; + } + .write-date { + font-size: 12px; + } + } + } + } + .contents { + width: 100%; + height: calc(100% - 60px); + overflow: hidden; + perfect-scrollbar { + width: 100%; + height: 100%; + padding-right: 10px; + } + } + } +} diff --git a/src/app/sections/chat/dialogs/trans-detail.dialog.component.spec.ts b/src/app/sections/chat/dialogs/trans-detail.dialog.component.spec.ts new file mode 100644 index 0000000..550915f --- /dev/null +++ b/src/app/sections/chat/dialogs/trans-detail.dialog.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { TextDetailDialogComponent } from './text-detail.dialog.component'; + +describe('ucap::ui-organization::CreateChatDialogComponent', () => { + let component: TextDetailDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TextDetailDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TextDetailDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/chat/dialogs/trans-detail.dialog.component.ts b/src/app/sections/chat/dialogs/trans-detail.dialog.component.ts new file mode 100644 index 0000000..a53cf82 --- /dev/null +++ b/src/app/sections/chat/dialogs/trans-detail.dialog.component.ts @@ -0,0 +1,129 @@ +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject, + ElementRef, + AfterViewInit +} from '@angular/core'; + +import { Subject, of, combineLatest } from 'rxjs'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog +} from '@angular/material/dialog'; + +import { NativeService } from '@ucap/native'; +import { VersionInfo2Response } from '@ucap/api-public'; + +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; + +import { LogService } from '@ucap/ng-logger'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; +import { Store, select } from '@ngrx/store'; +import { takeUntil } from 'rxjs/operators'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { RoomSelector } from '@ucap/ng-store-chat'; +import { Info, MassTranslationEventJson } from '@ucap/protocol-event'; + +export type UserInfoTypes = RoomUserInfo | RoomUserInfoShort; + +export interface TransDetailDialogData { + contents: string; + message: Info; + roomId: string; + defaultProfileImage: string; +} +export interface TransDetailDialogResult {} + +@Component({ + selector: 'app-dialog-chat-trans-detail', + templateUrl: './trans-detail.dialog.component.html', + styleUrls: ['./trans-detail.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TransDetailDialogComponent + implements OnInit, OnDestroy, AfterViewInit { + userInfo: UserInfoTypes; + contents: string; + + defaultProfileImage: string; + versionInfo2Res: VersionInfo2Response; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + public dialogRef: MatDialogRef< + TransDetailDialogData, + TransDetailDialogResult + >, + @Inject(MAT_DIALOG_DATA) public data: TransDetailDialogData, + public dialog: MatDialog, + private store: Store, + private elementRef: ElementRef, + private logService: LogService, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + this.defaultProfileImage = this.data.defaultProfileImage; + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + combineLatest([ + this.store.pipe(select(RoomSelector.roomUser, this.data.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.data.roomId)) + ]) + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe(([roomUsers, roomUsersShort]) => { + const userList: UserInfoTypes[] = + roomUsers?.userInfos || roomUsersShort?.userInfos; + this.userInfo = userList.find( + (item) => item.seq + '' === this.data.message.senderSeq + '' + ); + this.changeDetectorRef.markForCheck(); + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + ngAfterViewInit(): void { + if ( + !!this.elementRef.nativeElement && + !!this.elementRef.nativeElement.querySelector('a') + ) { + const elements = this.elementRef.nativeElement.querySelectorAll('a'); + elements.forEach((element) => { + element.addEventListener('click', this.onClickEvent.bind(this)); + }); + } + } + + onClickEvent(event: MouseEvent) { + this.nativeService.platform_openDefaultBrowser( + (event.target as HTMLAnchorElement).text + ); + } + + onClosed(event: MouseEvent): void { + this.dialogRef.close(); + } +} diff --git a/src/app/sections/chat/drawers/add-group.drawer.component.html b/src/app/sections/chat/drawers/add-group.drawer.component.html new file mode 100644 index 0000000..e8a9c92 --- /dev/null +++ b/src/app/sections/chat/drawers/add-group.drawer.component.html @@ -0,0 +1,45 @@ +
    + +
    + + {{ 'chat:label.addGroup' | ucapI18n }} +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    diff --git a/src/app/sections/chat/drawers/add-group.drawer.component.scss b/src/app/sections/chat/drawers/add-group.drawer.component.scss new file mode 100644 index 0000000..dd6c36f --- /dev/null +++ b/src/app/sections/chat/drawers/add-group.drawer.component.scss @@ -0,0 +1,31 @@ +@import '~@ucap/lg-scss/mixins'; + +.drawer-container { + width: 100%; + height: 100%; + .drawer-body { + height: 100%; + .ucap-chat-room-add-group-body { + padding: 0 16px; + min-width: 336px; + height: 100%; + @include screen(xs) { + min-width: 100%; + } + } + } +} +.ucap-virtual-scroll-viewport { + height: auto !important; +} +.btn-bottom-area { + display: flex; + flex-direction: row; + background-color: $white; + padding: 14px 16px 10px; + justify-content: flex-end; + width: 100%; + button { + @include ucap-button-flat-stroked(50%); + } +} diff --git a/src/app/sections/chat/drawers/add-group.drawer.component.spec.ts b/src/app/sections/chat/drawers/add-group.drawer.component.spec.ts new file mode 100644 index 0000000..1fa4f7f --- /dev/null +++ b/src/app/sections/chat/drawers/add-group.drawer.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { AddGroupDrawerComponent } from './add-group.drawer.component'; + +describe('ucap::ui-organization::CreateChatDialogComponent', () => { + let component: AddGroupDrawerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AddGroupDrawerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddGroupDrawerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/chat/drawers/add-group.drawer.component.ts b/src/app/sections/chat/drawers/add-group.drawer.component.ts new file mode 100644 index 0000000..fcd7d39 --- /dev/null +++ b/src/app/sections/chat/drawers/add-group.drawer.component.ts @@ -0,0 +1,268 @@ +import { Subject, combineLatest, merge } from 'rxjs'; +import { takeUntil, take } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + EventEmitter, + Output, + Input +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { MatDialog } from '@angular/material/dialog'; + +import { GroupDetailData } from '@ucap/protocol-sync'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; + +import { LogService } from '@ucap/ng-logger'; +import { I18nService } from '@ucap/ng-i18n'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { RoomSelector } from '@ucap/ng-store-chat'; + +import { + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult, + AlertDialogComponent, + AlertDialogData, + AlertDialogResult +} from '@ucap/ng-ui'; + +import { ChatDrawType } from '@app/pages/chat/types/chat-draw.type'; +import { DrawInfo } from '@app/pages/chat/models/draw-info'; +import { AppGroupService } from '@app/services/app-group.service'; + +export type UserInfoTypes = RoomUserInfo | RoomUserInfoShort; + +@Component({ + selector: 'app-drawer-chat-add-group', + templateUrl: './add-group.drawer.component.html', + styleUrls: ['./add-group.drawer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AddGroupDrawerComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject = new Subject(); + + @Input() + set roomId(value: string) { + this._roomId = value; + this.roomIdSubject.next(value); + this._initializeData(); + } + get roomId(): string { + return this._roomId; + } + // tslint:disable-next-line: variable-name + _roomId: string; + + @Input() + returnChatDrawerType?: ChatDrawType; + + @Output() + rightDrawerToggle = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + user: User; + roomUsers: RoomUserInfo[] = []; + roomUsersShort: RoomUserInfoShort[] = []; + isAddBtnInvalid = true; + + groupName = ''; + selectedGroupList: GroupDetailData[] = []; + + constructor( + private i18nService: I18nService, + public dialog: MatDialog, + private store: Store, + private logService: LogService, + private changeDetectorRef: ChangeDetectorRef, + private appGroupService: AppGroupService + ) {} + + ngOnInit(): void { + this._initializeData(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + } + + private _initializeData() { + combineLatest([ + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(RoomSelector.roomUser, this.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.roomId)) + ]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([user, roomUser, roomUserShort]) => { + this.user = user; + if ( + !!roomUser && + !!roomUser.userInfos && + roomUser.userInfos.length > 0 + ) { + this.roomUsers = roomUser.userInfos.filter( + (item) => + !!item.isJoinRoom && String(item.seq) !== String(user.info.seq) + ); + } + if ( + !!roomUserShort && + !!roomUserShort.userInfos && + roomUserShort.userInfos.length > 0 + ) { + this.roomUsersShort = roomUserShort.userInfos.filter( + (item) => + !!item.isJoinRoom && String(item.seq) !== String(user.info.seq) + ); + } + }); + } + + onChangeSelectedGroupList(data: { + checked: boolean; + group: GroupDetailData; + }) { + const i = this.selectedGroupList.findIndex((u) => u.seq === data.group.seq); + + if (data.checked) { + if (-1 === i) { + this.selectedGroupList = [...this.selectedGroupList, data.group]; + } + } else { + if (-1 < i) { + this.selectedGroupList = this.selectedGroupList.filter( + (u) => u.seq !== data.group.seq + ); + } + } + } + + onChangeGroupName(data: { invalid: boolean; groupName: string }) { + this.isAddBtnInvalid = data.invalid; + this.groupName = data.groupName; + } + + onClosed(event: MouseEvent): void { + this.closed.emit(); + } + + onClickCancel(): void { + if (!!this.returnChatDrawerType) { + this.rightDrawerToggle.emit({ + chatDrawType: this.returnChatDrawerType + }); + } else { + this.closed.emit(); + } + } + + onClickAddGroupMember(): void { + const targetUserInfos: UserInfoTypes[] = []; + + if (!!this.roomUsers && this.roomUsers.length > 0) { + this.roomUsers.map((item) => targetUserInfos.push(item)); + } else if (!!this.roomUsersShort && this.roomUsersShort.length > 0) { + this.roomUsersShort.map((item) => targetUserInfos.push(item)); + } else { + this.logService.error('chat', 'not exist selected users.'); + return; + } + + // validations + if ( + (!this.groupName && !this.selectedGroupList) || + (this.groupName.trim().length === 0 && + this.selectedGroupList.length === 0) + ) { + const result = this.dialog.open< + AlertDialogComponent, + AlertDialogData, + AlertDialogResult + >(AlertDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:label.addGroup'), + message: this.i18nService.t('chat:errors.addBuddyForGroup') + } + }); + return; + } + + // Do Action. + if (!!this.groupName && this.groupName.trim().length > 0) { + // create group and update room. + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:label.addGroup'), + html: this.i18nService.t('chat:dialog.confirmAddBuddyForNewGroup', { + targetGroups: this.groupName + }) + } + }); + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && result.choice) { + this.appGroupService.createGroup(this.groupName, targetUserInfos); + this.closed.emit(); + } + }); + } else if (!!this.selectedGroupList && this.selectedGroupList.length > 0) { + // existed group update room. + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:label.addGroup'), + html: this.i18nService.t('chat:dialog.confirmAddBuddyForGroup', { + targetGroups: this.selectedGroupList + .map((group) => group.name) + .join(',') + }) + } + }); + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && result.choice) { + this.selectedGroupList.forEach((group) => { + this.appGroupService.addMemberToGroup(group, targetUserInfos); + this.closed.emit(); + }); + } + }); + } + } +} diff --git a/src/app/sections/chat/drawers/add-users.drawer.component.html b/src/app/sections/chat/drawers/add-users.drawer.component.html new file mode 100644 index 0000000..411fb32 --- /dev/null +++ b/src/app/sections/chat/drawers/add-users.drawer.component.html @@ -0,0 +1,56 @@ +
    + +
    + + {{ 'chat:label.addRoomUsers' | ucapI18n }} +
    +
    +
    + + + +

    + {{ 'dialog.selectedUserList' | ucapI18n }} +

    + ({{ selectedUserList?.length }}/{{ maxChatRoomUser - 1 }}) +
    +
    +
    +
    +
    + + +
    +
    +
    diff --git a/src/app/sections/chat/drawers/add-users.drawer.component.scss b/src/app/sections/chat/drawers/add-users.drawer.component.scss new file mode 100644 index 0000000..5efc869 --- /dev/null +++ b/src/app/sections/chat/drawers/add-users.drawer.component.scss @@ -0,0 +1,24 @@ +@import '~@ucap/lg-scss/mixins'; + +.drawer-container { + width: 100%; + height: 100%; + overflow: hidden; + .drawer-body { + width: 100%; + height: 100%; + padding-top: 8px; + } + .btn-bottom-area { + display: flex; + flex-direction: row; + background-color: $white; + padding: 14px 16px 10px; + justify-content: flex-end; + border-top: 1px solid #d4d4d4; + width: 100%; + button { + @include ucap-button-flat-stroked(50%); + } + } +} diff --git a/src/app/sections/chat/drawers/add-users.drawer.component.spec.ts b/src/app/sections/chat/drawers/add-users.drawer.component.spec.ts new file mode 100644 index 0000000..5b1e780 --- /dev/null +++ b/src/app/sections/chat/drawers/add-users.drawer.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { AddUsersDrawerComponent } from './add-users.drawer.component'; + +describe('ucap::ui-organization::CreateChatDialogComponent', () => { + let component: AddUsersDrawerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AddUsersDrawerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddUsersDrawerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/chat/drawers/add-users.drawer.component.ts b/src/app/sections/chat/drawers/add-users.drawer.component.ts new file mode 100644 index 0000000..8b0e5f6 --- /dev/null +++ b/src/app/sections/chat/drawers/add-users.drawer.component.ts @@ -0,0 +1,312 @@ +import { Subject, combineLatest, merge } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + EventEmitter, + Output, + Input +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { MatDialog } from '@angular/material/dialog'; + +import { LocaleCode } from '@ucap/core'; +import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort, + RoomInfo, + RoomType, + InviteRequest +} from '@ucap/protocol-room'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { RoomSelector, RoomActions } from '@ucap/ng-store-chat'; + +import { + AlertDialogComponent, + AlertDialogData, + AlertDialogResult +} from '@ucap/ng-ui'; + +import { environment } from '@environments'; +import { AppChatService } from '@app/services/app-chat.service'; +import { ChatDrawType } from '@app/pages/chat/types/chat-draw.type'; +import { DrawInfo } from '@app/pages/chat/models/draw-info'; +import { User } from '@ucap/protocol-info'; + +export type UserInfoTypes = + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN + | RoomUserInfo + | RoomUserInfoShort; + +@Component({ + selector: 'app-drawer-chat-add-users', + templateUrl: './add-users.drawer.component.html', + styleUrls: ['./add-users.drawer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AddUsersDrawerComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject = new Subject(); + + @Input() + set roomId(value: string) { + this._roomId = value; + this.roomIdSubject.next(value); + this._initializeData(); + } + get roomId(): string { + return this._roomId; + } + // tslint:disable-next-line: variable-name + _roomId: string; + + @Input() + returnChatDrawerType?: ChatDrawType; + + @Output() + rightDrawerToggle = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + maxChatRoomUser: number; + + isTimer: boolean | undefined; + selectedUserList: UserInfoTypes[] = []; + + roomInfo: RoomInfo; + fixedUserList: (RoomUserInfo | RoomUserInfoShort)[] = []; + + user: User; + + constructor( + private i18nService: I18nService, + public dialog: MatDialog, + private store: Store, + private appChatService: AppChatService, + private changeDetectorRef: ChangeDetectorRef + ) { + this.maxChatRoomUser = environment.productConfig.chat.maxChatRoomUser; + } + + ngOnInit(): void { + this._initializeData(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + } + + private _initializeData() { + combineLatest([ + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(RoomSelector.room, this.roomId)), + this.store.pipe(select(RoomSelector.roomUser, this.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.roomId)) + ]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([user, roomInfo, roomUser, roomUserShort]) => { + this.user = user; + this.roomInfo = roomInfo; + + this.fixedUserList = roomUserShort?.userInfos || roomUser?.userInfos; + if (!!this.fixedUserList) { + this.fixedUserList = this.fixedUserList.filter( + (info) => + !!info.isJoinRoom && String(info.seq) !== String(user.info.seq) + ); + } + this.selectedUserList = this.fixedUserList.slice(); + + this.changeDetectorRef.markForCheck(); + }); + } + + onClosed(event: MouseEvent): void { + this.closed.emit(); + } + onClickCancel(): void { + if (!!this.returnChatDrawerType) { + this.rightDrawerToggle.emit({ + chatDrawType: this.returnChatDrawerType + }); + } else { + this.closed.emit(); + } + } + onConfirm() { + if (this.selectedUserList.length >= this.maxChatRoomUser) { + this.dialog.open< + AlertDialogComponent, + AlertDialogData, + AlertDialogResult + >(AlertDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:errors.label'), + html: this.i18nService.t('chat:errors.maxCountOfRoomMemberWith', { + maxCount: this.maxChatRoomUser + }) + } + }); + return; + } + + // No Change.. + if ( + !!this.selectedUserList && + this.selectedUserList.length > 0 && + this.fixedUserList + .map((user) => user.seq) + .sort() + .join('|') === + this.selectedUserList + .map((user) => user.seq) + .sort() + .join('|') + ) { + this.closed.emit(); + } + + // Invite or Open room. + let userSeqs = this.selectedUserList.map((userInfo) => userInfo.seq + ''); + + if (this.roomInfo.roomType === RoomType.Single) { + this.appChatService.newOpenRoom(userSeqs, false); + } else if (this.roomInfo.roomType === RoomType.Multi) { + // only target in invite users. + userSeqs = userSeqs.filter((seq) => { + return !this.fixedUserList.some((info) => info.seq + '' === seq + ''); + }); + + this.store.dispatch( + RoomActions.invite({ + req: { + roomId: this.roomId, + inviteUserSeqs: userSeqs + } as InviteRequest, + localeCode: LocaleCode.Korean + }) + ); + } + + this.closed.emit(); + } + + onChangeUserList(datas: { checked: boolean; userInfo: UserInfoSS }[]) { + if (!datas || 0 === datas.length) { + return; + } + + const pushs: UserInfoSS[] = []; + const pops: UserInfoSS[] = []; + + datas.forEach((d) => { + const i = this.selectedUserList.findIndex( + (u) => String(u.seq) === String(d.userInfo.seq) + ); + if (d.checked) { + if (-1 === i) { + pushs.push(d.userInfo); + } + } else { + if (-1 < i) { + pops.push(d.userInfo); + } + } + }); + + if (0 < pushs.length) { + this.selectedUserList = [...this.selectedUserList, ...pushs]; + } + + if (0 < pops.length) { + this.selectedUserList = this.selectedUserList.filter((u) => { + let result = false; + if (-1 === pops.findIndex((p) => String(p.seq) === String(u.seq))) { + result = true; + } + if ( + !!this.fixedUserList && + this.fixedUserList.length > 0 && + this.fixedUserList.findIndex((p) => String(p.seq) === String(u.seq)) > + -1 + ) { + result = true; + } + + return result; + }); + } + } + onChangeGroupList(params: { + isChecked: boolean; + groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; + }) { + if (params.isChecked) { + params.groupBuddyList.buddyList.forEach((item) => { + if ( + this.selectedUserList.filter( + (user) => String(user.seq) === String(item.seq) + ).length === 0 + ) { + this.selectedUserList = [...this.selectedUserList, item]; + } + }); + } else { + this.selectedUserList = this.selectedUserList.filter( + (item) => + params.groupBuddyList.buddyList.filter( + (del) => String(del.seq) === String(item.seq) + ).length === 0 + ); + } + } + onRemovedProfileSelection(userInfo: UserInfo) { + const i = this.selectedUserList.findIndex( + (u) => String(u.seq) === String(userInfo.seq) + ); + + if (-1 < i) { + this.selectedUserList = this.selectedUserList.filter( + (u) => String(u.seq) !== String(userInfo.seq) + ); + } + } + + removableForSelection = (userInfo: UserInfo) => { + return !this.fixedUserList.some( + (info) => String(info.seq) === String(userInfo.seq) + ); + }; + + colorForSelection = (userInfo: UserInfo) => { + return this.fixedUserList.some( + (info) => String(info.seq) === String(userInfo.seq) + ) + ? 'primary' + : 'accent'; + }; +} diff --git a/src/app/sections/chat/drawers/attach-data.drawer.component.html b/src/app/sections/chat/drawers/attach-data.drawer.component.html new file mode 100644 index 0000000..384067e --- /dev/null +++ b/src/app/sections/chat/drawers/attach-data.drawer.component.html @@ -0,0 +1,208 @@ +
    + +
    + {{ 'label.data' | ucapI18n }} +
    + + + +
    +
    + +
    + +
    +
    +
    +
    +
    + + {{ + (drawerType === ChatDrawType.AttachImage + ? 'label.image' + : drawerType === ChatDrawType.AttachVideo + ? 'label.video' + : 'label.file' + ) | ucapI18n + }} + + {{ + filteredFileInfoList?.length + }} +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + + + + +
    +
    +
    diff --git a/src/app/sections/chat/drawers/attach-data.drawer.component.scss b/src/app/sections/chat/drawers/attach-data.drawer.component.scss new file mode 100644 index 0000000..be53605 --- /dev/null +++ b/src/app/sections/chat/drawers/attach-data.drawer.component.scss @@ -0,0 +1,146 @@ +@import '~@ucap/lg-scss/mixins'; + +.drawer-container { + width: 100%; + height: 100%; + .tit-head-area { + display: flex; + flex-direction: row; + align-items: center; + .title-text { + font-size: 1.143em; + color: #333; + @include screen(xs) { + font-size: 0.929em; + } + } + .btns { + display: inline-flex; + flex-direction: row; + button { + font-size: 0.929em; + font-weight: 600; + color: #999; + position: relative; + &.cdk-focused, + &.cdk-active { + color: $lipstick; + } + &:before { + content: ''; + width: 1px; + background-color: #ccc; + height: 12px; + position: absolute; + left: 0; + top: 12px; + } + &:first-of-type { + &:before { + display: none; + } + } + @include screen(xs) { + min-width: auto; + padding: 0 10px; + font-size: 0.857em; + &:first-of-type { + margin-left: 5px; + } + } + } + } + } + .drawer-body { + width: 100%; + height: 100%; + padding: 0 16px; + display: flex; + flex-direction: column; + .sub-header { + flex: 0 0 80px; + display: flex; + flex-direction: column; + .title { + flex: 0 0 40px; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + .tit-text { + flex: 0 0 auto; + span { + color: #333; + font-size: 1em; + font-weight: 600; + } + .amount-text { + color: $lipstick; + font-weight: 600; + padding-left: 5px; + } + } + .btn-chk-area { + display: inline-flex; + flex-direction: row; + align-items: center; + .btn-re { + flex: 0 0 40px; + min-width: 40px; + height: 40px; + border-radius: 20px; + padding: 0; + } + .mat-checkbox { + flex: 1 0 20px; + margin: 0 4px 0 12px; + } + } + } + .sub-navi-btns { + flex: 0 0 40px; + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + background-color: #f1f2f6; + border-top: 1px solid #ccc; + padding: 0 10px 2px; + .btn-sub-navi { + height: 26px; + line-height: 26px; + border-radius: 13px; + background-color: $white; + color: #707070; + &.cdk-focused, + &.cdk-active { + background-color: $lipstick; + color: $white; + border-color: $lipstick; + } + } + button { + & + button { + margin-left: 6px; + } + } + } + } + .dataroom-contents { + flex: 1 0 auto; + overflow-x: hidden; + overflow-y: auto; + } + } + .btn-bottom-area { + display: flex; + flex-direction: row; + background-color: $white; + padding: 14px 16px 10px; + justify-content: flex-end; + width: 100%; + button { + @include ucap-button-flat-stroked(100%); + } + } +} diff --git a/src/app/sections/chat/drawers/attach-data.drawer.component.spec.ts b/src/app/sections/chat/drawers/attach-data.drawer.component.spec.ts new file mode 100644 index 0000000..8e9d29b --- /dev/null +++ b/src/app/sections/chat/drawers/attach-data.drawer.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { AttachDataDrawerComponent } from './attach-data.drawer.component'; + +describe('ucap::ui-organization::CreateChatDialogComponent', () => { + let component: AttachDataDrawerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AttachDataDrawerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AttachDataDrawerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/chat/drawers/attach-data.drawer.component.ts b/src/app/sections/chat/drawers/attach-data.drawer.component.ts new file mode 100644 index 0000000..795c3b6 --- /dev/null +++ b/src/app/sections/chat/drawers/attach-data.drawer.component.ts @@ -0,0 +1,485 @@ +import { Subject, combineLatest, merge } from 'rxjs'; +import { takeUntil, take } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + EventEmitter, + Output, + Inject, + NgZone +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { MatDialog } from '@angular/material/dialog'; + +import { LoginSession, DeviceType } from '@ucap/core'; +import { NativeService } from '@ucap/native'; +import { FileDownloadItem } from '@ucap/api'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { LoginResponse } from '@ucap/protocol-authentication'; +import { RoomInfo } from '@ucap/protocol-room'; +import { FileInfo, InfoRequest } from '@ucap/protocol-file'; +import { FileType, FileEventJson } from '@ucap/protocol-event'; +import { User } from '@ucap/protocol-info'; + +import { I18nService } from '@ucap/ng-i18n'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { + LoginSelector, + ConfigurationSelector +} from '@ucap/ng-store-authentication'; +import { + RoomSelector, + ChattingSelector, + ChattingActions +} from '@ucap/ng-store-chat'; + +import { + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult +} from '@ucap/ng-ui'; + +import { ChatDrawType } from '@app/pages/chat/types/chat-draw.type'; +import { AppAuthenticationService } from '@app/services/app-authentication.service'; +import { AppFileService } from '@app/services/app-file.service'; +import { AppChatService } from '@app/services/app-chat.service'; + +import { FileViewerDialogData } from '../dialogs/file-viewer.dialog.component'; + +export type SendRecvType = 'ALL' | 'SEND' | 'RECV'; + +@Component({ + selector: 'app-drawer-chat-attach-data', + templateUrl: './attach-data.drawer.component.html', + styleUrls: ['./attach-data.drawer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AttachDataDrawerComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject = new Subject(); + + @Input() + set roomId(value: string) { + this._roomId = value; + this.roomIdSubject.next(value); + this._initializeData(); + } + get roomId(): string { + return this._roomId; + } + // tslint:disable-next-line: variable-name + _roomId: string; + + @Input() + set drawerType(type: ChatDrawType) { + this._drawerType = type; + this.filterSendRecvType = 'ALL'; + + this.getFiltered(); + } + get drawerType(): ChatDrawType { + return this._drawerType; + } + // tslint:disable-next-line: variable-name + _drawerType: ChatDrawType; + + @Output() + closed = new EventEmitter(); + + originalFileInfoList: { + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }[] = []; + filteredFileInfoList: { + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }[] = []; + selectedFileInfoList: { + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }[] = []; + + filterSendRecvType: SendRecvType = 'ALL'; + + versionInfo2Res: VersionInfo2Response; + loginRes: LoginResponse; + user: User; + loginSession: LoginSession; + + roomInfo: RoomInfo; + showDownCheckSeq: number | undefined; + + ChatDrawType = ChatDrawType; + DeviceType = DeviceType; + + constructor( + private store: Store, + private dialog: MatDialog, + private i18nService: I18nService, + private appChatService: AppChatService, + private appFileService: AppFileService, + private appAuthenticationService: AppAuthenticationService, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private ngZone: NgZone, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => (this.versionInfo2Res = versionInfo2Res)); + + this.loginSession = this.appAuthenticationService.getLoginSession(); + + this._initializeData(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + } + + private _initializeData() { + this.originalFileInfoList = []; + this.filteredFileInfoList = []; + this.selectedFileInfoList = []; + this.showDownCheckSeq = undefined; + + combineLatest([ + this.store.pipe(select(LoginSelector.loginRes)), + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(RoomSelector.room, this.roomId)), + this.store.pipe(select(ChattingSelector.fileInfoList, this.roomId)) + ]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([loginRes, user, roomInfo, fileInfoList]) => { + this.loginRes = loginRes; + this.user = user; + this.roomInfo = roomInfo; + + if (!!fileInfoList && fileInfoList.length > 0) { + this.originalFileInfoList = fileInfoList + .map((item) => { + return { + fileInfo: item, + fileDownloadItem: new FileDownloadItem() + }; + }) + .sort((a, b) => + a.fileInfo.eventSeq < b.fileInfo.eventSeq + ? 1 + : a.fileInfo.eventSeq > b.fileInfo.eventSeq + ? -1 + : 0 + ); + this.getFiltered(); + } + }); + } + + onChangeDrawerType(type: ChatDrawType) { + this.selectedFileInfoList = []; + this.showDownCheckSeq = undefined; + this.drawerType = type; + } + + onChangeFilterSendRecv(type: SendRecvType) { + this.selectedFileInfoList = []; + this.filterSendRecvType = type; + this.getFiltered(); + } + + getFiltered() { + if ( + !!this.drawerType && + !!this.originalFileInfoList && + this.originalFileInfoList.length > 0 + ) { + this.filteredFileInfoList = this.originalFileInfoList + .filter((item) => { + if (this.drawerType === ChatDrawType.AttachImage) { + return item.fileInfo.type === FileType.Image; + } else if (this.drawerType === ChatDrawType.AttachVideo) { + return item.fileInfo.type === FileType.Video; + } else { + return ( + item.fileInfo.type !== FileType.Image && + item.fileInfo.type !== FileType.Video + ); + } + }) + .filter((item) => { + if (this.filterSendRecvType === 'RECV') { + return ( + String(item.fileInfo.senderSeq) !== String(this.user.info.seq) + ); + } else if (this.filterSendRecvType === 'SEND') { + return ( + String(item.fileInfo.senderSeq) === String(this.user.info.seq) + ); + } else { + return true; + } + }); + } + + this.changeDetectorRef.detectChanges(); + } + + refreshList(): void { + let searchType: FileType = FileType.All; + switch (this.drawerType) { + case ChatDrawType.AttachImage: + searchType = FileType.Image; + break; + case ChatDrawType.AttachVideo: + searchType = FileType.Video; + break; + case ChatDrawType.AttachFile: + searchType = FileType.File; + break; + } + this.store.dispatch( + ChattingActions.fileInfos({ + req: { roomId: this.roomId, type: searchType } as InfoRequest + }) + ); + } + + onClosed(event: MouseEvent): void { + this.closed.emit(); + } + + getCheckedAllItem(): boolean { + const targetList = this.filteredFileInfoList; + + if ( + !targetList || + targetList.length === 0 || + targetList.filter( + (item) => + !( + this.selectedFileInfoList.filter( + (info) => info.fileInfo.seq === item.fileInfo.seq + ).length > 0 + ) + ).length > 0 + ) { + return false; + } else { + return true; + } + } + onToggleAllItem(value: boolean): void { + if (!!value) { + const targetList = this.filteredFileInfoList; + + this.selectedFileInfoList = this.filteredFileInfoList; + } else { + this.selectedFileInfoList = []; + } + this.changeDetectorRef.markForCheck(); + } + onToggleItem(params: { + checked: boolean; + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }) { + if (!!params.checked) { + if ( + !this.selectedFileInfoList.some( + (info) => info.fileInfo.seq === params.fileInfo.seq + ) + ) { + this.selectedFileInfoList.push({ + fileInfo: params.fileInfo, + fileDownloadItem: params.fileDownloadItem + }); + } + } else { + if (!!this.selectedFileInfoList && this.selectedFileInfoList.length > 0) { + const index = this.selectedFileInfoList.findIndex( + (info) => info.fileInfo.seq === params.fileInfo.seq + ); + if (index > -1) { + this.selectedFileInfoList.splice(index, 1); + } + } + } + } + + onShowDownCheck(fileInfo: FileInfo): void { + this.showDownCheckSeq = fileInfo.seq; + } + + onClickItemDelete(fileInfo: FileInfo): void { + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:dialog.title.removeChat'), + html: this.i18nService.t('chat:dialog.confirmRemoveChat') + } + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.store.dispatch( + ChattingActions.del({ + roomId: fileInfo.roomId, + eventSeq: fileInfo.eventSeq + }) + ); + } + }); + } + + onClickItemOpenViewer(fileInfo: FileInfo): void { + const data: FileViewerDialogData = { + fileInfos: this.filteredFileInfoList.map((item) => item.fileInfo), + selectFileInfo: { attachmentSeq: fileInfo.seq }, + downloadUrl: this.versionInfo2Res.downloadUrl, + deviceType: this.loginSession.deviceType, + token: this.loginRes.tokenString, + userSeq: String(this.user.info.seq) + }; + this.appChatService.openFileviwer(data); + } + onClickItemSave(params: { + fileInfo: FileEventJson; + fileDownloadItem: FileDownloadItem; + type: string; + }): void { + if ( + params.type === 'saveAs' && + this.loginSession.deviceType === DeviceType.PC + ) { + this.nativeService + .file_selectForSave({ defaultPath: params.fileInfo.fileName }) + .then((result) => { + if (!!result) { + if (!!result.canceled) { + // 취소함. + } else { + this.appFileService.saveFile( + { + fileInfo: params.fileInfo, + fileDownloadItem: params.fileDownloadItem, + type: params.type, + fileName: params.fileInfo.fileName, + fileDownloadUrl: undefined, + savePath: result.filePath + }, + this.loginRes, + this.user, + this.loginSession + ); + } + } + }) + .catch((reason) => { + // this.snackBarService.open( + // this.translateService.instant( + // 'common:file.errors.failToSpecifyPath' + // ), + // this.translateService.instant('common:file.errors.label') + // ); + }); + } else { + this.appFileService.saveFile( + { + fileInfo: params.fileInfo, + fileDownloadItem: params.fileDownloadItem, + type: params.type, + fileName: params.fileInfo.fileName, + fileDownloadUrl: undefined, + savePath: undefined + }, + this.loginRes, + this.user, + this.loginSession + ); + } + } + + onClickDelete(): void { + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:dialog.title.removeChat'), + html: this.i18nService.t('chat:dialog.confirmRemoveChat') + } + }); + + const self = this; + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + self.selectedFileInfoList.forEach((item, i) => { + setTimeout(() => { + this.store.dispatch( + ChattingActions.del({ + roomId: item.fileInfo.roomId, + eventSeq: item.fileInfo.eventSeq + }) + ); + }, i * 300); + }); + } + }); + } + onClickChangeFolder(): void { + alert('changeFolder'); + } + onClickOpenViewer(): void { + if (!!this.filteredFileInfoList && this.filteredFileInfoList.length > 0) { + this.onClickItemOpenViewer(this.filteredFileInfoList[0].fileInfo); + } + } + onClickDownload(): void { + this.ngZone.run(() => { + this.selectedFileInfoList.forEach((item) => { + this.onClickItemSave({ + fileInfo: { + // require parameters. + fileName: item.fileInfo.name, + attachmentSeq: item.fileInfo.seq + } as FileEventJson, + fileDownloadItem: item.fileDownloadItem, + type: 'save' + }); + }); + }); + } +} diff --git a/src/app/sections/chat/drawers/index.ts b/src/app/sections/chat/drawers/index.ts new file mode 100644 index 0000000..893cd45 --- /dev/null +++ b/src/app/sections/chat/drawers/index.ts @@ -0,0 +1,13 @@ +import { AddGroupDrawerComponent } from './add-group.drawer.component'; +import { AddUsersDrawerComponent } from './add-users.drawer.component'; +import { AttachDataDrawerComponent } from './attach-data.drawer.component'; +import { SettingDrawerComponent } from './setting.drawer.component'; +import { UsersDrawerComponent } from './users.drawer.component'; + +export const DRAWERS = [ + AddGroupDrawerComponent, + AddUsersDrawerComponent, + UsersDrawerComponent, + SettingDrawerComponent, + AttachDataDrawerComponent +]; diff --git a/src/app/sections/chat/drawers/setting.drawer.component.html b/src/app/sections/chat/drawers/setting.drawer.component.html new file mode 100644 index 0000000..b689bfc --- /dev/null +++ b/src/app/sections/chat/drawers/setting.drawer.component.html @@ -0,0 +1,92 @@ +
    + +
    + {{ 'chat:label.roomSetting' | ucapI18n }} +
    +
    +
    +
    +
    + {{ + 'chat:dialog.roomName' | ucapI18n + }} + + + {{ input.value?.length || 0 }}/20 + +
    +
    + {{ + 'chat:dialog.roomNameChangeTarget' | ucapI18n + }} + + {{ + 'chat:dialog.me' | ucapI18n + }} + {{ + 'chat:dialog.all' | ucapI18n + }} + + +
    +
    + {{ + 'chat:dialog.settingTimer' | ucapI18n + }} + + + + {{ timer.text }} + + + {{ + 'chat:dialog:settingTimerHint' | ucapI18n + }} + +
    +
    +
    +
    +
    + + +
    +
    +
    diff --git a/src/app/sections/chat/drawers/setting.drawer.component.scss b/src/app/sections/chat/drawers/setting.drawer.component.scss new file mode 100644 index 0000000..6255a4b --- /dev/null +++ b/src/app/sections/chat/drawers/setting.drawer.component.scss @@ -0,0 +1,70 @@ +@import '~@ucap/lg-scss/mixins'; + +.drawer-container { + width: 100%; + height: 100%; + &.ucap-chat-room-setting-drawer { + .drawer-body { + width: 100%; + height: 100%; + padding: 0 16px; + .ucap-chat-room-setting-body { + display: flex; + flex-direction: column; + min-width: 327px; + @include screen(xs) { + min-width: 100%; + } + .setting-content-box { + border-top: 10px solid #f7f8fa; + padding: 20px 10px; + &:first-of-type { + border-top: none; + } + .tit-setting-content { + color: #584f52; + font-size: 1em; + font-weight: 600; + margin-bottom: 10px; + display: block; + } + } + .roomName { + } + .roomName-target { + display: flex; + flex-direction: column; + .mat-radio-group { + .mat-radio-button { + & + .mat-radio-button { + margin-left: 28px; + } + } + } + .radio-hint-copy { + color: #f69532; + font-size: 0.786em; + margin-top: 13px; + } + } + .timer { + .form-select-timer { + width: 100%; + } + } + } + } + } + + .btn-bottom-area { + display: flex; + flex-direction: row; + background-color: $white; + padding: 14px 16px 10px; + justify-content: flex-end; + width: 100%; + button { + @include ucap-button-flat-stroked(50%); + } + } +} diff --git a/src/app/sections/chat/drawers/setting.drawer.component.spec.ts b/src/app/sections/chat/drawers/setting.drawer.component.spec.ts new file mode 100644 index 0000000..e596b9e --- /dev/null +++ b/src/app/sections/chat/drawers/setting.drawer.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { SettingDrawerComponent } from './setting.drawer.component'; + +describe('ucap::ui-organization::CreateChatDialogComponent', () => { + let component: SettingDrawerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [SettingDrawerComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SettingDrawerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/chat/drawers/setting.drawer.component.ts b/src/app/sections/chat/drawers/setting.drawer.component.ts new file mode 100644 index 0000000..4fdb3be --- /dev/null +++ b/src/app/sections/chat/drawers/setting.drawer.component.ts @@ -0,0 +1,178 @@ +import { Subject, combineLatest, merge } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + EventEmitter, + Output +} from '@angular/core'; +import { FormGroup, FormBuilder, Validators } from '@angular/forms'; + +import { Store, select } from '@ngrx/store'; + +import { I18nService } from '@ucap/ng-i18n'; +import { + RoomInfo, + UpdateRequest, + UpdateTimerSetRequest +} from '@ucap/protocol-room'; + +import { RoomSelector, RoomActions } from '@ucap/ng-store-chat'; + +@Component({ + selector: 'app-drawer-chat-setting', + templateUrl: './setting.drawer.component.html', + styleUrls: ['./setting.drawer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class SettingDrawerComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject = new Subject(); + + @Input() + set roomId(value: string) { + this._roomId = value; + this.roomIdSubject.next(value); + this._initializeData(); + } + get roomId(): string { + return this._roomId; + } + // tslint:disable-next-line: variable-name + _roomId: string; + + @Output() + closed = new EventEmitter(); + + roomInfo: RoomInfo; + + roomName: string; + timerArray: { value: number; text: string }[]; + + chatSettingForm: FormGroup; + + constructor( + private i18nService: I18nService, + private store: Store, + private formBuilder: FormBuilder, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + this._initializeData(); + + this.i18nService.languageChanged$ + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((_) => { + this.setTimerArray(); + }); + this.setTimerArray(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + } + + private _initializeData() { + combineLatest([this.store.pipe(select(RoomSelector.room, this.roomId))]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([roomInfo]) => { + this.roomInfo = roomInfo; + + this.chatSettingForm = this.formBuilder.group({ + roomName: [ + this.roomInfo?.roomName, + !this.roomInfo?.isTimeRoom ? [Validators.required] : [] + ], + changeTarget: ['me'], + timerInterval: [this.roomInfo?.timeRoomInterval] + }); + + this.changeDetectorRef.markForCheck(); + }); + } + + onChange() { + const checkInvalid = this.chatSettingForm.invalid; + let roomName: string; + if (checkInvalid) { + roomName = ''; + } else { + roomName = this.chatSettingForm.get('roomName').value; + } + } + + onKeyupName() { + this.chatSettingForm.get('roomName').markAsTouched(); + } + + setTimerArray() { + const hourFrom = this.i18nService.t('common:units.hourFrom'); + const minute = this.i18nService.t('common:units.minute'); + const second = this.i18nService.t('common:units.second'); + + this.timerArray = [ + { value: 5, text: `5 ${second}` }, + { value: 10, text: `10 ${second}` }, + { value: 30, text: `30 ${second}` }, + { value: 60, text: `1 ${minute}` }, + { value: 300, text: `5 ${minute}` }, + { value: 600, text: `10 ${minute}` }, + { value: 1800, text: `30 ${minute}` }, + { value: 3600, text: `1 ${hourFrom}` }, + { value: 21600, text: `6 ${hourFrom}` }, + { value: 43200, text: `12 ${hourFrom}` }, + { value: 86400, text: `24 ${hourFrom}` } + ]; + } + + onChangeGroupName(name: string) { + this.roomName = name; + } + + onClosed(event: MouseEvent): void { + this.closed.emit(); + } + onConfirm(): void { + const roomName = this.chatSettingForm.get('roomName').value; + const roomNameChangeTarget = this.chatSettingForm.get('changeTarget').value; + const timerInterval = this.chatSettingForm.get('timerInterval').value; + + this.store.dispatch( + RoomActions.update({ + req: { + roomId: this.roomInfo.roomId, + roomName, + receiveAlarm: this.roomInfo.receiveAlarm, + syncAll: roomNameChangeTarget.toUpperCase() === 'ALL' ? true : false + } as UpdateRequest + }) + ); + + if (!!this.roomInfo?.isTimeRoom) { + this.store.dispatch( + RoomActions.updateTimeRoomInterval({ + req: { + roomId: this.roomInfo.roomId, + timerInterval + } as UpdateTimerSetRequest + }) + ); + } + + this.closed.emit(); + } +} diff --git a/src/app/sections/chat/drawers/users.drawer.component.html b/src/app/sections/chat/drawers/users.drawer.component.html new file mode 100644 index 0000000..ceebd01 --- /dev/null +++ b/src/app/sections/chat/drawers/users.drawer.component.html @@ -0,0 +1,52 @@ +
    + +
    + {{ 'chat:label.showRoomUsers' | ucapI18n }} +
    +
    + + + + + + + +
    +
    + + +
    +
    +
    diff --git a/src/app/sections/chat/drawers/users.drawer.component.scss b/src/app/sections/chat/drawers/users.drawer.component.scss new file mode 100644 index 0000000..d9b951d --- /dev/null +++ b/src/app/sections/chat/drawers/users.drawer.component.scss @@ -0,0 +1,23 @@ +@import '~@ucap/lg-scss/mixins'; + +.drawer-container { + width: 100%; + height: 100%; + .drawer-body { + height: 100%; + } +} +.ucap-virtual-scroll-viewport { + height: auto !important; +} +.btn-bottom-area { + display: flex; + flex-direction: row; + background-color: $white; + padding: 14px 16px 10px; + justify-content: flex-end; + width: 100%; + button { + @include ucap-button-flat-stroked(50%); + } +} diff --git a/src/app/sections/group/components/component-ui/tenant-search.component.spec.ts b/src/app/sections/chat/drawers/users.drawer.component.spec.ts similarity index 57% rename from src/app/sections/group/components/component-ui/tenant-search.component.spec.ts rename to src/app/sections/chat/drawers/users.drawer.component.spec.ts index f4b9b1c..c4b6385 100644 --- a/src/app/sections/group/components/component-ui/tenant-search.component.spec.ts +++ b/src/app/sections/chat/drawers/users.drawer.component.spec.ts @@ -2,20 +2,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { DebugElement } from '@angular/core'; -import { TenantSearchComponent } from './tenant-search.component'; +import { UsersDrawerComponent } from './users.drawer.component'; -describe('ucap::ui-organization::TenantSearchComponent', () => { - let component: TenantSearchComponent; - let fixture: ComponentFixture; +describe('ucap::ui-organization::CreateChatDialogComponent', () => { + let component: UsersDrawerComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [TenantSearchComponent] + declarations: [UsersDrawerComponent] }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(TenantSearchComponent); + fixture = TestBed.createComponent(UsersDrawerComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/sections/chat/drawers/users.drawer.component.ts b/src/app/sections/chat/drawers/users.drawer.component.ts new file mode 100644 index 0000000..576d189 --- /dev/null +++ b/src/app/sections/chat/drawers/users.drawer.component.ts @@ -0,0 +1,226 @@ +import { Subject, combineLatest, merge } from 'rxjs'; +import { takeUntil, take } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + EventEmitter, + Output, + Input +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { MatDialog } from '@angular/material/dialog'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort, + ExitForcingRequest +} from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { RoomSelector, RoomActions } from '@ucap/ng-store-chat'; + +import { + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult +} from '@ucap/ng-ui'; + +import { ChatDrawType } from '@app/pages/chat/types/chat-draw.type'; +import { DrawInfo } from '@app/pages/chat/models/draw-info'; +import { + ProfileDialogComponent, + ProfileDialogData, + ProfileDialogResult +} from '@app/sections/organization/dialogs/profile.dialog.component'; +import { AppChatService } from '@app/services/app-chat.service'; + +export type UserInfoTypes = RoomUserInfo | RoomUserInfoShort; + +@Component({ + selector: 'app-drawer-chat-users', + templateUrl: './users.drawer.component.html', + styleUrls: ['./users.drawer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class UsersDrawerComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject = new Subject(); + + @Input() + set roomId(value: string) { + this._roomId = value; + if (!!this.roomIdSubject) { + this.roomIdSubject.next(value); + } + this._initializeData(); + } + get roomId(): string { + return this._roomId; + } + // tslint:disable-next-line: variable-name + _roomId: string; + + @Output() + rightDrawerToggle = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + user: User; + versionInfo2Res: VersionInfo2Response; + + roomUsers: RoomUserInfo[] = []; + roomUsersShort: RoomUserInfoShort[] = []; + + constructor( + private i18nService: I18nService, + public dialog: MatDialog, + private store: Store, + private appChatService: AppChatService, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this._initializeData(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + } + + private _initializeData() { + combineLatest([ + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(RoomSelector.roomUser, this.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.roomId)) + ]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([user, roomUser, roomUserShort]) => { + this.user = user; + if ( + !!roomUser && + !!roomUser.userInfos && + roomUser.userInfos.length > 0 + ) { + this.roomUsers = roomUser.userInfos.filter( + (item) => !!item.isJoinRoom + ); + } + if ( + !!roomUserShort && + !!roomUserShort.userInfos && + roomUserShort.userInfos.length > 0 + ) { + this.roomUsersShort = roomUserShort.userInfos.filter( + (item) => !!item.isJoinRoom + ); + } + + this.changeDetectorRef.markForCheck(); + }); + } + + onClosed(event: MouseEvent): void { + this.closed.emit(); + } + onClickAddUserChatRoom(): void { + this.rightDrawerToggle.emit({ + chatDrawType: ChatDrawType.Invite, + returnDrawType: ChatDrawType.RoomUsers + }); + } + onClickAddGroupMember(): void { + this.rightDrawerToggle.emit({ + chatDrawType: ChatDrawType.AddGroup, + returnDrawType: ChatDrawType.RoomUsers + }); + } + + onClickUser(userInfo: UserInfoTypes): void {} + + onClickOpenProfile(userSeq: string): void { + const result = this.dialog.open< + ProfileDialogComponent, + ProfileDialogData, + ProfileDialogResult + >(ProfileDialogComponent, { + panelClass: 'mid-create-dialog', + data: { + userSeq + } + }); + } + onClickOpenChatRoom(userSeq: string): void { + this.appChatService.newOpenRoom([userSeq], false); + } + onClickSendMessage(userSeq: string): void {} + + onClickExitForcing(userInfo: UserInfoTypes): void { + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + data: { + title: this.i18nService.t('chat:dialog.title.ejectFromRoom'), + html: this.i18nService.t('chat:dialog.confirmEjectFromRoom', { + targetMember: userInfo.name + }) + } + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.store.dispatch( + RoomActions.expel({ + req: { + roomId: this.roomId, + type: 'A', + senderSeq: String(this.user.info.seq), + userSeqs: [userInfo.seq + ''] + } as ExitForcingRequest + }) + ); + } + }); + } + + isMe(userInfo: UserInfoTypes) { + if (!!this.user) { + return String(this.user.info.seq) === String(userInfo.seq); + } else { + return false; + } + } +} diff --git a/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.html b/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.html deleted file mode 100644 index a026d34..0000000 --- a/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.html +++ /dev/null @@ -1,131 +0,0 @@ - - - {{ data.title }} - - - -
    - - - - -
    - - -
    -
    - -
    - 새 그룹 추가 - - -
    - -
    - - -
    -
    -
    -
    - - -
    -
    - - -
    - - - - {{ userInfo.name }} - clear - - -
    - - - - {{ selectedUserList.length }} / 300 - - - - - - - - - - {{ selectedUserList.length }} - - - -
    diff --git a/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.scss b/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.ts b/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.ts deleted file mode 100644 index a65f04a..0000000 --- a/src/app/sections/group/components/component-ui/dialogs/create-chat.dialog.component.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - ChangeDetectionStrategy, - ChangeDetectorRef, - Inject, - ViewChild -} from '@angular/core'; -import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; -import { - UserInfoSS, - UserInfoF, - UserInfoDN, - DeptInfo -} from '@ucap/protocol-query'; - -import { Store, select } from '@ngrx/store'; -import { takeUntil } from 'rxjs/operators'; -import { - CompanySelector, - DepartmentSelector -} from '@ucap/ng-store-organization'; -import { Subject, combineLatest } from 'rxjs'; -import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { SelectUserDialogType } from '@app/types'; -import { RoomInfo, UserInfo as RoomUserInfo } from '@ucap/protocol-room'; -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { SelectUserSectionComponent } from '../../select-user.section.component'; -import { GroupActions } from '@ucap/ng-store-group'; -import { UserInfoTypes } from '../profile-list-item.component'; - -export interface CreateChatDialogData { - type?: SelectUserDialogType; - title: string; - /** CASE :: EditMember */ - group?: GroupDetailData; - /** CASE :: EventForward */ - ignoreRoom?: RoomInfo[]; - /** CASE :: EditChatMember */ - curRoomUser?: ( - | UserInfo - | UserInfoSS - | UserInfoF - | UserInfoDN - | RoomUserInfo - )[]; -} -export interface CreateChatDialogResult {} - -@Component({ - selector: 'ucap-local-organization-create-chat.dialog', - templateUrl: './create-chat.dialog.component.html', - styleUrls: ['./create-chat.dialog.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class CreateChatDialogComponent implements OnInit, OnDestroy { - private ngOnDestroySubject = new Subject(); - isLinear = false; - firstFormGroup: FormGroup; - secondFormGroup: FormGroup; - selectedUserList: UserInfoTypes[] = []; - SelectUserDialogType = SelectUserDialogType; - - constructor( - public dialogRef: MatDialogRef< - CreateChatDialogData, - CreateChatDialogResult - >, - @Inject(MAT_DIALOG_DATA) public data: CreateChatDialogData, - private changeDetectorRef: ChangeDetectorRef, - private store: Store, - private appAuthenticationService: AppAuthenticationService - ) {} - - @ViewChild('selectBoxUserComponent', { static: false }) - selectBoxUserComponent: SelectUserSectionComponent; - - ngOnInit(): void {} - - ngOnDestroy(): void { - if (!!this.ngOnDestroySubject) { - this.ngOnDestroySubject.complete(); - } - } - - onClickCancel() {} - onClickChoice(s: boolean) {} - getBtnValid() {} - getChipsRemoveYn(userInfo: UserInfo) {} - onClickDeleteUser(userInfo: UserInfo) {} - - onChangeSelectedUserList(userList: UserInfoTypes[]) { - this.selectedUserList = userList; - this.changeDetectorRef.markForCheck(); - } - onClickComplete(groupName: string) { - switch (this.data.type) { - case SelectUserDialogType.NewGroup: - { - const userSeqs: string[] = []; - this.selectedUserList.map((user) => - userSeqs.push(user.seq.toString()) - ); - this.store.dispatch( - GroupActions.create({ - groupName, - targetUserSeqs: userSeqs - }) - ); - } - break; - case SelectUserDialogType.NewChat: - { - } - break; - case SelectUserDialogType.EditChatMember: - { - } - break; - case SelectUserDialogType.EditMember: - { - } - break; - case SelectUserDialogType.MessageForward: - { - } - break; - } - - this.dialogRef.close(); - } -} diff --git a/src/app/sections/group/components/component-ui/dialogs/index.ts b/src/app/sections/group/components/component-ui/dialogs/index.ts deleted file mode 100644 index a2b25b0..0000000 --- a/src/app/sections/group/components/component-ui/dialogs/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { CreateChatDialogComponent } from './create-chat.dialog.component'; - -export const DIALOGS = [CreateChatDialogComponent]; diff --git a/src/app/sections/group/components/component-ui/index.ts b/src/app/sections/group/components/component-ui/index.ts deleted file mode 100644 index 8f2e212..0000000 --- a/src/app/sections/group/components/component-ui/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ProfileListItemComponent } from './profile-list-item.component'; -import { ProfileComponent } from './profile.component'; -import { TenantSearchComponent } from './tenant-search.component'; - -export const COMPONENTS = [ - ProfileListItemComponent, - ProfileComponent, - TenantSearchComponent -]; diff --git a/src/app/sections/group/components/component-ui/profile-list-item.component.html b/src/app/sections/group/components/component-ui/profile-list-item.component.html deleted file mode 100644 index d222f84..0000000 --- a/src/app/sections/group/components/component-ui/profile-list-item.component.html +++ /dev/null @@ -1,42 +0,0 @@ -
    - -
    - {{ userInfo.intro }} -
    -
    - -
    -
    diff --git a/src/app/sections/group/components/component-ui/profile-list-item.component.scss b/src/app/sections/group/components/component-ui/profile-list-item.component.scss deleted file mode 100644 index 57f284c..0000000 --- a/src/app/sections/group/components/component-ui/profile-list-item.component.scss +++ /dev/null @@ -1,101 +0,0 @@ -@charset 'UTF-8'; - -@import '../../../../../assets/scss/components.scss'; - -.user-list { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - padding: 0 16px; - height: 70px; - align-items: center; - &.line-top { - border-top: 1px solid $gray-rec; - } - .user-profile-info { - display: inline-flex; - flex-direction: row; - flex-grow: 2.3; - .user-profile-thumb { - @include profile-avatar-default( - 0 5px 5px 0, - 8, - $green, - 18px - ); //오른 아래 공간, 모바일 온라인 아이콘 크기, 모바일 아이콘 색, 모바일 아이콘 bg크기 - .presence { - //PC 상태 - @include presence-state(8px); //원크기 - } - .profile-image { - @include avatar-img(36px, 2px); //아바타 크기, 왼쪽공간 - } - } - .user-info { - display: flex; - flex-direction: column; - align-items: flex-start; - justify-content: flex-start; - padding-left: 16px; - .user-n-g { - display: flex; - flex-flow: row-reverse nowrap; - align-items: flex-end; - height: 22px; - .user-name { - font: { - size: 16px; - weight: 600; - } - color: $gray-re21; - order: 1; - -ms-flex-order: 1; - } - .user-grade { - font: { - size: 13px; - } - color: $gray-re70; - margin-left: 4px; - order: 0; - -ms-flex-order: 0; - } - } - .dept-name { - font-size: 12px; - color: $gray-re6; - line-height: 16px; - } - } - } - .intro { - display: inline-flex; - flex-flow: row nowrap; - flex-basis: 35%; - flex-grow: 0; - align-items: baseline; - p { - font-size: 11px; - line-height: 1.4; - display: block; - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - height: 30px; - } - &:before { - content: 'chat'; - @include font-family-ico(12, center, $lipstick); - flex-direction: row; - align-items: flex-start; - width: 12px; - height: 12px; - line-height: 12px; - margin-right: 4.8px; - position: relative; - top: 2px; - } - } -} diff --git a/src/app/sections/group/components/component-ui/profile-list-item.component.ts b/src/app/sections/group/components/component-ui/profile-list-item.component.ts deleted file mode 100644 index f106b4e..0000000 --- a/src/app/sections/group/components/component-ui/profile-list-item.component.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - ChangeDetectionStrategy, - ChangeDetectorRef, - Input, - EventEmitter, - Output -} from '@angular/core'; -import { UserInfo } from '@ucap/protocol-sync'; -import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; - -export type UserInfoTypes = UserInfo | UserInfoSS | UserInfoF | UserInfoDN; - -@Component({ - selector: 'ucap-local-organization-profile-list-item', - templateUrl: './profile-list-item.component.html', - styleUrls: ['./profile-list-item.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class ProfileListItemComponent implements OnInit, OnDestroy { - @Input() - set userInfo(user: UserInfoTypes) { - this._userInfo = user; - } - get userInfo(): UserInfoTypes { - return this._userInfo; - } - _userInfo: UserInfoTypes; - - @Input() - defaultProfileImage: string; - - @Input() - profileImageRoot: string; - - @Input() - checkable = false; - - @Output() - checkUser = new EventEmitter<{ - isChecked: boolean; - userInfo: UserInfoTypes; - }>(); - - constructor(private changeDetectorRef: ChangeDetectorRef) {} - - ngOnInit(): void {} - - ngOnDestroy(): void {} - - onClickProfileImage(event: Event, userInfo: UserInfoTypes): void {} - - onChangeCheck( - value: boolean, - userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN - ) { - this.checkUser.emit({ - isChecked: value, - userInfo - }); - } -} diff --git a/src/app/sections/group/components/component-ui/profile.component.html b/src/app/sections/group/components/component-ui/profile.component.html deleted file mode 100644 index 1c58bdf..0000000 --- a/src/app/sections/group/components/component-ui/profile.component.html +++ /dev/null @@ -1,73 +0,0 @@ -
    - - -
    - -
    - {{ userInfo.name }} - {{ userInfo.grade }} - ({{ userInfo.nameEn }}) - O온라인 -
    - - - - -
    - - 이름 부서명, 전화번호, 이메일 - - search - -
    -
    - - - - - - - - - - - -
    - - - - - - -
    -
    diff --git a/src/app/sections/group/components/component-ui/profile.component.scss b/src/app/sections/group/components/component-ui/profile.component.scss deleted file mode 100644 index 873d432..0000000 --- a/src/app/sections/group/components/component-ui/profile.component.scss +++ /dev/null @@ -1,77 +0,0 @@ -@charset 'UTF-8'; - -@import '../../../../../assets/scss/components.scss'; - -.main-profile { - display: flex; - flex: 0 0 650px; - min-height: 100%; - min-width: 450px; - @include screen(mid) { - min-height: auto; - } - // background-image: url(../../../assets/images/bg/bg_profile1.svg), - // url(../../../assets/images/bg/bg_profile2.svg), - // url(../../../assets/images/bg/bg_profile3.svg), - // url(../../../assets/images/bg/bg_profile4.svg), - // url(../../../assets/images/bg/bg_profile5.svg), $bg-linear-gradient; - background-repeat: no-repeat; - background-position: -213px -223px, 433px 95px, 489px 72px, 433px 517px, - 335px 634px, 0 0; - - .example-card { - display: flex; - flex-direction: column; - padding: 60px 8.7%; - width: 100%; - .my-input { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - margin: 0; - width: 100%; - border-bottom: 1px solid $white; - margin-top: 78px; - .my-in-input { - font-size: 16px; - color: $gray-re3; - flex-grow: 1; - height: 24px; - line-height: 24px; - margin-top: 8px; - } - button { - margin-bottom: 5px; - } - } - } - - .user-profile-info-list { - margin-top: 60px; - ul { - display: flex; - flex-direction: column; - justify-content: space-between; - height: 250px; - li { - font-size: 16px; - font-weight: 600; - color: $brown; - span { - width: 100px; - height: 34px; - border-radius: 18px; - border: solid 1px #f8f9fd; - background-color: #aaa0a5; - font-size: 14px; - font-weight: 600; - display: inline-flex; - align-items: center; - justify-content: center; - color: $white; - margin-right: 40px; - } - } - } - } -} diff --git a/src/app/sections/group/components/component-ui/profile.component.ts b/src/app/sections/group/components/component-ui/profile.component.ts deleted file mode 100644 index 2a86ac7..0000000 --- a/src/app/sections/group/components/component-ui/profile.component.ts +++ /dev/null @@ -1,280 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - ChangeDetectionStrategy, - ChangeDetectorRef, - Input, - Output, - EventEmitter, - ViewChild, - ElementRef -} from '@angular/core'; - -import { AppKey } from '@app/types/app-key.type'; -import { LoginSession } from '@app/models/login-session'; -import { Subject } from 'rxjs'; -import { UserInfoSS, AuthResponse } from '@ucap/protocol-query'; -import { OpenProfileOptions } from '@ucap/protocol-buddy'; -import { FileUploadItem } from '@ucap/api'; -import { FormControl } from '@angular/forms'; -import { WorkStatusType } from '@ucap/protocol'; -import { I18nService } from '@ucap/ng-i18n'; - -@Component({ - selector: 'app-group-profile', - templateUrl: './profile.component.html', - styleUrls: ['./profile.component.scss'], - - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class ProfileComponent implements OnInit, OnDestroy { - private ngOnDestroySubject = new Subject(); - - @Input() - profileImageRoot: string; - - @Input() - isMe: boolean; - @Input() - isBuddy: boolean; - @Input() - isFavorit: boolean; - - @Input() - set userInfo(u: UserInfoSS) { - this._userInfo = u; - } - get userInfo(): UserInfoSS { - return this._userInfo; - } - _userInfo: UserInfoSS; - @Input() - myMadn?: string; - @Input() - openProfileOptions?: OpenProfileOptions; - @Input() - useBuddyToggleButton: boolean; - @Input() - authInfo: AuthResponse; - - @Output() - profileImageView = new EventEmitter(); - @Output() - openChat = new EventEmitter(); - @Output() - sendMessage = new EventEmitter(); - @Output() - sendCall = new EventEmitter(); - @Output() - sendSms = new EventEmitter(); - @Output() - createConference = new EventEmitter(); - @Output() - toggleFavorit = new EventEmitter<{ - userInfo: UserInfoSS; - isFavorit: boolean; - }>(); - @Output() - toggleBuddy = new EventEmitter<{ - userInfo: UserInfoSS; - isBuddy: boolean; - }>(); - @Output() - uploadProfileImage = new EventEmitter(); - @Output() - updateIntro = new EventEmitter(); - - @ViewChild('profileImageFileInput', { static: false }) - profileImageFileInput: ElementRef; - - userIntroFormControl = new FormControl(''); - profileImageFileUploadItem: FileUploadItem; - - constructor(private i18nService: I18nService) {} - - ngOnInit(): void {} - - ngOnDestroy(): void { - if (!!this.ngOnDestroySubject) { - this.ngOnDestroySubject.complete(); - } - } - - onClickProfileImageView() { - this.profileImageView.emit(); - } - - onClickOpenChat() { - this.openChat.emit(this.userInfo); - } - - onClickCall(type: string) { - let calleeNumber = ''; - - if (type === 'LINE') { - calleeNumber = this.userInfo.lineNumber; - } else { - calleeNumber = this.userInfo.hpNumber; - } - this.sendCall.emit(calleeNumber); - } - - onClickSMS() { - this.sendSms.emit(this.userInfo.employeeNum); - } - - onClickVideoConference() { - this.createConference.emit(Number(this.userInfo.seq)); - } - - onClickMessage() { - this.sendMessage.emit(this.userInfo); - } - - onToggleFavorit() { - this.isFavorit = !this.isFavorit; - - this.toggleFavorit.emit({ - userInfo: this.userInfo, - isFavorit: this.isFavorit - }); - } - - onClickAddBuddy() { - this.toggleBuddy.emit({ - userInfo: this.userInfo, - isBuddy: true - }); - } - - onClickDelBuddy() { - this.toggleBuddy.emit({ - userInfo: this.userInfo, - isBuddy: false - }); - } - onApplyIntroMessage(intro: string) { - if (intro.trim().length < 1) { - this.updateIntro.emit(' '); - } else { - this.updateIntro.emit(intro); - } - } - - onChangeFileInput() { - this.profileImageFileUploadItem = FileUploadItem.fromFiles( - this.profileImageFileInput.nativeElement.files - )[0]; - - this.uploadProfileImage.emit(this.profileImageFileUploadItem); - - this.profileImageFileInput.nativeElement.value = ''; - } - - getWorkstatus(userInfo: UserInfoSS): string { - let workstatus = ''; - if (!!userInfo && !!userInfo.workstatus) { - switch (userInfo.workstatus) { - case WorkStatusType.VacationAM: - workstatus = '오전'; - break; - case WorkStatusType.VacationPM: - workstatus = '오후'; - break; - case WorkStatusType.VacationAll: - workstatus = '휴가'; - break; - case WorkStatusType.LeaveOfAbsence: - workstatus = '휴직'; - break; - case WorkStatusType.LongtermRefresh: - workstatus = '장기'; - break; - } - } - - return workstatus; - } - getWorkstatusStyle(userInfo: UserInfoSS): string { - // morning-off: 오전 afternoon-off: 오후 day-off: 휴가 long-time: 장기 leave-of-absence: 휴직 - let style = ''; - if (!!userInfo && !!userInfo.workstatus) { - switch (userInfo.workstatus) { - case WorkStatusType.VacationAM: - style = 'morning-off'; - break; - case WorkStatusType.VacationPM: - style = 'afternoon-off'; - break; - case WorkStatusType.VacationAll: - style = 'day-off'; - break; - case WorkStatusType.LeaveOfAbsence: - style = 'leave-of-absence'; - break; - case WorkStatusType.LongtermRefresh: - style = 'long-time'; - break; - } - } - - return style; - } - - getDisabledBtn(type: string): boolean { - if (!this.myMadn || this.myMadn.trim().length === 0) { - if (type === 'LINE' || type === 'MOBILE') { - return true; - } - } - - if (type === 'LINE') { - if ( - !!this.userInfo && - !!this.userInfo.lineNumber && - this.userInfo.lineNumber.trim().length > 0 - ) { - return false; - } else { - return true; - } - } else if (type === 'MOBILE') { - if ( - !!this.userInfo && - !!this.userInfo.hpNumber && - this.userInfo.hpNumber.trim().length > 0 - ) { - return false; - } else { - return true; - } - } else if (type === 'SMS') { - // const smsUtils = new SmsUtils( - // this.sessionStorageService, - // this.nativeService - // ); - // return !smsUtils.getAuthSms(); - } - - return true; - } - - getShowBuddyToggleBtn(type: 'DEL' | 'ADD'): boolean { - let rtn = false; - if (!this.useBuddyToggleButton) { - return false; - } - - if (type === 'ADD') { - if (!this.isBuddy) { - rtn = true; - } - } else if (type === 'DEL') { - if (!!this.isBuddy) { - rtn = true; - } - } - return rtn; - } -} diff --git a/src/app/sections/group/components/component-ui/tenant-search.component.html b/src/app/sections/group/components/component-ui/tenant-search.component.html deleted file mode 100644 index 15b5712..0000000 --- a/src/app/sections/group/components/component-ui/tenant-search.component.html +++ /dev/null @@ -1,38 +0,0 @@ -
    -
    - - {{ company.companyName }} - - -
    - -
    diff --git a/src/app/sections/group/components/component-ui/tenant-search.component.scss b/src/app/sections/group/components/component-ui/tenant-search.component.scss deleted file mode 100644 index bfc8e47..0000000 --- a/src/app/sections/group/components/component-ui/tenant-search.component.scss +++ /dev/null @@ -1,28 +0,0 @@ -@charset 'UTF-8'; - -@import '../../../../../assets//scss/components.scss'; - -.search-container { - display: flex; - flex-flow: row nowrap; - margin: 0 15px 0 17px; - width: calc(100% - 32px); - border: 1px solid $lipstick; - background-color: $white; - .search-selec-box { - @include selecCtrl(40px, 12px); - flex-basis: 150px; - } - .search-in-box { - @include matinputCtrl1( - 0, - 0, - auto, - auto, - 40px - ); //$bdw: 1px, $bdr: 0, $maxw, $minw, $inputH - } - .btn-ico-search { - @include matbtnCtrl(40px, 40px, 0, 20px); - } -} diff --git a/src/app/sections/group/components/component-ui/tenant-search.component.ts b/src/app/sections/group/components/component-ui/tenant-search.component.ts deleted file mode 100644 index 8535aa4..0000000 --- a/src/app/sections/group/components/component-ui/tenant-search.component.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - ChangeDetectionStrategy, - ChangeDetectorRef, - Input, - EventEmitter, - Output -} from '@angular/core'; -import { UserInfo } from '@ucap/protocol-sync'; -import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; - -import { Store, select } from '@ngrx/store'; -import { takeUntil } from 'rxjs/operators'; -import { CompanySelector } from '@ucap/ng-store-organization'; -import { Subject } from 'rxjs'; -import { Company } from '@ucap/api-external'; -import { AppAuthenticationService } from '@app/services/app-authentication.service'; - -@Component({ - selector: 'ucap-local-organization-tenant-search', - templateUrl: './tenant-search.component.html', - styleUrls: ['./tenant-search.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class TenantSearchComponent implements OnInit, OnDestroy { - companyList: Company[]; - companyCode: string; - - @Output() - keyDownEnter = new EventEmitter<{ - companyCode: string; - searchWord: string; - }>(); - - @Output() - searchCancel = new EventEmitter(); - - private ngOnDestroySubject = new Subject(); - constructor( - private changeDetectorRef: ChangeDetectorRef, - private store: Store, - private appAuthenticationService: AppAuthenticationService - ) {} - - ngOnInit(): void { - const userStore = this.appAuthenticationService.getUserStore(); - this.companyCode = userStore.companyCode; - - this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(CompanySelector.companyList) - ) - .subscribe((companyList) => { - this.companyList = companyList; - }); - } - - ngOnDestroy(): void { - if (!!this.ngOnDestroySubject) { - this.ngOnDestroySubject.complete(); - } - } - - onKeyDownEnter(searchWord: string) { - this.keyDownEnter.emit({ companyCode: this.companyCode, searchWord }); - } - onClickCancel() { - this.searchCancel.emit(); - } -} diff --git a/src/app/sections/group/components/index.ts b/src/app/sections/group/components/index.ts index 01841b9..53c238e 100644 --- a/src/app/sections/group/components/index.ts +++ b/src/app/sections/group/components/index.ts @@ -1,12 +1,10 @@ import { ListSectionComponent } from './list.section.component'; -import { SearchSectionComponent } from './search.section.component'; import { ProfileSectionComponent } from './profile.section.component'; import { InfoSectionComponent } from './info.section.component'; import { SelectUserSectionComponent } from './select-user.section.component'; import { SelectGroupSectionComponent } from './select-group.section.component'; export const COMPONENTS = [ ListSectionComponent, - SearchSectionComponent, ProfileSectionComponent, InfoSectionComponent, SelectUserSectionComponent, diff --git a/src/app/sections/group/components/info.section.component.html b/src/app/sections/group/components/info.section.component.html index f4f7355..6df7521 100644 --- a/src/app/sections/group/components/info.section.component.html +++ b/src/app/sections/group/components/info.section.component.html @@ -1,22 +1,127 @@
    -
    Bookmark
    +
    + {{ 'organization:profile.unreadChat' | ucapI18n }} +
    +
    + {{ 'organization:profile.chatWithUs' | ucapI18n }} +
    - + > -
    Empty List
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ + 'organization:profile.noConversation' | ucapI18n + }} + +
    -
    알림봇
    +
    + {{ 'organization:profile.notificationBot' | ucapI18n }} +
    @@ -48,8 +153,71 @@ -
    Empty List
    +
    + + + + + + + + + + + + + NO + + + + 알림 내용이 없습니다. + +
    - +
    diff --git a/src/app/sections/group/components/info.section.component.scss b/src/app/sections/group/components/info.section.component.scss index e089dd5..7c5a8de 100644 --- a/src/app/sections/group/components/info.section.component.scss +++ b/src/app/sections/group/components/info.section.component.scss @@ -7,19 +7,79 @@ margin-left: 30px; overflow: hidden; justify-content: space-between; - min-width: 450px; + //min-width: 450px; + height: 100%; + @include screen(lg) { + overflow: visible; + margin-left: 0; + padding-top: 30px; + } @include screen(mid) { overflow: visible; margin-left: 0; - padding: 30px 0; + padding-top: 30px; + } + @include screen(xs) { + //overflow: visible; + //margin-left: 0; + padding: 0; } .bookmark { display: flex; flex-direction: column; + flex-grow: 1; + @include screen(xs) { + height: 100%; + } + .subtitle2 { + @include screen(xs) { + visibility: hidden; + } + } .chatlist { display: flex; flex-direction: column; margin-top: 15px; + @include screen(xs) { + margin-top: 16px; + height: calc(100% - 50px); + overflow: auto; + padding: 0 16px; + } + .empty-case { + width: 100%; + height: 100%; + span { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; + svg { + width: 112px; + .svg-empty-cls01 { + fill: #bababa; + } + .svg-empty-cls02 { + fill: none; + stroke-width: 4px; + stroke: #fff; + stroke-linecap: round; + stroke-linejoin: round; + } + } + strong { + font-size: 1em; + color: #666; + padding: 5px 10px; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + margin: 10px 0 0; + } + } + } + /* .chatlist-con { display: flex; flex-direction: row; @@ -104,14 +164,23 @@ } } } + */ } } .allim { + flex-grow: 1; overflow-x: auto; @include no-scrollbar(); padding-bottom: 10px; margin-bottom: 20px; position: relative; + @include screen(custom, min, 1500) { + padding-bottom: 0; + margin-bottom: 0; + } + @include screen(xs) { + display: none; + } .btn-scroll-ctrl { position: absolute; z-index: 10; @@ -192,12 +261,51 @@ border-radius: 0; } } + .empty-case { + width: 100%; + height: 100%; + span { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + align-items: center; + justify-content: center; + svg { + width: 112px; + .svg-allim-empty-cls01 { + fill: #fff; + stroke: #bababa; + stroke-width: 4px; + } + .svg-allim-empty-cls02 { + fill: #bababa; + } + } + strong { + font-size: 1em; + color: #666; + padding: 5px 10px; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + margin: 10px 0 0; + } + } + } } } .banner-box { width: 100%; - height: 74px; - @extend %guideline; + min-height: 74px; align-self: flex-end; + margin-top: 20px; + flex-direction: column-reverse; + img { + width: 100%; + } + display: none; + @include screen(custom, min, 1500) { + display: flex; + } } } diff --git a/src/app/sections/group/components/info.section.component.ts b/src/app/sections/group/components/info.section.component.ts index 61c0fd6..21b7c3f 100644 --- a/src/app/sections/group/components/info.section.component.ts +++ b/src/app/sections/group/components/info.section.component.ts @@ -1,3 +1,6 @@ +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + import { Component, OnInit, @@ -7,31 +10,29 @@ import { Input } from '@angular/core'; -import { AppKey } from '@app/types/app-key.type'; -import { LoginSession } from '@app/models/login-session'; -import { Subject, combineLatest } from 'rxjs'; import { Store, select } from '@ngrx/store'; -import { takeUntil } from 'rxjs/operators'; -import { - LoginSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { RoomInfo, RoomType } from '@ucap/protocol-room'; import { Dictionary } from '@ngrx/entity'; + +import { RoomInfo, RoomType } from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; import { + RoomSelector, RoomUserMap, RoomUserShortMap -} from '@ucap/ng-store-chat/lib/store/room/state'; -import { RoomSelector } from '@ucap/ng-store-chat'; -import { VersionInfo2Response } from '@ucap/api-public'; -import { AppChatService } from '@app/services/app-chat.service'; -import { I18nService } from '@ucap/ng-i18n'; +} from '@ucap/ng-store-chat'; + import { TranslatePipe as OrganizationTranslate, TranslateService } from '@ucap/ng-ui-organization'; +import { AppChatService } from '@app/services/app-chat.service'; + @Component({ selector: 'app-sections-group-info', templateUrl: './info.section.component.html', @@ -51,8 +52,7 @@ export class InfoSectionComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _userSeq: string; - versionInfo2Res: VersionInfo2Response; - loginRes: LoginResponse; + user: User; isMe = false; defaultProfileImage: string; @@ -66,7 +66,7 @@ export class InfoSectionComponent implements OnInit, OnDestroy { organizationTranslate: OrganizationTranslate; - private ngOnDestroySubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); constructor( private appChatService: AppChatService, @@ -85,26 +85,17 @@ export class InfoSectionComponent implements OnInit, OnDestroy { // default image setting this.defaultProfileImage = this.appChatService.defaultProfileImage; - this.defaultProfileImageMulti = this.appChatService.defaultProfileImage; + this.defaultProfileImageMulti = this.appChatService.defaultProfileImageMulti; } ngOnInit(): void { this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(ConfigurationSelector.versionInfo2Response) - ) - .subscribe((versionInfo2Res) => { - this.versionInfo2Res = versionInfo2Res; - }); - - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; if ( - (!!this.userSeq && this.userSeq === loginRes.userSeq) || + (!!this.userSeq && this.userSeq === String(user.info.seq)) || !this.userSeq ) { this.isMe = true; @@ -154,14 +145,15 @@ export class InfoSectionComponent implements OnInit, OnDestroy { ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } getInfoByUser(userSeq: string | number): void { // is Me check - if (!!userSeq && !!this.loginRes && !!this.loginRes.userInfo) { - if (this.loginRes.userSeq + '' === userSeq + '') { + if (!!userSeq && !!this.user && !!this.user.info.seq) { + if (String(this.user.info.seq) === String(userSeq)) { this.isMe = true; // Allim room list setting @@ -212,40 +204,10 @@ export class InfoSectionComponent implements OnInit, OnDestroy { this.changeDetectorRef.detectChanges(); } - getRoomName(roomInfo: RoomInfo): string { - if (!roomInfo) { - return ''; - } - - const roomName = this.appChatService.getRoomName( - this.organizationTranslate, - this.loginRes, - roomInfo, - this.roomUsersDictionary, - this.roomUsersShortDictionary - ); - - return roomName; - } - - getRoomProfileImage(roomInfo: RoomInfo): string { - let roomImage = ''; - if (!!roomInfo) { - roomImage = this.appChatService.getRoomProfileImage( - roomInfo, - this.loginRes, - this.roomUsersDictionary, - this.roomUsersShortDictionary - ); - } - - return roomImage; - } - onClickRoomItem(event: MouseEvent, roomInfo: RoomInfo): void { event.preventDefault(); event.stopPropagation(); - console.log('OPEN CHAT ROOM / Group / Main'); + this.appChatService.openRoombyRoomId(roomInfo.roomId); } } diff --git a/src/app/sections/group/components/list.section.component.html b/src/app/sections/group/components/list.section.component.html index 3e6f0c1..81ad874 100644 --- a/src/app/sections/group/components/list.section.component.html +++ b/src/app/sections/group/components/list.section.component.html @@ -1,20 +1,28 @@
    - + (groupDestroy)="onGroupDestroy($event)" + >
    -
    +
    diff --git a/src/app/sections/group/components/list.section.component.scss b/src/app/sections/group/components/list.section.component.scss index 63a93c1..a9686d2 100644 --- a/src/app/sections/group/components/list.section.component.scss +++ b/src/app/sections/group/components/list.section.component.scss @@ -1,7 +1,11 @@ .list-container { + width: 100%; + height: 100%; } -.search-wrpper { - overflow: auto; - position: relative; - height: 350px; -} +// .search-wrpper { +// overflow-y: auto; +// overflow-x: hidden; +// position: relative; +// height: 100%; +// background-color: #fff; +// } diff --git a/src/app/sections/group/components/list.section.component.ts b/src/app/sections/group/components/list.section.component.ts index f966ed0..7dd5e56 100644 --- a/src/app/sections/group/components/list.section.component.ts +++ b/src/app/sections/group/components/list.section.component.ts @@ -10,30 +10,18 @@ import { Input, ViewChild, EventEmitter, - Output + Output, + ElementRef } from '@angular/core'; +import { Router } from '@angular/router'; + +import { MatDialog } from '@angular/material/dialog'; + import { Store, select } from '@ngrx/store'; -import { - VirtualScrollStrategy, - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; - -import { LoginResponse } from '@ucap/protocol-authentication'; import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; - -import { LogService } from '@ucap/ng-logger'; -import { ExpansionComponent as AppExpansionComponent } from '@app/ucap/group/components/expansion.component'; -import { SessionStorageService } from '@ucap/ng-web-storage'; -import { LoginSelector } from '@ucap/ng-store-authentication'; -import { GroupActions, BuddyActions } from '@ucap/ng-store-group'; -import { I18nService } from '@ucap/ng-i18n'; - -import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { QueryProtocolService } from '@ucap/ng-protocol-query'; +import { User } from '@ucap/protocol-info'; import { UserInfoSS, UserInfoF, @@ -42,32 +30,45 @@ import { } from '@ucap/protocol-query'; import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; -import { Router } from '@angular/router'; -import { MatDialog } from '@angular/material/dialog'; +import { LogService } from '@ucap/ng-logger'; +import { I18nService } from '@ucap/ng-i18n'; +import { SessionStorageService } from '@ucap/ng-web-storage'; +import { QueryProtocolService } from '@ucap/ng-protocol-query'; + +import { + PresenceActions, + PresenceSelector, + UserSelector +} from '@ucap/ng-store-organization'; + import { - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult, AlertDialogComponent, AlertDialogData, AlertDialogResult } from '@ucap/ng-ui'; + +import { Expansion01Component as AppExpansion01Component } from '@app/ucap/group/components/expansion-01.component'; +import { AppAuthenticationService } from '@app/services/app-authentication.service'; +import { SearchData } from '@app/ucap/organization/models/search-data'; +import { UserStore } from '@app/models/user-store'; +import { AppChatService } from '@app/services/app-chat.service'; +import { GroupManageType } from '@app/types'; +import { AppGroupService } from '@app/services/app-group.service'; +import { LoginSession } from '@app/models/login-session'; +import { GroupOpenInfo } from '@app/models/group-open-info'; + import { ManageDialogComponent, ManageDialogData, ManageDialogResult } from '../dialogs/manage.dialog.component'; -import { PresenceActions, PresenceSelector } from '@ucap/ng-store-organization'; -import { GroupUserDialaogType } from '@app/types'; -import { EditInlineInputDialogComponent } from '../dialogs/edit-inline-input.dialog.component'; import { EditUserDialogComponent, EditUserDialogData, EditUserDialogResult } from '../dialogs/edit-user.dialog.component'; -import { SearchData } from '@app/ucap/organization/models/search-data'; -import { UserStore } from '@app/models/user-store'; +import { SortViewType } from '@app/pages/group/types/sort-view.type'; export type UserInfoTypes = | UserInfo @@ -76,22 +77,10 @@ export type UserInfoTypes = | UserInfoDN | RoomUserInfo; -export class GroupVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(60, 150, 200); // (itemSize, minBufferPx, maxBufferPx) - } -} - @Component({ selector: 'app-sections-group-list', templateUrl: './list.section.component.html', styleUrls: ['./list.section.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: GroupVirtualScrollStrategy - } - ], changeDetection: ChangeDetectionStrategy.OnPush }) export class ListSectionComponent implements OnInit, OnDestroy { @@ -129,7 +118,7 @@ export class ListSectionComponent implements OnInit, OnDestroy { checkable = false; @Input() - showType: string; + showType: SortViewType; @Output() checkUser = new EventEmitter<{ @@ -137,14 +126,21 @@ export class ListSectionComponent implements OnInit, OnDestroy { userInfo: any; }>(); - @ViewChild('appGroupExpansion', { static: false }) - appGroupExpansion: AppExpansionComponent; + @Output() + clickUser = new EventEmitter(); - loginRes: LoginResponse; + @ViewChild('appGroupExpansion01', { static: false }) + appGroupExpansion: AppExpansion01Component; + + @ViewChild('nicknameInput', { static: false }) + nicknameInput: ElementRef; + + loginSession: LoginSession; + user: User; searchUserInfos: UserInfoSS[] = []; - private ngOnDestroySubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); private userStore: UserStore; constructor( @@ -156,24 +152,30 @@ export class ListSectionComponent implements OnInit, OnDestroy { private i18nService: I18nService, private logService: LogService, private queryProtocolService: QueryProtocolService, - public dialog: MatDialog + private dialog: MatDialog, + private appChatService: AppChatService, + private appGroupService: AppGroupService ) { this.userStore = this.appAuthenticationService.getUserStore(); - this.i18nService.setDefaultNamespace('group'); } ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + }); + this.appAuthenticationService + .getLoginSession$() + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((loginSession) => { + this.loginSession = loginSession; }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -187,10 +189,11 @@ export class ListSectionComponent implements OnInit, OnDestroy { companyCode: searchData.companyCode, searchRange: DeptSearchType.All, search: searchData.searchWord, - senderCompanyCode: this.loginRes.userInfo.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType + senderCompanyCode: this.user.info.companyCode, + senderEmployeeType: this.user.info.employeeType }) .pipe( + take(1), map((resObj) => { const userInfos = resObj.userInfos; @@ -228,25 +231,23 @@ export class ListSectionComponent implements OnInit, OnDestroy { } onClickUser(params: { event: MouseEvent; userInfo: UserInfo }) { - params.event.preventDefault(); - params.event.stopPropagation(); + if (!!params.event) { + params.event.preventDefault(); + params.event.stopPropagation(); + } - this.router.navigate( - [ - 'group', - { - outlets: { content: 'index' } - } - ], - { - queryParams: { id: params.userInfo.seq } - } - ); + this.clickUser.emit(params.userInfo); } onClickSearchUser(event: MouseEvent, userInfo: UserInfo) { this.onClickUser({ event, userInfo }); } + onGroupDestroy(groupOpenInfo: GroupOpenInfo) { + this.appAuthenticationService.setLoginSession({ + ...this.loginSession, + groupInfo: groupOpenInfo + }); + } onExpandMore() { this.appGroupExpansion.onExpandMore(); } @@ -265,28 +266,25 @@ export class ListSectionComponent implements OnInit, OnDestroy { switch (params.menuType) { case 'CHAT': { - this.dialog.open< - AlertDialogComponent, - AlertDialogData, - AlertDialogResult - >(AlertDialogComponent, { - data: { - title: '그룹대화', - html: '그룹대화' - } - }); + this.appChatService.newOpenRoom( + params.groupBuddyList.group.userSeqs, + false, + this.user + ); } break; case 'SEND_MESSAGE': { + return; + this.dialog.open< AlertDialogComponent, AlertDialogData, AlertDialogResult >(AlertDialogComponent, { data: { - title: '그룹쪽지', - html: '그룹쪽지' + title: this.i18nService.t('group:dialog.title.messageGroup'), + html: this.i18nService.t('group:dialog.title.messageGroup') } }); } @@ -303,10 +301,9 @@ export class ListSectionComponent implements OnInit, OnDestroy { ManageDialogData, ManageDialogResult >(ManageDialogComponent, { - width: '100%', - height: '100%', + panelClass: 'max-create-dialog', data: { - title: '그룹 멤버 관리', + title: this.i18nService.t('group:dialog.title.managementGroup'), groupBuddyList: params.groupBuddyList } }); @@ -314,32 +311,42 @@ export class ListSectionComponent implements OnInit, OnDestroy { .afterClosed() .pipe(take(1)) .subscribe((result) => { - if (!!result && !!result.type) { - this.manageGroup(result); + if (!!result && !!result.choice) { + this.appGroupService.addMemberToGroup( + result.group, + result.selelctUserList + ); } }); + dialogRef + .afterOpened() + .pipe(take(1)) + .subscribe(() => { + dialogRef.componentInstance.psUpdate(); + }); + } + break; + case 'COPY_MEMBER': + { + this.editUserDialog( + GroupManageType.Copy, + params.groupBuddyList.group, + params.groupBuddyList.buddyList + ); + } + break; + case 'MOVE_MEMBER': + { + this.editUserDialog( + GroupManageType.Move, + params.groupBuddyList.group, + params.groupBuddyList.buddyList + ); } break; case 'DELETE': { - const dialogRef = this.dialog.open< - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult - >(ConfirmDialogComponent, { - data: { - title: this.i18nService.t('moreMenu.group.removeGroup'), - html: this.i18nService.t('moreMenu.confirm.removeGroup') - } - }); - dialogRef - .afterClosed() - .pipe(take(1)) - .subscribe((result) => { - if (!!result && !!result.choice) { - GroupActions.del({ group: params.groupBuddyList.group }); - } - }); + this.appGroupService.removeGroup(params.groupBuddyList); } break; default: @@ -355,25 +362,21 @@ export class ListSectionComponent implements OnInit, OnDestroy { }) { switch (params.menuType) { case 'REGISTER_FAVORITE': - this.store.dispatch( - BuddyActions.update({ - req: { - seq: Number(params.userInfo.seq), - isFavorit: !params.userInfo.isFavorit - } - }) + this.appGroupService.updateBuddy( + params.userInfo, + !params.userInfo.isFavorit ); break; - case 'NICKNAME': + case 'REGISTER_NICKNAME': { this.editNickname(params.userInfo, params.rect); } break; case 'COPY_BUDDY': - this.editUserDialog('COPY_BUDDY', params.group, params.userInfo); + this.editUserDialog('COPY_BUDDY', params.group, [params.userInfo]); break; case 'MOVE_BUDDY': - this.editUserDialog('MOVE_BUDDY', params.group, params.userInfo); + this.editUserDialog('MOVE_BUDDY', params.group, [params.userInfo]); break; case 'REMOVE_BUDDY': { @@ -383,167 +386,116 @@ export class ListSectionComponent implements OnInit, OnDestroy { } } + onFloatingProfileMenu(params: { menuType: string; userInfo: UserInfoF }) { + switch (params.menuType) { + case 'CHAT': + this.appChatService.newOpenRoom( + [params.userInfo.seq as any], + false, + this.user + ); + break; + case 'MESSAGE': + break; + case 'MOBILE': + break; + case 'OFFICE': + break; + case 'VIDEO_CONFERENCE': + break; + } + } + private renameGroup(params: { menuType: string; groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; rect: any; }) { - const paramGroup = params.groupBuddyList.group; - - const dialogRef = this.dialog.open(EditInlineInputDialogComponent, { - width: params.rect.width, - height: params.rect.height, - panelClass: 'ucap-edit-group-name-dialog', - data: { - curValue: paramGroup.name, - placeholder: '그룹명을 입력하세요.', - left: params.rect.left, - top: params.rect.top - } - }); - - dialogRef - .afterClosed() - .pipe( - take(1), - map((result) => { - if ( - !!result && - result.choice && - result.curValue.localeCompare(paramGroup.name) !== 0 - ) { - this.store.dispatch( - GroupActions.update({ - req: { - groupSeq: paramGroup.seq, - groupName: result.curValue, - userSeqs: paramGroup.userSeqs - } - }) - ); - } - }), - catchError((err) => { - return of(err); - }) - ) - .subscribe(); + this.appGroupService.updateGroupName( + params.groupBuddyList.group, + params.rect + ); } - private manageGroup(result: ManageDialogResult) { + + private updateMemberByResult(result: EditUserDialogResult) { let targetGroup: GroupDetailData; let targetUserSeqs: string[]; - if (result.type === GroupUserDialaogType.Add) { - targetGroup = result.group; - targetUserSeqs = []; - result.selelctUserList.forEach((userInfo) => { - targetUserSeqs.push(userInfo.seq + ''); - }); - - this.store.dispatch( - GroupActions.updateMember({ targetGroup, targetUserSeqs }) + if (result.type === GroupManageType.Add) { + this.appGroupService.addMemberToGroup( + result.group, + result.selelctUserList ); - } else if (result.type === GroupUserDialaogType.Copy) { + } else if (result.type === GroupManageType.Copy) { if (!!result.selectGroupList && result.selectGroupList.length > 0) { - result.selectGroupList.forEach((g) => { - targetGroup = g; - targetUserSeqs = []; - - g.userSeqs.map((seq) => { - targetUserSeqs.push(seq); - }); - - if (targetUserSeqs.length === 0) { - result.selelctUserList.forEach((user) => { - targetUserSeqs.push(user.seq as any); - }); - } else { - result.selelctUserList.forEach((user) => { - const find = targetUserSeqs.indexOf(user.seq as any); - if (find < 0) { - targetUserSeqs.push(user.seq as any); - } - }); - } - - this.store.dispatch( - GroupActions.updateMember({ targetGroup, targetUserSeqs }) - ); + result.selectGroupList.map((g) => { + this.appGroupService.copyMemberToGroup(g, result.selelctUserList); }); } - } else if (result.type === GroupUserDialaogType.Move) { + } else if (result.type === GroupManageType.Move) { const fromGroup = result.group; let toGroup: GroupDetailData; - targetUserSeqs = []; if (!!result.selectGroupList && result.selectGroupList.length > 0) { - result.selectGroupList.forEach((g) => { + result.selectGroupList.forEach((g, idx) => { toGroup = g; targetUserSeqs = []; - result.selelctUserList.forEach((user) => { - targetUserSeqs.push(user.seq as any); - }); - - this.store.dispatch( - GroupActions.moveMember({ - fromGroup, - toGroup, - targetUserSeq: targetUserSeqs - }) - ); + if (!!result.selelctUserList && result.selelctUserList.length > 0) { + if (idx === 0) { + this.appGroupService.moveMemberToGroup( + fromGroup, + toGroup, + result.selelctUserList + ); + } else { + this.appGroupService.copyMemberToGroup( + toGroup, + result.selelctUserList + ); + } + } }); } - } else if (result.type === GroupUserDialaogType.Create) { - targetUserSeqs = []; - result.selelctUserList.forEach((userInfo) => { - targetUserSeqs.push(userInfo.seq + ''); - }); - - this.store.dispatch( - GroupActions.create({ - groupName: result.groupName, - targetUserSeqs - }) + } else if (result.type === GroupManageType.Create) { + this.appGroupService.createGroup( + result.groupName, + result.selelctUserList ); } } - getStatusBulkInfo(buddy: UserInfoTypes) { - return this.store.pipe( - select(PresenceSelector.selectEntitiesStatusBulkInfo), - map((statusBulkInfo) => - !!statusBulkInfo ? statusBulkInfo[buddy.seq] : undefined - ) - ); - } - private editUserDialog( type: string, group: GroupDetailData, - userInfo: UserInfoTypes + userInfos: UserInfoTypes[] ) { let title = ''; - let dialogType: GroupUserDialaogType; + let dialogType: GroupManageType; if (type === 'COPY_BUDDY') { - title = '멤버 복사'; - dialogType = GroupUserDialaogType.Copy; - } else { - title = '멤버 이동'; - dialogType = GroupUserDialaogType.Move; + dialogType = GroupManageType.Copy; + title = this.i18nService.t('group:contextMenu.copyBuddy'); + } else if (type === 'MOVE_BUDDY') { + dialogType = GroupManageType.Move; + title = this.i18nService.t('group:contextMenu.moveBuddy'); + } else if (type === GroupManageType.Copy) { + dialogType = GroupManageType.Copy; + title = this.i18nService.t('group:dialog.title.copyGroup'); + } else if (type === GroupManageType.Move) { + dialogType = GroupManageType.Move; + title = this.i18nService.t('group:dialog.title.moveGroup'); } const dialogRef = this.dialog.open< EditUserDialogComponent, EditUserDialogData, EditUserDialogResult >(EditUserDialogComponent, { - width: '100%', - height: '100%', + panelClass: 'max-create-dialog', data: { title, type: dialogType, group, - userInfo + userInfos } }); dialogRef @@ -551,74 +503,7 @@ export class ListSectionComponent implements OnInit, OnDestroy { .pipe( take(1), map((result: EditUserDialogResult) => { - let targetGroup: GroupDetailData; - let targetUserSeqs: string[]; - if (result.type === GroupUserDialaogType.Add) { - targetGroup = result.group; - targetUserSeqs = []; - result.selelctUserList.forEach((u) => { - targetUserSeqs.push(u.seq + ''); - }); - this.store.dispatch( - GroupActions.updateMember({ targetGroup, targetUserSeqs }) - ); - } else if (result.type === GroupUserDialaogType.Copy) { - if (!!result.selectGroupList && result.selectGroupList.length > 0) { - result.selectGroupList.forEach((g) => { - targetGroup = g; - targetUserSeqs = []; - g.userSeqs.map((seq) => { - targetUserSeqs.push(seq); - }); - if (targetUserSeqs.length === 0) { - result.selelctUserList.forEach((user) => { - targetUserSeqs.push(user.seq as any); - }); - } else { - result.selelctUserList.forEach((user) => { - const find = targetUserSeqs.indexOf(user.seq as any); - if (find < 0) { - targetUserSeqs.push(user.seq as any); - } - }); - } - this.store.dispatch( - GroupActions.updateMember({ targetGroup, targetUserSeqs }) - ); - }); - } - } else if (result.type === GroupUserDialaogType.Move) { - const fromGroup = result.group; - let toGroup: GroupDetailData; - targetUserSeqs = []; - if (!!result.selectGroupList && result.selectGroupList.length > 0) { - result.selectGroupList.forEach((g) => { - toGroup = g; - targetUserSeqs = []; - result.selelctUserList.forEach((user) => { - targetUserSeqs.push(user.seq as any); - }); - this.store.dispatch( - GroupActions.moveMember({ - fromGroup, - toGroup, - targetUserSeq: targetUserSeqs - }) - ); - }); - } - } else if (result.type === GroupUserDialaogType.Create) { - targetUserSeqs = []; - result.selelctUserList.forEach((u) => { - targetUserSeqs.push(u.seq + ''); - }); - this.store.dispatch( - GroupActions.create({ - groupName: result.groupName, - targetUserSeqs - }) - ); - } + this.updateMemberByResult(result); }), catchError((err) => { return of(err); @@ -628,77 +513,17 @@ export class ListSectionComponent implements OnInit, OnDestroy { } private removeBuddy(userInfo: UserInfoF, group: GroupDetailData) { - const dialogRef = this.dialog.open< - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult - >(ConfirmDialogComponent, { - data: { - title: '', - html: this.i18nService.t('label.confirmRemoveBuddy') - } - }); - dialogRef - .afterClosed() - .pipe( - take(1), - map((result) => { - if (!!result && result.choice) { - const trgtUserSeq = group.userSeqs.filter( - (user) => user + '' !== userInfo.seq + '' - ); - - this.store.dispatch( - GroupActions.updateMember({ - targetGroup: group, - targetUserSeqs: trgtUserSeq - }) - ); - } - }), - catchError((err) => { - return of(err); - }) - ) - .subscribe(); + this.appGroupService.removeMemberToGroup( + this.i18nService.t('group:dialog.removeBuddyConfirm', { + targetMember: `${userInfo.name}` + }), + [userInfo], + group + ); } private editNickname(userInfo: UserInfoF, rect: any) { - const dialogRef = this.dialog.open(EditInlineInputDialogComponent, { - width: rect.width - 30 + '', - height: rect.height, - panelClass: 'ucap-edit-group-name-dialog', - data: { - curValue: userInfo.nickName, - placeholder: '닉네임을 설정하세요.', - left: rect.left + 70, - top: rect.top - } - }); - - dialogRef - .afterClosed() - .pipe( - take(1), - map((result) => { - if ( - !!result && - result.choice && - result.curValue.localeCompare(userInfo.nickName) !== 0 - ) { - this.store.dispatch( - BuddyActions.nickname({ - req: { - userSeq: Number(userInfo.seq), - nickname: result.curValue - } - }) - ); - } - }), - catchError((err) => { - return of(err); - }) - ) - .subscribe(); + this.appGroupService.updateNickname(userInfo, undefined, rect); } + + onChangeNickname(nick: string) {} } diff --git a/src/app/sections/group/components/list.section.strategy.ts b/src/app/sections/group/components/list.section.strategy.ts deleted file mode 100644 index cb565a2..0000000 --- a/src/app/sections/group/components/list.section.strategy.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Observable, Subject } from 'rxjs'; - -import { - VirtualScrollStrategy, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; -import { distinctUntilChanged } from 'rxjs/operators'; - -export class GroupVirtualScrollStrategy implements VirtualScrollStrategy { - scrolledIndexChange: Observable; - - private indexSubject = new Subject(); - private viewport: CdkVirtualScrollViewport | null = null; - - constructor() { - this.scrolledIndexChange = this.indexSubject.pipe(distinctUntilChanged()); - } - - attach(viewport: CdkVirtualScrollViewport): void { - this.viewport = viewport; - } - detach(): void { - this.indexSubject.complete(); - this.viewport = null; - } - onContentScrolled(): void {} - onDataLengthChanged(): void {} - onContentRendered(): void {} - onRenderedOffsetChanged(): void {} - scrollToIndex(index: number, behavior: ScrollBehavior): void {} -} diff --git a/src/app/sections/group/components/profile.section.component.ts b/src/app/sections/group/components/profile.section.component.ts index ec3bd62..e63b0e9 100644 --- a/src/app/sections/group/components/profile.section.component.ts +++ b/src/app/sections/group/components/profile.section.component.ts @@ -1,3 +1,6 @@ +import { Subject } from 'rxjs'; +import { takeUntil, take, map } from 'rxjs/operators'; + import { Component, OnInit, @@ -7,18 +10,15 @@ import { Input } from '@angular/core'; -import { AppKey } from '@app/types/app-key.type'; -import { LoginSession } from '@app/models/login-session'; -import { Subject } from 'rxjs'; import { Store, select } from '@ngrx/store'; -import { takeUntil, take, map } from 'rxjs/operators'; -import { - LoginSelector, - AuthorizationSelector -} from '@ucap/ng-store-authentication'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { QueryProtocolService } from '@ucap/ng-protocol-query'; + import { UserInfoSS, AuthResponse } from '@ucap/protocol-query'; +import { User } from '@ucap/protocol-info'; + +import { QueryProtocolService } from '@ucap/ng-protocol-query'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { AuthorizationSelector } from '@ucap/ng-store-authentication'; @Component({ selector: 'app-sections-group-profile', @@ -39,13 +39,13 @@ export class ProfileSectionComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _userSeq: string; - loginRes: LoginResponse; + user: User; authRes: AuthResponse; isMe = false; profileUserInfo: UserInfoSS; - private ngOnDestroySubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); constructor( private store: Store, @@ -55,16 +55,16 @@ export class ProfileSectionComponent implements OnInit, OnDestroy { ngOnInit(): void { this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; - if (!!loginRes) { - const seq = !!this.userSeq ? this.userSeq : loginRes.userSeq; + if (!!user) { + const seq = !!this.userSeq ? this.userSeq : String(user.info.seq); this.getUserInfo(seq); } - if (!!this.userSeq && this.userSeq === loginRes.userSeq) { + if (!!this.userSeq && this.userSeq === String(user.info.seq)) { this.isMe = true; } else { this.isMe = false; @@ -83,23 +83,24 @@ export class ProfileSectionComponent implements OnInit, OnDestroy { ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } getUserInfo(userSeq: string | number): void { - if (!!userSeq && !!this.loginRes && !!this.loginRes.userInfo) { + if (!!userSeq && !!this.user && !!this.user.info) { this.queryProtocolService .dataUser({ divCd: 'OPENPROF', seq: Number(userSeq + ''), - senderCompanyCode: this.loginRes.userInfo.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType + senderCompanyCode: this.user.info.companyCode, + senderEmployeeType: this.user.info.employeeType }) .pipe( take(1), map((res) => { - if (this.loginRes.userSeq + '' === userSeq + '') { + if (String(this.user.info.seq) === String(userSeq)) { this.isMe = true; } else { this.isMe = false; diff --git a/src/app/sections/group/components/search.section.component.html b/src/app/sections/group/components/search.section.component.html deleted file mode 100644 index bf0c3f5..0000000 --- a/src/app/sections/group/components/search.section.component.html +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/src/app/sections/group/components/search.section.component.scss b/src/app/sections/group/components/search.section.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/sections/group/components/search.section.component.ts b/src/app/sections/group/components/search.section.component.ts deleted file mode 100644 index fe5dca7..0000000 --- a/src/app/sections/group/components/search.section.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - Output, - EventEmitter, - ChangeDetectionStrategy -} from '@angular/core'; - -import { LogService } from '@ucap/ng-logger'; -import { I18nService } from '@ucap/ng-i18n'; - -@Component({ - selector: 'app-sections-group-search', - templateUrl: './search.section.component.html', - styleUrls: ['./search.section.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class SearchSectionComponent implements OnInit, OnDestroy { - @Output() - keyDownEnter = new EventEmitter<{ - companyCode: string; - searchWord: string; - }>(); - - @Output() - searchCancel = new EventEmitter(); - - constructor( - private logService: LogService, - private i18nService: I18nService - ) {} - - ngOnInit(): void {} - - ngOnDestroy(): void {} - - onKeyDownEnter(params: { companyCode: string; searchWord: string }) { - this.keyDownEnter.emit(params); - } - onClickCancel() { - this.searchCancel.emit(); - } -} diff --git a/src/app/sections/group/components/select-group.section.component.html b/src/app/sections/group/components/select-group.section.component.html index 69d8753..fa0eb47 100644 --- a/src/app/sections/group/components/select-group.section.component.html +++ b/src/app/sections/group/components/select-group.section.component.html @@ -1,70 +1,85 @@ -
    -
    - -
    - - +
    + + + + +
    +
    +
    +
    + + {{ + 'group:label.addNewGroup' | ucapI18n + }} +
    +
    + + +
    +
    - - -
    -
    - +
    + {{ 'group:label.existingGroup' | ucapI18n }} + - - {{ input.value?.length || 0 }}/20 - - - - - - - - - - - -
    - 기존 그룹 지정 -
    -
    -
    - {{ group.name }} -
    - -
    + +
    +
    +
    +
    + {{ group.name }} +
    +
    -
    - +
    + +
    +
    + {{ 'group:label.searchResult' | ucapI18n }} + {{ searchUserInfos.length }} + + +
    +
    + + +
    +
    diff --git a/src/app/sections/group/components/select-group.section.component.scss b/src/app/sections/group/components/select-group.section.component.scss index 8a387b9..7135881 100644 --- a/src/app/sections/group/components/select-group.section.component.scss +++ b/src/app/sections/group/components/select-group.section.component.scss @@ -1,2 +1,79 @@ -.profile-container { +.ucap-dialog-select-group-container { + .ucap-dialog-select-group-contnet { + display: flex; + flex-direction: column; + height: calc(100% - 50px); + .ucap-dialog-app-group-name-input { + display: flex; + flex-direction: row; + width: 100%; + height: 60px; + margin-bottom: 20px; + .new-group-add { + display: inline-flex; + align-items: center; + width: 100%; + .sub-title { + padding: 0 10px 0 0; + display: inline-flex; + align-items: center; + mat-icon { + margin-right: 4px; + } + } + } + .group-name-input { + flex: 1 1 auto; + } + } + .ucap-dialog-group-list-container { + overflow: hidden; + .sub-title { + height: 40px; + display: flex; + flex-direction: row; + align-items: center; + border-bottom: 1px solid #999999; + mat-checkbox { + margin-left: auto; + padding: 0 16px 0 10px; + } + } + .group-list-container { + height: calc(100% - 40px); + overflow-y: auto; + &-scrollbar { + width: 100%; + height: 100%; + } + .group-list-item { + width: 100%; + height: 50px; + display: flex; + flex-direction: row; + align-items: center; + border-bottom: 1px solid #ccc; + .group-name { + padding-left: 16px; + display: block; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + white-space: nowrap; + width: calc(100% - 44px); + } + .checkbox-area { + display: inline-flex; + margin-left: auto; + padding: 0 16px 0 10px; + } + } + } + } + .sub-title { + font-size: 14px; + font-weight: bold; + color: #474244; + } + } } diff --git a/src/app/sections/group/components/select-group.section.component.ts b/src/app/sections/group/components/select-group.section.component.ts index c85021e..3f15902 100644 --- a/src/app/sections/group/components/select-group.section.component.ts +++ b/src/app/sections/group/components/select-group.section.component.ts @@ -1,43 +1,38 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + import { Component, OnInit, OnDestroy, + AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, - EventEmitter + EventEmitter, + ViewChild } from '@angular/core'; -import { Subject, of } from 'rxjs'; -import { Store, select } from '@ngrx/store'; -import { takeUntil, take, map, catchError } from 'rxjs/operators'; -import { - LoginSelector, - AuthorizationSelector -} from '@ucap/ng-store-authentication'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { QueryProtocolService } from '@ucap/ng-protocol-query'; -import { - UserInfoSS, - AuthResponse, - DeptSearchType, - UserInfoF, - UserInfoDN -} from '@ucap/protocol-query'; -import { GroupSelector } from '@ucap/ng-store-group'; -import { GroupDetailData, UserInfo } from '@ucap/protocol-sync'; -import { PresenceActions } from '@ucap/ng-store-organization'; -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; -import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; import { MatDialog } from '@angular/material/dialog'; -import { - AlertDialogComponent, - AlertDialogData, - AlertDialogResult -} from '@ucap/ng-ui'; -import { MatCheckbox } from '@angular/material/checkbox'; +import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox'; + +import { Store, select } from '@ngrx/store'; + +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; +import { GroupDetailData, UserInfo } from '@ucap/protocol-sync'; +import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; + +import { I18nService } from '@ucap/ng-i18n'; + +import { GroupSelector } from '@ucap/ng-store-group'; + import { SearchData } from '@app/ucap/organization/models/search-data'; +import { ProfileListComponent as AppGroupProfileListComponent } from '@app/ucap/group/components/profile-list.component'; +import { + PerfectScrollbarDirective, + PerfectScrollbarComponent +} from 'ngx-perfect-scrollbar'; export type UserInfoTypes = | UserInfo @@ -53,7 +48,8 @@ export type UserInfoTypes = changeDetection: ChangeDetectionStrategy.OnPush }) -export class SelectGroupSectionComponent implements OnInit, OnDestroy { +export class SelectGroupSectionComponent + implements OnInit, OnDestroy, AfterViewInit { @Input() isMemberMove: boolean; @@ -63,23 +59,69 @@ export class SelectGroupSectionComponent implements OnInit, OnDestroy { @Input() checkable = false; + @Input() + searchable = true; + @Input() curGroup: GroupDetailData; + @Input() + set selectedUserList(userList: UserInfoTypes[]) { + this._selectedUserList = userList; + + this._allCheckedBySearchUser(); + } + get selectedUserList() { + return this._selectedUserList; + } + // tslint:disable-next-line: variable-name + _selectedUserList: UserInfoTypes[]; + + @Input() + selectedGroupList: GroupDetailData[] = []; + + @Input() + groupName: string; + @Output() - changeUserList: EventEmitter<{ + changeUserList: EventEmitter< + { + checked: boolean; + userInfo: UserInfoSS; + }[] + > = new EventEmitter(); + + @Output() + changeGroupList: EventEmitter<{ checked: boolean; - userInfo: UserInfoSS; + group: GroupDetailData; }> = new EventEmitter(); @Output() - changeGroupList: EventEmitter = new EventEmitter(); + changeGroupName: EventEmitter<{ + invalid: boolean; + groupName: string; + }> = new EventEmitter(); - @Output() - changeGroupName: EventEmitter = new EventEmitter(); + @ViewChild('groupProfileList', { static: false }) + groupProfileList: AppGroupProfileListComponent; + + @ViewChild('checkboxAllGroup', { static: false }) + checkboxAllGroup: MatCheckbox; + + @ViewChild('checkboxAllSearch', { static: false }) + checkboxAllSearch: MatCheckbox; + + @ViewChild(PerfectScrollbarDirective, { static: false }) + psDirectiveRef: PerfectScrollbarDirective; set companySearchData(searchData: SearchData) { - this._companySearchData = searchData; + if (!!searchData && searchData.searchWord !== '') { + this._companySearchData = { ...searchData, bySearch: true }; + } else { + this._companySearchData = { ...searchData, bySearch: false }; + } + this.onChangedCompanySearch(); } get companySearchData() { @@ -88,139 +130,182 @@ export class SelectGroupSectionComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _companySearchData: SearchData; - private ngOnDestroySubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); constructor( private store: Store, - private queryProtocolService: QueryProtocolService, - private changeDetectorRef: ChangeDetectorRef, - private formBuilder: FormBuilder, - public dialog: MatDialog + private dialog: MatDialog, + private i18nService: I18nService ) {} - loginRes: LoginResponse; isSearch = false; searchWord: string; searchUserInfos: UserInfoSS[] = []; groupList: GroupDetailData[]; - selectedUserList: UserInfoTypes[] = []; - selectedGroupList: GroupDetailData[] = []; - inputForm: FormGroup; - groupChecked = false; - groupName: string; + groupChecked = false; ngOnInit(): void { - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; - }); - this.store .pipe(takeUntil(this.ngOnDestroySubject), select(GroupSelector.groups)) .subscribe((groups) => { - this.groupList = groups; + let defaultGroup: GroupDetailData; + const buddyGroup: GroupDetailData[] = []; + const tempOrder: GroupDetailData[] = []; + + groups.forEach((group) => { + if (0 === group.seq) { + defaultGroup = group; + } else { + if (!!this.curGroup && this.curGroup.seq === group.seq) { + // ignore.. + } else { + buddyGroup.push(group); + } + } + }); + + tempOrder.push( + ...buddyGroup.sort((a, b) => + a.name < b.name ? -1 : a.name > b.name ? 1 : 0 + ) + ); + + if (!!defaultGroup) { + tempOrder.push(defaultGroup); + } + + this.groupList = tempOrder; }); - this.inputForm = this.formBuilder.group({ - groupName: [ - this.groupName, - [ - // Validators.required - // StringUtil.includes(, CharactorType.Special), - // this.checkBanWords(), - // this.checkSameName() - ] - ] - }); + this._allCheckedBySearchUser(); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } - onKeyupGroupName() { - this.inputForm.get('groupName').markAsTouched(); - this.changeGroupName.emit(this.inputForm.get('groupName').value); + ngAfterViewInit() { + if (!!this.psDirectiveRef) { + this.psDirectiveRef.update(); + } } - onCheckForGroup(checbox: MatCheckbox, group: GroupDetailData) { - if ( - this.isMemberMove && - !!this.selectedGroupList && - this.selectedGroupList.length > 0 && - this.selectedGroupList[0].seq !== group.seq - ) { - this.dialog.open< - AlertDialogComponent, - AlertDialogData, - AlertDialogResult - >(AlertDialogComponent, { - data: { - title: '멤버이동', - html: '멤버이동은 그룹 여러개를 선택할 수 없습니다.' - } - }); + onCheckForGroup(checkbox: MatCheckbox, group: GroupDetailData) { + const findGroup = this.selectedGroupList.filter( + (selectGroup) => selectGroup.seq === group.seq + ); - checbox.checked = false; - return; - } - if ( - this.selectedGroupList.filter((g) => g.seq === group.seq).length === 0 - ) { - this.selectedGroupList = [...this.selectedGroupList, group]; - } else { + if (!!findGroup && findGroup.length > 0 && !checkbox.checked) { this.selectedGroupList = this.selectedGroupList.filter( - (g) => g.seq !== group.seq + (u) => u.seq !== findGroup[0].seq ); + } else if (!!findGroup && findGroup.length === 0 && checkbox.checked) { + this.selectedGroupList = [...this.selectedGroupList, group]; } - this.changeGroupList.emit(this.selectedGroupList); + if (this.selectedGroupList.length === this.groupList.length) { + this.checkboxAllGroup.checked = true; + } else { + this.checkboxAllGroup.checked = false; + } + this.changeGroupList.emit({ checked: checkbox.checked, group }); } - // onCheckForUser(params: { isChecked: boolean; userInfo: UserInfoTypes }) { - // if ( - // this.selectedUserList.filter((user) => user.seq === params.userInfo.seq) - // .length === 0 - // ) { - // this.selectedUserList = [...this.selectedUserList, params.userInfo]; - // } else { - // this.selectedUserList = this.selectedUserList.filter( - // (item) => item.seq !== params.userInfo.seq - // ); - // } + onToggleCheck(datas: { checked: boolean; userInfo: UserInfoSS }[]) { + this.changeUserList.emit(datas); + } - // this.changeUserList.emit(this.selectedUserList); - // } - - onToggleCheck(data: { checked: boolean; userInfo: UserInfoSS }) { - this.changeUserList.emit(data); + onSearched(users: UserInfoSS[]) { + this.searchUserInfos = users; + this._allCheckedBySearchUser(); } onChangedCompanySearch() { - this.isSearch = true; + if (!!this.companySearchData && this.companySearchData.bySearch) { + this.isSearch = true; + } } onCanceled() { this.isSearch = false; + this.companySearchData = { ...this.companySearchData, searchWord: '' }; } - getCheckedUser(userInfo: UserInfoTypes) { - if (!!this.selectedUserList && this.selectedUserList.length > 0) { + /** 개별 그룹 체크여부 */ + getCheckedGroup(group: GroupDetailData) { + if (!!this.selectedGroupList && this.selectedGroupList.length > 0) { return ( - this.selectedUserList.filter((item) => item.seq === userInfo.seq) - .length > 0 + this.selectedGroupList.filter((item) => item.seq === group.seq).length > + 0 ); } + return false; } + checkVisible(group: GroupDetailData): boolean { if (!!this.curGroup && this.curGroup.seq === group.seq) { return false; } return true; } + + onChangeGroupName(data: { invalid: boolean; groupName: string }) { + this.groupName = data.groupName; + this.changeGroupName.emit(data); + } + + onAllCheckedGroup(event: MatCheckboxChange) { + if (event.checked) { + this.groupList.map((group) => { + this.selectedGroupList.push(group); + this.changeGroupList.emit({ checked: true, group }); + }); + } else { + this.selectedGroupList = []; + this.groupList.map((group) => + this.changeGroupList.emit({ checked: false, group }) + ); + } + } + onAllCheckedSearch(event: MatCheckboxChange) { + if (event.checked) { + this.groupProfileList.checkAll(); + } else { + this.groupProfileList.uncheckAll(); + } + } + + private _allCheckedBySearchUser() { + if ( + !!this.searchUserInfos && + this.searchUserInfos.length > 0 && + !!this.selectedUserList && + this.selectedUserList.length > 0 + ) { + const tempList = []; + + this.searchUserInfos.map((searchUser) => { + this.selectedUserList.every((selectUser) => { + if (searchUser.seq === selectUser.seq) { + tempList.push(searchUser); + return false; + } + return true; + }); + }); + + if (tempList.length === this.searchUserInfos.length) { + this.checkboxAllSearch.checked = true; + } else { + this.checkboxAllSearch.checked = false; + } + } else if (!!this.checkboxAllSearch) { + this.checkboxAllSearch.checked = false; + } + } } diff --git a/src/app/sections/group/components/select-user.section.component.html b/src/app/sections/group/components/select-user.section.component.html index 0cf34fb..3a95b9e 100644 --- a/src/app/sections/group/components/select-user.section.component.html +++ b/src/app/sections/group/components/select-user.section.component.html @@ -1,73 +1,99 @@
    -
    +
    -
    + -
    - +
    + - -

    그룹

    +

    + {{ 'group:label.group' | ucapI18n }} +

    -
    -
    - +
    + + class="select-user-tap-group-expansion" + >
    -
    + - -

    조직도

    +

    + {{ 'group:label.organization' | ucapI18n }} +

    -
    - -
    - - - > - + +
    + +
    -
    - -
    -
    +
    -
    - + +
    +
    + {{ 'group:label.searchResult' | ucapI18n }} + {{ searchedUserInfosLength }} + + +
    +
    + + + +
    +
    diff --git a/src/app/sections/group/components/select-user.section.component.scss b/src/app/sections/group/components/select-user.section.component.scss index 3d4537a..37ef5b2 100644 --- a/src/app/sections/group/components/select-user.section.component.scss +++ b/src/app/sections/group/components/select-user.section.component.scss @@ -1,12 +1,22 @@ -.container { +.select-user-section-container { overflow: hidden; - .tap-container { - height: 300px; + + .select-user-section-search { + padding: 0 0 10px; + } + .select-user-section-content { + width: 100%; + height: calc(100% - 50px); + + .tap-container { + height: 100%; + } } .organization-tree { width: 100%; height: calc(100% - 30px); padding-bottom: 10px; + display: none; } } diff --git a/src/app/sections/group/components/select-user.section.component.ts b/src/app/sections/group/components/select-user.section.component.ts index 877c80c..f0fb0fc 100644 --- a/src/app/sections/group/components/select-user.section.component.ts +++ b/src/app/sections/group/components/select-user.section.component.ts @@ -1,40 +1,30 @@ +import { Subject } from 'rxjs'; + import { Component, OnInit, OnDestroy, + AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Output, EventEmitter, - Input + Input, + ViewChild } from '@angular/core'; -import { Store, select } from '@ngrx/store'; -import { takeUntil, map, catchError } from 'rxjs/operators'; +import { MatCheckboxChange } from '@angular/material/checkbox'; -import { Subject, combineLatest, of } from 'rxjs'; -import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { SelectUserDialogType } from '@app/types'; -import { QueryProtocolService } from '@ucap/ng-protocol-query'; +import { Store } from '@ngrx/store'; import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; -import { - UserInfoSS, - UserInfoF, - UserInfoDN, - DeptSearchType -} from '@ucap/protocol-query'; -import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { LoginSelector } from '@ucap/ng-store-authentication'; -import { SearchData } from '@app/ucap/organization/models/search-data'; +import { DeptInfo, UserInfoSS } from '@ucap/protocol-query'; -export type UserInfoTypes = - | UserInfo - | UserInfoSS - | UserInfoF - | UserInfoDN - | RoomUserInfo; +import { SearchData } from '@app/ucap/organization/models/search-data'; +import { ProfileListComponent as AppGroupProfileListComponent } from '@app/ucap/group/components/profile-list.component'; +import { SelectUserDialogType, UserInfoTypes } from '@app/types'; +import { ProfileNavigationListComponent } from '@app/ucap/organization/components/profile-navigation-list.component'; +import { Expansion02Component as AppExpansion02Component } from '@app/ucap/group/components/expansion-02.component'; @Component({ selector: 'app-group-select-user', @@ -42,36 +32,33 @@ export type UserInfoTypes = styleUrls: ['./select-user.section.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class SelectUserSectionComponent implements OnInit, OnDestroy { - breadcrumbs: any = [ - { - label: 'LGCNS' - }, - { - label: 'IT Helpdesk' - }, - { - label: 'Issue Log' - } - ]; - +export class SelectUserSectionComponent + implements OnInit, OnDestroy, AfterViewInit { @Input() isDialog = false; - @Input() - existUsers: UserInfoTypes[]; - - @Input() - isSelectionOff = true; - @Input() checkable = false; + @Input() + selectedUserList: UserInfoTypes[]; + + @Input() + fixedUserList: UserInfoTypes[]; + + @Input() + displayRootDepartment = false; + + @Input() + selectedGroupHeader: GroupDetailData; + @Output() - toggleCheckUser: EventEmitter<{ - checked: boolean; - userInfo: UserInfoSS; - }> = new EventEmitter(); + toggleCheckUser: EventEmitter< + { + checked: boolean; + userInfo: UserInfoTypes; + }[] + > = new EventEmitter(); @Output() toggleCheckGroup: EventEmitter<{ @@ -79,14 +66,21 @@ export class SelectUserSectionComponent implements OnInit, OnDestroy { groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; }> = new EventEmitter(); - @Output() - cancel = new EventEmitter(); + @ViewChild('groupDialogExpasion', { static: false }) + groupDialogExpasion: AppExpansion02Component; - @Output() - confirm = new EventEmitter(); + @ViewChild('groupProfileList', { static: false }) + groupProfileList: AppGroupProfileListComponent; + + @ViewChild('profileNavigationList', { static: false }) + profileNavigationList: ProfileNavigationListComponent; set companySearchData(searchData: SearchData) { - this._companySearchData = searchData; + if (!!searchData && searchData.searchWord !== '') { + this._companySearchData = { ...searchData, bySearch: true }; + } else { + this._companySearchData = { ...searchData, bySearch: false }; + } this.onChangedCompanySearch(); } @@ -97,41 +91,47 @@ export class SelectUserSectionComponent implements OnInit, OnDestroy { _companySearchData: SearchData; isSearch = false; - searchWord: string; - private ngOnDestroySubject = new Subject(); + isAllCheck: boolean; - @Input() - selectedUserList: UserInfoTypes[] = []; - searchUserInfos: UserInfoSS[] = []; + searchedUserInfos: UserInfoTypes[] = []; + searchedUserInfosLength: number; - loginRes: LoginResponse; + breadcrumbs: DeptInfo[]; + departmentInfoList: DeptInfo[] = []; + sameLevelDeptInfoList: DeptInfo[] = []; + memberSearchData: SearchData; SelectUserDialogType = SelectUserDialogType; + private ngOnDestroySubject: Subject = new Subject(); + constructor( private changeDetectorRef: ChangeDetectorRef, - private store: Store, - private appAuthenticationService: AppAuthenticationService, - private queryProtocolService: QueryProtocolService + private store: Store ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; - }); + if (!!this.selectedUserList && this.selectedUserList.length > 0) { + this.selectedUserList.map((user: UserInfoTypes) => + this.onToggleCheckUser([{ checked: true, userInfo: user }]) + ); + } } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } + ngAfterViewInit(): void {} + + psUpdate() { + this.groupDialogExpasion.psUpdate(); + } + onToggleCheckGroup(params: { isChecked: boolean; groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; @@ -139,25 +139,66 @@ export class SelectUserSectionComponent implements OnInit, OnDestroy { this.toggleCheckGroup.emit(params); } - onToggleCheckUser(data: { checked: boolean; userInfo: UserInfoSS }) { - this.toggleCheckUser.emit(data); - } - - getCheckedUser(userInfo: UserInfoTypes) { - if (!!this.selectedUserList && this.selectedUserList.length > 0) { - return ( - this.selectedUserList.filter((item) => item.seq === userInfo.seq) - .length > 0 - ); - } - return false; + onToggleCheckUser(datas: { checked: boolean; userInfo: UserInfoTypes }[]) { + this.toggleCheckUser.emit(datas); } onChangedCompanySearch() { - this.isSearch = true; + if (!!this.companySearchData && this.companySearchData.bySearch) { + this.isSearch = true; + } + this.changeDetectorRef.markForCheck(); } onCanceled() { this.isSearch = false; + this.companySearchData = { ...this.companySearchData, searchWord: '' }; + } + + onIsAllCheck(checked: boolean): void { + this.isAllCheck = checked; + this.changeDetectorRef.detectChanges(); + } + + onSearched(userInfo: UserInfoSS[]) { + this.searchedUserInfosLength = userInfo.length; + } + getAllCheckedItem(): boolean { + if (!!this.groupProfileList) { + const targetList = this.groupProfileList.userInfos; + if ( + !targetList || + targetList.length === 0 || + targetList.filter( + (item) => + !( + this.selectedUserList.filter((info) => info.seq === item.seq) + .length > 0 + ) + ).length > 0 + ) { + return false; + } else { + return true; + } + } + + return false; + } + + onAllChecked(event: MatCheckboxChange): void { + if (event.checked) { + this.groupProfileList.checkAll(); + } else { + this.groupProfileList.uncheckAll(); + } + } + + onChangedCheckProfileList( + datas: { checked: boolean; userInfo: UserInfoTypes }[] + ) { + if (!datas || 0 === datas.length) { + return; + } } } diff --git a/src/app/sections/group/dialogs/create.dialog.component.html b/src/app/sections/group/dialogs/create.dialog.component.html index f3b7f4f..d78d2ac 100644 --- a/src/app/sections/group/dialogs/create.dialog.component.html +++ b/src/app/sections/group/dialogs/create.dialog.component.html @@ -2,78 +2,95 @@
    - 그룹 생성 + {{ 'group:dialog.title.createGroup' | ucapI18n }} +
    +
    + {{ 'group:dialog.title.subTitleGroupInfo' | ucapI18n }} +
    +
    + {{ 'group:dialog.title.subTitleSelectMember' | ucapI18n }} +
    +
    +
    -
    - - - {{ input.value?.length || 0 }}/20 - - - - - - - - - -
    + +
    - - + +
    + +
    +
    + + +

    + {{ 'group:dialog.selectedMember' | ucapI18n }} +

    + ({{ selectedUserList.length }}) +
    +
    +
    - -
    - - -
    -
    - - +
    diff --git a/src/app/sections/group/dialogs/create.dialog.component.scss b/src/app/sections/group/dialogs/create.dialog.component.scss index cccbc78..b783a8a 100644 --- a/src/app/sections/group/dialogs/create.dialog.component.scss +++ b/src/app/sections/group/dialogs/create.dialog.component.scss @@ -1,3 +1,4 @@ +@import '~@ucap/lg-scss/mixins'; .dialog-container { width: 100%; height: 100%; @@ -5,5 +6,44 @@ .dialog-body { width: 100%; height: 100%; + .ucap-dialog-app-group-select-user { + width: 60%; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(xs) { + width: 100%; + height: 78%; + margin-bottom: 2%; + } + } + .ucap-dialog-organization-profile-selection { + position: relative; + width: 40%; + padding-left: $default-space; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(xs) { + width: 100%; + height: 20%; + padding: 0; + } + .ucap-organization-selected-list { + width: 100%; + height: 100%; + display: flex; + border: 1px solid #cccccc; + border-bottom: none; + overflow: auto; + } + } + } + .btn-box { + display: flex; + flex-direction: row; + justify-content: flex-end; + button { + margin-left: 4px; + border-radius: 3px; + } } } diff --git a/src/app/sections/group/dialogs/create.dialog.component.ts b/src/app/sections/group/dialogs/create.dialog.component.ts index bbcce68..bbd3ebf 100644 --- a/src/app/sections/group/dialogs/create.dialog.component.ts +++ b/src/app/sections/group/dialogs/create.dialog.component.ts @@ -7,10 +7,11 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Inject, - Input + Input, + ViewChild } from '@angular/core'; -import { Store } from '@ngrx/store'; +import { Store, select } from '@ngrx/store'; import { MatDialogRef, @@ -24,12 +25,16 @@ import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; import { MatStepper } from '@angular/material/stepper'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { I18nService } from '@ucap/ng-i18n'; -import { GroupActions } from '@ucap/ng-store-group'; +import { GroupActions, GroupSelector } from '@ucap/ng-store-group'; import { AlertDialogComponent, AlertDialogData, AlertDialogResult } from '@ucap/ng-ui'; +import { takeUntil } from 'rxjs/operators'; +import { AppGroupService } from '@app/services/app-group.service'; + +import { SelectUserSectionComponent } from '../components/select-user.section.component'; export type UserInfoTypes = | UserInfo @@ -50,14 +55,8 @@ export interface CreateDialogResult {} changeDetection: ChangeDetectionStrategy.OnPush }) export class CreateDialogComponent implements OnInit, OnDestroy { - @Input() - set groupName(g: string) { - this._groupName = g; - } - get groupName(): string { - return this._groupName; - } - _groupName: string; + @ViewChild('groupSelectUser', { static: false }) + groupSelectUser: SelectUserSectionComponent; constructor( public dialogRef: MatDialogRef, @@ -66,33 +65,31 @@ export class CreateDialogComponent implements OnInit, OnDestroy { private store: Store, private formBuilder: FormBuilder, private i18nService: I18nService, - public dialog: MatDialog + public dialog: MatDialog, + private appGroupService: AppGroupService ) {} private ngOnDestroySubject: Subject; + private groupName: string; + private defaultGroup: GroupDetailData; + currentStep = 0; - inputForm: FormGroup; + isDisable = true; selectedUserList: UserInfoTypes[] = []; ngOnInit(): void { this.ngOnDestroySubject = new Subject(); - - this.inputForm = this.formBuilder.group({ - groupName: [ - this.groupName, - [ - Validators.required - // StringUtil.includes(, CharactorType.Special), - // this.checkBanWords(), - // this.checkSameName() - ] - ] - }); + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(GroupSelector.groups)) + .subscribe((groups) => { + this.defaultGroup = groups.filter((group) => group.seq === 0)[0]; + }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -110,61 +107,136 @@ export class CreateDialogComponent implements OnInit, OnDestroy { this.dialogRef.close(); } onConfirm(stepper: MatStepper) { - const userSeqs: string[] = []; + let contents: string; + let isDefaultGroup = false; - this.selectedUserList.map((user) => userSeqs.push(user.seq.toString())); - const groupName = this.inputForm.get('groupName').value as string; + if (this.currentStep === 0) { + if ( + !this.groupName || + this.groupName.localeCompare('') === 0 || + this.groupName.trim().localeCompare('') === 0 + ) { + contents = this.i18nService.t('group:error.requireGroupName'); + } else if (this.isDisable) { + contents = this.i18nService.t('group:error.invalidGroupName'); + } + } else { + if ( + !this.groupName || + this.groupName.localeCompare('') === 0 || + this.groupName.trim().localeCompare('') === 0 + ) { + isDefaultGroup = true; + } + if (!!this.selectedUserList && this.selectedUserList.length === 0) { + contents = this.i18nService.t('group:error.notSelectedUser'); + } + } - if (!groupName || groupName.localeCompare('') === 0) { + if (!!contents && contents.localeCompare('') !== 0) { this.dialog.open< AlertDialogComponent, AlertDialogData, AlertDialogResult >(AlertDialogComponent, { + panelClass: 'min-create-dialog', data: { - title: this.i18nService.t('moreMenu.error.label'), - html: this.i18nService.t('moreMenu.error.requireName') + title: this.i18nService.t('group:error.title.default'), + html: contents } }); return; } - this.store.dispatch( - GroupActions.create({ - groupName, - targetUserSeqs: userSeqs - }) - ); + const userSeqs: string[] = []; + this.selectedUserList.map((user) => userSeqs.push(String(user.seq))); + + if (!isDefaultGroup) { + this.appGroupService.createGroup(this.groupName, this.selectedUserList); + } else { + this.appGroupService.addMemberToGroup( + this.defaultGroup, + this.selectedUserList + ); + } this.dialogRef.close(); } onCompleteConfirm(stepper: MatStepper) { this.currentStep++; stepper.next(); + this.groupSelectUser.psUpdate(); } - onKeyupGroupName() { - this.inputForm.get('groupName').markAsTouched(); + checkDisableConfirmBtn() { + if (!!this.groupName && this.groupName.trim().localeCompare('') === 0) { + return true; + } else if ( + this.isDisable && + !!this.groupName && + this.groupName.trim().localeCompare('') !== 0 + ) { + return true; + } + + return false; } + onChangeUserList(datas: { checked: boolean; userInfo: UserInfoSS }[]) { + if (!datas || 0 === datas.length) { + return; + } - onChangeUserList(data: { checked: boolean; userInfo: UserInfoSS }) { - const i = this.selectedUserList.findIndex( - (u) => u.seq === data.userInfo.seq - ); + const pushs: UserInfoSS[] = []; + const pops: UserInfoSS[] = []; - if (data.checked) { - if (-1 === i) { - this.selectedUserList = [...this.selectedUserList, data.userInfo]; - } - } else { - if (-1 < i) { - this.selectedUserList = this.selectedUserList.filter( - (u) => u.seq !== data.userInfo.seq - ); + datas.forEach((d) => { + const i = this.selectedUserList.findIndex( + (u) => String(u.seq) === String(d.userInfo.seq) + ); + if (d.checked) { + if (-1 === i) { + pushs.push(d.userInfo); + } + } else { + if (-1 < i) { + pops.push(d.userInfo); + } } + }); + + if (0 < pushs.length) { + this.selectedUserList = [...this.selectedUserList, ...pushs]; + } + + if (0 < pops.length) { + this.selectedUserList = this.selectedUserList.filter( + (u) => -1 === pops.findIndex((p) => String(p.seq) === String(u.seq)) + ); } } + // onChangeUserList(data: { checked: boolean; userInfo: UserInfoSS }) { + // const i = this.selectedUserList.findIndex( + // (u) => u.seq === data.userInfo.seq + // ); + + // if (data.checked) { + // if (-1 === i) { + // this.selectedUserList = [...this.selectedUserList, data.userInfo]; + // } + // } else { + // if (-1 < i) { + // this.selectedUserList = this.selectedUserList.filter( + // (u) => u.seq !== data.userInfo.seq + // ); + // } + // } + // } + + onChangeGroupName(data: { invalid: boolean; groupName: string }) { + this.isDisable = data.invalid; + this.groupName = data.groupName; + } onChangeGroupList(params: { isChecked: boolean; groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; @@ -172,8 +244,9 @@ export class CreateDialogComponent implements OnInit, OnDestroy { if (params.isChecked) { params.groupBuddyList.buddyList.forEach((item) => { if ( - this.selectedUserList.filter((user) => user.seq === item.seq) - .length === 0 + this.selectedUserList.filter( + (user) => String(user.seq) === String(item.seq) + ).length === 0 ) { this.selectedUserList = [...this.selectedUserList, item]; } @@ -181,20 +254,21 @@ export class CreateDialogComponent implements OnInit, OnDestroy { } else { this.selectedUserList = this.selectedUserList.filter( (item) => - params.groupBuddyList.buddyList.filter((del) => del.seq === item.seq) - .length === 0 + params.groupBuddyList.buddyList.filter( + (del) => String(del.seq) === String(item.seq) + ).length === 0 ); } } onRemovedProfileSelection(userInfo: UserInfo) { const i = this.selectedUserList.findIndex( - (u) => (u.seq as any) === (userInfo.seq as any) + (u) => String(u.seq) === String(userInfo.seq) ); if (-1 < i) { this.selectedUserList = this.selectedUserList.filter( - (u) => (u.seq as any) !== (userInfo.seq as any) + (u) => String(u.seq) !== String(userInfo.seq) ); } } diff --git a/src/app/sections/group/dialogs/edit-inline-input.dialog.component.html b/src/app/sections/group/dialogs/edit-inline-input.dialog.component.html index e657d53..bbfab18 100644 --- a/src/app/sections/group/dialogs/edit-inline-input.dialog.component.html +++ b/src/app/sections/group/dialogs/edit-inline-input.dialog.component.html @@ -13,8 +13,14 @@ #inlineInput type="text" [value]="data.curValue" + [maxLength]="data.maxLength" [placeholder]="data.placeholder" (click)="$event.stopPropagation()" - /> + (keydown.enter)="$event.stopPropagation(); onApply(inlineInput.value)" + /> + {{ inlineInput.value?.length || 0 }}/{{ data.maxLength }} +
    diff --git a/src/app/sections/group/dialogs/edit-inline-input.dialog.component.scss b/src/app/sections/group/dialogs/edit-inline-input.dialog.component.scss index 42e0cbf..d31c34a 100644 --- a/src/app/sections/group/dialogs/edit-inline-input.dialog.component.scss +++ b/src/app/sections/group/dialogs/edit-inline-input.dialog.component.scss @@ -2,13 +2,19 @@ width: 100%; height: 100%; overflow: hidden; + border-bottom: 1px solid #999; + padding-left: 10px; .ng-star-inserted { - float: left; + flex-grow: 1; } mat-dialog-container { padding: 0px !important; background: transparent !important; } - .ucap-edit-group-name-dialog { + .form-eidt { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; } } diff --git a/src/app/sections/group/dialogs/edit-inline-input.dialog.component.ts b/src/app/sections/group/dialogs/edit-inline-input.dialog.component.ts index 0581b16..63308f7 100644 --- a/src/app/sections/group/dialogs/edit-inline-input.dialog.component.ts +++ b/src/app/sections/group/dialogs/edit-inline-input.dialog.component.ts @@ -8,7 +8,7 @@ import { Inject } from '@angular/core'; -import { Store } from '@ngrx/store'; +import { Store, select } from '@ngrx/store'; import { MatDialogRef, @@ -24,12 +24,16 @@ import { AlertDialogData, AlertDialogResult } from '@ucap/ng-ui'; -import { take, map, catchError } from 'rxjs/operators'; +import { take, map, catchError, takeUntil } from 'rxjs/operators'; +import { AppService } from '@app/services/app.service'; +import { GroupSelector } from '@ucap/ng-store-group'; +import { GroupDetailData } from '@ucap/protocol-sync'; export interface EditInlineInputDialogData { - title: string; + type: string; curValue?: string; placeholder: string; + maxLength: number; left?: number; top?: number; } @@ -54,10 +58,12 @@ export class EditInlineInputDialogComponent implements OnInit, OnDestroy { private store: Store, private i18nService: I18nService, - public dialog: MatDialog + public dialog: MatDialog, + private appService: AppService ) {} private ngOnDestroySubject: Subject; + groupList: GroupDetailData[] = []; ngOnInit(): void { const matDialogConfig: MatDialogConfig = new MatDialogConfig(); @@ -70,10 +76,25 @@ export class EditInlineInputDialogComponent implements OnInit, OnDestroy { this.dialogRef.updatePosition(matDialogConfig.position); this.ngOnDestroySubject = new Subject(); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(GroupSelector.groups)) + .subscribe((groups) => { + this.groupList = groups; + }); + + if ( + !!this.data && + !!this.data.curValue && + this.data.curValue.trim() === '' + ) { + this.data.curValue = this.data.curValue.trim(); + } } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -83,23 +104,39 @@ export class EditInlineInputDialogComponent implements OnInit, OnDestroy { } onApply(inputValue: string) { + if (!!this.data && this.data.type.localeCompare('GROUP_NAME') === 0) { + const errMsg = this.appService.validateGroupName( + inputValue, + this.groupList + ); + + if (!!errMsg && errMsg !== '') { + return this._alertErr(errMsg); + } + } + this.doAction(true, inputValue); } doAction(choice: boolean, curValue?: string): void { if (!choice) { this.dialogRef.close({ choice: false }); + return; } - if (curValue.localeCompare('') === 0) { + this.dialogRef.close({ choice, curValue }); + } + + private _alertErr(msg: string) { + if (msg.localeCompare('') !== 0) { const dialogRef = this.dialog.open< AlertDialogComponent, AlertDialogData, AlertDialogResult >(AlertDialogComponent, { data: { - title: this.i18nService.t('moreMenu.error.label'), - html: this.i18nService.t('moreMenu.error.requireName') + title: this.i18nService.t('group:error.title.default'), + html: msg } }); dialogRef @@ -114,7 +151,5 @@ export class EditInlineInputDialogComponent implements OnInit, OnDestroy { .subscribe(); return; } - - this.dialogRef.close({ choice, curValue }); } } diff --git a/src/app/sections/group/dialogs/edit-user.dialog.component.html b/src/app/sections/group/dialogs/edit-user.dialog.component.html index bf356da..339ac64 100644 --- a/src/app/sections/group/dialogs/edit-user.dialog.component.html +++ b/src/app/sections/group/dialogs/edit-user.dialog.component.html @@ -2,34 +2,61 @@
    {{ data.title }}
    - -
    - - +
    +
    + +
    +
    + + +

    + {{ 'group:dialog.selectedMember' | ucapI18n }} +

    + ({{ selectedUserList.length }}) +
    +
    +
    -
    - - +
    diff --git a/src/app/sections/group/dialogs/edit-user.dialog.component.scss b/src/app/sections/group/dialogs/edit-user.dialog.component.scss index cccbc78..ce8549c 100644 --- a/src/app/sections/group/dialogs/edit-user.dialog.component.scss +++ b/src/app/sections/group/dialogs/edit-user.dialog.component.scss @@ -1,9 +1,59 @@ +@import '~@ucap/lg-scss/mixins'; .dialog-container { width: 100%; height: 100%; - .dialog-body { + .edit-user-dialog-container { width: 100%; height: 100%; + + .dialog-body { + width: 100%; + height: 100%; + + .edit-user-dialog-content { + display: flex; + flex-direction: row; + height: 100%; + @include screen(xs) { + flex-direction: column; + } + + .ucap-dialog-app-group-select-user { + width: 60%; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(xs) { + width: 100%; + height: 78%; + margin-bottom: 2%; + } + .ucap-dialog-app-group-select-user-list { + width: 100%; + height: 100%; + } + } + .ucap-dialog-organization-profile-selection { + position: relative; + width: 40%; + padding-left: $default-space; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(xs) { + width: 100%; + height: 20%; + padding: 0; + } + .ucap-organization-selected-list { + width: 100%; + height: 100%; + display: flex; + border: 1px solid #cccccc; + border-bottom: none; + overflow: auto; + } + } + } + } } } diff --git a/src/app/sections/group/dialogs/edit-user.dialog.component.ts b/src/app/sections/group/dialogs/edit-user.dialog.component.ts index cdfa0bb..e370a97 100644 --- a/src/app/sections/group/dialogs/edit-user.dialog.component.ts +++ b/src/app/sections/group/dialogs/edit-user.dialog.component.ts @@ -10,7 +10,7 @@ import { Input } from '@angular/core'; -import { Store } from '@ngrx/store'; +import { Store, select } from '@ngrx/store'; import { MatDialogRef, @@ -23,23 +23,20 @@ import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; import { I18nService } from '@ucap/ng-i18n'; -import { SelectUserDialogType, GroupUserDialaogType } from '@app/types'; - -export type UserInfoTypes = - | UserInfo - | UserInfoSS - | UserInfoF - | UserInfoDN - | RoomUserInfo; +import { SelectUserDialogType, GroupManageType } from '@app/types'; +import { UserInfoTypes } from '@app/types'; +import { AppService } from '@app/services/app.service'; +import { takeUntil } from 'rxjs/operators'; +import { GroupSelector } from '@ucap/ng-store-group'; export interface EditUserDialogData { title: string; - type: GroupUserDialaogType; - group: GroupDetailData; - userInfo: UserInfoTypes; + type: GroupManageType; + group?: GroupDetailData; + userInfos: UserInfoTypes[]; } export interface EditUserDialogResult { - type: GroupUserDialaogType; + type: GroupManageType; groupName: string; group: GroupDetailData; selelctUserList?: UserInfoTypes[]; @@ -56,28 +53,36 @@ export class EditUserDialogComponent implements OnInit, OnDestroy { constructor( public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: EditUserDialogData, + private appService: AppService, private changeDetectorRef: ChangeDetectorRef, private store: Store, private i18nService: I18nService, public dialog: MatDialog ) {} - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); - currentType: GroupUserDialaogType; + currentManageType: GroupManageType; selectedUserList: UserInfoTypes[] = []; selectedGroupList: GroupDetailData[] = []; groupName = ''; SelectUserDialogType = SelectUserDialogType; - ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); + groupList: GroupDetailData[] = []; - this.selectedUserList.push(this.data.userInfo); - this.currentType = this.data.type; + ngOnInit(): void { + this.selectedUserList = [...this.data.userInfos]; + this.currentManageType = this.data.type; + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(GroupSelector.groups)) + .subscribe((groups) => { + this.groupList = groups; + }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -88,62 +93,133 @@ export class EditUserDialogComponent implements OnInit, OnDestroy { onConfirm() { if (!!this.groupName && this.groupName.trim().localeCompare('') !== 0) { - this.currentType = GroupUserDialaogType.Create; + this.currentManageType = GroupManageType.Create; } else { this.groupName = undefined; } this.dialogRef.close({ - type: this.currentType, + type: this.currentManageType, groupName: this.groupName, group: this.data.group, selelctUserList: this.selectedUserList, selectGroupList: this.selectedGroupList }); } - onChangeUserList(data: { checked: boolean; userInfo: UserInfoSS }) { - const i = this.selectedUserList.findIndex( - (u) => u.seq === data.userInfo.seq + + onChangeSelectedUserList( + datas: { + checked: boolean; + userInfo: UserInfoSS; + }[] + ) { + if (!datas || 0 === datas.length) { + return; + } + + const pushs: UserInfoSS[] = []; + const pops: UserInfoSS[] = []; + + datas.forEach((d) => { + const i = this.selectedUserList.findIndex( + (u) => u.seq === d.userInfo.seq + ); + if (d.checked) { + if (-1 === i) { + pushs.push(d.userInfo); + } + } else { + if (-1 < i) { + pops.push(d.userInfo); + } + } + }); + + if (0 < pushs.length) { + this.selectedUserList = [...this.selectedUserList, ...pushs]; + } + + if (0 < pops.length) { + this.selectedUserList = this.selectedUserList.filter( + (u) => -1 === pops.findIndex((p) => p.seq === u.seq) + ); + } + } + + onChangeGroupList(data: { checked: boolean; group: GroupDetailData }) { + const i = this.selectedGroupList.findIndex( + (u) => String(u.seq) === String(data.group.seq) ); if (data.checked) { if (-1 === i) { - this.selectedUserList = [...this.selectedUserList, data.userInfo]; + this.selectedGroupList = [...this.selectedGroupList, data.group]; } } else { if (-1 < i) { - this.selectedUserList = this.selectedUserList.filter( - (u) => u.seq !== data.userInfo.seq + this.selectedGroupList = this.selectedGroupList.filter( + (u) => String(u.seq) !== String(data.group.seq) ); } } } - onChangeGroupList(selectedGroupList: GroupDetailData[]) { - this.selectedGroupList = selectedGroupList; + onChangeGroupName(data: { invalid: boolean; groupName: string }) { + this.groupName = data.groupName; } - onChangeGroupName(name: string) { - this.groupName = name; + checkDisableBtn(): boolean { + const errMsg = this.appService.validateGroupName( + this.groupName, + this.groupList + ); + + if ( + !!errMsg && + this.groupName === '' && + !!this.selectedGroupList && + this.selectedGroupList.length > 0 + ) { + return false; + } else if ( + !!errMsg && + !!this.selectedGroupList && + this.selectedGroupList.length === 0 + ) { + return true; + } else if (!!errMsg && this.groupName !== '') { + return true; + } + + return false; } onRemovedProfileSelection(userInfo: UserInfo) { + // if (userInfo.seq === this.data.userInfo.seq) { + // return; + // } const i = this.selectedUserList.findIndex( - (u) => (u.seq as any) === (userInfo.seq as any) + (u) => String(u.seq) === String(userInfo.seq) ); if (-1 < i) { this.selectedUserList = this.selectedUserList.filter( - (u) => (u.seq as any) !== (userInfo.seq as any) + (u) => String(u.seq) !== String(userInfo.seq) ); } } removableForSelection = (userInfo: UserInfo) => { + // if (String(userInfo.seq) === String(this.data.userInfo.seq)) { + // return false; + // } return true; }; colorForSelection = (userInfo: UserInfo) => { + // if (String(userInfo.seq) === String(this.data.userInfo.seq)) { + // return 'primary'; + // } return 'accent'; }; } diff --git a/src/app/sections/group/dialogs/manage.dialog.component.html b/src/app/sections/group/dialogs/manage.dialog.component.html index f356a73..33a28ff 100644 --- a/src/app/sections/group/dialogs/manage.dialog.component.html +++ b/src/app/sections/group/dialogs/manage.dialog.component.html @@ -1,77 +1,61 @@
    - {{ data.title }} + {{ 'group:dialog.title.managementGroup' | ucapI18n }}
    - - -
    -
    - {{ data.groupBuddyList.group.name }} -
    -
    - -
    -
    -
    - -
    -
    - - - -
    -
    +
    + +
    +
    + +

    + {{ data.groupBuddyList.group.name }} + {{ 'group:label.member' | ucapI18n }} +

    + ({{ selectedUserList.length }}) +
    -
    -
    - - -
    -
    - -
    diff --git a/src/app/sections/group/dialogs/manage.dialog.component.scss b/src/app/sections/group/dialogs/manage.dialog.component.scss index cccbc78..0f0d088 100644 --- a/src/app/sections/group/dialogs/manage.dialog.component.scss +++ b/src/app/sections/group/dialogs/manage.dialog.component.scss @@ -1,3 +1,4 @@ +@import '~@ucap/lg-scss/mixins'; .dialog-container { width: 100%; height: 100%; @@ -5,5 +6,84 @@ .dialog-body { width: 100%; height: 100%; + display: flex; + flex-direction: row; + @include screen(custom, max, 768) { + flex-direction: column; + } + .ucap-dialog-group-manage-container { + display: flex; + flex-flow: column; + width: 100%; + height: 100%; + .group-name { + display: flex; + flex-flow: row; + height: 40px; + border-bottom: 1px solid #999999; + .sub-title { + display: inline-flex; + height: 100%; + align-items: center; + } + button { + display: flex; + margin-left: auto; + padding: 0 10px; + } + } + + .ucap-dialog-app-group-profile-list { + height: calc(100% - 40px); + // overflow-y: hidden; + overflow: hidden; + .profile-list-01-item-container { + .ucap-virtual-scroll-viewport { + .ps__rail-x { + display: none; + } + } + } + } + } + .ucap-dialog-app-group-select-user { + width: 60%; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(custom, max, 768) { + width: 100%; + height: 78%; + margin-bottom: 2%; + } + } + + .ucap-dialog-organization-profile-selection { + position: relative; + width: 40%; + padding-left: $default-space; + border-bottom: 1px solid #cccccc; + background-color: #ffffff; + @include screen(custom, max, 768) { + width: 100%; + height: 20%; + padding: 0; + } + .ucap-organization-selected-list { + width: 100%; + height: 100%; + display: flex; + border: 1px solid #cccccc; + border-bottom: none; + overflow: auto; + } + } + } + .btn-box { + display: flex; + flex-direction: row; + button { + margin-left: 4px; + border-radius: 3px; + } } } diff --git a/src/app/sections/group/dialogs/manage.dialog.component.spec.ts b/src/app/sections/group/dialogs/manage.dialog.component.spec.ts index d20bf16..b541ade 100644 --- a/src/app/sections/group/dialogs/manage.dialog.component.spec.ts +++ b/src/app/sections/group/dialogs/manage.dialog.component.spec.ts @@ -2,7 +2,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { DebugElement } from '@angular/core'; -import { CreateDialogComponent } from './create.dialog.component'; +import { ManageDialogComponent } from './manage.dialog.component'; describe('ucap::ui-organization::ManageDialogComponent', () => { let component: ManageDialogComponent; diff --git a/src/app/sections/group/dialogs/manage.dialog.component.ts b/src/app/sections/group/dialogs/manage.dialog.component.ts index b09f804..53e7dbd 100644 --- a/src/app/sections/group/dialogs/manage.dialog.component.ts +++ b/src/app/sections/group/dialogs/manage.dialog.component.ts @@ -4,14 +4,12 @@ import { Component, OnInit, OnDestroy, + AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Inject, - Input, - ComponentFactoryResolver, ViewChild, - ViewContainerRef, - ComponentRef + ViewContainerRef } from '@angular/core'; import { Store } from '@ngrx/store'; @@ -25,22 +23,13 @@ import { import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; -import { MatStepper } from '@angular/material/stepper'; -import { FormBuilder, FormGroup, Validators } from '@angular/forms'; + import { I18nService } from '@ucap/ng-i18n'; -import { GroupActions } from '@ucap/ng-store-group'; -import { - AlertDialogComponent, - AlertDialogData, - AlertDialogResult, - ConfirmDialogComponent, - ConfirmDialogResult, - ConfirmDialogData -} from '@ucap/ng-ui'; + +import { GroupManageType } from '@app/types'; +import { LogService } from '@ucap/ng-logger'; import { SelectUserSectionComponent } from '../components/select-user.section.component'; -import { take, map, catchError } from 'rxjs/operators'; -import { SelectGroupSectionComponent } from '../components/select-group.section.component'; -import { SelectUserDialogType, GroupUserDialaogType } from '@app/types'; +import { DefaultDialogLayoutComponent } from '@app/layouts/components/default-dialog.layout.component'; export type UserInfoTypes = | UserInfo @@ -54,11 +43,9 @@ export interface ManageDialogData { groupBuddyList?: { group: GroupDetailData; buddyList: UserInfo[] }; } export interface ManageDialogResult { - type: GroupUserDialaogType; - groupName: string; + choice: boolean; group?: GroupDetailData; selelctUserList?: UserInfoTypes[]; - selectGroupList?: GroupDetailData[]; } @Component({ @@ -67,217 +54,138 @@ export interface ManageDialogResult { styleUrls: ['./manage.dialog.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class ManageDialogComponent implements OnInit, OnDestroy { +export class ManageDialogComponent implements OnInit, OnDestroy, AfterViewInit { constructor( public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: ManageDialogData, private changeDetectorRef: ChangeDetectorRef, - private store: Store, - private formBuilder: FormBuilder, private i18nService: I18nService, public dialog: MatDialog, - private cfResolver: ComponentFactoryResolver + private logService: LogService ) {} @ViewChild('dialogContainer', { static: true, read: ViewContainerRef }) dialogContainer: ViewContainerRef; - componentRef: ComponentRef; - private ngOnDestroySubject: Subject; - currentType: GroupUserDialaogType; - SelectUserDialogType = SelectUserDialogType; - GroupUserDialaogType = GroupUserDialaogType; + @ViewChild('appGroupSelectUser', { static: false }) + appGroupSelectUser: SelectUserSectionComponent; - currentStep = 0; - groupName = ''; + private ngOnDestroySubject: Subject = new Subject(); + + GroupManageType = GroupManageType; - delteUserList: UserInfoTypes[] = []; selectedUserList: UserInfoTypes[] = []; selectedGroupList: GroupDetailData[] = []; ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - // this.selectedUserList = this.data.groupBuddyList.buddyList; + this.selectedUserList = this.data.groupBuddyList.buddyList; } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } + ngAfterViewInit() { + this.psUpdate(); + } + onClosed(event: MouseEvent): void { this.dialogRef.close(); } - onDelete(stepper: MatStepper) { - if ( - !!this.delteUserList && - this.delteUserList.length > 0 && - this.currentStep === 0 - ) { - let titleStr = ''; - this.delteUserList.forEach((user, idx) => { - let userTitle = user.name + ' ' + user.grade; - if (idx < this.delteUserList.length) { - userTitle = userTitle + ', '; - } - titleStr = titleStr.concat('', userTitle); - }); - const dialogRef = this.dialog.open< - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult - >(ConfirmDialogComponent, { - data: { - title: '동료 삭제', - html: titleStr + '을 삭제하시겠습니까?' - } - }); - dialogRef - .afterClosed() - .pipe( - take(1), - map((result) => { - if (!!result && result.choice) { - const trgtUserSeq: string[] = []; - - this.delteUserList.forEach((userIfno) => { - const tempSeq = this.data.groupBuddyList.group.userSeqs.filter( - (seq) => seq === userIfno.seq - ); - - trgtUserSeq.push(tempSeq[0]); - }); - - console.log(trgtUserSeq); - - this.store.dispatch( - GroupActions.updateMember({ - targetGroup: this.data.groupBuddyList.group, - targetUserSeqs: trgtUserSeq - }) - ); - this.dialogRef.close(); - } - }), - catchError((err) => { - return of(err); - }) - ) - .subscribe(); - } + psUpdate() { + this.appGroupSelectUser.psUpdate(); } - onUpdateMember(stepper: MatStepper, type: GroupUserDialaogType) { - this.dialogContainer.clear(); - this.currentType = type; - const isMemberMove = type === GroupUserDialaogType.Copy ? false : true; - // const title = type === GroupUserDialaogType.Copy ? '멤버 복사' : '멤버 이동'; + onSelectBySectionGroup(data: { checked: boolean; group: GroupDetailData }) { + const i = this.selectedGroupList.findIndex((u) => u.seq === data.group.seq); - const factory = this.cfResolver.resolveComponentFactory( - SelectGroupSectionComponent - ); - - this.componentRef = this.dialogContainer.createComponent(factory); - const cpInstance = this.componentRef.instance; - // cpInstance.title = title; - cpInstance.isMemberMove = isMemberMove; - cpInstance.isDialog = true; - cpInstance.checkable = true; - cpInstance.curGroup = this.data.groupBuddyList.group; - cpInstance.changeUserList.subscribe((val) => { - this.selectedUserList = val; - }); - cpInstance.changeGroupList.subscribe((groupList) => { - this.selectedGroupList = groupList; - }); - cpInstance.changeGroupName.subscribe((groupName) => { - this.groupName = groupName; - }); - this.currentStep++; - stepper.next(); - } - - onAdd(stepper: MatStepper) { - this.dialogContainer.clear(); - this.currentType = GroupUserDialaogType.Add; - // this.selectedUserList = this.data.groupBuddyList.buddyList; - - const factory = this.cfResolver.resolveComponentFactory( - SelectUserSectionComponent - ); - - this.componentRef = this.dialogContainer.createComponent(factory); - const cpInstance = this.componentRef.instance; - cpInstance.isDialog = true; - cpInstance.checkable = true; - cpInstance.selectedUserList = this.data.groupBuddyList.buddyList; - cpInstance.isSelectionOff = false; - cpInstance.changeUserList.subscribe((val) => { - this.selectedUserList = val; - }); - this.currentStep++; - stepper.next(); - } - - onChangeUserList(selectedUserList: UserInfoTypes[]) { - this.selectedUserList = selectedUserList; - } - - onCnacel(stepper: MatStepper) { - if (!!this.selectedUserList && this.selectedUserList.length > 0) { - this.selectedUserList = []; - } - this.currentStep--; - stepper.previous(); - } - onConfirm(stepper: MatStepper) { - switch (this.currentType) { - case GroupUserDialaogType.Add: - { - if (!!this.selectedUserList && this.selectedUserList.length > 0) { - this.doAction(); - } - } - break; - case GroupUserDialaogType.Copy: - case GroupUserDialaogType.Move: - { - if (!!this.selectedUserList && this.selectedUserList.length === 0) { - this.dialog.open< - AlertDialogComponent, - AlertDialogData, - AlertDialogResult - >(AlertDialogComponent, { - data: { - title: 'Error', - html: '선택된 유저가 없습니다.' - } - }); - - return; - } - - this.doAction(); - } - break; - } - } - - doAction() { - this.dialogContainer.clear(); - if (!!this.groupName && this.groupName.trim().localeCompare('') !== 0) { - this.currentType = GroupUserDialaogType.Create; + if (data.checked) { + if (-1 === i) { + this.selectedGroupList = [...this.selectedGroupList, data.group]; + } } else { - this.groupName = undefined; + if (-1 < i) { + this.selectedGroupList = this.selectedGroupList.filter( + (u) => u.seq !== data.group.seq + ); + } + } + } + + onSelectBySectionUserGroup(params: { + isChecked: boolean; + groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; + }) { + if (params.isChecked) { + params.groupBuddyList.buddyList.forEach((item) => { + if ( + this.selectedUserList.filter((user) => user.seq === item.seq) + .length === 0 + ) { + this.selectedUserList = [...this.selectedUserList, item]; + } + }); + } else { + this.selectedUserList = this.selectedUserList.filter( + (item) => + params.groupBuddyList.buddyList.filter((del) => del.seq === item.seq) + .length === 0 + ); + } + } + + onChangeSelectedUserList( + datas: { + checked: boolean; + userInfo: UserInfoSS; + }[] + ) { + if (!datas || 0 === datas.length) { + return; } + const pushs: UserInfoSS[] = []; + const pops: UserInfoSS[] = []; + + datas.forEach((d) => { + const i = this.selectedUserList.findIndex( + (u) => u.seq === d.userInfo.seq + ); + if (d.checked) { + if (-1 === i) { + pushs.push(d.userInfo); + } + } else { + if (-1 < i) { + pops.push(d.userInfo); + } + } + }); + + if (0 < pushs.length) { + this.selectedUserList = [...this.selectedUserList, ...pushs]; + } + + if (0 < pops.length) { + this.selectedUserList = this.selectedUserList.filter( + (u) => -1 === pops.findIndex((p) => p.seq === u.seq) + ); + } + } + onCancel(event: MouseEvent) { + this.dialogRef.close({ choice: false }); + } + onConfirm(event: MouseEvent) { this.dialogRef.close({ - type: this.currentType, - groupName: this.groupName, - group: this.data.groupBuddyList.group, - selelctUserList: this.selectedUserList, - selectGroupList: this.selectedGroupList + choice: true, + group: { + ...this.data.groupBuddyList.group, + userSeqs: [] + }, + selelctUserList: this.selectedUserList }); } @@ -286,47 +194,43 @@ export class ManageDialogComponent implements OnInit, OnDestroy { if (!!this.selectedUserList && this.selectedUserList.length > 0) { return ( this.selectedUserList.filter( - (item) => (item.seq as any) === (userInfo.seq as any) + (item) => String(item.seq) === String(userInfo.seq) ).length > 0 ); } + return false; } - onToggleCheckForDelete(data: { checked: boolean; userInfo: UserInfoSS }) { - if (data.checked) { - this.delteUserList.push(data.userInfo); - } else { - const index = this.delteUserList.findIndex( - (userInfo) => userInfo.seq === data.userInfo.seq - ); - if (index > -1) { - this.delteUserList.splice(index, 1); - } + checkDisableBtn(): boolean { + let findUser: UserInfoTypes[]; + if (!!this.selectedUserList && this.selectedUserList.length > 0) { + findUser = this.selectedUserList.filter((user) => { + return this.data.groupBuddyList.group.userSeqs.includes( + String(user.seq) + ); + }); + } + + if (!!findUser && findUser.length > 0) { + return false; + } else { + return true; } - this.onToggleCheck(data); } + onToggleCheck(data: { checked: boolean; userInfo: UserInfoSS }) { - if (data.checked) { - this.selectedUserList.push(data.userInfo); - } else { - const index = this.selectedUserList.findIndex( - (userInfo) => userInfo.seq === data.userInfo.seq - ); - if (index > -1) { - this.selectedUserList.splice(index, 1); - } - } + this.onChangeSelectedUserList([data]); } onRemovedProfileSelection(userInfo: UserInfo) { const i = this.selectedUserList.findIndex( - (u) => (u.seq as any) === (userInfo.seq as any) + (u) => String(u.seq) === String(userInfo.seq) ); if (-1 < i) { this.selectedUserList = this.selectedUserList.filter( - (u) => (u.seq as any) !== (userInfo.seq as any) + (u) => String(u.seq) !== String(userInfo.seq) ); } } diff --git a/src/app/sections/group/group.section.module.ts b/src/app/sections/group/group.section.module.ts index 9e10705..7767d8b 100644 --- a/src/app/sections/group/group.section.module.ts +++ b/src/app/sections/group/group.section.module.ts @@ -21,7 +21,6 @@ import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; import { UiModule } from '@ucap/ng-ui'; - import { OrganizationUiModule } from '@ucap/ng-ui-organization'; import { ChatUiModule } from '@ucap/ng-ui-chat'; @@ -31,6 +30,7 @@ import { AppGroupModule } from '@app/ucap/group/group.module'; import { COMPONENTS } from './components'; import { DIALOGS } from './dialogs'; +import { AppChatModule } from '@app/ucap/chat/chat.module'; @NgModule({ imports: [ @@ -57,6 +57,7 @@ import { DIALOGS } from './dialogs'; AppLayoutsModule, AppOrganizationModule, + AppChatModule, AppGroupModule ], exports: [...COMPONENTS, ...DIALOGS], @@ -65,7 +66,7 @@ import { DIALOGS } from './dialogs'; providers: [ { provide: UCAP_I18N_NAMESPACE, - useValue: ['group', 'common'] + useValue: ['group', 'organization', 'common'] } ] }) diff --git a/src/app/sections/organization/components/component-ui/index.ts b/src/app/sections/organization/components/component-ui/index.ts deleted file mode 100644 index 98bcc9b..0000000 --- a/src/app/sections/organization/components/component-ui/index.ts +++ /dev/null @@ -1 +0,0 @@ -export const COMPONENTS = []; diff --git a/src/app/sections/organization/components/detail-table.component.html b/src/app/sections/organization/components/detail-table.component.html deleted file mode 100644 index 92947f4..0000000 --- a/src/app/sections/organization/components/detail-table.component.html +++ /dev/null @@ -1,169 +0,0 @@ -
    -
    - {{ selectedDeptInfo | ucapOrganizationTranslate: 'name' - }}{{ - !!searchObj.isShowSearch - ? searchUserList.length - : departmentUserList.length - }}{{ 'common.units.persons' | ucapI18n }} -
    -
    - - - - 전체 - - - 전체1 - - - -
    - - -
    -
    - - - - - - -
    -
    - - - - - {{ 'label.selectedUsers' | ucapI18n }} - {{ selectedUserList.length }} - - - - - - - - - -
    - - - - {{ userInfo.name }} - clear - - - -
    -
    -
      -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    -
    -
    -
    -
    diff --git a/src/app/sections/organization/components/detail-table.component.scss b/src/app/sections/organization/components/detail-table.component.scss deleted file mode 100644 index 38e013d..0000000 --- a/src/app/sections/organization/components/detail-table.component.scss +++ /dev/null @@ -1,235 +0,0 @@ -// @charset 'utf-8'; -// @mixin ellipsis($row) { -// overflow: hidden; -// text-overflow: ellipsis; -// @if $row == 1 { -// display: block; -// white-space: nowrap; -// word-wrap: normal; -// } @else if $row >= 2 { -// display: -webkit-box; -// -webkit-line-clamp: $row; -// -webkit-box-orient: vertical; -// word-wrap: break-word; -// } -// } -// @mixin disable-selection { -// -webkit-touch-callout: none; /* iOS Safari */ -// -webkit-user-select: none; /* Safari */ -// -khtml-user-select: none; /* Konqueror HTML */ -// -moz-user-select: none; /* Firefox */ -// -ms-user-select: none; /* Internet Explorer/Edge */ -// user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ -// } - -// /*.scrollbar { -// height: 550px; -// }*/ - -// .wrapper { -// height: 300px; -// } - -// mat-form-field { -// font-size: 14px; -// width: 100%; -// } -// .list-chip { -// height: 100px; -// width: 100%; -// padding: 10px; -// border: 1px solid #dddddd; -// overflow: auto; -// background-color: #f9f9f9; -// margin-top: 10px; -// } - -// table { -// width: 100%; -// min-width: 600px; -// table-layout: fixed; -// } - -// th.mat-header-cell { -// @include disable-selection; -// position: relative; -// padding: 0 10px; - -// span.ui-column-divider { -// display: block; -// position: absolute; -// top: 10px; -// right: 0; -// margin: 0; -// width: 2px; -// height: 40px; -// padding: 0; -// cursor: initial; -// border: none; -// background-color: #d4d4d4; - -// &.resizable { -// cursor: col-resize; -// } -// } -// span { -// &[mat-sort-header='name'], -// &[mat-sort-header='grade'] { -// display: inline-flex; -// padding-right: 10px; -// } -// } -// &.profileImage { -// width: 90px; -// } -// &.mat-column-checkable { -// width: 50px; -// } -// } - -// td.mat-cell { -// padding: 6px; -// position: relative; - -// div { -// @include ellipsis(1); -// } -// div:nth-chlid(2) { -// padding-top: 4px; -// } - -// &.profileImage { -// width: 90px; -// text-overflow: unset; -// flex: 0 0 90px; - -// .table-item { -// display: flex; -// width: 70px; -// min-width: 70px; -// font-size: 1em; - -// .presence { -// transform: translateY(6px); -// } -// .thumbnail { -// cursor: pointer; -// &-mask { -// display: inline-block; -// width: 40px; -// height: 40px; -// border-radius: 50%; -// overflow: hidden; -// margin-right: 0; -// position: relative; -// img { -// width: 40px; -// height: auto; -// background-color: #efefef; -// } -// } -// } -// .marker-mobile-state { -// position: absolute; -// background-color: #ffffff; -// width: 20px; -// height: 20px; -// border-radius: 50%; -// bottom: 0; -// left: 64px; -// display: flex; -// align-items: center; -// align-content: center; -// justify-content: center; -// .mat-icon { -// font-size: 0.9em; -// width: 18px; -// height: 18px; -// line-height: 18px; -// min-width: 18px; -// min-height: 18px; -// } -// } -// } -// } - -// &.mat-column-checkable { -// padding-left: 10px; -// flex: 0 0 50px; -// } - -// &.profileInfo { -// cursor: pointer; -// flex: 0 0 200px; -// .baseInfo { -// display: flex; -// font-size: 1em; -// @include ellipsis(1); -// .name { -// font-size: 1em; -// font-weight: 600; -// } -// .grade { -// font-size: 0.86em; -// color: #666666; -// } -// } -// .deptName { -// font-size: 0.9em; -// color: #666666; -// } -// } - -// .companyName, -// .workplace, -// .responsibilities { -// font-size: 0.86em; -// font-weight: 600; -// } - -// .hpNumber { -// cursor: pointer; -// } -// .lineNumber { -// cursor: pointer; -// } -// } - -// .work-status { -// display: inline-block; -// justify-content: center; -// justify-items: center; -// color: #ffffff; -// height: 100%; -// min-width: 32px; -// margin-right: 4px; -// border-radius: 24px; -// flex: 0 0 auto; -// font-size: 0.8em; -// text-align: center; -// } - -// .no-search-result { -// display: flex; -// width: 100%; -// margin-top: 40px; -// justify-content: center; -// justify-items: center; -// font-size: 1.1em; -// } - -// ::ng-deep .integrate-search-org { -// td.mat-cell { -// &.profileInfo { -// cursor: initial !important; -// } -// } -// } - -// ::ng-deep .ps__rail-y { -// z-index: 101; -// } - -// .example-chip-list { -// width: 100%; -// } diff --git a/src/app/sections/organization/components/detail-table.component.ts b/src/app/sections/organization/components/detail-table.component.ts deleted file mode 100644 index c147aaf..0000000 --- a/src/app/sections/organization/components/detail-table.component.ts +++ /dev/null @@ -1,367 +0,0 @@ -import { - Component, - ViewChild, - OnInit, - ChangeDetectorRef, - Input, - OnDestroy, - ChangeDetectionStrategy -} from '@angular/core'; -import { MatTableDataSource } from '@angular/material/table'; -import { SelectionModel } from '@angular/cdk/collections'; -import { MatSort } from '@angular/material/sort'; -import { Subject, of } from 'rxjs'; -import { map, takeUntil, take, catchError } from 'rxjs/operators'; -import { - DeptInfo, - DeptSearchType, - DeptUserRequest, - UserInfoSS, - AuthResponse -} from '@ucap/protocol-query'; -import { - DepartmentSelector, - PresenceActions -} from '@ucap/ng-store-organization'; -import { select, Store } from '@ngrx/store'; -import { QueryProtocolService } from '@ucap/ng-protocol-query'; -import { - LoginSelector, - AuthorizationSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; -import { VersionInfo2Response } from '@ucap/api-public'; -import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; - -export class DepartmentUserVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(184, 150, 200); - } -} - -@Component({ - selector: 'app-organization-detail-table', - templateUrl: './detail-table.component.html', - styleUrls: ['./detail-table.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: DepartmentUserVirtualScrollStrategy - } - ], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class DetailTableComponent implements OnInit, OnDestroy { - @Input() - set searchObj(obj: { - isShowSearch: boolean; - companyCode: string; - searchWord: string; - }) { - this._searchObj = obj; - if (obj.isShowSearch && obj.searchWord.localeCompare('') !== 0) { - this.onOrganizationTenantSearch(obj); - } else { - this._searchObj.isShowSearch = false; - this.searchUserList = []; - this.changeDetectorRef.detectChanges(); - } - } - - get searchObj() { - return this._searchObj; - } - // tslint:disable-next-line: variable-name - _searchObj: any; - - @Input() - set deptSeq(deptSeq: string) { - this._deptSeq = deptSeq; - this.getSelectedDeptInfo(); - } - get deptSeq(): string { - return this._deptSeq; - } - // tslint:disable-next-line: variable-name - _deptSeq: string; - - versionInfo2Res: VersionInfo2Response; - loginRes: LoginResponse; - authRes: AuthResponse; - - defaultProfileImage = 'assets/images/ico/img_nophoto.svg'; - - departmentInfoList: DeptInfo[]; - selectedDeptInfo: DeptInfo; - - departmentUserListProcessing = false; - departmentUserList: UserInfoSS[] = []; - searchUserList: UserInfoSS[] = []; - - selectedUserList: UserInfoSS[] = []; - - @ViewChild('cvsvList', { static: false }) - cvsvList: CdkVirtualScrollViewport; - - @ViewChild(PerfectScrollbarDirective, { static: false }) - psDirectiveRef?: PerfectScrollbarDirective; - - private ngOnDestroySubject: Subject; - - constructor( - private store: Store, - private queryProtocolService: QueryProtocolService, - private changeDetectorRef: ChangeDetectorRef - ) {} - - ngOnInit() { - this.ngOnDestroySubject = new Subject(); - - this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(ConfigurationSelector.versionInfo2Response) - ) - .subscribe((versionInfo2Res) => { - this.versionInfo2Res = versionInfo2Res; - }); - - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; - }); - - this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(AuthorizationSelector.authResponse) - ) - .subscribe((authRes) => { - this.authRes = authRes; - }); - - this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(DepartmentSelector.departmentInfoList) - ) - .subscribe((departmentInfoList) => { - this.departmentInfoList = departmentInfoList; - this.getSelectedDeptInfo(); - }); - } - - ngOnDestroy(): void { - if (!!this.ngOnDestroySubject) { - this.ngOnDestroySubject.complete(); - } - } - - getSelectedDeptInfo() { - if ( - !!this.deptSeq && - !!this.departmentInfoList && - this.departmentInfoList.length > 0 - ) { - const existDept = this.departmentInfoList.some((deptInfo) => { - if (Number(deptInfo.seq + '') === Number(this.deptSeq + '')) { - this.selectedDeptInfo = deptInfo; - return true; - } - }); - - if (!!existDept && !!this.loginRes) { - this.departmentUserListProcessing = true; - const req: DeptUserRequest = { - divCd: 'ORG', - companyCode: this.loginRes.companyCode, - seq: Number(this.deptSeq), - search: '', - searchRange: DeptSearchType.All, - senderCompanyCode: this.loginRes.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType - }; - this.queryProtocolService - .deptUser(req) - .pipe( - take(1), - map((res) => { - this.departmentUserList = res.userInfos; - this.departmentUserListProcessing = false; - - if (!!this.cvsvList) { - this.cvsvList.checkViewportSize(); - } - if (!!this.psDirectiveRef) { - this.psDirectiveRef.update(); - } - - this.changeDetectorRef.detectChanges(); - }), - catchError((error) => { - this.departmentUserListProcessing = false; - return of(error); - }) - ) - .subscribe(); - } - - this.changeDetectorRef.detectChanges(); - } - } - - onOrganizationTenantSearch(obj: { - isShowSearch: boolean; - companyCode: string; - searchWord: string; - }) { - this.departmentUserListProcessing = true; - - this.queryProtocolService - .deptUser({ - divCd: 'ORGS', - companyCode: this._searchObj.companyCode, - searchRange: DeptSearchType.All, - search: this._searchObj.searchWord, - senderCompanyCode: this.loginRes.userInfo.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType - }) - .pipe( - map((resObj) => { - // 검색 결과 처리. - this.searchUserList = resObj.userInfos.sort((a, b) => - a.name < b.name ? -1 : a.name > b.name ? 1 : 0 - ); - this.changeDetectorRef.detectChanges(); - this.departmentUserListProcessing = false; - - // 검색 결과에 따른 프레즌스 조회. - const userSeqList: string[] = []; - this.searchUserList.map((user) => userSeqList.push(user.seq)); - - if (userSeqList.length > 0) { - this.store.dispatch( - PresenceActions.bulkInfo({ - divCd: 'orgSrch', - userSeqs: userSeqList - }) - ); - } - }), - catchError((error) => { - this.departmentUserListProcessing = false; - return of(error); - }) - ) - .subscribe(); - } - - /** 전체선택 체크여부 */ - getCheckedAllUser() { - if (!this.loginRes) { - return false; - } - - const compareList: UserInfoSS[] = !!this.searchObj.isShowSearch - ? this.searchUserList - : this.departmentUserList; - if ( - !compareList || - compareList.length === 0 || - compareList.filter((item) => item.seq !== this.loginRes.userSeq) - .length === 0 || - compareList - .filter((item) => item.seq !== this.loginRes.userSeq) - .filter( - (item) => - !( - this.selectedUserList.filter((user) => user.seq === item.seq) - .length > 0 - ) - ).length > 0 - ) { - return false; - } else { - return true; - } - } - /** 전체선택 이벤트 */ - onCheckAllUser(value: boolean) { - if (!this.loginRes) { - return false; - } - - const trgtUserList = !!this.searchObj.isShowSearch - ? this.searchUserList - : this.departmentUserList; - - if (!!value) { - this.selectedUserList = trgtUserList.slice(); - } else { - this.selectedUserList = []; - } - - this.changeDetectorRef.detectChanges(); - } - /** 개별 체크여부 */ - getCheckedUser(userInfo: UserInfoSS) { - if (!!this.selectedUserList && this.selectedUserList.length > 0) { - return ( - this.selectedUserList.filter((item) => item.seq === userInfo.seq) - .length > 0 - ); - } - return false; - } - /** 개별선택(토글) 이벤트 */ - onToggleUser(param: { isChecked: boolean; userInfo: UserInfoSS }) { - if (!this.loginRes || param.userInfo.seq === this.loginRes.userSeq) { - return; - } - - if ( - !this.selectedUserList.some((user) => user.seq === param.userInfo.seq) - ) { - this.selectedUserList = [...this.selectedUserList, param.userInfo]; - } else { - this.selectedUserList = this.selectedUserList.filter( - (item) => item.seq !== param.userInfo.seq - ); - } - this.changeDetectorRef.detectChanges(); - } - - onClickDeleteUserChips(userInfo: UserInfoSS) { - this.selectedUserList = this.selectedUserList.filter( - (item) => item.seq !== userInfo.seq - ); - this.changeDetectorRef.detectChanges(); - } - - onOpenProfile(userInfo: UserInfoSS): void { - alert('Open Profile'); - } - - onClickAddGroup(): void { - alert('onClickAddGroup'); - } - onClickChatOpen(): void { - alert('onClickChatOpen'); - } - onClickMessage(): void { - alert('onClickMessage'); - } - onClickCall(): void { - alert('onClickCall'); - } - onClickConference(): void { - alert('onClickConference'); - } -} diff --git a/src/app/sections/organization/components/index.ts b/src/app/sections/organization/components/index.ts index 6855536..3af76e3 100644 --- a/src/app/sections/organization/components/index.ts +++ b/src/app/sections/organization/components/index.ts @@ -1,4 +1,3 @@ -import { DetailTableComponent } from './detail-table.component'; import { MemberListComponent } from './member-list.component'; -export const COMPONENTS = [DetailTableComponent, MemberListComponent]; +export const COMPONENTS = [MemberListComponent]; diff --git a/src/app/sections/organization/components/member-list.component.html b/src/app/sections/organization/components/member-list.component.html index 79324c4..b4b2907 100644 --- a/src/app/sections/organization/components/member-list.component.html +++ b/src/app/sections/organization/components/member-list.component.html @@ -1,99 +1,173 @@ -
    +
    -
    -
    -
    - - {{ selectedDeptInfo | ucapOrganizationTranslate: 'name' }} - - - {{ selectedCompanyInfo.companyName }} - - {{ searchedProfileLength }}명 -
    +
    +
    +
    +
    + + {{ 'organization:label.searchResult' | ucapI18n }} + + + {{ selectedDeptInfo | ucapOrganizationTranslate: 'name' }} + + + {{ searchedProfileLength }}{{ 'common:units.persons' | ucapI18n }} +
    +
    +
    + {{ 'organization:label.sortName' | ucapI18n }} + +
    +
    + + +
    -
    - 이름 - - - - -
    -
    -
    -
    +
    + - - + - - - 선택한 대화상대 - {{ - !!selectedUserInfos ? selectedUserInfos.length : 0 - }} - - - - -
    - + {{ 'organization:label.selectedUsers' | ucapI18n }} + {{ + !!selectedUserInfos ? selectedUserInfos.length : 0 + }} + + +
    + + + +
    + +
    + + +
    +
    - - - - -
    -
    -
    -
    + + +
    diff --git a/src/app/sections/organization/components/member-list.component.scss b/src/app/sections/organization/components/member-list.component.scss index b3c8e10..82c939c 100644 --- a/src/app/sections/organization/components/member-list.component.scss +++ b/src/app/sections/organization/components/member-list.component.scss @@ -8,15 +8,21 @@ padding: 0 30px; background-color: white; + @include screen(xs) { + padding: 0; + } .list-header { justify-content: space-between; align-items: center; border-bottom: 2px solid #999999; - padding: 12px 0 13px; + padding: 12px 16px 13px 0; .list-header-title { + @include screen(xs) { + padding-left: 16px; + } h5 { - font-size: 13px; + font-size: 1.1em; align-items: center; font-weight: 600; color: #333333; @@ -27,33 +33,116 @@ } } .list-header-toolbox { - right: 0px; - } - } - - .selected-users { - flex-grow: 0.8; - .organization-accordion-head { - background-color: #f1f2f6; - } - .select-user-title { - strong { - color: $lipstick; - margin-left: 8px; + display: flex; + margin-left: 0; + flex: 0 0 auto; + flex-direction: row; + align-items: center; + padding-right: 16px; + .mat-icon-button { + .mat-icon { + font-size: 20px; + width: 20px; + height: 20px; + line-height: 20px; + } } } - - .selected-user-list { - width: 150px; - } - - .btn-box { - margin-top: 10px; - padding-right: 8px; + .subtitle-chk-box { + border-left: 1px solid #ccc; + flex: 0 0 4% !important; + position: relative; + padding-left: 20px; display: flex; - flex-direction: row; - align-content: center; - justify-content: space-between; + justify-content: center; + } + } + .list-body-container { + } + .list-selection-container { + @include screen(custom, min, 1280) { + margin: 0 0 20px 30px; + min-width: 450px !important; + } + @include screen(custom, max, 1280) { + min-height: 40px !important; + max-height: 200px !important; + max-width: 100% !important; + min-width: auto !important; + } + .selection-expansion { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + border-radius: 0; + @include screen(custom, max, 1280) { + border-bottom: none; + } + @include screen(xs) { + border-left: none; + } + & > .selection-expansion { + border: 1px solid #ccc; + box-shadow: none; + } + .selection-header { + background-color: #f1f2f6; + .selection-header-title { + strong { + color: $lipstick; + margin-left: 8px; + } + } + } + .selected-user-list { + // overflow-y: auto; + //overflow-x: hidden; + overflow: hidden; + /* + &[layout-type='min'] { + width: 100%; + height: 150px; + } + &[layout-type='mid'] { + width: 100%; + height: 150px; + } + &[layout-type='max'] { + width: 100%; + //height: 580px; + } + */ + } + .mat-action-row { + padding: 15px 16px 10px 16px; + @include screen(xs) { + padding: 15px 4px 10px; + } + .btn-box { + display: flex; + flex-direction: row; + align-content: center; + justify-content: space-between; + width: 100%; + @include screen(xs) { + width: calc(100% - 2px); + } + button { + @include ucap-button-flat-stroked(18%) { + @include screen(xs) { + padding: 0 5px; + min-width: auto; + font-size: 0.857em; + } + } + margin-left: 0; + &:first-of-type { + width: 28%; + } + } + } + } } } } diff --git a/src/app/sections/organization/components/member-list.component.ts b/src/app/sections/organization/components/member-list.component.ts index d5b9128..acfb740 100644 --- a/src/app/sections/organization/components/member-list.component.ts +++ b/src/app/sections/organization/components/member-list.component.ts @@ -1,5 +1,5 @@ import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { takeUntil, take } from 'rxjs/operators'; import { Component, @@ -11,23 +11,51 @@ import { ViewChild } from '@angular/core'; +import { MediaObserver } from '@angular/flex-layout'; + +import { MatCheckboxChange, MatCheckbox } from '@angular/material/checkbox'; +import { MatDialog } from '@angular/material/dialog'; + import { select, Store } from '@ngrx/store'; import { SortOrder } from '@ucap/core'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { DeptInfo, UserInfoSS } from '@ucap/protocol-query'; +import { Company } from '@ucap/api-external'; +import { DeptInfo, UserInfoSS, AuthResponse } from '@ucap/protocol-query'; import { UserInfo } from '@ucap/protocol-sync'; +import { User } from '@ucap/protocol-info'; + +import { LogService } from '@ucap/ng-logger'; +import { I18nService } from '@ucap/ng-i18n'; -import { LoginSelector } from '@ucap/ng-store-authentication'; import { DepartmentSelector, - CompanySelector + CompanySelector, + UserSelector } from '@ucap/ng-store-organization'; +import { AuthorizationSelector } from '@ucap/ng-store-authentication'; + +import { + AlertDialogComponent, + AlertDialogData, + AlertDialogResult +} from '@ucap/ng-ui'; import { SearchData } from '@app/ucap/organization/models/search-data'; -import { Company } from '@ucap/api-external'; -import { MatCheckboxChange } from '@angular/material/checkbox'; import { ProfileListComponent as AppProfileListComponent } from '@app/ucap/organization/components/profile-list.component'; +import { AppChatService } from '@app/services/app-chat.service'; + +import { + AddGroupDialogComponent, + AddGroupDialogData, + AddGroupDialogResult +} from '../dialogs/add-group.dialog.component'; +import { + ProfileDialogComponent, + ProfileDialogData, + ProfileDialogResult +} from '../dialogs/profile.dialog.component'; + +import { environment } from '@environments'; @Component({ selector: 'app-sections-organization-member-list', @@ -40,48 +68,123 @@ export class MemberListComponent implements OnInit, OnDestroy { set searchData(searchData: SearchData) { this._searchData = searchData; - if (searchData.bySearch) { - this.setCompanyInfo(searchData.companyCode); - } else { + this.selectedDeptInfo = undefined; + this.selectedCompanyInfo = undefined; + + this.sortOrderForProfileList = { + ...this.sortOrderForProfileList, + ascending: undefined + }; + + if (!!searchData && !searchData.bySearch && !!searchData.deptSeq) { this.setDeptInfo(searchData.deptSeq); + } else { + // if (!!this.loginRes) { + // this.setDeptInfo(this.loginRes.departmentCode + ''); + // } + // this.setCompanyInfo(searchData.companyCode); } } + @Input() + cacheSize = 0; + @ViewChild('profileList', { static: false }) profileList: AppProfileListComponent; + @ViewChild('checkboxAll', { static: false }) + checkboxAll: MatCheckbox; + // tslint:disable-next-line: variable-name _searchData: SearchData; - loginRes: LoginResponse; + user: User; selectedDeptInfo: DeptInfo; selectedCompanyInfo: Company; searchedProfileLength: number; + searchedUserInfos: UserInfoSS[] = []; selectedUserInfos: UserInfoSS[] = []; isExpanded = false; + isAllCheck = false; + authRes: AuthResponse; + sortOrderForProfileList: SortOrder = { property: 'name', - ascending: true + ascending: undefined }; - private ngOnDestroySubject: Subject; + layoutMode: 'min' | 'mid' | 'max'; + + private ngOnDestroySubject: Subject = new Subject(); constructor( private store: Store, - private changeDetectorRef: ChangeDetectorRef + private appChatService: AppChatService, + public mediaObserver: MediaObserver, + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService, + private dialog: MatDialog, + private i18nService: I18nService ) {} ngOnInit() { - this.ngOnDestroySubject = new Subject(); + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + if ( + !!this._searchData && + !this._searchData.bySearch && + !!this._searchData.deptSeq + ) { + // ignore.. + } else { + if (!!user) { + this.setDeptInfo(user.departmentCode + ''); + } + } + }); + + this.mediaObserver + .asObservable() + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((changes) => { + if (!changes || 0 === changes.length) { + return; + } + for (const change of changes) { + switch (change.mqAlias) { + case 'lt-sm': + this.layoutMode = 'min'; + this.changeDetectorRef.detectChanges(); + return; + case 'sm': + case 'md': + this.layoutMode = 'mid'; + this.changeDetectorRef.detectChanges(); + return; + case 'gt-md': + this.layoutMode = 'max'; + this.changeDetectorRef.detectChanges(); + return; + default: + break; + } + } + }); this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe( + takeUntil(this.ngOnDestroySubject), + select(AuthorizationSelector.authResponse) + ) + .subscribe((authRes) => { + this.authRes = authRes; }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -91,11 +194,19 @@ export class MemberListComponent implements OnInit, OnDestroy { bySearch: true, ...data }; + this.setDeptInfo(data.deptSeq); } onSearchedProfileList(userInfos: UserInfoSS[]) { + if (!!this.checkboxAll) { + this.checkboxAll.checked = false; + } + + this.searchedUserInfos = userInfos; this.searchedProfileLength = !!userInfos ? userInfos.length : 0; + + this._changeAllCheck(); } onChangedCheckProfileList( @@ -132,6 +243,40 @@ export class MemberListComponent implements OnInit, OnDestroy { (u) => -1 === pops.findIndex((p) => p.seq === u.seq) ); } + this._changeAllCheck(); + this.changeDetectorRef.markForCheck(); + } + + private _changeAllCheck() { + const findUser: UserInfoSS[] = []; + let isChecked = false; + + if ( + !!this.searchedUserInfos && + !!this.selectedUserInfos && + this.searchedUserInfos.length > 0 && + this.selectedUserInfos.length > 0 + ) { + this.selectedUserInfos.forEach((selUser) => { + this.searchedUserInfos.every((searchUser) => { + if (selUser.seq === searchUser.seq) { + findUser.push(selUser); + return false; + } + return true; + }); + }); + } + + if ( + findUser.length > 0 && + findUser.length === this.searchedUserInfos.length + ) { + isChecked = true; + } + if (!!this.checkboxAll) { + this.checkboxAll.checked = isChecked; + } } onRemovedProfileSelection(userInfo: UserInfo) { @@ -144,8 +289,22 @@ export class MemberListComponent implements OnInit, OnDestroy { (u) => u.seq !== String(userInfo.seq) ); } + this._changeAllCheck(); + this.changeDetectorRef.markForCheck(); } + onOpenProfile(userInfo: UserInfoSS) { + const result = this.dialog.open< + ProfileDialogComponent, + ProfileDialogData, + ProfileDialogResult + >(ProfileDialogComponent, { + panelClass: 'mid-create-dialog', + data: { + userSeq: userInfo.seq + } + }); + } removableForSelection = (userInfo: UserInfo) => { return true; }; @@ -154,18 +313,15 @@ export class MemberListComponent implements OnInit, OnDestroy { return 'accent'; }; - onOpenedSelection() { - this.isExpanded = true; - } - - onClosedSelection() { - this.isExpanded = false; - } - onClickToggleSort() { this.sortOrderForProfileList = { ...this.sortOrderForProfileList, - ascending: !this.sortOrderForProfileList.ascending + ascending: + undefined === this.sortOrderForProfileList.ascending + ? true + : true === this.sortOrderForProfileList.ascending + ? false + : undefined }; } @@ -173,10 +329,33 @@ export class MemberListComponent implements OnInit, OnDestroy { if (event.checked) { this.profileList.checkAll(); } else { - this.selectedUserInfos = []; + this.profileList.uncheckAll(); } } + getContainerLayout(type: 'max' | 'mid'): string { + switch (type) { + case 'max': + return 'row'; + case 'mid': + return 'column'; + default: + break; + } + } + + onAfterExpandForSelection() { + this.isExpanded = true; + } + + onAfterCollapseForSelection() { + this.isExpanded = false; + } + + onClearSelected(): void { + this.profileList.uncheckAll(); + } + private setCompanyInfo(companyCode: string) { const destroySubject: Subject = new Subject(); this.store @@ -208,9 +387,82 @@ export class MemberListComponent implements OnInit, OnDestroy { this.selectedDeptInfo = departmentInfoList.find( (d) => String(d.seq) === seq ); + this.changeDetectorRef.markForCheck(); destroySubject.next(); destroySubject.complete(); }); } + + openChatRoom() { + if ( + !!this.selectedUserInfos && + this.selectedUserInfos.length > + environment.productConfig.chat.maxChatRoomUser + ) { + const result = this.dialog.open< + AlertDialogComponent, + AlertDialogData, + AlertDialogResult + >(AlertDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:errors.label'), + message: this.i18nService.t('chat:errors.maxCountOfRoomMemberWith', { + maxCount: environment.productConfig.chat.maxChatRoomUser + }) + } + }); + return; + } + + if (!!this.selectedUserInfos && this.selectedUserInfos.length > 0) { + this.appChatService.newOpenRoom( + this.selectedUserInfos.map((item) => item.seq), + false, + this.user + ); + } + } + + addGroup(): void { + const dialogRef = this.dialog.open< + AddGroupDialogComponent, + AddGroupDialogData, + AddGroupDialogResult + >(AddGroupDialogComponent, { + panelClass: 'mid-create-dialog', + data: { + selectedUserList: this.selectedUserInfos + } + }); + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.selectedUserInfos = []; + } + }); + } + + onFloatingProfileMenu(params: { menuType: string; userInfo: UserInfoSS }) { + switch (params.menuType) { + case 'CHAT': + this.appChatService.newOpenRoom( + [String(params.userInfo.seq)], + false, + this.user + ); + break; + case 'MESSAGE': + break; + case 'MOBILE': + break; + case 'OFFICE': + break; + case 'VIDEO_CONFERENCE': + break; + } + } } diff --git a/src/app/sections/organization/components/tree.section.component.html b/src/app/sections/organization/components/tree.section.component.html deleted file mode 100644 index baa861c..0000000 --- a/src/app/sections/organization/components/tree.section.component.html +++ /dev/null @@ -1,4 +0,0 @@ -
    - - -
    diff --git a/src/app/sections/organization/components/tree.section.component.scss b/src/app/sections/organization/components/tree.section.component.scss deleted file mode 100644 index 8e9eeba..0000000 --- a/src/app/sections/organization/components/tree.section.component.scss +++ /dev/null @@ -1,2 +0,0 @@ -.tree-container { -} diff --git a/src/app/sections/organization/components/tree.section.component.ts b/src/app/sections/organization/components/tree.section.component.ts deleted file mode 100644 index 5950bc7..0000000 --- a/src/app/sections/organization/components/tree.section.component.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { Observable, Subject, combineLatest } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { - Component, - OnInit, - OnDestroy, - ChangeDetectionStrategy, - ChangeDetectorRef -} from '@angular/core'; - -import { Store, select } from '@ngrx/store'; - -import { - VirtualScrollStrategy, - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; - -import { VersionInfo2Response } from '@ucap/api-public'; -import { Company } from '@ucap/api-external'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; -import { DeptInfo } from '@ucap/protocol-query'; - -import { LogService } from '@ucap/ng-logger'; -import { NodeType } from '@ucap/ng-ui-group'; -import { SessionStorageService } from '@ucap/ng-web-storage'; -import { - LoginSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; -import { DepartmentSelector } from '@ucap/ng-store-organization'; -import { BuddySelector, GroupSelector } from '@ucap/ng-store-group'; - -import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { AppKey } from '@app/types/app-key.type'; -import { LoginSession } from '@app/models/login-session'; -import { environment } from '@environments'; - -export class TreeVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(48, 250, 500); // (itemSize, minBufferPx, maxBufferPx) - } -} - -@Component({ - selector: 'app-sections-organization-tree', - templateUrl: './tree.section.component.html', - styleUrls: ['./tree.section.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: TreeVirtualScrollStrategy - } - ], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class TreeSectionComponent implements OnInit, OnDestroy { - treeData: { - deptInfoList: DeptInfo[]; - displayRoot?: boolean; - }; - - loginRes: LoginResponse; - - private ngOnDestroySubject = new Subject(); - - constructor( - private appAuthenticationService: AppAuthenticationService, - private sessionStorageService: SessionStorageService, - private store: Store, - private changeDetectorRef: ChangeDetectorRef, - private logService: LogService - ) {} - - ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - - combineLatest([ - this.store.pipe(select(LoginSelector.loginRes)), - this.store.pipe(select(DepartmentSelector.departmentInfoList)) - ]) - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe(([loginRes, deptInfoList]) => { - this.loginRes = loginRes; - this.treeData = { - deptInfoList, - displayRoot: environment.productConfig.organization.displayRoot - }; - this.changeDetectorRef.markForCheck(); - }); - } - - ngOnDestroy(): void { - if (!!this.ngOnDestroySubject) { - this.ngOnDestroySubject.complete(); - } - } -} diff --git a/src/app/sections/organization/components/tree.section.strategy.ts b/src/app/sections/organization/components/tree.section.strategy.ts deleted file mode 100644 index 564488d..0000000 --- a/src/app/sections/organization/components/tree.section.strategy.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Observable, Subject } from 'rxjs'; - -import { - VirtualScrollStrategy, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; -import { distinctUntilChanged } from 'rxjs/operators'; - -export class OrganizationTreeVirtualScrollStrategy - implements VirtualScrollStrategy { - scrolledIndexChange: Observable; - - private indexSubject = new Subject(); - private viewport: CdkVirtualScrollViewport | null = null; - - constructor() { - this.scrolledIndexChange = this.indexSubject.pipe(distinctUntilChanged()); - } - - attach(viewport: CdkVirtualScrollViewport): void { - this.viewport = viewport; - } - detach(): void { - this.indexSubject.complete(); - this.viewport = null; - } - onContentScrolled(): void {} - onDataLengthChanged(): void {} - onContentRendered(): void {} - onRenderedOffsetChanged(): void {} - scrollToIndex(index: number, behavior: ScrollBehavior): void {} -} diff --git a/src/app/sections/organization/dialogs/add-group.dialog.component.html b/src/app/sections/organization/dialogs/add-group.dialog.component.html new file mode 100644 index 0000000..53d3cda --- /dev/null +++ b/src/app/sections/organization/dialogs/add-group.dialog.component.html @@ -0,0 +1,33 @@ +
    + +
    + {{ 'organization:dialog.title.addGroup' | ucapI18n }} +
    +
    +
    + +
    +
    + +
    + + +
    +
    +
    diff --git a/src/app/sections/organization/dialogs/add-group.dialog.component.scss b/src/app/sections/organization/dialogs/add-group.dialog.component.scss new file mode 100644 index 0000000..1dc77ad --- /dev/null +++ b/src/app/sections/organization/dialogs/add-group.dialog.component.scss @@ -0,0 +1,18 @@ +@import '~@ucap/lg-scss/mixins'; +.dialog-container { + width: 100%; + height: 100%; + + .dialog-body { + width: 100%; + height: 100%; + } + .btn-box { + display: flex; + flex-direction: row; + button { + margin-left: 4px; + border-radius: 3px; + } + } +} diff --git a/src/app/sections/organization/dialogs/add-group.dialog.component.spec.ts b/src/app/sections/organization/dialogs/add-group.dialog.component.spec.ts new file mode 100644 index 0000000..4943a35 --- /dev/null +++ b/src/app/sections/organization/dialogs/add-group.dialog.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { AddGroupDialogComponent } from './add-group.dialog.component'; + +describe('ucap::ui-organization::AddGroupDialogComponent', () => { + let component: AddGroupDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [AddGroupDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddGroupDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/organization/dialogs/add-group.dialog.component.ts b/src/app/sections/organization/dialogs/add-group.dialog.component.ts new file mode 100644 index 0000000..b9131da --- /dev/null +++ b/src/app/sections/organization/dialogs/add-group.dialog.component.ts @@ -0,0 +1,234 @@ +import { Subject, of } from 'rxjs'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject, + ViewChild, + ViewContainerRef +} from '@angular/core'; + +import { Store } from '@ngrx/store'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog +} from '@angular/material/dialog'; + +import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; +import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; +import { MatStepper } from '@angular/material/stepper'; +import { I18nService } from '@ucap/ng-i18n'; +import { GroupActions } from '@ucap/ng-store-group'; +import { + AlertDialogComponent, + AlertDialogData, + AlertDialogResult, + ConfirmDialogComponent, + ConfirmDialogResult, + ConfirmDialogData +} from '@ucap/ng-ui'; + +import { take, map, catchError } from 'rxjs/operators'; + +import { SelectUserDialogType, GroupManageType } from '@app/types'; +import { LogService } from '@ucap/ng-logger'; +import { AppGroupService } from '@app/services/app-group.service'; + +export type UserInfoTypes = + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN + | RoomUserInfo; + +export interface AddGroupDialogData { + selectedUserList: UserInfoTypes[]; +} +export interface AddGroupDialogResult { + choice: boolean; +} + +@Component({ + selector: 'app-dialog-organization-add-group', + templateUrl: './add-group.dialog.component.html', + styleUrls: ['./add-group.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AddGroupDialogComponent implements OnInit, OnDestroy { + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: AddGroupDialogData, + private changeDetectorRef: ChangeDetectorRef, + private store: Store, + private i18nService: I18nService, + private logService: LogService, + public dialog: MatDialog, + private appGroupService: AppGroupService + ) {} + + private ngOnDestroySubject: Subject; + + groupName = ''; + selectedUserList: UserInfoTypes[] = []; + selectedGroupList: GroupDetailData[] = []; + isDisableBtn = false; + + ngOnInit(): void { + this.ngOnDestroySubject = new Subject(); + this.selectedUserList = this.data.selectedUserList; + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onClosed(event: MouseEvent): void { + this.dialogRef.close({ choice: false }); + } + + checkDisableBtnConfirm(): boolean { + return false; + } + + onChangeGroupName(data: { invalid: boolean; groupName: string }) { + this.groupName = data.groupName; + + if ( + !!this.groupName && + this.groupName.trim().localeCompare('') !== 0 && + !!data.invalid + ) { + this.isDisableBtn = data.invalid; + } else { + this.isDisableBtn = false; + } + } + + onChangeSelectedGroupList(data: { + checked: boolean; + group: GroupDetailData; + }) { + const i = this.selectedGroupList.findIndex((u) => u.seq === data.group.seq); + + if (data.checked) { + if (-1 === i) { + this.selectedGroupList = [...this.selectedGroupList, data.group]; + } + } else { + if (-1 < i) { + this.selectedGroupList = this.selectedGroupList.filter( + (u) => u.seq !== data.group.seq + ); + } + } + } + + onCancel(): void { + this.dialogRef.close({ choice: false }); + } + onConfirm(): void { + const targetUserSeqs = this.selectedUserList.map((item) => item.seq + ''); + if (!targetUserSeqs || targetUserSeqs.length === 0) { + this.logService.error('organization', 'not exist selected users.'); + return; + } + + // validations + if ( + (!this.groupName && !this.selectedGroupList) || + (this.groupName.trim().length === 0 && + this.selectedGroupList.length === 0) + ) { + const result = this.dialog.open< + AlertDialogComponent, + AlertDialogData, + AlertDialogResult + >(AlertDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('organization:dialog.title.addGroup'), + message: this.i18nService.t( + 'organization:dialog.errorAddBuddyForGroup' + ) + } + }); + return; + } + + // Do Action. + if (!!this.groupName && this.groupName.trim().length > 0) { + // create group and update room. + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('organization:label.addGroup'), + html: this.i18nService.t( + 'organization:dialog.confirmAddBuddyForNewGroup', + { + targetGroups: this.groupName + } + ) + } + }); + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && result.choice) { + this.appGroupService.createGroup( + this.groupName, + this.selectedUserList + ); + this.dialogRef.close({ choice: true }); + } + }); + } else if (!!this.selectedGroupList && this.selectedGroupList.length > 0) { + // existed group update room. + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('organization:label.addGroup'), + html: this.i18nService.t( + 'organization:dialog.confirmAddBuddyForGroup', + { + targetGroups: this.selectedGroupList + .map((group) => group.name) + .join(',') + } + ) + } + }); + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && result.choice) { + this.selectedGroupList.forEach((group) => { + this.appGroupService.addMemberToGroup( + group, + this.selectedUserList + ); + this.dialogRef.close({ choice: true }); + }); + } + }); + } + } +} diff --git a/src/app/sections/organization/dialogs/index.ts b/src/app/sections/organization/dialogs/index.ts new file mode 100644 index 0000000..2f6412c --- /dev/null +++ b/src/app/sections/organization/dialogs/index.ts @@ -0,0 +1,4 @@ +import { AddGroupDialogComponent } from './add-group.dialog.component'; +import { ProfileDialogComponent } from './profile.dialog.component'; + +export const DIALOGS = [AddGroupDialogComponent, ProfileDialogComponent]; diff --git a/src/app/sections/organization/dialogs/profile.dialog.component.html b/src/app/sections/organization/dialogs/profile.dialog.component.html new file mode 100644 index 0000000..726c44f --- /dev/null +++ b/src/app/sections/organization/dialogs/profile.dialog.component.html @@ -0,0 +1,27 @@ +
    + +
    + {{ 'organization:profile.other' | ucapI18n }} +
    +
    + +
    + +
    +
    diff --git a/src/app/sections/organization/dialogs/profile.dialog.component.scss b/src/app/sections/organization/dialogs/profile.dialog.component.scss new file mode 100644 index 0000000..694699c --- /dev/null +++ b/src/app/sections/organization/dialogs/profile.dialog.component.scss @@ -0,0 +1,19 @@ +@import '~@ucap/lg-scss/mixins'; +.dialog-container { + width: 100%; + height: 100%; + + .dialog-body { + width: 100%; + height: 100%; + } + .btn-box { + display: flex; + flex-direction: row; + justify-content: flex-end; + button { + margin-left: 4px; + border-radius: 3px; + } + } +} diff --git a/src/app/sections/organization/dialogs/profile.dialog.component.spec.ts b/src/app/sections/organization/dialogs/profile.dialog.component.spec.ts new file mode 100644 index 0000000..8a04a19 --- /dev/null +++ b/src/app/sections/organization/dialogs/profile.dialog.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; + +import { ProfileDialogComponent } from './profile.dialog.component'; + +describe('app::account::ProfileDialogComponent', () => { + let component: ProfileDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ProfileDialogComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/sections/organization/dialogs/profile.dialog.component.ts b/src/app/sections/organization/dialogs/profile.dialog.component.ts new file mode 100644 index 0000000..9e79fc5 --- /dev/null +++ b/src/app/sections/organization/dialogs/profile.dialog.component.ts @@ -0,0 +1,153 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Inject +} from '@angular/core'; + +import { + MatDialogRef, + MAT_DIALOG_DATA, + MatDialog +} from '@angular/material/dialog'; + +import { select, Store } from '@ngrx/store'; + +import { FileUploadItem } from '@ucap/api'; +import { FileProfileSaveRequest } from '@ucap/api-common'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { UserInfoSS, UserInfoF } from '@ucap/protocol-query'; +import { LoginResponse } from '@ucap/protocol-authentication'; +import { UserInfoUpdateType, User } from '@ucap/protocol-info'; + +import { LogService } from '@ucap/ng-logger'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { + LoginSelector, + ConfigurationSelector +} from '@ucap/ng-store-authentication'; + +import { UserInfoTypes } from '@app/types'; +import { AppGroupService } from '@app/services/app-group.service'; +import { AppFileService } from '@app/services/app-file.service'; +import { AppAuthenticationService } from '@app/services/app-authentication.service'; +import { AppChatService } from '@app/services/app-chat.service'; + +export interface ProfileDialogData { + userSeq: string; +} +export interface ProfileDialogResult {} + +@Component({ + selector: 'app-dialog-organization-profile', + templateUrl: './profile.dialog.component.html', + styleUrls: ['./profile.dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileDialogComponent implements OnInit, OnDestroy { + constructor( + private store: Store, + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: ProfileDialogData, + private logService: LogService, + private changeDetectorRef: ChangeDetectorRef, + public matDialog: MatDialog, + private appAuthenticationService: AppAuthenticationService, + private appGroupService: AppGroupService, + private appChatService: AppChatService, + private appFileServie: AppFileService + ) {} + + private ngOnDestroySubject: Subject = new Subject(); + private loginRes: LoginResponse; + private user: User; + private versionInfo2Res: VersionInfo2Response; + + ngOnInit(): void { + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) + .subscribe((loginRes) => { + this.loginRes = loginRes; + }); + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onClosed(event: MouseEvent): void { + this.dialogRef.close(); + } + + onOpenCaht(userInfo: UserInfoSS) { + this.appChatService.newOpenRoom( + [Number(userInfo.seq) as any], + false, + this.user + ); + this.dialogRef.close(); + } + onSendMessage(userInfo: UserInfoSS) {} + onSendCall(call: string) {} + onSendSms(employeeNum: string) {} + onCreateConference(userSeq: number) {} + onToggleFavorit(params: { userInfo: UserInfoSS; isFavorite: boolean }) { + this.appGroupService.updateBuddy(params.userInfo, params.isFavorite); + } + onToggleBuddy(params: { userInfo: UserInfoSS; isBuddy: boolean }) { + this.appGroupService + .updateBuddyByToggle(params) + .then((isRemoveBuddy) => { + this.changeDetectorRef.markForCheck(); + }) + .catch((reson) => this.logService.error(reson)); + } + onUploadProfileImage(profileImageFileUploadItem: FileUploadItem) { + const loginSession = this.appAuthenticationService.getLoginSession(); + + const profile = { + userSeq: String(this.user.info.seq), + deviceType: loginSession.deviceType, + token: this.loginRes.tokenString, + file: profileImageFileUploadItem.file, + fileUploadItem: profileImageFileUploadItem + } as FileProfileSaveRequest; + + this.appFileServie.fileProfileSave( + profile, + this.versionInfo2Res.profileUploadUrl + ); + } + onUpdateIntro(intro: string) { + this.appGroupService.updateIntro(intro, UserInfoUpdateType.Intro); + } + onUpdateNickname(params: { userInfo: UserInfoTypes; nickname: string }) { + this.appGroupService.updateNickname( + params.userInfo as UserInfoF, + params.nickname + ); + } +} diff --git a/src/app/sections/organization/organization.section.module.ts b/src/app/sections/organization/organization.section.module.ts index 4261d8e..f1eb1ee 100644 --- a/src/app/sections/organization/organization.section.module.ts +++ b/src/app/sections/organization/organization.section.module.ts @@ -22,9 +22,12 @@ import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; import { UiModule } from '@ucap/ng-ui'; import { OrganizationUiModule } from '@ucap/ng-ui-organization'; +import { AppLayoutsModule } from '@app/layouts/layouts.module'; import { AppOrganizationModule } from '@app/ucap/organization/organization.module'; +import { AppGroupSectionModule } from '../group/group.section.module'; import { COMPONENTS } from './components'; +import { DIALOGS } from './dialogs'; @NgModule({ imports: [ @@ -51,10 +54,12 @@ import { COMPONENTS } from './components'; UiModule, OrganizationUiModule, + AppLayoutsModule, + AppGroupSectionModule, AppOrganizationModule ], - exports: [...COMPONENTS], - declarations: [...COMPONENTS], + exports: [...COMPONENTS, ...DIALOGS], + declarations: [...COMPONENTS, ...DIALOGS], entryComponents: [], providers: [ { diff --git a/src/app/services/app-account.service.ts b/src/app/services/app-account.service.ts new file mode 100644 index 0000000..bdd9d34 --- /dev/null +++ b/src/app/services/app-account.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { + SettingsDialogComponent, + SettingsDialogData, + SettingsDialogResult +} from '@app/dialogs/account/components/settings.dialog.component'; + +import { AppAuthenticationService } from './app-authentication.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AppAccountService { + constructor( + private appAuthenticationService: AppAuthenticationService, + private matDialog: MatDialog + ) {} + + async dialogForSettings() { + const userStore = this.appAuthenticationService.getUserStore(); + + const result = await this.matDialog.open< + SettingsDialogComponent, + SettingsDialogData, + SettingsDialogResult + >(SettingsDialogComponent, { + panelClass: 'settings-dialog-panel', + data: { + settings: userStore.settings + } + }); + } +} diff --git a/src/app/services/app-authentication.service.ts b/src/app/services/app-authentication.service.ts index 29b42d8..7ad483f 100644 --- a/src/app/services/app-authentication.service.ts +++ b/src/app/services/app-authentication.service.ts @@ -27,6 +27,7 @@ import { AppKey } from '@app/types/app-key.type'; import { environment } from '@environments'; import { PresenceActions } from '@ucap/ng-store-organization'; +import { StatusBulkInfo } from '@ucap/protocol-status'; @Injectable({ providedIn: 'root' @@ -147,7 +148,7 @@ export class AppAuthenticationService { ...environment.productConfig.defaultSettings, chat: { ...environment.productConfig.defaultSettings.chat, - downloadPath: await this.nativeService.getPath( + downloadPath: await this.nativeService.file_path( 'documents', environment.productConfig.file.defaultDownloadFolder ) @@ -156,9 +157,9 @@ export class AppAuthenticationService { }; if (!!environment.productConfig.defaultSettings.general.autoLaunch) { - this.nativeService.changeAutoLaunch( - environment.productConfig.defaultSettings.general.autoLaunch - ); + // this.nativeService.changeAutoLaunch( + // environment.productConfig.defaultSettings.general.autoLaunch + // ); } } @@ -193,7 +194,7 @@ export class AppAuthenticationService { }>(async (resolve, reject) => { const loginSession = this.getLoginSession(); - const networkInfo = await this.nativeService.getNetworkInfo(); + const networkInfo = await this.nativeService.platform_networkInfo(); const localIp = !!networkInfo && 0 < networkInfo.length && !!networkInfo[0].ip ? networkInfo[0].ip @@ -239,10 +240,29 @@ export class AppAuthenticationService { loginSession }) ); + // this.store.dispatch( + // PresenceActions.bulkInfo({ + // divCd: 'myBulk', + // userSeqs: [loginRes.userSeq] + // }) + // ); + // 임시 코드 this.store.dispatch( - PresenceActions.bulkInfo({ - divCd: 'myBulk', - userSeqs: [loginRes.userSeq] + PresenceActions.bulkInfoSuccess({ + statusBulkInfoList: [ + { + conferenceStatus: 'X', + imessengerStatus: 'X', + mobileConferenceStatus: 'X', + mobileStatus: 'X', + pcStatus: 'O', + phoneStatus: 'X', + statusMessage: '.', + terminalStatus: 'TERMINAL_STATE_UNKNOWN', + terminalStatusNumber: 0, + userSeq: String(loginRes.userSeq) + } as StatusBulkInfo + ] }) ); resolve({ diff --git a/src/app/services/app-chat.service.ts b/src/app/services/app-chat.service.ts index 44970ba..9282e6d 100644 --- a/src/app/services/app-chat.service.ts +++ b/src/app/services/app-chat.service.ts @@ -1,36 +1,23 @@ import { Observable, of, forkJoin } from 'rxjs'; -import { take, concatMap, map, catchError } from 'rxjs/operators'; +import { take, map, catchError } from 'rxjs/operators'; -import { Injectable, Inject, ChangeDetectorRef } from '@angular/core'; +import { Injectable, NgZone } from '@angular/core'; import { Store } from '@ngrx/store'; -import { LocaleCode, DeviceType, FileUtil } from '@ucap/core'; +import { DeviceType, FileUtil } from '@ucap/core'; -import { PasswordUtil } from '@ucap/pi'; import { LoginResponse, SSOMode } from '@ucap/protocol-authentication'; -import { NativeService } from '@ucap/native'; -import { - SessionStorageService, - LocalStorageService -} from '@ucap/ng-web-storage'; -import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; -import { InnerProtocolService } from '@ucap/ng-protocol-inner'; -import { AuthenticationProtocolService } from '@ucap/ng-protocol-authentication'; -import { LoginActions } from '@ucap/ng-store-authentication'; - -import { LoginSession } from '@app/models/login-session'; -import { UserStore } from '@app/models/user-store'; - -import { AppKey } from '@app/types/app-key.type'; +import { LocalStorageService } from '@ucap/ng-web-storage'; import { environment } from '@environments'; import { RoomInfo, RoomType, OpenRequest, - Open3Request + Open3Request, + ExitRequest } from '@ucap/protocol-room'; import { Dictionary } from '@ngrx/entity'; import { @@ -46,12 +33,17 @@ import { I18nService } from '@ucap/ng-i18n'; import { ChattingActions, RoomActions } from '@ucap/ng-store-chat'; import { SendRequest as SendEventRequest, - EventType + EventType, + Info, + MassTranslationEventJson } from '@ucap/protocol-event'; import { MassTalkSaveRequest, FileTalkSaveResponse, - FileTalkSaveRequest + FileTalkSaveRequest, + MassTalkDownloadRequest, + TransMassTalkDownloadRequest, + TransMassTalkDownloadResponse } from '@ucap/api-common'; import { CommonApiService } from '@ucap/ng-api-common'; import { StatusCode, FileUploadItem } from '@ucap/api'; @@ -60,7 +52,11 @@ import { MatDialog } from '@angular/material/dialog'; import { AlertDialogComponent, AlertDialogData, - AlertDialogResult + AlertDialogResult, + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult, + ClipboardService } from '@ucap/ng-ui'; import { StickerFilesInfo, KEY_STICKER_HISTORY } from '@ucap/ng-core'; import { @@ -68,13 +64,25 @@ import { CreateDialogData, CreateDialogResult } from '@app/sections/chat/dialogs/create.dialog.component'; +import { Router } from '@angular/router'; +import { + TransDetailDialogComponent, + TransDetailDialogData, + TransDetailDialogResult +} from '@app/sections/chat/dialogs/trans-detail.dialog.component'; +import { + FileViewerDialogComponent, + FileViewerDialogData, + FileViewerDialogResult +} from '@app/sections/chat/dialogs/file-viewer.dialog.component'; +import { User } from '@ucap/protocol-info'; @Injectable({ providedIn: 'root' }) export class AppChatService { defaultProfileImage = 'assets/images/ico/img_nophoto.svg'; - defaultProfileImageMulti = 'assets/images/ico/img_nophoto.svg'; + defaultProfileImageMulti = 'assets/images/ico/img_nophoto_multiple.svg'; constructor( private i18nService: I18nService, @@ -82,18 +90,19 @@ export class AppChatService { private localStorageService: LocalStorageService, private store: Store, private commonApiService: CommonApiService, - private logService: LogService - ) { - this.i18nService.setDefaultNamespace('chat'); - } + private clipboardService: ClipboardService, + private router: Router, + private logService: LogService, + private ngZone: NgZone + ) {} /** * 방이름 생성. * cf) 방이름이 지정되어 있다면 방이름 리턴, 지정되어 있지 않으면 방참여인원의 이름 조합. */ - getRoomName( + getRoomNameByDic( organizationTranslate: OrganizationTranslate, - loginRes: LoginResponse, + user: User, roomInfo: RoomInfo, roomUsersDictionary?: Dictionary, roomUsersShortDictionary?: Dictionary @@ -108,29 +117,37 @@ export class AppChatService { case RoomType.Mytalk: roomName = 'MyTalk'; break; + case RoomType.Single: + { + const roomUsers = this.getRoomUserList( + user, + roomInfo.roomId, + roomUsersDictionary, + roomUsersShortDictionary + ); + + if (roomUsers.users.length > 0) { + roomName = roomUsers.users + .map((item) => organizationTranslate.transform(item, 'name')) + .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0)) + .join(','); + } else { + roomName = this.i18nService.t('chat:room.noRoomUser'); + } + } + break; default: { - const roomId = roomInfo.roomId; - const roomUsers = !!roomUsersDictionary - ? roomUsersDictionary[roomId] - : undefined; - const roomUsersShort = !!roomUsersShortDictionary - ? roomUsersShortDictionary[roomId] - : undefined; - - let users = []; - let existUsers = false; - if (!!roomUsers && roomUsers.userInfos.length > 0) { - existUsers = true; - users = roomUsers.userInfos.filter( - (userInfo) => userInfo.seq !== Number(loginRes.userSeq) - ); - } else if (!!roomUsersShort && roomUsersShort.userInfos.length > 0) { - existUsers = true; - users = roomUsersShort.userInfos.filter( - (userInfo) => userInfo.seq !== Number(loginRes.userSeq) - ); - } + const roomUsers = this.getRoomUserList( + user, + roomInfo.roomId, + roomUsersDictionary, + roomUsersShortDictionary + ); + const users = roomUsers.users.filter( + (userInfo) => !!userInfo.isJoinRoom + ); + const existUsers = roomUsers.existUsers; const curRoomName = roomInfo.roomName; if (!!curRoomName && curRoomName.trim().length > 0) { @@ -138,10 +155,84 @@ export class AppChatService { roomName = curRoomName; } else { if (users.length > 0) { - roomName = organizationTranslate.transform(users, 'name', ','); + roomName = users + .map((item) => organizationTranslate.transform(item, 'name')) + .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0)) + .join(','); + // roomName = organizationTranslate.transform(users, 'name', ','); } else { if (existUsers) { - roomName = this.i18nService.t('room.noRoomUser'); + roomName = this.i18nService.t('chat:room.noRoomUser'); + } + } + } + } + break; + } + + return roomName; + } + getRoomName( + organizationTranslate: OrganizationTranslate, + user: User, + roomInfo: RoomInfo, + roomUsersMap?: RoomUserMap, + roomUsersShortMap?: RoomUserShortMap + ): string { + if (!roomInfo) { + return ''; + } + + let roomName = '...'; + + switch (roomInfo.roomType) { + case RoomType.Mytalk: + roomName = 'MyTalk'; + break; + case RoomType.Single: + { + const roomUsers = this.getRoomUserList01( + user, + roomUsersMap, + roomUsersShortMap + ); + + if (roomUsers.users.length > 0) { + roomName = roomUsers.users + .map((item) => organizationTranslate.transform(item, 'name')) + .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0)) + .join(','); + } else { + roomName = this.i18nService.t('chat:room.noRoomUser'); + } + } + break; + default: + { + const roomUsers = this.getRoomUserList01( + user, + roomUsersMap, + roomUsersShortMap + ); + const users = roomUsers.users.filter( + (userInfo) => !!userInfo.isJoinRoom + ); + const existUsers = roomUsers.existUsers; + + const curRoomName = roomInfo.roomName; + if (!!curRoomName && curRoomName.trim().length > 0) { + // Exist RoomName. + roomName = curRoomName; + } else { + if (users.length > 0) { + roomName = users + .map((item) => organizationTranslate.transform(item, 'name')) + .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0)) + .join(','); + // roomName = organizationTranslate.transform(users, 'name', ','); + } else { + if (existUsers) { + roomName = this.i18nService.t('chat:room.noRoomUser'); } } } @@ -155,41 +246,34 @@ export class AppChatService { /** * 방 프로필 이미지 생성. * cf) 방 참여인원의 프로필을 리턴. - * 없으면, defaultProfileImage, defaultProfileImageMulti, - * 멀티룸은 기본 defaultProfileImageMulti + * 없으면, '' 빈값을 리턴하고 ucapImage pipe 에서 default Image 로 처리. */ - getRoomProfileImage( + getRoomProfileImageByDic( + user: User, roomInfo: RoomInfo, - loginRes: LoginResponse, roomUsersDictionary?: Dictionary, - roomUsersShortDictionary?: Dictionary, - defaultProfileImage?: string, - defaultProfileImageMulti?: string + roomUsersShortDictionary?: Dictionary ): string { - defaultProfileImage = defaultProfileImage || this.defaultProfileImage; - defaultProfileImageMulti = - defaultProfileImageMulti || this.defaultProfileImageMulti; - let roomImage = ''; if (!!roomInfo) { switch (roomInfo.roomType) { case RoomType.Mytalk: { - if (!!loginRes && !!loginRes.userInfo) { - roomImage = loginRes.userInfo.profileImageFile; + if (!!user && !!user.info) { + roomImage = user.info.profileImageFile; } } break; case RoomType.Multi: { - roomImage = defaultProfileImageMulti; + // default image } break; default: { const roomUsers = this.getRoomUserList( - loginRes, + user, roomInfo.roomId, roomUsersDictionary, roomUsersShortDictionary @@ -206,8 +290,47 @@ export class AppChatService { } } - if (roomImage.trim().length === 0) { - roomImage = defaultProfileImage; + return roomImage; + } + getRoomProfileImage( + user: User, + roomInfo: RoomInfo, + roomUsersMap?: RoomUserMap, + roomUsersShortMap?: RoomUserShortMap + ): string { + let roomImage = ''; + + if (!!roomInfo) { + switch (roomInfo.roomType) { + case RoomType.Mytalk: + { + if (!!user && !!user.info) { + roomImage = user.info.profileImageFile; + } + } + break; + case RoomType.Multi: + { + // default image + } + break; + default: + { + const roomUsers = this.getRoomUserList01( + user, + roomUsersMap, + roomUsersShortMap + ); + if ( + !!roomUsers && + !!roomUsers.existUsers && + roomUsers.users.length > 0 + ) { + roomImage = roomUsers.users[0].profileImageFile; + } + } + break; + } } return roomImage; @@ -219,7 +342,7 @@ export class AppChatService { * roomUser 가 detail 정보라 우선함. */ getRoomUserList( - loginRes: LoginResponse, + user: User, roomId: string, roomUsersDictionary?: Dictionary, roomUsersShortDictionary?: Dictionary @@ -237,12 +360,37 @@ export class AppChatService { if (!!roomUsers && roomUsers.userInfos.length > 0) { existUsers = true; users = roomUsers.userInfos.filter( - (userInfo) => userInfo.seq !== Number(loginRes.userSeq) + (userInfo) => String(userInfo.seq) !== String(user.info.seq) ); } else if (!!roomUsersShort && roomUsersShort.userInfos.length > 0) { existUsers = true; users = roomUsersShort.userInfos.filter( - (userInfo) => userInfo.seq !== Number(loginRes.userSeq) + (userInfo) => String(userInfo.seq) !== String(user.info.seq) + ); + } + + return { + existUsers, + users + }; + } + getRoomUserList01( + user: User, + roomUsersMap?: RoomUserMap, + roomUsersShortMap?: RoomUserShortMap + ) { + let users = []; + let existUsers = false; + + if (!!roomUsersMap && roomUsersMap.userInfos.length > 0) { + existUsers = true; + users = roomUsersMap.userInfos.filter( + (userInfo) => String(userInfo.seq) !== String(user.info.seq) + ); + } else if (!!roomUsersShortMap && roomUsersShortMap.userInfos.length > 0) { + existUsers = true; + users = roomUsersShortMap.userInfos.filter( + (userInfo) => String(userInfo.seq) !== String(user.info.seq) ); } @@ -306,12 +454,13 @@ export class AppChatService { /** Send Masstext message */ sendMessageOfMassText( loginRes: LoginResponse, + user: User, deviceType: DeviceType, roomId: string, sentMessage: string ) { const req: MassTalkSaveRequest = { - userSeq: loginRes.userSeq, + userSeq: String(user.info.seq), deviceType, token: loginRes.tokenString, content: sentMessage.replace(/"/g, '\\"'), @@ -325,7 +474,7 @@ export class AppChatService { map((res) => { if (res.statusCode === StatusCode.Success) { this.sendEvent( - loginRes.userSeq, + String(user.info.seq), roomId, EventType.MassText, res.returnJson @@ -341,6 +490,30 @@ export class AppChatService { .subscribe(); } + copyFromContentText(text: string) { + if (this.clipboardService.copyFromContent(text)) { + alert('복사완료'); + // this.snackBarService.open( + // this.translateService.instant('common:clipboard.results.copied'), + // '', + // { + // duration: 3000, + // verticalPosition: 'top', + // horizontalPosition: 'center' + // } + // ); + } + } + + massTextDownload(massTalkDownloadReq: MassTalkDownloadRequest) { + this.commonApiService + .massTalkDownload(massTalkDownloadReq) + .pipe(take(1)) + .subscribe((res) => { + this.copyFromContentText(res.content); + }); + } + async sendMessageOfSticker( senderSeq: string, roomId: string, @@ -357,10 +530,10 @@ export class AppChatService { AlertDialogData, AlertDialogResult >(AlertDialogComponent, { - panelClass: 'miniSize-dialog', + panelClass: 'min-create-dialog', data: { - title: this.i18nService.t('errors.label'), - message: this.i18nService.t('errors.maxLengthOfMassText', { + title: this.i18nService.t('chat:errors.label'), + message: this.i18nService.t('chat:errors.maxLengthOfMassText', { maxLength: environment.productConfig.chat.masstextLength }) } @@ -386,128 +559,58 @@ export class AppChatService { /** Send Translation message */ sendMessageOfTranslate( - loginRes: LoginResponse, - deviceType: DeviceType, - destLocale: string, + senderSeq: string, roomId: string, - sentMessage: string, - selectedSticker?: StickerFilesInfo + eventType: EventType, + sentMessage: string ) { - // const destLocale = this.destLocale; - // const original = message; - // const roomSeq = this.roomInfoSubject.value.roomSeq; - // if (!!this.isTranslationProcess) { - // return; - // } - // this.isTranslationProcess = true; - // this.commonApiService - // .translationSave({ - // userSeq: this.loginResSubject.value.userSeq, - // deviceType: this.environmentsInfo.deviceType, - // token: this.loginResSubject.value.tokenString, - // roomSeq, - // original, - // srcLocale: '', - // destLocale - // } as TranslationSaveRequest) - // .pipe( - // take(1), - // map((res) => { - // if (res.statusCode === StatusCode.Success) { - // let sentMessage = ''; - // let eventType = EventType.Translation; - // let previewObject: TranslationEventJson | MassTranslationEventJson; - // if (res.translationSeq > 0) { - // // Mass Text Translation - // previewObject = res; - // sentMessage = res.returnJson; - // eventType = EventType.MassTranslation; - // } else { - // // Normal Text Translation - // previewObject = { - // locale: destLocale, - // original, - // translation: res.translation, - // stickername: '', - // stickerfile: !!this.selectedSticker - // ? this.selectedSticker.index - // : '' - // }; - // sentMessage = JSON.stringify(previewObject); - // eventType = EventType.Translation; - // } - // if (!!this.translationPreview) { - // // preview - // this.translationPreviewInfo = { - // previewInfo: res, - // translationType: eventType - // }; - // this.changeDetectorRef.detectChanges(); - // } else { - // // direct send - // this.store.dispatch( - // EventStore.send({ - // senderSeq: this.loginResSubject.value.userSeq, - // req: { - // roomSeq, - // eventType, - // sentMessage - // } - // }) - // ); - // if (!!this.translationPreviewInfo) { - // this.translationPreviewInfo = null; - // } - // } - // if (!!this.selectedSticker) { - // this.isShowStickerSelector = false; - // this.setStickerHistory(this.selectedSticker); - // this.selectedSticker = null; - // } - // } else { - // this.isTranslationProcess = false; - // this.dialogService.open< - // AlertDialogComponent, - // AlertDialogData, - // AlertDialogResult - // >(AlertDialogComponent, { - // panelClass: 'miniSize-dialog', - // data: { - // title: '', - // message: this.translateService.instant( - // 'chat.error.translateServerError' - // ) - // } - // }); - // this.logger.error('res', res); - // } - // }), - // catchError((error) => { - // this.isTranslationProcess = false; - // this.dialogService.open< - // AlertDialogComponent, - // AlertDialogData, - // AlertDialogResult - // >(AlertDialogComponent, { - // panelClass: 'miniSize-dialog', - // data: { - // title: '', - // message: this.translateService.instant( - // 'chat.error.translateServerError' - // ) - // } - // }); - // return of(this.logger.error('error', error)); - // }) - // ) - // .subscribe(() => { - // this.isTranslationProcess = false; - // }); + this.sendEvent(senderSeq, roomId, eventType, sentMessage); } + /** + * Mass Translation message detail + */ + massTranslationMessageDetail( + req: TransMassTalkDownloadRequest, + message: Info, + contentsType: string, + roomId: string + ) { + this.commonApiService + .transMassTalkDownload(req) + .pipe(take(1)) + .subscribe((res: TransMassTalkDownloadResponse) => { + let contents = ''; + + if (res.statusCode === StatusCode.Success) { + contents = contentsType === 'T' ? res.translation : res.original; + } else { + contents = + contentsType === 'T' + ? message.sentMessageJson.translation + : message.sentMessageJson.original; + } + + this.dialog.open< + TransDetailDialogComponent, + TransDetailDialogData, + TransDetailDialogResult + >(TransDetailDialogComponent, { + panelClass: 'mid-create-dialog', + data: { + contents, + message, + roomId, + defaultProfileImage: this.defaultProfileImage + } + }); + return; + }); + } /** Send AttachFile message */ sendMessageOfAttachFile( loginRes: LoginResponse, + user: User, deviceType: DeviceType, roomId: string, fileUploadItems: FileUploadItem[] @@ -546,7 +649,7 @@ export class AppChatService { } const req: FileTalkSaveRequest = { - userSeq: loginRes.userSeq, + userSeq: String(user.info.seq), deviceType, token: loginRes.tokenString, roomId, @@ -572,39 +675,74 @@ export class AppChatService { ); } - forkJoin(allObservables) - .pipe(take(1)) - .subscribe( - (resList) => { - for (const res of resList) { - this.store.dispatch( - ChattingActions.send({ - senderSeq: loginRes.userSeq, - req: { - roomId, - eventType: EventType.File, - sentMessage: JSON.stringify(res.returnJson) - } as SendEventRequest - }) - ); + this.ngZone.run(() => { + forkJoin(allObservables) + .pipe(take(1)) + .subscribe( + (resList) => { + for (const res of resList) { + this.store.dispatch( + ChattingActions.send({ + senderSeq: String(user.info.seq), + req: { + roomId, + eventType: EventType.File, + sentMessage: JSON.stringify(res.returnJson) + } as SendEventRequest + }) + ); + } + }, + (error) => { + this.logService.debug('onFileSelected error', error); + reject(error); + }, + () => { + resolve(true); } - }, - (error) => { - this.logService.debug('onFileSelected error', error); - const msg = this.i18nService.t('common.file.errors.failToUpload'); - alert(msg); - - reject(msg); - }, - () => { - resolve(true); - } - ); + ); + }); }; return new Promise(executor); } + /** + * Open Dialog For 'Exit Room'. + */ + exitRoomDialog(roomInfo: RoomInfo): void { + if (!roomInfo) { + return; + } + + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('chat:label.exitFromRoom'), + html: this.i18nService.t('chat:dialog.confirmExitFromRoom') + } + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.store.dispatch( + RoomActions.del({ + req: { + roomId: roomInfo.roomId + } as ExitRequest + }) + ); + } + }); + } + /** * Open Dialog for 'New Room Open'. */ @@ -614,8 +752,7 @@ export class AppChatService { CreateDialogData, CreateDialogResult >(CreateDialogComponent, { - width: '100%', - height: '100%', + panelClass: 'max-create-dialog', data: {} }); @@ -635,12 +772,34 @@ export class AppChatService { .subscribe(); } - newOpenRoom( - userSeqs: string[], - isTimerRoom: boolean, - loginRes?: LoginResponse - ) { - if (!userSeqs || userSeqs.length === 0) { + openRoombyRoomId(roomId: string): void { + this.router.navigate( + [ + 'chat', + { + outlets: { content: 'chatroom' } + } + ], + { + queryParams: { roomId } + } + ); + } + + newOpenRoom(userSeqs: string[], isTimerRoom: boolean, user?: User) { + // popup all close. + this.dialog.closeAll(); + + if ( + !userSeqs || + userSeqs.length === 0 || + userSeqs.length > (environment.productConfig.chat.maxChatRoomUser || 299) + ) { + this.logService.error( + `open room user over size by ${ + environment.productConfig.chat.maxChatRoomUser || 299 + }` + ); return; } isTimerRoom = isTimerRoom || false; @@ -661,13 +820,13 @@ export class AppChatService { let req: OpenRequest; if ( userSeqs.length === 1 && - !!loginRes && - userSeqs[0] === loginRes.userSeq + !!user && + String(userSeqs[0]) === String(user.info.seq) ) { // MyTalk Open. req = { divCd: 'OPMYTALK', - userSeqs: [loginRes.talkWithMeBotSeq + ''] + userSeqs: [user.talkWithMeBotSeq + ''] }; } else { req = { @@ -678,4 +837,24 @@ export class AppChatService { this.store.dispatch(RoomActions.create({ req })); } } + + openFileviwer(data: FileViewerDialogData): void { + this.dialog.open< + FileViewerDialogComponent, + FileViewerDialogData, + FileViewerDialogResult + >(FileViewerDialogComponent, { + // position: { + // top: '50px' + // }, + maxWidth: '100vw', + maxHeight: '100vh', + // height: 'calc(100% - 50px)', + height: '100%', + width: '100%', + hasBackdrop: false, + panelClass: 'app-dialog-full', + data + }); + } } diff --git a/src/app/services/app-file.service.ts b/src/app/services/app-file.service.ts index 0dc2f68..0fa0c53 100644 --- a/src/app/services/app-file.service.ts +++ b/src/app/services/app-file.service.ts @@ -1,10 +1,32 @@ -import { Injectable, Inject } from '@angular/core'; +import { of } from 'rxjs'; +import { take, map, finalize, catchError } from 'rxjs/operators'; + +import { Injectable, Inject, NgZone } from '@angular/core'; -import { FileUtil } from '@ucap/core'; -import { I18nService, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; -import { CommonApiService } from '@ucap/ng-api-common'; import { Store } from '@ngrx/store'; +import { FileUtil, LoginSession, MimeUtil } from '@ucap/core'; +import { NativeService } from '@ucap/native'; +import { FileDownloadItem, StatusCode } from '@ucap/api'; +import { FileProfileSaveRequest } from '@ucap/api-common'; +import { LoginResponse } from '@ucap/protocol-authentication'; +import { FileEventJson } from '@ucap/protocol-event'; +import { DownCheckRequest } from '@ucap/protocol-file'; +import { UserInfoUpdateType, User } from '@ucap/protocol-info'; + +import { I18nService } from '@ucap/ng-i18n'; +import { CommonApiService } from '@ucap/ng-api-common'; +import { LogService } from '@ucap/ng-logger'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; +import { FileProtocolService } from '@ucap/ng-protocol-file'; + +import { UserActions } from '@ucap/ng-store-organization'; +import { ChattingActions } from '@ucap/ng-store-chat'; + +import { UserStore } from '@app/models/user-store'; + +import { AppAuthenticationService } from './app-authentication.service'; + @Injectable({ providedIn: 'root' }) @@ -12,10 +34,13 @@ export class AppFileService { constructor( private store: Store, private i18nService: I18nService, - private commonApiService: CommonApiService - ) { - this.i18nService.setDefaultNamespace('common'); - } + private commonApiService: CommonApiService, + private fileProtocolService: FileProtocolService, + private appAuthenticationService: AppAuthenticationService, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private ngZone: NgZone, + private logService: LogService + ) {} async validUploadFile( fileList: FileList, @@ -28,7 +53,7 @@ export class AppFileService { for (let i = 0; i < fileList.length; i++) { const file = fileList[i]; if (file.size > fileAllowSize * 1024 * 1024) { - const msg = this.i18nService.t('common.file.errors.oversize', { + const msg = this.i18nService.t('common:file.errors.oversize', { maxSize: fileAllowSize }); alert(msg); @@ -43,7 +68,7 @@ export class AppFileService { FileUtil.getExtensions(fileList) ); if (!!checkExt) { - const msg = this.i18nService.t('common.file.errors.notSupporedType', { + const msg = this.i18nService.t('common:file.errors.notSupporedType', { supporedType: checkExt.join(',') }); alert(msg); @@ -56,7 +81,7 @@ export class AppFileService { // horizontalPosition: 'center', // data: { // html: this.translateService.instant( - // 'common.file.errors.notSupporedType', + // 'common:file.errors.notSupporedType', // { // supporedType: checkExt.join(',') // } @@ -72,7 +97,7 @@ export class AppFileService { fileList ); if (!!fakeMedia) { - const msg = this.i18nService.t('common.file.errors.notAcceptableMime', { + const msg = this.i18nService.t('common:file.errors.notAcceptableMime', { supporedType: fakeMedia.join(',') }); alert(msg); @@ -83,4 +108,233 @@ export class AppFileService { return valid; } + + validUploadProfileFile( + file: File, + fileAllowSize: number = 50 + ): Promise { + return new Promise(async (resolve, reject) => { + try { + if (file.size > fileAllowSize * 1024 * 1024) { + const msg = this.i18nService.t('common:file.errors.oversize', { + maxSize: fileAllowSize + }); + alert(msg); + + resolve(false); + } + const fakeMedia = await this.commonApiService.mediaFiles([file]); + if (!fakeMedia) { + const extension = FileUtil.getExtension( + file.name + ).toLocaleLowerCase(); + const msg = this.i18nService.t( + 'common:file.errors.notAcceptableMime', + { + supporedType: extension + } + ); + alert(msg); + + resolve(false); + } + resolve(true); + } catch (error) { + reject(error); + } + }); + } + + fileProfileSave(request: FileProfileSaveRequest, profileUploadUrl: string) { + this.validUploadProfileFile(request.fileUploadItem.file) + .then((res) => { + if (!!res) { + this._fileProfileSave(request, profileUploadUrl); + } + }) + .catch((resone) => { + this.logService.error(resone); + }); + } + private _fileProfileSave( + request: FileProfileSaveRequest, + profileUploadUrl: string + ) { + this.commonApiService + .fileProfileSave(request, profileUploadUrl) + .pipe( + take(1), + map((res) => { + console.log(res); + if (!res) { + return; + } + if (StatusCode.Success === res.statusCode) { + // this.onUpdateProfile(res.profileURL); + return res; + } else { + throw res; + } + }), + finalize(() => { + setTimeout(() => { + request.fileUploadItem.uploadingProgress$ = undefined; + }, 1000); + }) + ) + .subscribe( + (res) => { + this.logService.debug('profile: ', res); + const findIdx = res.profileURL.indexOf('ProfileImage'); + let imgInfo: string = res.profileURL; + + if (findIdx > -1) { + const startIdx = res.profileURL.indexOf('/', findIdx); + imgInfo = res.profileURL.substring(startIdx); + } + + this.store.dispatch( + UserActions.modifyInfo({ + req: { + type: UserInfoUpdateType.Image, + info: imgInfo + } + }) + ); + }, + (error) => { + this.logService.error(error); + // this.snackBarService.open( + // this.translateService.instant( + // 'profile.errors.failToChangeProfileImage' + // ), + // '', + // { + // duration: 3000, + // verticalPosition: 'bottom' + // } + // ); + } + ); + } + saveFile( + fileParams: { + fileInfo: FileEventJson; + fileDownloadItem: FileDownloadItem; + type: string; + fileName: string; + fileDownloadUrl?: string; + savePath?: string; + }, + loginRes: LoginResponse, + user: User, + loginSession: LoginSession + ) { + const fileName = fileParams.fileInfo.fileName; + const fileDownloadItem = fileParams.fileDownloadItem; + const fileDownloadUrl = fileParams.fileDownloadUrl; + const attachmentsSeq = fileParams.fileInfo.attachmentSeq; + const savePath = fileParams.savePath; + let downloadPath; + + const userStore: UserStore = this.appAuthenticationService.getUserStore(); + + if (!!userStore) { + downloadPath = userStore.settings.chat.downloadPath; + } + + const fileTalkDownloadError = (reason: any) => { + this.logService.warn(reason); + // this.snackBarService.openFromComponent< + // AlertSnackbarComponent, + // AlertSnackbarData + // >(AlertSnackbarComponent, { + // data: { + // html: this.translateService.instant('common:file.errors.failToSave'), + // buttonText: this.translateService.instant('common:file.errors.label') + // } + // }); + }; + + this.ngZone.run(() => { + this.commonApiService + .fileTalkDownload( + { + userSeq: String(user.info.seq), + deviceType: loginSession.deviceType, + token: loginRes.tokenString, + attachmentsSeq: attachmentsSeq + '', + fileDownloadItem + }, + fileDownloadUrl + ) + .pipe( + take(1), + map((rawBlob) => { + const mimeType = MimeUtil.getMimeFromExtension( + FileUtil.getExtension(fileName) + ); + const blob = rawBlob.slice(0, rawBlob.size, mimeType); + + FileUtil.fromBlobToBuffer(blob) + .then((buffer) => { + /** download check */ + this.store.dispatch( + ChattingActions.fileDownCheck({ + req: { seq: attachmentsSeq } as DownCheckRequest + }) + ); + + this.nativeService + .file_save(buffer, fileName, mimeType, savePath) + .then((filePath) => { + if (!!filePath) { + // const snackBarRef = this.snackBarService.open( + // this.translateService.instant( + // 'common:file.results.savedToPath', + // { + // path: filePath + // } + // ), + // this.translateService.instant('common:file.open'), + // { + // duration: 3000, + // verticalPosition: 'bottom', + // horizontalPosition: 'center' + // } + // ); + // snackBarRef.onAction().subscribe(() => { + // snackBarRef.dismiss(); + // this.ngZone.runOutsideAngular(() => { + // this.nativeService + // .openTargetItem(filePath) + // .catch((reason) => { + // this.logger.warn(reason); + // }); + // }); + // }); + } else { + fileTalkDownloadError('fail'); + } + }) + .catch((reason) => { + fileTalkDownloadError(reason); + }); + }) + .catch((reason) => { + fileTalkDownloadError(reason); + }); + }), + finalize(() => { + if (!!fileDownloadItem) { + setTimeout(() => { + fileDownloadItem.downloadingProgress$ = undefined; + }, 1000); + } + }), + catchError((error) => of(error)) + ) + .subscribe(); + }); + } } diff --git a/src/app/services/app-group.service.ts b/src/app/services/app-group.service.ts new file mode 100644 index 0000000..1862a50 --- /dev/null +++ b/src/app/services/app-group.service.ts @@ -0,0 +1,471 @@ +import { of } from 'rxjs'; +import { take, catchError, map } from 'rxjs/operators'; + +import { Injectable, Inject } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; + +import { Store } from '@ngrx/store'; + +import { NativeService } from '@ucap/native'; +import { GroupDetailData, UserInfo } from '@ucap/protocol-sync'; +import { UserInfoF, UserInfoSS, UserInfoDN } from '@ucap/protocol-query'; +import { UserInfoUpdateType } from '@ucap/protocol-info'; + +import { LogService } from '@ucap/ng-logger'; +import { I18nService } from '@ucap/ng-i18n'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; + +import { UserActions } from '@ucap/ng-store-organization'; +import { LoginActions } from '@ucap/ng-store-authentication'; +import { GroupActions, BuddyActions } from '@ucap/ng-store-group'; + +import { + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult, + AlertDialogComponent, + AlertDialogData, + AlertDialogResult +} from '@ucap/ng-ui'; + +import { EditInlineInputDialogComponent } from '@app/sections/group/dialogs/edit-inline-input.dialog.component'; +import { UserInfoTypes, GroupManageType } from '@app/types'; +import { + EditUserDialogComponent, + EditUserDialogData, + EditUserDialogResult +} from '@app/sections/group/dialogs/edit-user.dialog.component'; + +@Injectable({ + providedIn: 'root' +}) +export class AppGroupService { + constructor( + private dialog: MatDialog, + private store: Store, + private i18nService: I18nService, + protected logService: LogService, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService + ) {} + + addMemberToGroup( + targetGroup: GroupDetailData, + userInfoList: UserInfoTypes[] + ) { + const targetUserSeqs: string[] = [...targetGroup.userSeqs]; + + userInfoList.map((userInfo) => { + const find = targetUserSeqs.indexOf(String(userInfo.seq)); + if (find < 0) { + targetUserSeqs.push(String(userInfo.seq)); + } + }); + + this._updateMember(targetGroup, targetUserSeqs); + } + + moveMemberToGroup( + fromGroup: GroupDetailData, + toGroup: GroupDetailData, + userInfoList: UserInfoTypes[] + ) { + const targetUserSeqs: string[] = []; + + userInfoList.map((userInfo) => { + targetUserSeqs.push(String(userInfo.seq)); + }); + + this.store.dispatch( + GroupActions.moveMember({ + fromGroup, + toGroup, + targetUserSeq: targetUserSeqs + }) + ); + } + copyMemberToGroup( + targetGroup: GroupDetailData, + userInfoList: UserInfoTypes[] + ) { + const targetUserSeqs: string[] = [...targetGroup.userSeqs]; + + userInfoList.map((userInfo) => { + const find = targetUserSeqs.indexOf(String(userInfo.seq)); + if (find < 0) { + targetUserSeqs.push(String(userInfo.seq)); + } + }); + + this._updateMember(targetGroup, targetUserSeqs); + } + removeMemberToGroup( + contens: string, + userInfoList: UserInfoTypes[], + group: GroupDetailData + ): Promise { + return new Promise((resolve, rejects) => { + try { + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('group:dialog.title.removeBuddy'), + html: contens + } + }); + dialogRef + .afterClosed() + .pipe( + take(1), + map((result) => { + if (!!result && result.choice) { + const trgtUserSeq: string[] = []; + const selectSeq: string[] = []; + + userInfoList.map((user) => selectSeq.push(String(user.seq))); + + group.userSeqs.filter((buddySeq) => { + if ( + !trgtUserSeq.includes(buddySeq) && + !selectSeq.includes(buddySeq) + ) { + trgtUserSeq.push(buddySeq); + } + }); + + this._updateMember(group, trgtUserSeq); + resolve(); + } + }), + catchError((err) => { + return of(err); + }) + ) + .subscribe(); + } catch (err) { + rejects(); + } + }); + } + + createGroup(groupName: string, userInfoList: UserInfoTypes[]): Promise { + return new Promise((resolve, rejects) => { + try { + const targetUserSeqs: string[] = []; + userInfoList.map((user) => targetUserSeqs.push(String(user.seq))); + this.store.dispatch( + GroupActions.create({ + groupName, + targetUserSeqs + }) + ); + resolve(); + } catch (error) { + rejects(error); + } + }); + } + removeGroup(groupBuddyList: { + group: GroupDetailData; + buddyList: UserInfo[]; + }): Promise { + return new Promise((resolve, rejects) => { + try { + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('group:dialog.title.removeGroup'), + html: this.i18nService.t('group:dialog.removeGroupConfirm', { + targetGroup: `${groupBuddyList.group.name}` + }) + } + }); + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.store.dispatch( + GroupActions.del({ group: groupBuddyList.group }) + ); + + resolve(); + } + }); + } catch (error) { + rejects(error); + } + }); + } + updateGroupName(group: GroupDetailData, rect: any): Promise { + return new Promise((resolve, rejects) => { + try { + const dialogRef = this.dialog.open(EditInlineInputDialogComponent, { + width: rect.width, + height: rect.height, + panelClass: 'ucap-edit-group-name-dialog', + data: { + type: 'GROUP_NAME', + curValue: group.name, + placeholder: this.i18nService.t('group:dialog.newGroupName'), + maxLength: 20, + left: rect.left, + top: rect.top + } + }); + + dialogRef + .afterClosed() + .pipe( + take(1), + map((result) => { + if ( + !!result && + result.choice && + result.curValue.localeCompare(name) !== 0 + ) { + this.store.dispatch( + GroupActions.update({ + req: { + groupSeq: group.seq, + groupName: result.curValue, + userSeqs: group.userSeqs + } + }) + ); + resolve(); + } + }), + catchError((err) => { + return of(err); + }) + ) + .subscribe(); + } catch (error) { + rejects(error); + } + }); + } + + updateBuddyByToggle(params: { + userInfo: UserInfoSS; + isBuddy: boolean; + }): Promise { + return new Promise((resolve, rejects) => { + try { + if (params.isBuddy) { + // 동료추가 + const dialogRef = this.dialog.open< + EditUserDialogComponent, + EditUserDialogData, + EditUserDialogResult + >(EditUserDialogComponent, { + width: '100%', + height: '100%', + data: { + title: this.i18nService.t('group:dialog.title.addBuddy'), + type: GroupManageType.Add, + userInfos: [params.userInfo] + } + }); + dialogRef + .afterClosed() + .pipe( + take(1), + map((result: EditUserDialogResult) => { + if (result.type === GroupManageType.Add) { + if ( + !!result.selectGroupList && + result.selectGroupList.length > 0 + ) { + result.selectGroupList.forEach((g) => { + this.addMemberToGroup(g, result.selelctUserList); + }); + } + } else if (result.type === GroupManageType.Create) { + this.createGroup(result.groupName, result.selelctUserList); + } + resolve(false); + }), + catchError((err) => { + return of(err); + }) + ) + .subscribe(); + } else { + // 동료삭제 + + this.removeBuddy(params.userInfo) + .then(() => { + resolve(true); + }) + .catch((reason) => {}) + .finally(() => {}); + } + } catch (error) { + rejects(error); + } + }); + } + + updateBuddy(userInfo: UserInfoTypes, isFavorite: boolean): Promise { + return new Promise((resolve, rejects) => { + try { + this.store.dispatch( + BuddyActions.update({ + req: { seq: Number(userInfo.seq), isFavorit: isFavorite } + }) + ); + resolve(); + } catch (error) { + rejects(error); + } + }); + } + removeBuddy(userInfo: UserInfoTypes): Promise { + return new Promise((resolve, rejects) => { + try { + const tempUser = userInfo as + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN; + + const dialogRef = this.dialog.open< + ConfirmDialogComponent, + ConfirmDialogData, + ConfirmDialogResult + >(ConfirmDialogComponent, { + panelClass: 'min-create-dialog', + data: { + title: this.i18nService.t('group:dialog.title.removeBuddy'), + html: this.i18nService.t( + 'group:dialog.removeBuddyFromProfile', + + { target: `${tempUser.name} ${tempUser.grade}` } + ) + } + }); + + dialogRef + .afterClosed() + .pipe(take(1)) + .subscribe((result) => { + if (!!result && !!result.choice) { + this.store.dispatch( + BuddyActions.delAndClear({ seq: Number(userInfo.seq) }) + ); + + resolve(); + } + }); + } catch (error) { + rejects(error); + } + }); + } + updateNickname( + userInfo: UserInfoF, + nickname: string, + rect?: any + ): Promise { + return new Promise((resolve, rejects) => { + try { + if (!!rect) { + const dialogRef = this.dialog.open(EditInlineInputDialogComponent, { + width: rect.width - 30 + '', + height: rect.height, + panelClass: 'ucap-edit-group-name-dialog', + data: { + type: 'NICKNAME', + curValue: userInfo.nickName, + placeholder: this.i18nService.t('group:dialog.newNickname'), + maxLength: 20, + left: rect.left + 70, + top: rect.top + } + }); + + dialogRef + .afterClosed() + .pipe( + take(1), + map((result) => { + if ( + !!result && + result.choice && + result.curValue.localeCompare(userInfo.nickName) !== 0 + ) { + this._updateNickname(userInfo.seq, result.curValue); + resolve(); + } + }), + catchError((err) => { + return of(err); + }) + ) + .subscribe(); + } else { + if (nickname.trim().localeCompare('') === 0) { + nickname = ' '; + } + this._updateNickname(userInfo.seq, nickname); + resolve(); + } + } catch (error) { + rejects(error); + } + }); + } + + updateIntro(info: string, type: UserInfoUpdateType) { + if (!!info && info.trim().localeCompare('') === 0) { + info = ' '; + } + this.store.dispatch( + UserActions.modifyInfo({ + req: { + type, + info + } + }) + ); + } + private _updateNickname(userSeq: number | string, nickname: string) { + let userSeqf: number; + try { + userSeqf = Number(userSeq); + } catch (error) { + this.logService.error(error); + } + + this.store.dispatch( + BuddyActions.nickname({ + req: { + userSeq: Number(userSeq), + nickname + } + }) + ); + } + + private _updateMember( + targetGroup: GroupDetailData, + targetUserSeqs: string[] + ) { + this.store.dispatch( + GroupActions.updateMember({ + targetGroup, + targetUserSeqs + }) + ); + } +} diff --git a/src/app/services/app-native.service.ts b/src/app/services/app-native.service.ts index 4c23dfa..d476131 100644 --- a/src/app/services/app-native.service.ts +++ b/src/app/services/app-native.service.ts @@ -10,6 +10,7 @@ import { NativeService } from '@ucap/native'; import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; import { LoginSelector } from '@ucap/ng-store-authentication'; +import { AppAccountService } from './app-account.service'; @Injectable({ providedIn: 'root' @@ -17,13 +18,14 @@ import { LoginSelector } from '@ucap/ng-store-authentication'; export class AppNativeService { constructor( @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private appAccountService: AppAccountService, private store: Store, private matDialog: MatDialog, private ngZone: NgZone ) {} subscribe(): void { - this.nativeService.logout().subscribe(() => { + this.nativeService.app_onLogout$().subscribe(() => { this.ngZone.run(() => { this.matDialog.closeAll(); @@ -33,11 +35,12 @@ export class AppNativeService { }); }); - this.nativeService.changeStatus().subscribe((statusCode) => {}); + this.nativeService.app_onStatus$().subscribe((statusCode) => {}); - this.nativeService.showSetting().subscribe(() => { + this.nativeService.app_onShowSetting$().subscribe(() => { this.ngZone.run(() => { // this.store.dispatch(SettingsStore.showDialog()); + this.appAccountService.dialogForSettings(); }); }); } diff --git a/src/app/services/app-notification.service.ts b/src/app/services/app-notification.service.ts new file mode 100644 index 0000000..db70825 --- /dev/null +++ b/src/app/services/app-notification.service.ts @@ -0,0 +1,935 @@ +import { of } from 'rxjs'; +import { + tap, + withLatestFrom, + catchError, + finalize, + take, + map +} from 'rxjs/operators'; + +import { Injectable, Inject, NgZone } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; + +import { Store, select } from '@ngrx/store'; +import { Dictionary } from '@ngrx/entity'; + +import { LocaleCode, NotificationMethod } from '@ucap/core'; +import { + NativeService, + WindowState, + NotificationType, + NotificationRequest +} from '@ucap/native'; +import { + SSVC_TYPE_LOGOUT_RES, + LogoutNotification, + SSVC_TYPE_LOGOUT_REMOTE_NOTI, + LogoutRemoteNotification +} from '@ucap/protocol-authentication'; +import { + SSVC_TYPE_EVENT_SEND_RES, + SSVC_TYPE_EVENT_SEND_NOTI, + SSVC_TYPE_EVENT_READ_RES, + SSVC_TYPE_EVENT_READ_NOTI, + SSVC_TYPE_EVENT_CANCEL_NOTI, + SSVC_TYPE_EVENT_DEL_RES, + SendNotification, + ReadNotification, + CancelNotification, + DelNotification as EventDelNotification, + ReadRequest as EventReadRequest, + EventType +} from '@ucap/protocol-event'; +import { + SSVC_TYPE_INFO_USER_NOTI, + UserNotification +} from '@ucap/protocol-info'; +import { + SSVC_TYPE_GROUP_UPD_RES2, + SSVC_TYPE_GROUP_ADD_RES, + SSVC_TYPE_GROUP_DEL_RES, + UpdateNotification as GroupUpdateNotification, + AddNotification as GroupAddNotification, + DelNotification as GroupDelNotification +} from '@ucap/protocol-group'; +import { + SSVC_TYPE_BUDDY_UPD_RES, + SSVC_TYPE_BUDDY_ADD_RES, + SSVC_TYPE_BUDDY_DEL_RES, + UpdateNotification as BuddyUpdateNotification, + AddNotification as BuddyAddNotification, + DelNotification as BuddyDelNotification +} from '@ucap/protocol-buddy'; +import { + SSVC_TYPE_ROOM_INVITE_RES, + SSVC_TYPE_ROOM_INVITE_NOTI, + SSVC_TYPE_ROOM_UPD_RES, + SSVC_TYPE_ROOM_EXIT_RES, + SSVC_TYPE_ROOM_EXIT_NOTI, + SSVC_TYPE_ROOM_EXIT_FORCING_RES, + SSVC_TYPE_ROOM_EXIT_FORCING_NOTI, + SSVC_TYPE_ROOM_FONT_UPD_NOTI, + InviteNotification, + UpdateNotification as RoomUpdateNotification, + ExitNotification, + ExitForcingResponse, + ExitForcingNotification, + UpdateFontNotification +} from '@ucap/protocol-room'; +import { + SSVC_TYPE_STATUS_NOTI, + StatusNotification +} from '@ucap/protocol-status'; +import { + SSVC_TYPE_OPTION_REG_UPD_RES, + RegUpdateNotification +} from '@ucap/protocol-option'; +import { + SSVC_TYPE_UMG_NOTI, + SSVC_TYPE_UMG_DELETE_NOTI, + UmgNotiNotification, + UmgDeleteNotiNotification +} from '@ucap/protocol-umg'; +import { UserInfo } from '@ucap/protocol-sync'; + +import { LogService } from '@ucap/ng-logger'; +import { I18nService } from '@ucap/ng-i18n'; +import { + LocalStorageService, + SessionStorageService +} from '@ucap/ng-web-storage'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; +import { AuthenticationProtocolService } from '@ucap/ng-protocol-authentication'; +import { EventProtocolService } from '@ucap/ng-protocol-event'; +import { InfoProtocolService } from '@ucap/ng-protocol-info'; +import { RoomProtocolService } from '@ucap/ng-protocol-room'; +import { GroupProtocolService } from '@ucap/ng-protocol-group'; +import { BuddyProtocolService } from '@ucap/ng-protocol-buddy'; +import { QueryProtocolService } from '@ucap/ng-protocol-query'; +import { StatusProtocolService } from '@ucap/ng-protocol-status'; +import { OptionProtocolService } from '@ucap/ng-protocol-option'; +import { UmgProtocolService } from '@ucap/ng-protocol-umg'; + +import { + RoomSelector, + RoomActions, + ChattingActions, + ChattingSelector, + ChatUtil +} from '@ucap/ng-store-chat'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { CommonActions, UserSelector } from '@ucap/ng-store-organization'; + +import { UserStore } from '@app/models/user-store'; + +import { AppAuthenticationService } from './app-authentication.service'; + +@Injectable() +export class AppNotificationService { + constructor( + private authenticationProtocolService: AuthenticationProtocolService, + private eventProtocolService: EventProtocolService, + private infoProtocolService: InfoProtocolService, + private roomProtocolService: RoomProtocolService, + private groupProtocolService: GroupProtocolService, + private buddyProtocolService: BuddyProtocolService, + private queryProtocolService: QueryProtocolService, + private statusProtocolService: StatusProtocolService, + private optionProtocolService: OptionProtocolService, + private umgProtocolService: UmgProtocolService, + + private localStorageService: LocalStorageService, + private sessionStorageService: SessionStorageService, + private appAuthenticationService: AppAuthenticationService, + + private store: Store, + private ngZone: NgZone, + private dialog: MatDialog, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private i18nService: I18nService, + private logService: LogService + ) {} + + public subscribe(): void { + this.authenticationProtocolService.logoutNotification$ + .pipe( + tap((notiOrRes) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_LOGOUT_RES: + { + const res = notiOrRes as LogoutNotification; + this.logService.debug( + 'Notification::authenticationProtocolService::LogoutResponse', + res + ); + + // this.sessionStorageService.set(KEY_LOGOUT_INFO, { + // personLogout: true, + // reasonCode: res.reasonCode, + // ip: res.ip, + // mac: res.mac + // } as LogoutInfo); + } + break; + case SSVC_TYPE_LOGOUT_REMOTE_NOTI: + { + const noti = notiOrRes as LogoutRemoteNotification; + this.logService.debug( + 'Notification::authenticationProtocolService::LogoutRemoteNotification', + noti + ); + + // this.sessionStorageService.set(KEY_LOGOUT_INFO, { + // personLogout: true, + // reasonCode: ServerErrorCode.ERRCD_FORCE_INIT, + // forceType: noti.requestDeviceType + // } as LogoutInfo); + } + break; + default: + break; + } + this.dialog.closeAll(); + + // this.store.dispatch(AuthenticationStore.loginRedirect()); + }) + ) + .subscribe(); + + this.eventProtocolService.notification$ + .pipe( + withLatestFrom( + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(ConfigurationSelector.versionInfo2Response)), + this.store.pipe(select(ChattingSelector.activeRoomId)), + this.store.pipe(select(RoomSelector.rooms)), + this.store.pipe(select(RoomSelector.roomUsers)), + this.store.pipe( + select( + (state: any) => + state.group.buddy.buddies.entities as Dictionary + ) + ) + ), + tap( + ([ + notiOrRes, + user, + versionInfo2Res, + activeRoomId, + roomList, + roomUsers, + buddyList + ]) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_EVENT_SEND_RES: + case SSVC_TYPE_EVENT_SEND_NOTI: + { + const noti = notiOrRes as SendNotification; + const roomId = noti.roomId; + const eventInfo = noti.info; + const trgtRoom = roomList.find( + (roomInfo) => roomInfo.roomId === roomId + ); + + this.logService.debug( + 'Notification::eventProtocolService::SendNotification', + noti + ); + + // Add Event.. + this.store.dispatch( + ChattingActions.addEvent({ + roomId, + info: eventInfo + }) + ); + + // Unread Count.. + let doReadRequest = false; + if (!!activeRoomId && activeRoomId === roomId) { + // Active room. + doReadRequest = true; + } + + // Get Window state. + const windowState = this.nativeService.window_onState$() + .value; + const isWindowFocusState = this.nativeService.window_onFocus$() + .value; + + // // unread count.. + // // 현재 방이 열려 있고, + // if ( + // !!curRoomInfo && + // !!curRoomInfo.roomSeq && + // curRoomInfo.roomSeq === noti.roomSeq + // ) { + // // 윈도우의 상태가 최소화, tray 상태가 아니면서 조직도탭을 보고 있지 않다면, + // if ( + // !!windowState && + // windowState.windowState !== WindowState.Minimized && + // windowState.windowState !== WindowState.Hidden && + // windowState.windowFocusState === + // ElectronBrowserWindowChannel.Focus && + // gnbMenuIndex !== MainMenu.Organization + // ) { + // // 대화방을 보고 있다고 판단하고 event_read_req 한다. + // doReadRequest = true; + // } + // } + + if (doReadRequest) { + this.store.dispatch( + ChattingActions.read({ + roomId, + lastReadSeq: noti.info.seq + } as EventReadRequest) + ); + } else { + // // not opened room :: unread count increased + if (notiOrRes.SSVC_TYPE === SSVC_TYPE_EVENT_SEND_RES) { + /** + * 다른 디바이스에서 대화를 송신 할경우 RES 가 noti 로 유입될 수 있다. + * 이때 unread count 를 중가하지 않는다. + */ + } else { + if ( + !!trgtRoom && + noti.info.type !== EventType.Join && + noti.info.type !== EventType.Exit && + noti.info.type !== EventType.RenameRoom && + noti.info.type !== EventType.ForcedExit + ) { + this.store.dispatch( + RoomActions.updateUnreadCount({ + roomId, + noReadCnt: trgtRoom.noReadCnt + 1 + }) + ); + } + } + } + + // notification.. + if (notiOrRes.SSVC_TYPE === SSVC_TYPE_EVENT_SEND_NOTI) { + let doNoti = true; + + // 방별 알림이 꺼져 있으면 노티 안함. > 우선순위 최상위. + if (!!trgtRoom && !trgtRoom.receiveAlarm) { + doNoti = false; + } + + // 현재 열려 있는 방일경우 노티 안함. + if (!!activeRoomId && activeRoomId === roomId) { + if ( + !!windowState && + windowState !== WindowState.Minimized && + windowState !== WindowState.Hidden && + !!isWindowFocusState + ) { + doNoti = false; + } + } + // // 포커스 아웃일때 무조건 노티. + // // Case 1 : 단순 포커스 아웃. + // // Case 2 : hidden 시 포커스 인 상태이지만 위에서 필터링 됨. + // if (!isWindowFocusState) { + // doNoti = true; + // } + + if (doNoti) { + const userStore: UserStore = this.appAuthenticationService.getUserStore(); + if (userStore.settings.notification.use) { + if ( + userStore.settings.notification.method === + NotificationMethod.Sound + ) { + const audio = new Audio( + 'assets/sounds/messageAlarm.mp3' + ); + audio.play(); + } else { + const contents = ChatUtil.convertFinalEventMessage( + noti.eventType, + noti.info.sentMessageJson + ); + if (!!contents) { + const notiReq: NotificationRequest = { + type: NotificationType.Event, + seq: roomId, + title: this.i18nService.t( + 'common:notification.titleChatEventArrived' + ), + contents, + image: '', + useSound: [ + NotificationMethod.Sound, + NotificationMethod.SoundAndAlert + ].some( + (n) => + n === userStore.settings.notification.method + ) + ? true + : false, + displayTime: + (userStore.settings.notification + .alertExposureTime || 5) * 1000 + }; + // Sender Info setting + // STEP 1 >> In buddy group. + let senderInfo: any = buddyList[noti.SENDER_SEQ]; + // STEP 2 >> In Current Room Users. + if (!senderInfo) { + if (!!roomUsers && roomUsers.length > 0) { + const userMap = roomUsers.find( + (item) => item.roomId === roomId + ); + if (!!userMap) { + senderInfo = userMap.userInfos.find( + (item) => + item.seq + '' === noti.SENDER_SEQ + '' + ); + } + } + } + // STEP 3 >> user protocol + if (!senderInfo) { + this.queryProtocolService + .dataUser({ + divCd: 'OPENNOTI', + seq: Number(noti.SENDER_SEQ), + senderCompanyCode: user.info.companyCode, + senderEmployeeType: user.info.employeeType + }) + .pipe( + take(1), + map((res) => { + if (!!res && !!res.userInfo) { + senderInfo = res.userInfo; + let name = senderInfo.name; + let grade = senderInfo.grade; + switch ( + this.i18nService.currentLng.toUpperCase() + ) { + case LocaleCode.English: + name = senderInfo.nameEn; + grade = senderInfo.gradeEn; + break; + case LocaleCode.Chinese: + name = senderInfo.nameCn; + grade = senderInfo.gradeCn; + break; + } + notiReq.title = this.i18nService.t( + 'common:notification.titleChatEventArrivedByUser', + { + userInfo: !!grade + ? `${name} ${grade}` + : name + } + ); + // Image set. + if (!!senderInfo.profileImageFile) { + notiReq.image = `${versionInfo2Res.profileRoot}${senderInfo.profileImageFile}`; + } + } + }), + catchError((error) => { + return of(); + }), + finalize(() => { + this.nativeService.app_showNotify(notiReq); + }) + ) + .subscribe(); + } else { + // Sender Info setting. + // name set + let name = senderInfo.name; + let grade = senderInfo.grade; + switch ( + this.i18nService.currentLng.toUpperCase() + ) { + case LocaleCode.English: + name = senderInfo.nameEn; + grade = senderInfo.gradeEn; + break; + case LocaleCode.Chinese: + name = senderInfo.nameCn; + grade = senderInfo.gradeCn; + break; + } + notiReq.title = this.i18nService.t( + 'common:notification.titleChatEventArrivedByUser', + { + userInfo: !!grade ? `${name} ${grade}` : name + } + ); + // Image set. + if (!!senderInfo.profileImageFile) { + notiReq.image = `${versionInfo2Res.profileRoot}${senderInfo.profileImageFile}`; + } + // express noti popup + this.nativeService.app_showNotify(notiReq); + } + } + } + } + } + } + } + break; + case SSVC_TYPE_EVENT_READ_RES: + case SSVC_TYPE_EVENT_READ_NOTI: + { + // 대화방 unread count 처리. + const noti = notiOrRes as ReadNotification; + this.logService.debug( + 'Notification::eventProtocolService::ReadNotification', + noti + ); + + // roomUsers lastReadEventSeq update. + this.store.dispatch(ChattingActions.readSuccess(noti)); + + // roomInfo noReadCount update. + if (notiOrRes.SSVC_TYPE === SSVC_TYPE_EVENT_READ_RES) { + this.store.dispatch( + RoomActions.updateUnreadCount({ + roomId: noti.roomId + }) + ); + } + } + break; + case SSVC_TYPE_EVENT_CANCEL_NOTI: + { + const noti = notiOrRes as CancelNotification; + this.logService.debug( + 'Notification::eventProtocolService::CancelNotification', + noti + ); + this.store.dispatch( + ChattingActions.cancelNotification({ + noti + }) + ); + } + break; + case SSVC_TYPE_EVENT_DEL_RES: + { + const noti = notiOrRes as EventDelNotification; + this.logService.debug( + 'Notification::eventProtocolService::DelNotification', + noti + ); + this.store.dispatch( + ChattingActions.delNotification({ + noti + }) + ); + } + break; + default: + break; + } + } + ) + ) + .subscribe(); + + this.infoProtocolService.notification$ + .pipe( + tap((notiOrRes) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_INFO_USER_NOTI: + { + const noti = notiOrRes as UserNotification; + this.logService.debug( + 'Notification::infoProtocolService::UserNotification', + noti + ); + this.store.dispatch( + CommonActions.userNotification({ + noti + }) + ); + } + break; + default: + break; + } + }) + ) + .subscribe(); + + this.groupProtocolService.notification$ + .pipe( + tap((notiOrRes) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_GROUP_UPD_RES2: + { + const noti = notiOrRes as GroupUpdateNotification; + this.logService.debug( + 'Notification::groupProtocolService::GroupUpdateNotification', + noti + ); + // this.store.dispatch( + // SyncStore.group2({ + // syncDate + // }) + // ); + } + break; + case SSVC_TYPE_GROUP_ADD_RES: + { + const noti = notiOrRes as GroupAddNotification; + this.logService.debug( + 'Notification::groupProtocolService::GroupAddNotification', + noti + ); + // this.store.dispatch(SyncStore.createGroupSuccess(noti)); + } + break; + case SSVC_TYPE_GROUP_DEL_RES: + { + const noti = notiOrRes as GroupDelNotification; + this.logService.debug( + 'Notification::groupProtocolService::GroupDelNotification', + noti + ); + // this.store.dispatch(SyncStore.delGroupSuccess(noti)); + } + break; + + default: + break; + } + }) + ) + .subscribe(); + + this.buddyProtocolService.notification$ + .pipe( + tap((notiOrRes) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_BUDDY_UPD_RES: + { + const noti = notiOrRes as BuddyUpdateNotification; + this.logService.debug( + 'Notification::groupProtocolService::BuddyUpdateNotification', + noti + ); + // this.store.dispatch(SyncStore.updateBuddySuccess(noti)); + } + break; + case SSVC_TYPE_BUDDY_ADD_RES: + { + const noti = notiOrRes as BuddyAddNotification; + this.logService.debug( + 'Notification::groupProtocolService::BuddyAddNotification', + noti + ); + // this.store.dispatch(SyncStore.buddy2({ syncDate })); + } + break; + case SSVC_TYPE_BUDDY_DEL_RES: + { + const noti = notiOrRes as BuddyDelNotification; + this.logService.debug( + 'Notification::groupProtocolService::BuddyDelNotification', + noti + ); + // this.store.dispatch(SyncStore.delBuddySuccess(noti)); + } + break; + + default: + break; + } + }) + ) + .subscribe(); + + this.roomProtocolService.notification$ + .pipe( + withLatestFrom(this.store.pipe(select(UserSelector.user))), + tap(([notiOrRes, user]) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_ROOM_INVITE_RES: + case SSVC_TYPE_ROOM_INVITE_NOTI: + { + const noti = notiOrRes as InviteNotification; + this.logService.debug( + 'Notification::roomProtocolService::InviteNotification', + noti + ); + this.store.dispatch( + RoomActions.inviteNotification({ + noti, + localeCode: LocaleCode.Korean + }) + ); + } + break; + case SSVC_TYPE_ROOM_UPD_RES: + { + const noti = notiOrRes as RoomUpdateNotification; + this.logService.debug( + 'Notification::roomProtocolService::RoomUpdateNotification', + noti + ); + + if (noti.SENDER_SEQ === String(user.info.seq)) { + // Update Res. + this.store.dispatch( + RoomActions.updateSuccess({ + res: { + roomId: noti.roomId, + roomName: + noti.roomName.trim().length === 0 + ? ' ' + : noti.roomName.trim(), + receiveAlarm: noti.receiveAlarm, + syncAll: false // ignore params + } + }) + ); + } else { + // Update Room Name Noti. + this.store.dispatch( + RoomActions.updateRoomName({ + res: { + roomId: noti.roomId, + roomName: + noti.roomName.trim().length === 0 + ? ' ' + : noti.roomName.trim(), + receiveAlarm: noti.receiveAlarm, + syncAll: false // ignore params + } + }) + ); + } + } + break; + case SSVC_TYPE_ROOM_EXIT_RES: + case SSVC_TYPE_ROOM_EXIT_NOTI: + { + const noti = notiOrRes as ExitNotification; + this.logService.debug( + 'Notification::roomProtocolService::ExitNotification', + noti + ); + + this.store.dispatch( + RoomActions.exitNotification({ + roomId: noti.roomId, + senderSeq: noti.SENDER_SEQ + }) + ); + } + break; + case SSVC_TYPE_ROOM_EXIT_FORCING_RES: + case SSVC_TYPE_ROOM_EXIT_FORCING_NOTI: + { + const res = notiOrRes as ExitForcingResponse; + this.logService.debug( + 'Notification::roomProtocolService::ExitForcingNotification RES', + res + ); + + this.store.dispatch(RoomActions.expelNotification({ res })); + } + break; + case SSVC_TYPE_ROOM_FONT_UPD_NOTI: + { + const noti = notiOrRes as UpdateFontNotification; + this.logService.debug( + 'Notification::roomProtocolService::UpdateFontNotification', + noti + ); + // this.store.dispatch( + // RoomStore.updateFontNotification({ + // noti + // }) + // ); + } + break; + default: + break; + } + }) + ) + .subscribe(); + + this.statusProtocolService.notification$ + .pipe( + tap((notiOrRes) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_STATUS_NOTI: + { + const noti = notiOrRes as StatusNotification; + this.logService.debug( + 'Notification::statusProtocolService::StatusNotification', + noti + ); + // this.store.dispatch( + // StatusStore.statusNotification({ + // noti + // }) + // ); + } + break; + default: + break; + } + }) + ) + .subscribe(); + + this.optionProtocolService.notification$ + .pipe( + tap((notiOrRes) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_OPTION_REG_UPD_RES: + { + const noti = notiOrRes as RegUpdateNotification; + this.logService.debug( + 'Notification::optionProtocolService::RegUpdateNotification', + noti + ); + + // const appUserInfo: AppUserInfo = this.localStorageService.encGet< + // AppUserInfo + // >(KEY_APP_USER_INFO, environment.customConfig.appKey); + + // const modifiedSettings: Settings = clone(appUserInfo.settings); + // // 모바일에서 해당 값만 수정함. + // modifiedSettings.notification.receiveForMobile = + // noti.mobileNotification; + // appUserInfo.settings = modifiedSettings; + + // this.localStorageService.encSet( + // KEY_APP_USER_INFO, + // appUserInfo, + // environment.customConfig.appKey + // ); + } + break; + default: + break; + } + }) + ) + .subscribe(); + + this.umgProtocolService.notification$ + .pipe( + tap((notiOrRes) => { + switch (notiOrRes.SSVC_TYPE) { + case SSVC_TYPE_UMG_NOTI: + { + const noti = notiOrRes as UmgNotiNotification; + this.logService.debug( + 'Notification::umgProtocolService::UmgNotiNotification', + noti + ); + + // // unreadCount refresh.. + // this.store.dispatch(MessageStore.retrieveUnreadCount({})); + + // // Receive Message List refresh.. + // this.store.dispatch( + // MessageStore.retrieveMessage({ + // messageType: MessageType.Receive + // }) + // ); + + // // notification.. + // const appUserInfo = this.localStorageService.encGet< + // AppUserInfo + // >(KEY_APP_USER_INFO, environment.customConfig.appKey); + + // if (appUserInfo.settings.notification.use) { + // if ( + // appUserInfo.settings.notification.method === + // NotificationMethod.Sound + // ) { + // const audio = new Audio('assets/sounds/messageAlarm.mp3'); + // audio.play(); + // } else { + // const notiReq: NotificationRequest = { + // type: NotificationType.Message, + // seq: noti.keyId, + // title: this.translateService.instant( + // 'notification.titleMessageArrived' + // ), + // contents: noti.text, + // image: noti.senderInfo.profileImageFile, + // useSound: [ + // NotificationMethod.Sound, + // NotificationMethod.SoundAndAlert + // ].some( + // (n) => n === appUserInfo.settings.notification.method + // ) + // ? true + // : false, + // displayTime: + // appUserInfo.settings.notification.alertExposureTime * + // 1000 + // }; + // this.nativeService.notify(notiReq); + // } + // } + + // // direct open detail + // if (appUserInfo.settings.notification.receiveForMessage) { + // this.store.dispatch( + // MessageStore.detailMessage({ + // messageType: MessageType.Receive, + // msgId: Number(noti.keyId) + // }) + // ); + // } + } + break; + case SSVC_TYPE_UMG_DELETE_NOTI: + { + const noti = notiOrRes as UmgDeleteNotiNotification; + this.logService.debug( + 'Notification::umgProtocolService::UmgDeleteNotiNotification', + noti + ); + + // // Remove one Receive Message + // if (!!noti && !!noti.keyId) { + // // clear badge in left navi + // this.store.dispatch(MessageStore.retrieveUnreadCount({})); + + // // delete message in receive message list + // this.store.dispatch( + // deleteMessageSuccess({ + // messageType: MessageType.Receive, + // msgList: [ + // { + // msgId: Number(noti.keyId) + // } + // ] + // }) + // ); + // } + } + break; + + default: + break; + } + }) + ) + .subscribe(); + } +} diff --git a/src/app/services/app.service.ts b/src/app/services/app.service.ts index cd0b5a8..3678899 100644 --- a/src/app/services/app.service.ts +++ b/src/app/services/app.service.ts @@ -2,8 +2,10 @@ import { Injectable, Inject } from '@angular/core'; import { Store } from '@ngrx/store'; +import * as detectBrowser from 'detect-browser'; + import { DeviceType, DesktopType } from '@ucap/core'; -import { NativeService, NativeType, OsType } from '@ucap/native'; +import { NativeService, NativeType } from '@ucap/native'; import { I18nService } from '@ucap/ng-i18n'; import { LogService } from '@ucap/ng-logger'; @@ -17,11 +19,14 @@ import { LoginActions } from '@ucap/ng-store-authentication'; import { environment } from '@environments'; import { AppAuthenticationService } from './app-authentication.service'; -import { take } from 'rxjs/operators'; +import { AppNotificationService } from './app-notification.service'; +import { GroupOpenInfo } from '@app/models/group-open-info'; +import { GroupDetailData } from '@ucap/protocol-sync'; @Injectable() export class AppService { readonly companyGroupCode = environment.companyConfig.companyGroupCode; + bannedGroupNames: string[] = []; constructor( private i18nService: I18nService, @@ -30,12 +35,25 @@ export class AppService { private protocolService: ProtocolService, private pingProtocolService: PingProtocolService, private appAuthenticationService: AppAuthenticationService, + private appNotificationService: AppNotificationService, private logService: LogService, private store: Store, @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService ) {} initialize(): Promise { + const initApp = new Promise(async (resolve, reject) => { + try { + this.nativeService.window_onFocus$().subscribe((focus) => { + console.log('window_onFocus$', focus); + }); + + resolve(); + } catch (error) { + reject(error); + } + }); + const initSession = new Promise(async (resolve, reject) => { try { let loginSession = this.appAuthenticationService.getLoginSession(); @@ -45,7 +63,7 @@ export class AppService { let deviceType: DeviceType; let desktopType: DesktopType; - switch (this.nativeService.type()) { + switch (await this.nativeService.platform_nativeType()) { case NativeType.Browser: deviceType = DeviceType.Web; break; @@ -56,18 +74,19 @@ export class AppService { break; } - const osType = await this.nativeService.osType(); + const groupInfo = { + lastGroupSeq: 0, + groupSeqs: [] + } as GroupOpenInfo; - switch (osType) { - case OsType.Windows: - desktopType = DesktopType.Windows; - break; - case OsType.MacOS: - desktopType = DesktopType.MacOS; - break; - default: - desktopType = DesktopType.Linux; - break; + const info = detectBrowser.detect(); + if (info.os.startsWith('Windows')) { + desktopType = DesktopType.Windows; + } else if (info.os.startsWith('Mac OS')) { + desktopType = DesktopType.MacOS; + } else if (info.os.startsWith('Linux')) { + desktopType = DesktopType.Linux; + } else { } this.appAuthenticationService.setLoginSession({ @@ -75,7 +94,8 @@ export class AppService { deviceType, desktopType, companyGroupCode: this.companyGroupCode, - alive: false + alive: false, + groupInfo }); this.dateService.setDefaultTimezone('Asia/Seoul'); @@ -88,44 +108,36 @@ export class AppService { }); const initI18n = new Promise(async (resolve, reject) => { - switch (this.nativeService.type()) { - case NativeType.Browser: - const xhr = await import('i18next-xhr-backend').then( - (m) => m.default - ); - const languageDetector = await import( - 'i18next-browser-languagedetector' - ).then((m) => m.default); - this.i18nService.use(xhr).use(languageDetector); - break; - // case NativeType.Electron: - // const nodeFs = await import('i18next-node-fs-backend').then(m => m); - // i18nService.use(nodeFs); - // break; - default: - break; + const backends = environment.productConfig.i18next.useBackends; + if (!!backends && 0 < backends.length) { + for (const backend of backends) { + this.i18nService.use(backend); + } } this.i18nService - .init({ - whitelist: ['ko', 'en'], - fallbackLng: 'ko', - debug: true, // set debug? - returnEmptyString: false, - ns: [ - 'common', - 'organization', - 'authentication', - 'group', - 'chat', - 'call', - 'message' - ], - backend: { - loadPath: 'assets/i18n/{{lng}}/{{ns}}.json' - } - }) + .init(environment.productConfig.i18next.options) .then(() => { + const langs = ['en', 'ko']; + const bannedNameKeys = [ + 'category.favorite', + 'category.default', + 'category.myDept' + ]; + + langs.map((lang) => { + this.i18nService.changeLanguage(lang); + bannedNameKeys.map((key) => { + const tempResource = this.i18nService.getResource( + lang, + 'group', + key + ); + + this.bannedGroupNames.push(tempResource); + }); + }); + this.dateService.setLocale(this.i18nService.currentLng); resolve(); @@ -177,6 +189,49 @@ export class AppService { } }); - return Promise.all([initSession, initI18n, initOrganization, initProtocol]); + const initNotification = new Promise(async (resolve, reject) => { + try { + this.appNotificationService.subscribe(); + resolve(); + } catch (error) { + reject(error); + } + }); + + return Promise.all([ + initSession, + initI18n, + initOrganization, + initProtocol, + initNotification, + initApp + ]); + } + + validateGroupName(groupName: string, groupList: GroupDetailData[]): string { + const forbidden = /[\{\}\[\]\/?.;:|\)*~`!^+<>@\#$%&\\\=\(\'\"]/g.test( + groupName + ); + + const ban = this.bannedGroupNames.filter( + (name) => name.toLowerCase() === groupName.trim().toLowerCase() + )[0]; + + if (forbidden) { + return this.i18nService.t('group:error.useOnlyForSpecialCharacter', { + specialCharacter: '-,' + }); + } else if (groupName.trim().localeCompare('') === 0) { + return this.i18nService.t('group:error.requireInput'); + } else if (!!ban && ban !== '') { + return this.i18nService.t('group:error.bannedWords', { + bannedWords: this.bannedGroupNames.join(',') + }); + } else if ( + -1 < groupList.findIndex((g) => g.name.trim() === groupName.trim()) + ) { + return this.i18nService.t('group:error.sameNameExist'); + } + return null; } } diff --git a/src/app/store/actions.ts b/src/app/store/actions.ts index aa717d5..d84ec85 100644 --- a/src/app/store/actions.ts +++ b/src/app/store/actions.ts @@ -1,4 +1,5 @@ import * as AppActions from './app/actions'; import * as AppAuthenticationActions from './authentication/actions'; +import * as AppRoomActions from './room/actions'; -export { AppActions, AppAuthenticationActions }; +export { AppActions, AppAuthenticationActions, AppRoomActions }; diff --git a/src/app/store/app/actions.ts b/src/app/store/app/actions.ts index 668fe3d..44efcc4 100644 --- a/src/app/store/app/actions.ts +++ b/src/app/store/app/actions.ts @@ -6,3 +6,8 @@ export const windowResized = createAction( '[ucap::LG::app] windowResized', props<{ width: number; height: number }>() ); + +export const idleTimeChanged = createAction( + '[ucap::LG::app] idleTimeChanged', + props<{ idleTime: number }>() +); diff --git a/src/app/store/app/effects.ts b/src/app/store/app/effects.ts index dacf263..2d2bbb4 100644 --- a/src/app/store/app/effects.ts +++ b/src/app/store/app/effects.ts @@ -1,21 +1,82 @@ -import { map, exhaustMap } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { tap, takeUntil } from 'rxjs/operators'; -import { Injectable } from '@angular/core'; +import { Injectable, Inject } from '@angular/core'; import { Actions, createEffect, ofType } from '@ngrx/effects'; -import { LoginResponse } from '@ucap/protocol-authentication'; - -import { SessionStorageService } from '@ucap/ng-web-storage'; +import { NativeService } from '@ucap/native'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; import { LoginActions } from '@ucap/ng-store-authentication'; - -import { AppKey } from '@app/types/app-key.type'; +import { idleTimeChanged } from './actions'; @Injectable() export class Effects { + webLoginSuccessForNativeService$ = createEffect( + () => + this.actions$.pipe( + ofType(LoginActions.webLoginSuccess), + tap((action) => { + this.nativeService.app_postLogin(); + }) + ), + { dispatch: false } + ); + + loginSuccessForNativeService$ = createEffect( + () => + this.actions$.pipe( + ofType(LoginActions.loginSuccess), + tap((action) => { + if (!this.logoutSubject) { + this.logoutSubject = new Subject(); + } + // this.nativeService.idle_startCheck(1000); + + // this.nativeService + // .idle_onState$() + // .pipe(takeUntil(this.logoutSubject)) + // .subscribe((idle) => { + // console.log('idle', idle); + // }); + }) + ), + { dispatch: false } + ); + + logoutSuccessForNativeService$ = createEffect( + () => + this.actions$.pipe( + ofType(LoginActions.logoutSuccess), + tap((action) => { + this.logoutSubject.next(); + this.logoutSubject.complete(); + this.logoutSubject = undefined; + + // this.nativeService.idle_stopCheck(); + + this.nativeService.app_postLogout(); + }) + ), + { dispatch: false } + ); + + idleTimeChanged$ = createEffect( + () => + this.actions$.pipe( + ofType(idleTimeChanged), + tap((action) => { + this.nativeService.idle_changeLimitTime(action.idleTime); + }) + ), + { dispatch: false } + ); + + private logoutSubject: Subject; + constructor( private actions$: Actions, - private sessionStorageService: SessionStorageService + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService ) {} } diff --git a/src/app/store/authentication/effects.ts b/src/app/store/authentication/effects.ts index 721daba..5ec07ab 100644 --- a/src/app/store/authentication/effects.ts +++ b/src/app/store/authentication/effects.ts @@ -1,5 +1,5 @@ import { interval, timer } from 'rxjs'; -import { map, exhaustMap, tap, takeUntil, take } from 'rxjs/operators'; +import { tap, takeUntil } from 'rxjs/operators'; import { Injectable, Inject } from '@angular/core'; import { Router } from '@angular/router'; @@ -8,7 +8,6 @@ import { Actions, createEffect, ofType } from '@ngrx/effects'; import { LoginTry } from '@ucap/pi'; -import { LoginResponse } from '@ucap/protocol-authentication'; import { NativeService } from '@ucap/native'; import { LogService } from '@ucap/ng-logger'; @@ -18,7 +17,6 @@ import { LoginActions } from '@ucap/ng-store-authentication'; import { AppKey } from '@app/types/app-key.type'; import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { AppActions } from '@app/store/actions'; import { environment } from '@environments'; @@ -33,7 +31,7 @@ export class Effects { this.actions$.pipe( ofType(LoginActions.webLoginSuccess), tap((params) => { - this.nativeService.checkForUpdates(params.login2Response.version); + this.nativeService.app_checkForUpdates(params.login2Response.version); this.appAuthenticationService.postWebLogin( { companyCode: params.companyCode, diff --git a/src/app/store/effects.ts b/src/app/store/effects.ts index a92aa2d..9fdada9 100644 --- a/src/app/store/effects.ts +++ b/src/app/store/effects.ts @@ -2,5 +2,10 @@ import { Type } from '@angular/core'; import { Effects as AppEffects } from './app/effects'; import { Effects as AppAuthenticationEffects } from './authentication/effects'; +import { Effects as AppRoomEffects } from './room/effects'; -export const effects: Type[] = [AppEffects, AppAuthenticationEffects]; +export const effects: Type[] = [ + AppEffects, + AppAuthenticationEffects, + AppRoomEffects +]; diff --git a/src/app/store/reducers.ts b/src/app/store/reducers.ts index 75a182f..b3dbd67 100644 --- a/src/app/store/reducers.ts +++ b/src/app/store/reducers.ts @@ -7,6 +7,7 @@ import { State } from './state'; import { reducer as appReducer } from './app/reducers'; import { reducer as appAuthenticationReducer } from './authentication/reducers'; +import { reducer as appRoomReducer } from './room/reducers'; export const ROOT_REDUCERS = new InjectionToken< ActionReducerMap @@ -14,6 +15,7 @@ export const ROOT_REDUCERS = new InjectionToken< factory: () => ({ appRouter: fromRouter.routerReducer, app: appReducer, - appAuthentication: appAuthenticationReducer + appAuthentication: appAuthenticationReducer, + appRoom: appRoomReducer }) }); diff --git a/src/app/store/room/actions.ts b/src/app/store/room/actions.ts new file mode 100644 index 0000000..2437cb6 --- /dev/null +++ b/src/app/store/room/actions.ts @@ -0,0 +1,3 @@ +import { createAction, props } from '@ngrx/store'; + +export const initializer = createAction('[ucap::app::chat:room] initializer'); diff --git a/src/app/store/room/effects.ts b/src/app/store/room/effects.ts new file mode 100644 index 0000000..841c165 --- /dev/null +++ b/src/app/store/room/effects.ts @@ -0,0 +1,90 @@ +import { map, tap } from 'rxjs/operators'; + +import { Injectable, Inject } from '@angular/core'; +import { Router } from '@angular/router'; + +import { Actions, createEffect, ofType } from '@ngrx/effects'; + +import { NativeService } from '@ucap/native'; + +import { LogService } from '@ucap/ng-logger'; + +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; + +import { environment } from '@environments'; +import { RoomActions } from '@ucap/ng-store-chat'; + +import { Store } from '@ngrx/store'; + +@Injectable() +export class Effects { + createSuccess$ = createEffect( + () => { + return this.actions$.pipe( + ofType(RoomActions.createRoomSuccess), + map((action) => action.res), + tap((res) => { + this.router.navigate( + [ + 'chat', + { + outlets: { content: 'chatroom' } + } + ], + { + queryParams: { roomId: res.roomId } + } + ); + }) + ); + }, + { dispatch: false } + ); + + selectedRoomSuccess$ = createEffect( + () => { + return this.actions$.pipe( + ofType(RoomActions.selectedRoomSuccess), + tap((action) => { + this.router.navigate( + [ + 'chat', + { + outlets: { content: 'chatroom' } + } + ], + { + queryParams: { roomId: action.roomId } + } + ); + }) + ); + }, + { dispatch: false } + ); + + clearSelectedRoom$ = createEffect( + () => { + return this.actions$.pipe( + ofType(RoomActions.clearSelectedRoom), + tap(() => { + this.router.navigate([ + 'chat', + { + outlets: { content: 'index' } + } + ]); + }) + ); + }, + { dispatch: false } + ); + + constructor( + private actions$: Actions, + private store: Store, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, + private router: Router, + private logService: LogService + ) {} +} diff --git a/src/app/store/room/reducers.ts b/src/app/store/room/reducers.ts new file mode 100644 index 0000000..c02394c --- /dev/null +++ b/src/app/store/room/reducers.ts @@ -0,0 +1,5 @@ +import { createReducer, on } from '@ngrx/store'; + +import { initialState } from './state'; + +export const reducer = createReducer(initialState); diff --git a/src/app/store/room/state.ts b/src/app/store/room/state.ts new file mode 100644 index 0000000..1e05bd0 --- /dev/null +++ b/src/app/store/room/state.ts @@ -0,0 +1,9 @@ +import { Selector, createSelector } from '@ngrx/store'; + +export interface State {} + +export const initialState: State = {}; + +export function selectors(selector: Selector) { + return {}; +} diff --git a/src/app/store/state.ts b/src/app/store/state.ts index 508bee6..9c4f2cd 100644 --- a/src/app/store/state.ts +++ b/src/app/store/state.ts @@ -10,11 +10,13 @@ import { environment } from '@environments'; import * as AppState from './app/state'; import * as AppAuthenticationState from './authentication/state'; +import * as AppRoomState from './room/state'; export interface State { appRouter: fromRouter.RouterReducerState; app: AppState.State; appAuthentication: AppAuthenticationState.State; + appRoom: AppRoomState.State; } export const metaReducers: MetaReducer[] = !environment.production diff --git a/src/app/types/app-key.type.ts b/src/app/types/app-key.type.ts index dc701eb..c3cb5c7 100644 --- a/src/app/types/app-key.type.ts +++ b/src/app/types/app-key.type.ts @@ -2,5 +2,6 @@ export enum AppKey { LoginTry = 'ucap::LG::LOGIN_TRY', LoginSession = 'ucap::LG::LOGIN_SESSION', LogoutSession = 'ucap::LG::LOGOUT_SESSION', - UserStore = 'ucap::LG::USER_STORE' + UserStore = 'ucap::LG::USER_STORE', + HistoryRoomId = 'ucap::LG::HISTORY_ROOMID' } diff --git a/src/app/types/group-manage.type.ts b/src/app/types/group-manage.type.ts new file mode 100644 index 0000000..305ec38 --- /dev/null +++ b/src/app/types/group-manage.type.ts @@ -0,0 +1,7 @@ +export enum GroupManageType { + Create = 'CREATE_TYPE', + Add = 'ADD_TYPE', + Copy = 'COPY_TYPE', + Move = 'MOVE_TYPE', + None = 'NONE_TYPE' +} diff --git a/src/app/types/group-user.dialog.type.ts b/src/app/types/group-user.dialog.type.ts deleted file mode 100644 index 23fb2ce..0000000 --- a/src/app/types/group-user.dialog.type.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum GroupUserDialaogType { - Create = 'CREATE_GROUP', - Add = 'ADD_GROUP', - Copy = 'COPY_GROUP', - Move = 'MOVE_GROUP' -} diff --git a/src/app/types/index.ts b/src/app/types/index.ts index 04138f8..d0f1046 100644 --- a/src/app/types/index.ts +++ b/src/app/types/index.ts @@ -1,4 +1,5 @@ export * from './app-key.type'; export * from './select-user.dialog.type'; export * from './tokens'; -export * from './group-user.dialog.type'; +export * from './group-manage.type'; +export * from './user.type'; diff --git a/src/app/types/user.type.ts b/src/app/types/user.type.ts new file mode 100644 index 0000000..f9bed1d --- /dev/null +++ b/src/app/types/user.type.ts @@ -0,0 +1,14 @@ +import { UserInfo } from '@ucap/protocol-sync'; +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; + +export type UserInfoTypes = + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN + | RoomUserInfo + | RoomUserInfoShort; diff --git a/src/app/ucap/authentication/components/login.component.html b/src/app/ucap/authentication/components/login.component.html index bdf12cb..8686e59 100644 --- a/src/app/ucap/authentication/components/login.component.html +++ b/src/app/ucap/authentication/components/login.component.html @@ -11,55 +11,50 @@ >
    - +

    Welcome to Messenger

    diff --git a/src/app/ucap/authentication/components/login.component.ts b/src/app/ucap/authentication/components/login.component.ts index 49cbc6e..e4e7314 100644 --- a/src/app/ucap/authentication/components/login.component.ts +++ b/src/app/ucap/authentication/components/login.component.ts @@ -1,7 +1,7 @@ import { Subject } from 'rxjs'; import { take, takeUntil } from 'rxjs/operators'; -import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core'; +import { Component, OnInit, OnDestroy, ViewChild, Inject } from '@angular/core'; import { MatCheckbox } from '@angular/material/checkbox'; @@ -9,7 +9,9 @@ import { Store, select } from '@ngrx/store'; import { Company } from '@ucap/api-external'; import { LoginTry } from '@ucap/pi'; +import { NativeService } from '@ucap/native'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; import { LogService } from '@ucap/ng-logger'; import { I18nService } from '@ucap/ng-i18n'; import { @@ -27,6 +29,7 @@ import { AppKey } from '@app/types/app-key.type'; import { AppAuthenticationService } from '@app/services/app-authentication.service'; import { environment } from '@environments'; +import { UrlConfig } from '@ucap/core'; @Component({ selector: 'app-authentication-login', @@ -56,7 +59,7 @@ export class LoginComponent implements OnInit, OnDestroy { loginProcessing = false; loginTry: LoginTry; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private piService: PiService, @@ -64,14 +67,14 @@ export class LoginComponent implements OnInit, OnDestroy { private sessionStorageService: SessionStorageService, private localStorageService: LocalStorageService, private i18nService: I18nService, + private store: Store, private appAuthenticationService: AppAuthenticationService, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, private logService: LogService ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.localStorageService .encGet$( AppKey.UserStore, @@ -80,10 +83,7 @@ export class LoginComponent implements OnInit, OnDestroy { .pipe(takeUntil(this.ngOnDestroySubject)) .subscribe((userStore) => (this.userStore = userStore)); - this.appAuthenticationService - .getLoginSession$() - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe((loginSession) => (this.loginSession = loginSession)); + this.loginSession = this.appAuthenticationService.getLoginSession(); this.sessionStorageService .get$(AppKey.LoginTry) @@ -164,8 +164,43 @@ export class LoginComponent implements OnInit, OnDestroy { ); } - onClickForgotPassword(lng: string) { - this.i18nService.changeLanguage(lng); + onClickForgotPassword() { + const piUrls = UrlConfig.getUrls( + environment.piModuleConfig.hostConfig, + environment.piModuleConfig.urls + ); + if ( + !!piUrls && + !!piUrls.passwordInitStep1 && + piUrls.passwordInitStep1.length > 0 + ) { + this.nativeService.platform_openDefaultBrowser( + piUrls.passwordInitStep1 + `?locale=${this.i18nService.currentLng}`, + { + name: this.i18nService.t( + 'authentication:login.labels.changePassword' + ), + features: + 'menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,width=400,height=510' + } + ); + } + } + + onClickPrivacy() { + const piUrls = UrlConfig.getUrls( + environment.piModuleConfig.hostConfig, + environment.piModuleConfig.urls + ); + + if (!!piUrls && !!piUrls.policyPrivacy && piUrls.policyPrivacy.length > 0) { + this.nativeService.platform_openDefaultBrowser( + piUrls.policyPrivacy + `?locale=${this.i18nService.currentLng}`, + { + name: this.i18nService.t('authentication:login.labels.privacyPolicy') + } + ); + } } private onWebLoginFailure( diff --git a/src/app/ucap/chat/chat.module.ts b/src/app/ucap/chat/chat.module.ts index a63f8f1..f3fb4be 100644 --- a/src/app/ucap/chat/chat.module.ts +++ b/src/app/ucap/chat/chat.module.ts @@ -22,6 +22,11 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { MatTabsModule } from '@angular/material/tabs'; import { MatSelectModule } from '@angular/material/select'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatButtonModule } from '@angular/material/button'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { AppGroupModule } from '../group/group.module'; @NgModule({ imports: [ @@ -39,6 +44,10 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle'; MatTooltipModule, MatTabsModule, MatSelectModule, + MatButtonModule, + MatRadioModule, + MatFormFieldModule, + MatInputModule, I18nModule, UiModule, @@ -46,6 +55,7 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle'; GroupUiModule, ChatUiModule, + AppGroupModule, AppLayoutsModule ], exports: [...COMPONENTS], diff --git a/src/app/ucap/chat/components/attach-downcheck.component.html b/src/app/ucap/chat/components/attach-downcheck.component.html new file mode 100644 index 0000000..6810c31 --- /dev/null +++ b/src/app/ucap/chat/components/attach-downcheck.component.html @@ -0,0 +1,78 @@ +
    +
    +
    +
    + + + {{ 'chat:dialog.title.fileDownloadCheck' | ucapI18n }} + + {{ filteredRoomUsers.length }} +
    +
    + +
    +
    +
    + + + + + +
    +
    +
    diff --git a/src/app/ucap/chat/components/attach-downcheck.component.scss b/src/app/ucap/chat/components/attach-downcheck.component.scss new file mode 100644 index 0000000..ff08a89 --- /dev/null +++ b/src/app/ucap/chat/components/attach-downcheck.component.scss @@ -0,0 +1,12 @@ +@import '~@ucap/lg-scss/mixins'; + +.dataroom-contents { + width: 100%; + height: 100%; + .drawer-body { + height: 100%; + } +} +.ucap-virtual-scroll-viewport { + height: auto !important; +} diff --git a/src/app/sections/group/components/component-ui/profile-list-item.component.spec.ts b/src/app/ucap/chat/components/attach-downcheck.component.spec.ts similarity index 55% rename from src/app/sections/group/components/component-ui/profile-list-item.component.spec.ts rename to src/app/ucap/chat/components/attach-downcheck.component.spec.ts index 80e7d67..9122dcb 100644 --- a/src/app/sections/group/components/component-ui/profile-list-item.component.spec.ts +++ b/src/app/ucap/chat/components/attach-downcheck.component.spec.ts @@ -2,20 +2,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { DebugElement } from '@angular/core'; -import { ProfileListItemComponent } from './profile-list-item.component'; +import { AttachDowncheckComponent } from './attach-downcheck.component'; -describe('ucap::ui-organization::ProfileListItemComponent', () => { - let component: ProfileListItemComponent; - let fixture: ComponentFixture; +describe('ucap::ui-organization::CreateChatDialogComponent', () => { + let component: AttachDowncheckComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ProfileListItemComponent] + declarations: [AttachDowncheckComponent] }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(ProfileListItemComponent); + fixture = TestBed.createComponent(AttachDowncheckComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/ucap/chat/components/attach-downcheck.component.ts b/src/app/ucap/chat/components/attach-downcheck.component.ts new file mode 100644 index 0000000..82cb8cf --- /dev/null +++ b/src/app/ucap/chat/components/attach-downcheck.component.ts @@ -0,0 +1,231 @@ +import { Subject, combineLatest, merge } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + EventEmitter, + Output, + Input +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; +import { FileDownloadInfo } from '@ucap/protocol-file'; + +import { RoomSelector, ChattingSelector } from '@ucap/ng-store-chat'; +import { UserSelector } from '@ucap/ng-store-organization'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; + +export type UserInfoTypes = RoomUserInfo | RoomUserInfoShort; +export type FilterType = 'ALL' | 'DOWN' | 'NOTDOWN'; + +@Component({ + selector: 'app-chat-attach-downcheck', + templateUrl: './attach-downcheck.component.html', + styleUrls: ['./attach-downcheck.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AttachDowncheckComponent implements OnInit, OnDestroy { + private roomIdSubject = new Subject(); + private ngOnDestroySubject = new Subject(); + + @Input() + set roomId(value: string) { + this._roomId = value; + if (!!this.roomIdSubject) { + this.roomIdSubject.next(value); + } + this._initializeData(); + } + get roomId(): string { + return this._roomId; + } + // tslint:disable-next-line: variable-name + _roomId: string; + + @Input() + set attachmentSeq(value: number) { + this._attachmentSeq = value; + this._initializeData(); + } + // tslint:disable-next-line: variable-name + _attachmentSeq: number; + + filterType: FilterType = 'ALL'; + + @Output() + closed = new EventEmitter(); + + roomUsers: RoomUserInfo[] = []; + roomUsersShort: RoomUserInfoShort[] = []; + currentRoomUsers: (RoomUserInfo | RoomUserInfoShort)[]; + filteredRoomUsers: (RoomUserInfo | RoomUserInfoShort)[]; + fileInfoCheckList: FileDownloadInfo[]; + + user: User; + versionInfo2Res: VersionInfo2Response; + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this._initializeData(); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + + if (!!this.roomIdSubject) { + this.roomIdSubject.next(); + this.roomIdSubject.complete(); + } + } + + private _initializeData() { + combineLatest([ + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(RoomSelector.roomUser, this.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.roomId)), + this.store.pipe(select(ChattingSelector.fileInfoCheckList, this.roomId)) + ]) + .pipe(takeUntil(merge(this.ngOnDestroySubject, this.roomIdSubject))) + .subscribe(([user, roomUser, roomUserShort, fileInfoCheckList]) => { + this.user = user; + + // retrieve room users. + if (!!user) { + if ( + !!roomUser && + !!roomUser.userInfos && + roomUser.userInfos.length > 0 + ) { + this.currentRoomUsers = roomUser.userInfos.filter( + (item) => + !!item.isJoinRoom && String(item.seq) !== String(user.info.seq) + ); + } else if ( + !!roomUserShort && + !!roomUserShort.userInfos && + roomUserShort.userInfos.length > 0 + ) { + this.currentRoomUsers = roomUserShort.userInfos.filter( + (item) => + !!item.isJoinRoom && String(item.seq) !== String(user.info.seq) + ); + } + } + + // fileInfoDown check. + if (!!this._attachmentSeq) { + this.fileInfoCheckList = fileInfoCheckList.filter( + (item) => item.seq === this._attachmentSeq + ); + } + + this.getFiltered(); + }); + } + + onChangeFilterType(type: FilterType) { + this.filterType = type; + this.getFiltered(); + } + + onClosed(event: MouseEvent): void { + this.closed.emit(); + } + + getFiltered() { + switch (this.filterType) { + case 'ALL': + { + this.filteredRoomUsers = this.currentRoomUsers.slice(); + } + break; + case 'DOWN': + { + this.filteredRoomUsers = this.currentRoomUsers.filter((curUser) => { + return ( + this.fileInfoCheckList.findIndex( + (downUser) => + !!downUser.isDownload && + String(downUser.userSeq) === String(curUser.seq) + ) > -1 + ); + }); + } + break; + case 'NOTDOWN': + { + this.filteredRoomUsers = this.currentRoomUsers.filter((curUser) => { + return ( + this.fileInfoCheckList.findIndex( + (downUser) => + !downUser.isDownload && + String(downUser.userSeq) === String(curUser.seq) + ) > -1 || + !this.fileInfoCheckList.some( + (downUser) => String(downUser.userSeq) === String(curUser.seq) + ) + ); + }); + } + break; + } + + this.changeDetectorRef.markForCheck(); + } + + isMe(userInfo: UserInfoTypes) { + if (!!this.user) { + return String(this.user.info.seq) === String(userInfo.seq); + } else { + return false; + } + } + + isDownload(userInfo: UserInfoTypes): boolean { + if (!!this.fileInfoCheckList && this.fileInfoCheckList.length > 0) { + return this.fileInfoCheckList.some( + (item) => + !!item.isDownload && String(item.userSeq) === String(userInfo.seq) + ); + } + return false; + } + getDownloadDateString(userInfo: UserInfoTypes): string { + if (!!this.fileInfoCheckList && this.fileInfoCheckList.length > 0) { + const obj = this.fileInfoCheckList.find( + (item) => + !!item.isDownload && String(item.userSeq) === String(userInfo.seq) + ); + if (!!obj) { + return obj.downloadDate; + } + } + } +} diff --git a/src/app/ucap/chat/components/attach-file-list.component.html b/src/app/ucap/chat/components/attach-file-list.component.html new file mode 100644 index 0000000..707d598 --- /dev/null +++ b/src/app/ucap/chat/components/attach-file-list.component.html @@ -0,0 +1,16 @@ +
    + + + + + +
    diff --git a/src/app/ucap/chat/components/attach-file-list.component.scss b/src/app/ucap/chat/components/attach-file-list.component.scss new file mode 100644 index 0000000..4dde968 --- /dev/null +++ b/src/app/ucap/chat/components/attach-file-list.component.scss @@ -0,0 +1,4 @@ +.attach-file-list-container { + width: 100%; + height: 100%; +} diff --git a/src/app/ucap/chat/components/attach-file-list.component.spec.ts b/src/app/ucap/chat/components/attach-file-list.component.spec.ts new file mode 100644 index 0000000..2b4452a --- /dev/null +++ b/src/app/ucap/chat/components/attach-file-list.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AttachFileListComponent } from './attach-file-list.component'; + +describe('app::ucap::organization::AttachFileListComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [AttachFileListComponent] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AttachFileListComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(AttachFileListComponent); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AttachFileListComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/chat/components/attach-file-list.component.ts b/src/app/ucap/chat/components/attach-file-list.component.ts new file mode 100644 index 0000000..3623783 --- /dev/null +++ b/src/app/ucap/chat/components/attach-file-list.component.ts @@ -0,0 +1,191 @@ +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Output, + EventEmitter +} from '@angular/core'; + +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; +import { + RoomUserMap, + RoomUserShortMap +} from '@ucap/ng-store-chat/lib/store/room/state'; +import { FileInfo, InfoRequest, FileDownloadInfo } from '@ucap/protocol-file'; +import { LogService } from '@ucap/ng-logger'; +import { Store, select } from '@ngrx/store'; +import { + RoomSelector, + ChattingActions, + ChattingSelector +} from '@ucap/ng-store-chat'; +import { FileDownloadItem } from '@ucap/api'; +import { FileType } from '@ucap/protocol-event'; + +@Component({ + selector: 'app-chat-attach-file-list', + templateUrl: './attach-file-list.component.html', + styleUrls: ['./attach-file-list.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AttachFileListComponent implements OnInit, OnDestroy { + @Input() + roomId: string; + + @Input() + fileInfoList: { + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }[] = []; + + @Input() + selectedList: { + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }[] = []; + + @Output() + changeCheck = new EventEmitter<{ + checked: boolean; + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }>(); + + @Output() + showDownCheck = new EventEmitter(); + + roomUserMap: RoomUserMap; + roomUserShortMap: RoomUserShortMap; + downloadTotalCount: number; + downloadCheckList: FileDownloadInfo[] = []; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService + ) {} + + ngOnInit(): void { + if (!!this.roomId) { + this.store.dispatch( + ChattingActions.fileInfos({ + req: { roomId: this.roomId, type: FileType.File } as InfoRequest + }) + ); + } + + combineLatest([ + this.store.pipe(select(RoomSelector.roomUser, this.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.roomId)) + ]) + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe(([roomUsers, roomUsersShort]) => { + this.roomUserMap = roomUsers; + this.roomUserShortMap = roomUsersShort; + + if ( + !!this.roomUserMap && + !!this.roomUserMap.userInfos && + this.roomUserMap.userInfos.length > 0 + ) { + this.downloadTotalCount = this.roomUserMap.userInfos.length; + } else if ( + !!this.roomUserShortMap && + !!this.roomUserShortMap.userInfos && + this.roomUserShortMap.userInfos.length > 0 + ) { + this.downloadTotalCount = this.roomUserShortMap.userInfos.length; + } + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ChattingSelector.fileInfoCheckList, this.roomId) + ) + .subscribe((downList) => { + this.downloadCheckList = downList; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + getDownloadedCount(fileInfo: FileInfo): number { + if (!!this.downloadCheckList && this.downloadCheckList.length > 0) { + return this.downloadCheckList.filter((item) => item.seq === fileInfo.seq) + .length; + } + return 0; + } + + getItemChecked(fileInfo: FileInfo): boolean { + if (!!this.selectedList && this.selectedList.length > 0) { + return this.selectedList.some( + (info) => info.fileInfo.seq === fileInfo.seq + ); + } + return false; + } + + getDownloadItem(fileInfo: FileInfo): FileDownloadItem { + const obj = this.selectedList.find( + (item) => item.fileInfo.seq === fileInfo.seq + ); + + if (!!obj) { + return obj.fileDownloadItem; + } else { + return new FileDownloadItem(); + } + } + + onShowDownCheck(fileInfo: FileInfo): void { + this.showDownCheck.emit(fileInfo); + } + + onChangeCheck(param: { + checked: boolean; + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }) { + this.changeCheck.emit(param); + } + + getSenderInfo(userSeq: string): RoomUserInfo | RoomUserInfoShort { + if ( + !!this.roomUserShortMap && + !!this.roomUserShortMap.userInfos && + this.roomUserShortMap.userInfos.length > 0 + ) { + return this.roomUserShortMap.userInfos.find( + (item) => item.seq + '' === userSeq + '' + ); + } + + if ( + !!this.roomUserMap && + !!this.roomUserMap.userInfos && + this.roomUserMap.userInfos.length > 0 + ) { + return this.roomUserMap.userInfos.find( + (item) => item.seq + '' === userSeq + '' + ); + } + } +} diff --git a/src/app/ucap/chat/components/attach-image-list.component.html b/src/app/ucap/chat/components/attach-image-list.component.html new file mode 100644 index 0000000..2ea0de2 --- /dev/null +++ b/src/app/ucap/chat/components/attach-image-list.component.html @@ -0,0 +1,15 @@ +
    + + + + + +
    diff --git a/src/app/ucap/chat/components/attach-image-list.component.scss b/src/app/ucap/chat/components/attach-image-list.component.scss new file mode 100644 index 0000000..499f4d5 --- /dev/null +++ b/src/app/ucap/chat/components/attach-image-list.component.scss @@ -0,0 +1,4 @@ +.attach-image-list-container { + width: 100%; + height: 100%; +} diff --git a/src/app/ucap/chat/components/attach-image-list.component.spec.ts b/src/app/ucap/chat/components/attach-image-list.component.spec.ts new file mode 100644 index 0000000..3e8781c --- /dev/null +++ b/src/app/ucap/chat/components/attach-image-list.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AttachImageListComponent } from './attach-image-list.component'; + +describe('app::ucap::organization::AttachImageListComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [AttachImageListComponent] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AttachImageListComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(AttachImageListComponent); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AttachImageListComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/chat/components/attach-image-list.component.ts b/src/app/ucap/chat/components/attach-image-list.component.ts new file mode 100644 index 0000000..65d0b9b --- /dev/null +++ b/src/app/ucap/chat/components/attach-image-list.component.ts @@ -0,0 +1,117 @@ +import { Subject, of, combineLatest } from 'rxjs'; +import { takeUntil, take, map, catchError } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Output, + EventEmitter +} from '@angular/core'; + +import { FileInfo } from '@ucap/protocol-file'; +import { LogService } from '@ucap/ng-logger'; +import { FileDownloadItem } from '@ucap/api'; +import { FileEventJson } from '@ucap/protocol-event'; + +@Component({ + selector: 'app-chat-attach-image-list', + templateUrl: './attach-image-list.component.html', + styleUrls: ['./attach-image-list.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AttachImageListComponent implements OnInit, OnDestroy { + @Input() + fileInfoList: { + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }[] = []; + + @Input() + selectedList: { + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }[] = []; + + @Output() + changeCheck = new EventEmitter<{ + checked: boolean; + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }>(); + + @Output() + save = new EventEmitter<{ + fileInfo: FileEventJson; + fileDownloadItem: FileDownloadItem; + type: string; + }>(); + + @Output() + openViewer = new EventEmitter(); + + @Output() + delete = new EventEmitter(); + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService + ) {} + + ngOnInit(): void {} + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + getItemChecked(fileInfo: FileInfo): boolean { + if (!!this.selectedList && this.selectedList.length > 0) { + return this.selectedList.some( + (info) => info.fileInfo.seq === fileInfo.seq + ); + } + return false; + } + + getDownloadItem(fileInfo: FileInfo): FileDownloadItem { + const obj = this.selectedList.find( + (item) => item.fileInfo.seq === fileInfo.seq + ); + + if (!!obj) { + return obj.fileDownloadItem; + } else { + return new FileDownloadItem(); + } + } + + onChangeCheck(param: { + checked: boolean; + fileInfo: FileInfo; + fileDownloadItem: FileDownloadItem; + }) { + this.changeCheck.emit(param); + } + + onClickSave(params: { + fileInfo: FileEventJson; + fileDownloadItem: FileDownloadItem; + type: string; + }) { + this.save.emit(params); + } + onClickOpenViewer(fileInfo: FileInfo) { + this.openViewer.emit(fileInfo); + } + onClickDelete(fileInfo: FileInfo) { + this.delete.emit(fileInfo); + } +} diff --git a/src/app/ucap/chat/components/email-send.selector.component.html b/src/app/ucap/chat/components/email-send.selector.component.html index 925a752..4900c8a 100644 --- a/src/app/ucap/chat/components/email-send.selector.component.html +++ b/src/app/ucap/chat/components/email-send.selector.component.html @@ -1,15 +1,27 @@ - +
    -

    대화내용 메일 전송

    +

    {{ 'chat:label.emailSend' | ucapI18n }}

    - - +
    + + +
    diff --git a/src/app/ucap/chat/components/email-send.selector.component.scss b/src/app/ucap/chat/components/email-send.selector.component.scss index ed7da72..c181d1b 100644 --- a/src/app/ucap/chat/components/email-send.selector.component.scss +++ b/src/app/ucap/chat/components/email-send.selector.component.scss @@ -1,9 +1,18 @@ -.bubble-main { - padding: 10px; - text-align: left; - span { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-word; +.btn-email-send-area { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + height: 44px; + button { + border: 1px solid rgba(153, 153, 153, 0.76); + height: 30px; + width: 148px; + background-color: #fff; + border-radius: 2px; + overflow: hidden; + & + button { + margin-left: 5px; + } } } diff --git a/src/app/ucap/chat/components/email-send.selector.component.ts b/src/app/ucap/chat/components/email-send.selector.component.ts index 29ca698..df812a3 100644 --- a/src/app/ucap/chat/components/email-send.selector.component.ts +++ b/src/app/ucap/chat/components/email-send.selector.component.ts @@ -1,21 +1,42 @@ import { Component, OnInit, - Input, - ElementRef, AfterViewInit, - Inject + Output, + EventEmitter, + OnDestroy } from '@angular/core'; +import { SendEventMailType } from '@ucap/pi'; + @Component({ selector: 'app-chat-selector-email-send', templateUrl: './email-send.selector.component.html', styleUrls: ['./email-send.selector.component.scss'] }) -export class EmailSendSelectorComponent implements OnInit, AfterViewInit { +export class EmailSendSelectorComponent + implements OnInit, OnDestroy, AfterViewInit { + @Output() + sendEventEmail = new EventEmitter(); + + @Output() + closed = new EventEmitter(); + + SendEventMailType = SendEventMailType; + constructor() {} ngOnInit() {} + ngOnDestroy(): void {} + ngAfterViewInit(): void {} + + onClickClose(): void { + this.closed.emit(); + } + + onSendEventEmail(type: SendEventMailType): void { + this.sendEventEmail.emit(type); + } } diff --git a/src/app/ucap/chat/components/file-upload.selector.component.html b/src/app/ucap/chat/components/file-upload.selector.component.html index 0b8ddf4..48b4148 100644 --- a/src/app/ucap/chat/components/file-upload.selector.component.html +++ b/src/app/ucap/chat/components/file-upload.selector.component.html @@ -1,46 +1,20 @@ - +
    -

    파일전송

    - 이 영역으로 파일을 드래그 하시면 업로드 됩니다. +
    +

    {{ 'chat:label.fileSends.fileSend' | ucapI18n }}

    + +
    -
    - +
    - - - -
    {{ fileUploadItem.file.name }}
    - - -
    - - + {{ fileUploadItem.file.name }} + +
    + + + +
    -
    - - -
    + diff --git a/src/app/ucap/chat/components/file-upload.selector.component.scss b/src/app/ucap/chat/components/file-upload.selector.component.scss index ed7da72..f6791b1 100644 --- a/src/app/ucap/chat/components/file-upload.selector.component.scss +++ b/src/app/ucap/chat/components/file-upload.selector.component.scss @@ -1,9 +1,103 @@ -.bubble-main { - padding: 10px; - text-align: left; - span { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-word; +@import '~@ucap/lg-scss/mixins'; + +.ucap-selector-titlesection { + display: flex; + flex-direction: row; + align-items: center; + .description { + margin-left: 10px; + font-size: 0.875em; + color: #666; + } +} + +.file-items-box { + display: flex; + flex-direction: row; + flex-flow: wrap; + overflow-y: auto; + max-height: 102px; + min-height: 34px; + padding: 0 16px; + .file-item { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + height: 24px; + border-radius: 12px; + margin: 5px; + position: relative; + overflow: hidden; + min-width: 65px; + .file-upload-name { + flex-grow: 1; + padding: 0 12px; + @include ellipsis(1); + } + .btn-close { + @include ucapMatButton(24px, 24px, 0, 24px); + font-size: 12px; + width: 24px; + margin-right: 5px; + .icon-close { + color: $white; + font-size: 16px; + } + } + .progress-area { + position: absolute; + padding: 0 7px 0 10px; + z-index: 3; + background-color: rgba(0, 0, 0, 0.5); + border-radius: 12px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + height: 100%; + &:after { + content: ''; + width: 12px; + height: 12px; + position: absolute; + z-index: 2; + right: 13px; + top: 6px; + background-color: $white; + display: inline-block; + border-radius: 50%; + } + .mat-icon { + font-size: 1.429em; + position: relative; + z-index: 3; + margin-left: 10px; + } + } + &.cancel-btn-none { + .progress-area { + padding: 0 10px 0 10px; + &:after { + display: none; + } + button { + display: none; + } + } + } + } +} +.btn-file-area { + display: flex; + flex-direction: row; + background-color: $white; + padding: 15px 16px 10px; + justify-content: flex-end; + button { + @include ucap-button-flat-stroked(100px); + widows: 100px; + height: 30px; + border: 1px solid rgba(153, 153, 153, 0.76); } } diff --git a/src/app/ucap/chat/components/file-upload.selector.component.ts b/src/app/ucap/chat/components/file-upload.selector.component.ts index bffba22..7a5e590 100644 --- a/src/app/ucap/chat/components/file-upload.selector.component.ts +++ b/src/app/ucap/chat/components/file-upload.selector.component.ts @@ -4,7 +4,9 @@ import { ElementRef, AfterViewInit, ChangeDetectorRef, - ChangeDetectionStrategy + ChangeDetectionStrategy, + Output, + EventEmitter } from '@angular/core'; import { FileUploadItem } from '@ucap/api'; @@ -15,6 +17,9 @@ import { FileUploadItem } from '@ucap/api'; changeDetection: ChangeDetectionStrategy.OnPush }) export class FileUploadSelectorComponent implements OnInit, AfterViewInit { + @Output() + closed = new EventEmitter(); + fileUploadItems: FileUploadItem[]; uploadItems: DataTransferItem[]; @@ -27,6 +32,10 @@ export class FileUploadSelectorComponent implements OnInit, AfterViewInit { ngAfterViewInit(): void {} + onClickClose(): void { + this.closed.emit(); + } + onDragEnter(items: DataTransferItemList): void { if (!items || 0 === items.length) { return; @@ -98,6 +107,6 @@ export class FileUploadSelectorComponent implements OnInit, AfterViewInit { // this.elementRef.nativeElement.style.display = 'none'; // } // } - this.changeDetectorRef.detectChanges(); + this.changeDetectorRef.markForCheck(); } } diff --git a/src/app/ucap/chat/components/index.ts b/src/app/ucap/chat/components/index.ts index e5efec4..7ee94b4 100644 --- a/src/app/ucap/chat/components/index.ts +++ b/src/app/ucap/chat/components/index.ts @@ -5,6 +5,13 @@ import { EmailSendSelectorComponent } from './email-send.selector.component'; import { StickerSelectorComponent } from './sticker.selector.component'; import { FileUploadSelectorComponent } from './file-upload.selector.component'; import { MessageBoxComponent } from './message-box.component'; +import { RecentMessageComponent } from './recent-message.component'; +import { RoomListComponent } from './room-list.component'; +import { AttachFileListComponent } from './attach-file-list.component'; +import { AttachImageListComponent } from './attach-image-list.component'; +import { RoomSettingComponent } from './room-setting.component'; +import { AttachDowncheckComponent } from './attach-downcheck.component'; +import { RoomListItem01Component } from './room-list-item-01.component'; export const COMPONENTS = [ RoomExpansionComponent, @@ -14,5 +21,13 @@ export const COMPONENTS = [ EmailSendSelectorComponent, FileUploadSelectorComponent, - MessageBoxComponent + MessageBoxComponent, + RecentMessageComponent, + RoomListComponent, + RoomSettingComponent, + AttachDowncheckComponent, + RoomListItem01Component, + + AttachFileListComponent, + AttachImageListComponent ]; diff --git a/src/app/ucap/chat/components/message-box.component.html b/src/app/ucap/chat/components/message-box.component.html index 7c1eec5..bf2f2df 100644 --- a/src/app/ucap/chat/components/message-box.component.html +++ b/src/app/ucap/chat/components/message-box.component.html @@ -41,6 +41,11 @@ [message]="message" > + + -
    +
    +
    -
    +
    {{ unreadCount }}
    diff --git a/src/app/ucap/chat/components/message-box.component.scss b/src/app/ucap/chat/components/message-box.component.scss index e69de29..de949a4 100644 --- a/src/app/ucap/chat/components/message-box.component.scss +++ b/src/app/ucap/chat/components/message-box.component.scss @@ -0,0 +1,262 @@ +@import '~@ucap/lg-scss/mixins'; + +.hide { + opacity: 0 !important; +} + +.message-row { + width: 100%; + min-width: 270px; + height: 100%; + .chat-row { + position: relative; + display: flex; + flex-direction: row; + margin-left: 0; + padding-bottom: 20px; + .ballon-container { + display: flex; + flex-direction: column; + overflow: hidden; + max-width: 85%; + //chat box + box-shadow: 0 3px 2px 0 rgba(0, 0, 0, 0.16); + border: solid 1px #f998a0; + background-color: #ffffff; + border-radius: 0 10px 10px 10px; + margin-left: 50px; + @include screen(xs) { + margin-left: 28px; + } + .header { + display: flex; + flex-direction: row; + justify-content: space-between; + align-content: center; + padding: 0 0 0 16px; + min-height: 40px; + .user-profile-thumb { + position: absolute; + left: 0; + top: 0; + //height: 41px; + @include profile-avatar-default( + //0, + //14, + //$green, + //18px + 0, + 0, + $green, + 0 + ); //오른 아래 공간, 모바일 온라인 아이콘 크기, 모바일 아이콘 색, 모바일 아이콘 bg크기 + //.presence { + //PC 상태 + // @include presence-state(8px); //원크기 + //} + .profile-image { + @include avatar-img(40px, 0); //아바타 크기, 왼쪽공간 + background-color: #ffe8cb; + cursor: pointer; + img { + width: 40px; + height: 40px; + } + } + } + .sender-info { + display: flex; + flex-direction: row; + align-items: center; + color: $gray-re3; + .name { + font-size: 1em; + font-weight: 600; + white-space: nowrap; + } + .grade { + font-size: 0.929em; + white-space: nowrap; + } + } + .date { + display: flex; + align-items: center; + flex-grow: 1; + justify-self: start; + padding-left: 4px; + color: $gray-re6; + font-size: 0.857em; + white-space: nowrap; + } + .more-area-box { + display: flex; + justify-content: flex-end; + min-width: 158px; + position: sticky; + right: 0; + + .btn-area { + align-items: center; + display: flex; + flex-direction: row-reverse; + //min-width: 40px; + position: relative; + //bubble btn set + .btn-bubble-btn-set { + visibility: hidden; + display: inline-flex; + flex-direction: row; + align-items: center; + flex-grow: 1; + height: 40px; + position: absolute; + z-index: 5; + right: -150px; + //top: -20px; + transition: all 0.1s linear; + background-color: rgba(255, 255, 255, 0.7); + + button { + width: 28px; + height: 28px; + & + button { + margin-left: 2px; + } + &:hover { + background-color: #ffc5ca; + } + &:last-of-type { + display: none; + } + &[disabled='true'] { + opacity: 0.5; + &:hover { + background-color: transparent; + } + } + } + } + .btn-bubble-more { + flex-grow: 0; + transition: all 0.2s linear; + opacity: 1; + cursor: progress; + } + &:hover { + min-width: 158px; + .btn-bubble-btn-set { + visibility: visible; + transition: all 0.2s linear; + //top: 0; + right: 8px; + } + .btn-bubble-more { + visibility: hidden; + transition: all 0.2s linear; + opacity: 0; + } + } + } + } + } + .contents { + } + &.disable-bubble { + border: 1px solid #ccc; + } + &.search-bubble { + border: 2px solid #81757a; + } + } + .unread-count { + background-color: #feebe5; + height: 18px; + line-height: 18px; + border-radius: 9px; + padding: 0 6px; + margin-left: 3px; + margin-bottom: 2px; + align-self: flex-end; + font-size: 0.9em; + font-weight: 600; + } + } + &.me { + .chat-row { + flex-direction: row-reverse; + margin-left: 0; + margin-right: 0; + .ballon-container { + border-radius: 10px 10px 0 10px; + margin-left: 0; + background-color: #ffe8cb; + border-color: #f69532; + .header { + padding: 0 16px 0 0; + @include screen(xs) { + position: relative; + } + .user-profile-thumb { + display: none; + } + .sender-info { + display: none; + } + .date { + order: 3; + justify-content: flex-end; + } + .more-area-box { + justify-content: flex-start; + @include screen(xs) { + position: sticky; + left: 0; + } + .btn-area { + flex-direction: row; + order: 1; + position: relative; + @include screen(xs) { + position: none; + left: 0; + } + .btn-bubble-btn-set { + order: 2; + right: auto; + left: -140px; + background-color: rgba(255, 232, 203, 0.7); + button { + &:hover { + background-color: rgba(255, 127, 61, 0.7); + } + &[disabled='true'] { + background-color: transparent; + } + &:first-of-type { + display: none; + } + &:last-of-type { + display: block; + } + } + } + &:hover { + .btn-bubble-btn-set { + right: auto; + left: 8px; + } + } + } + } + } + .contents { + } + } + .unread-count { + margin-left: 0; + margin-right: 3px; + } + } + } +} diff --git a/src/app/ucap/chat/components/message-box.component.ts b/src/app/ucap/chat/components/message-box.component.ts index 9b00abf..785e741 100644 --- a/src/app/ucap/chat/components/message-box.component.ts +++ b/src/app/ucap/chat/components/message-box.component.ts @@ -1,3 +1,6 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + import { Component, OnInit, @@ -5,43 +8,58 @@ import { EventEmitter, Output, AfterViewInit, - ElementRef, - ViewChild, ChangeDetectorRef, - OnDestroy + OnDestroy, + Inject } from '@angular/core'; import { Store, select } from '@ngrx/store'; -import { map, catchError, takeUntil, take } from 'rxjs/operators'; -import { of, Subject } from 'rxjs'; +import { MatDialog } from '@angular/material/dialog'; + +import { LoginSession, DeviceType } from '@ucap/core'; +import { NativeService } from '@ucap/native'; +import { FileDownloadItem } from '@ucap/api'; +import { LoginResponse } from '@ucap/protocol-authentication'; import { Info, EventJson, EventType, FileType, - StickerEventJson + StickerEventJson, + isRecalled, + isCopyable, + isRecallable, + isForwardable, + FileEventJson, + MassTranslationEventJson } from '@ucap/protocol-event'; import { UserInfo as RoomUserInfo, UserInfoShort as RoomUserInfoShort, - RoomInfo + RoomInfo, + RoomType } from '@ucap/protocol-room'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { LoginSession } from '@ucap/core'; +import { User } from '@ucap/protocol-info'; import { I18nService } from '@ucap/ng-i18n'; import { LocalStorageService } from '@ucap/ng-web-storage'; import { LogService } from '@ucap/ng-logger'; -import { CommonApiService } from '@ucap/ng-api-common'; +import { UCAP_NATIVE_SERVICE } from '@ucap/ng-native'; + +import { UserSelector } from '@ucap/ng-store-organization'; +import { LoginSelector } from '@ucap/ng-store-authentication'; + +import { SelectFileInfo } from '@ucap/ng-ui'; import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { MatDialog } from '@angular/material/dialog'; -import { LoginSelector } from '@ucap/ng-store-authentication'; -import { MassTalkDownloadRequest } from '@ucap/api-common'; -import { StatusCode } from '@ucap/api'; -import { Dictionary } from '@ngrx/entity'; +import { + TextDetailDialogComponent, + TextDetailDialogData, + TextDetailDialogResult +} from '@app/sections/chat/dialogs/text-detail.dialog.component'; +import { AppFileService } from '@app/services/app-file.service'; @Component({ selector: 'app-chat-message-box', @@ -57,6 +75,8 @@ export class MessageBoxComponent implements OnInit, OnDestroy, AfterViewInit { @Input() isMe = false; @Input() + translationSimpleview: boolean; + @Input() senderInfo: RoomUserInfoShort | RoomUserInfo; @Input() defaultProfileImage = ''; @@ -70,9 +90,15 @@ export class MessageBoxComponent implements OnInit, OnDestroy, AfterViewInit { loginSession: LoginSession; loginRes: LoginResponse; + user: User; EventType = EventType; + isRecalledMessage = isRecalled; + isCopyableMessage = isCopyable; + isRecallableMessage = isRecallable; + isForwardableMessage = isForwardable; + ////////////////////////////////// @Input() messageType: string; @@ -83,7 +109,26 @@ export class MessageBoxComponent implements OnInit, OnDestroy, AfterViewInit { @Input() fileType: FileType; - private ngOnDestroySubject: Subject; + @Output() + fileViewer: EventEmitter = new EventEmitter(); + + @Output() + messageContextMenu = new EventEmitter<{ + menuType: string; + message: Info; + }>(); + + @Output() + massTranslationDetail = new EventEmitter<{ + message: Info; + contentsType: string; + }>(); + + @Output() + openProfile = new EventEmitter(); + + private ngOnDestroySubject: Subject = new Subject(); + constructor( private store: Store, private i18nService: I18nService, @@ -91,25 +136,30 @@ export class MessageBoxComponent implements OnInit, OnDestroy, AfterViewInit { private localStorageService: LocalStorageService, private logService: LogService, private appAuthenticationService: AppAuthenticationService, - private commonApiService: CommonApiService, + private appFileService: AppFileService, + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, private changeDetectorRef: ChangeDetectorRef ) {} ngOnInit() { - this.ngOnDestroySubject = new Subject(); + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + }); + this.store .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) .subscribe((loginRes) => { this.loginRes = loginRes; }); - this.appAuthenticationService - .getLoginSession$() - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe((loginSession) => (this.loginSession = loginSession)); + + this.loginSession = this.appAuthenticationService.getLoginSession(); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -149,48 +199,125 @@ export class MessageBoxComponent implements OnInit, OnDestroy, AfterViewInit { } } + onOpenProfile(userInfo: RoomUserInfoShort | RoomUserInfo): void { + this.openProfile.emit(String(userInfo.seq)); + } + /** * Url link Open Event. */ onOpenLink(url: string): void { - console.log('onOpenLink', url); + this.nativeService.platform_openDefaultBrowser(url); } /** * Detail view > Mass text. */ onOpenMassDetail(eventMassSeq: number): void { - const req = { - userSeq: this.loginRes.userSeq, - deviceType: this.loginSession.deviceType, - eventMassSeq: Number(eventMassSeq), - token: this.loginRes.tokenString - } as MassTalkDownloadRequest; + const dialogRef = this.dialog.open< + TextDetailDialogComponent, + TextDetailDialogData, + TextDetailDialogResult + >(TextDetailDialogComponent, { + panelClass: 'mid-create-dialog', + data: { + message: this.message, + roomId: this.roomInfo.roomId, + userSeq: String(this.user.info.seq), + deviceType: this.loginSession.deviceType, + token: this.loginRes.tokenString, + eventMassSeq: Number(eventMassSeq) + } + }); + } - this.commonApiService - .massTalkDownload(req) - .pipe( - take(1), - map((res) => { - if (res.statusCode === StatusCode.Success) { - console.log('massTalkDownload', res.content); - // const result = this.dialog.open< - // MassDetailComponent, - // MassDetailDialogData - // >(MassDetailComponent, { - // data: { - // title: this.i18nService.t('chat.detailView'), - // contents: res.content - // } - // }); - } else { - this.logService.error( - `commonApiService] massTalkDownload ${res?.errorMessage}` - ); - } - }), - catchError((error) => of({ error })) + /** + * Detail view > Mass translation text + */ + onOpenMassTranslationDetail(params: { + message: Info; + contentsType: string; + }) { + this.massTranslationDetail.emit(params); + } + isShowUnreadCount = () => { + if ( + !!this.roomInfo && + [RoomType.Mytalk, RoomType.Allim, RoomType.Bot, RoomType.Link].some( + (v) => v === this.roomInfo.roomType ) - .subscribe(); + ) { + return false; + } + return true; + }; + + onClickMessageContextMenu(menuType: string) { + this.messageContextMenu.emit({ + menuType, + message: this.message + }); + } + + /** [Event] Image Viewer */ + openViewer(fileEvent: SelectFileInfo): void { + this.fileViewer.emit(fileEvent); + } + + fileSave(params: { + fileInfo: FileEventJson; + fileDownloadItem: FileDownloadItem; + type: string; + }): void { + if ( + params.type === 'saveAs' && + this.loginSession.deviceType === DeviceType.PC + ) { + this.nativeService + .file_selectForSave({ defaultPath: params.fileInfo.fileName }) + .then((result) => { + if (!!result) { + if (!!result.canceled) { + // 취소함. + } else { + this.appFileService.saveFile( + { + fileInfo: params.fileInfo, + fileDownloadItem: params.fileDownloadItem, + type: params.type, + fileName: params.fileInfo.fileName, + fileDownloadUrl: undefined, + savePath: result.filePath + }, + this.loginRes, + this.user, + this.loginSession + ); + } + } + }) + .catch((reason) => { + // this.snackBarService.open( + // this.translateService.instant( + // 'common:file.errors.failToSpecifyPath' + // ), + // this.translateService.instant('common:file.errors.label') + // ); + }); + } else { + this.appFileService.saveFile( + { + fileInfo: params.fileInfo, + fileDownloadItem: params.fileDownloadItem, + type: params.type, + fileName: params.fileInfo.fileName, + fileDownloadUrl: undefined, + savePath: undefined + }, + this.loginRes, + this.user, + this.loginSession + ); + } } } diff --git a/src/app/ucap/chat/components/recent-message.component.html b/src/app/ucap/chat/components/recent-message.component.html new file mode 100644 index 0000000..a958e69 --- /dev/null +++ b/src/app/ucap/chat/components/recent-message.component.html @@ -0,0 +1,40 @@ +
    + +
    diff --git a/src/app/ucap/chat/components/recent-message.component.scss b/src/app/ucap/chat/components/recent-message.component.scss new file mode 100644 index 0000000..c181d1b --- /dev/null +++ b/src/app/ucap/chat/components/recent-message.component.scss @@ -0,0 +1,18 @@ +.btn-email-send-area { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + height: 44px; + button { + border: 1px solid rgba(153, 153, 153, 0.76); + height: 30px; + width: 148px; + background-color: #fff; + border-radius: 2px; + overflow: hidden; + & + button { + margin-left: 5px; + } + } +} diff --git a/src/app/ucap/chat/components/recent-message.component.spec.ts b/src/app/ucap/chat/components/recent-message.component.spec.ts new file mode 100644 index 0000000..6185a3b --- /dev/null +++ b/src/app/ucap/chat/components/recent-message.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RecentMessageComponent } from './recent-message.component'; + +describe('Chat::MessageBox::RecentMessageComponent', () => { + let component: RecentMessageComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [RecentMessageComponent] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RecentMessageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ucap/chat/components/recent-message.component.ts b/src/app/ucap/chat/components/recent-message.component.ts new file mode 100644 index 0000000..0f229f1 --- /dev/null +++ b/src/app/ucap/chat/components/recent-message.component.ts @@ -0,0 +1,39 @@ +import { + Component, + OnInit, + AfterViewInit, + Output, + EventEmitter, + Input +} from '@angular/core'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; + +@Component({ + selector: 'app-chat-recent-message', + templateUrl: './recent-message.component.html', + styleUrls: ['./recent-message.component.scss'] +}) +export class RecentMessageComponent implements OnInit, AfterViewInit { + @Input() + senderInfo: RoomUserInfoShort | RoomUserInfo; + @Input() + defaultProfileImage = ''; + @Input() + profileImageRoot = ''; + + @Output() + gotoBottom = new EventEmitter(); + + constructor() {} + + ngOnInit() {} + + ngAfterViewInit(): void {} + + onClickGotoBottom(): void { + this.gotoBottom.emit(); + } +} diff --git a/src/app/ucap/chat/components/room-expansion.component.html b/src/app/ucap/chat/components/room-expansion.component.html index a5bd14a..4ca16dd 100644 --- a/src/app/ucap/chat/components/room-expansion.component.html +++ b/src/app/ucap/chat/components/room-expansion.component.html @@ -1,32 +1,149 @@ -
    - - - - - - - - {{ node.nodeType | ucapDate: 'LL' }} - {{ node.nodeType | ucapDate: 'dddd' }} - - ({{ 'room.today' | ucapI18n }}) - - - - +
    + +
    +
    + + + + + + + + + {{ node.nodeType | ucapDate: 'LL' }} + {{ node.nodeType | ucapDate: 'dddd' }} + + ({{ 'chat:room.today' | ucapI18n }}) + + + ({{ 'chat:room.yesterday' | ucapI18n }}) + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NO + + + +
    +
    diff --git a/src/app/ucap/chat/components/room-expansion.component.scss b/src/app/ucap/chat/components/room-expansion.component.scss index 3f67707..3e5b11a 100644 --- a/src/app/ucap/chat/components/room-expansion.component.scss +++ b/src/app/ucap/chat/components/room-expansion.component.scss @@ -1,4 +1,42 @@ .room-expansion-container { width: 100%; height: 100%; + padding: 0; + .empty { + widows: 100%; + height: 100%; + background-color: #f1f2f6; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + svg { + .empty-fix-1, + .empty-fix-3 { + stroke: #bababa; + stroke-width: 3px; + } + + .empty-fix-1 { + fill: #fff; + } + + .empty-fix-3 { + stroke-linecap: round; + } + + .empty-fix-3, + .empty-fix-5 { + fill: none; + } + + .empty-fix-4 { + fill: #bababa; + } + + .empty-fix-7 { + stroke: none; + } + } + } } diff --git a/src/app/ucap/chat/components/room-expansion.component.ts b/src/app/ucap/chat/components/room-expansion.component.ts index ce0cf29..5426c0e 100644 --- a/src/app/ucap/chat/components/room-expansion.component.ts +++ b/src/app/ucap/chat/components/room-expansion.component.ts @@ -1,3 +1,5 @@ +import moment from 'moment'; + import { Subject, combineLatest } from 'rxjs'; import { takeUntil, take } from 'rxjs/operators'; @@ -13,80 +15,64 @@ import { } from '@angular/core'; import { Store, select } from '@ngrx/store'; +import { Dictionary } from '@ngrx/entity'; -import { - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY -} from '@angular/cdk/scrolling'; - -import { VersionInfo2Response } from '@ucap/api-public'; -import { LoginResponse } from '@ucap/protocol-authentication'; -import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; +import { UserInfo } from '@ucap/protocol-sync'; import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; +import { RoomInfo, RoomType, UpdateRequest } from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; + +import { UserSelector } from '@ucap/ng-store-organization'; import { - RoomInfo, - RoomType, - ExitAllRequest, - UpdateRequest, - ExitRequest -} from '@ucap/protocol-room'; - -import { LogService } from '@ucap/ng-logger'; - -import { RoomSelector, RoomActions } from '@ucap/ng-store-chat'; -import { - LoginSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; -import { BuddySelector, GroupSelector } from '@ucap/ng-store-group'; + RoomSelector, + RoomActions, + RoomUserMap, + RoomUserShortMap +} from '@ucap/ng-store-chat'; +import { DateService } from '@ucap/ng-ui'; import { TranslatePipe as OrganizationTranslate, TranslateService } from '@ucap/ng-ui-organization'; -import { NodeType, FlatNode } from '@ucap/ng-ui-group'; -import { AppAuthenticationService } from '@app/services/app-authentication.service'; -import { LoginSession } from '@app/models/login-session'; import { AppChatService } from '@app/services/app-chat.service'; -import { - DateService, - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult -} from '@ucap/ng-ui'; -import { Dictionary } from '@ngrx/entity'; -import { - RoomUserMap, - RoomUserShortMap -} from '@ucap/ng-store-chat/lib/store/room/state'; -import { MatDialog } from '@angular/material/dialog'; -import { I18nService } from '@ucap/ng-i18n'; +import { SearchInfo } from '@app/pages/chat/models/search-info'; export type UserInfoTypes = UserInfo | UserInfoSS | UserInfoF | UserInfoDN; -export class GroupVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(60, 150, 200); // (itemSize, minBufferPx, maxBufferPx) - } -} - @Component({ selector: 'app-chat-room-expansion', templateUrl: './room-expansion.component.html', styleUrls: ['./room-expansion.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: GroupVirtualScrollStrategy - } - ], changeDetection: ChangeDetectionStrategy.OnPush }) export class RoomExpansionComponent implements OnInit, OnDestroy { + @Input() + set searchObj(obj: SearchInfo) { + this._searchObj = obj; + + if (obj.isShowSearch && obj.searchWord.localeCompare('') !== 0) { + this._onRoomSearch(obj); + } else { + this._searchObj.isShowSearch = false; + this.roomList = this.originalRoomList; + this._initRoomGroup(); + } + } + + get searchObj(): SearchInfo { + return this._searchObj; + } + // tslint:disable-next-line: variable-name + _searchObj: SearchInfo; + @Input() checkable = false; + @Input() + currentRoomId?: string; + @Input() selectedRoomList: RoomInfo[] = []; @@ -99,27 +85,30 @@ export class RoomExpansionComponent implements OnInit, OnDestroy { @Output() openChatRoom: EventEmitter = new EventEmitter(); - defaultProfileImage: string; - defaultProfileImageMulti: string; + @Output() + searchResultList = new EventEmitter(); - versionInfo2Res: VersionInfo2Response; - loginRes: LoginResponse; + user: User; + processing = false; + + originalRoomList: RoomInfo[]; roomList: RoomInfo[]; + standbyRooms: string[]; roomUsersDictionary: Dictionary; roomUsersShortDictionary: Dictionary; roomGroup: { division: string; roomList: RoomInfo[] }[]; organizationTranslate: OrganizationTranslate; - private ngOnDestroySubject: Subject; + RoomType = RoomType; + + private ngOnDestroySubject: Subject = new Subject(); constructor( private appChatService: AppChatService, private dateService: DateService, - private i18nService: I18nService, private translateService: TranslateService, - private dialog: MatDialog, private store: Store, private changeDetectorRef: ChangeDetectorRef ) { @@ -127,28 +116,13 @@ export class RoomExpansionComponent implements OnInit, OnDestroy { this.translateService, this.changeDetectorRef ); - - // default image setting - this.defaultProfileImage = this.appChatService.defaultProfileImage; - this.defaultProfileImageMulti = this.appChatService.defaultProfileImage; } ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.store - .pipe( - takeUntil(this.ngOnDestroySubject), - select(ConfigurationSelector.versionInfo2Response) - ) - .subscribe((versionInfo2Res) => { - this.versionInfo2Res = versionInfo2Res; - }); - - this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; }); combineLatest([ @@ -157,18 +131,16 @@ export class RoomExpansionComponent implements OnInit, OnDestroy { ]) .pipe(takeUntil(this.ngOnDestroySubject)) .subscribe(([rooms, standbyRooms]) => { - rooms = (rooms || []).filter((info) => { - return ( - info.isJoinRoom && - !standbyRooms.find((standbyRoom) => standbyRoom === info.roomId) - ); - }); + this.standbyRooms = standbyRooms; + this.originalRoomList = rooms; this.roomList = rooms; - // groupping. - this.initGroup(); + if (!!this._searchObj && !!this._searchObj.isShowSearch) { + this._onRoomSearch(this.searchObj); + } - this.changeDetectorRef.detectChanges(); + // groupping. + this._initRoomGroup(); }); combineLatest([ @@ -191,7 +163,6 @@ export class RoomExpansionComponent implements OnInit, OnDestroy { .subscribe(([roomUsers, roomUsersShort]) => { this.roomUsersDictionary = roomUsers; this.roomUsersShortDictionary = roomUsersShort; - this.changeDetectorRef.detectChanges(); }); } @@ -202,9 +173,17 @@ export class RoomExpansionComponent implements OnInit, OnDestroy { } } - initGroup() { + private _initRoomGroup() { this.roomGroup = []; + // standby room exclude. + this.roomList = (this.roomList || []).filter((info) => { + return ( + info.isJoinRoom && + !this.standbyRooms.find((standbyRoom) => standbyRoom === info.roomId) + ); + }); + this.roomList.forEach((roomInfo) => { const date = roomInfo.finalEventDate; let division = ''; @@ -235,40 +214,56 @@ export class RoomExpansionComponent implements OnInit, OnDestroy { }); } }); + + this.changeDetectorRef.markForCheck(); } - getRoomName(roomInfo: RoomInfo): string { - if (!roomInfo) { - return ''; + private _onRoomSearch(obj: SearchInfo) { + const searchRoomList: RoomInfo[] = []; + + this.processing = true; + this.changeDetectorRef.markForCheck(); + + this.originalRoomList.forEach((roomInfo) => { + if (roomInfo.roomName.indexOf(obj.searchWord) > -1) { + searchRoomList.push(roomInfo); + } else { + const roomUsers = this.appChatService.getRoomUserList( + this.user, + roomInfo.roomId, + this.roomUsersDictionary, + this.roomUsersShortDictionary + ); + + if ( + roomUsers.existUsers && + roomUsers.users.filter( + (userInfo) => + userInfo.name.indexOf(obj.searchWord) > -1 || + userInfo.nameEn.indexOf(obj.searchWord) > -1 || + userInfo.nameCn.indexOf(obj.searchWord) > -1 + ).length > 0 + ) { + searchRoomList.push(roomInfo); + } + } + }); + + this.searchResultList.emit(searchRoomList); + this.roomList = searchRoomList.slice(); + this.processing = false; + this._initRoomGroup(); + } + + isToday(date: any): 'T' | 'Y' | undefined { + if (this.dateService.isToday(date)) { + return 'T'; + } else if (this.dateService.isToday(moment(date).add(1, 'days').format())) { + return 'Y'; + } else { + return undefined; } - - const roomName = this.appChatService.getRoomName( - this.organizationTranslate, - this.loginRes, - roomInfo, - this.roomUsersDictionary, - this.roomUsersShortDictionary - ); - - return roomName; - } - - getRoomProfileImage(roomInfo: RoomInfo): string { - let roomImage = ''; - if (!!roomInfo) { - roomImage = this.appChatService.getRoomProfileImage( - roomInfo, - this.loginRes, - this.roomUsersDictionary, - this.roomUsersShortDictionary - ); - } - - return roomImage; - } - - isToday(date: any) { - return this.dateService.isToday(date); + // return this.dateService.isToday(date); } onToggleAlarm(roomInfo: RoomInfo): void { @@ -289,40 +284,12 @@ export class RoomExpansionComponent implements OnInit, OnDestroy { } as UpdateRequest }) ); - this.changeDetectorRef.detectChanges(); + this.changeDetectorRef.markForCheck(); } onDelRoom(roomInfo: RoomInfo): void { - if (!roomInfo) { - return; - } - - const dialogRef = this.dialog.open< - ConfirmDialogComponent, - ConfirmDialogData, - ConfirmDialogResult - >(ConfirmDialogComponent, { - data: { - title: this.i18nService.t('dialog.title.exitFromRoom'), - html: this.i18nService.t('dialog.confirmExitFromRoom') - } - }); - - dialogRef - .afterClosed() - .pipe(take(1)) - .subscribe((result) => { - if (!!result && !!result.choice) { - this.store.dispatch( - RoomActions.del({ - req: { - roomId: roomInfo.roomId - } as ExitRequest - }) - ); - } - }); - this.changeDetectorRef.detectChanges(); + this.appChatService.exitRoomDialog(roomInfo); + this.changeDetectorRef.markForCheck(); } getChecked(roomInfo: RoomInfo): boolean { diff --git a/src/app/ucap/chat/components/room-expansion.strategy.ts b/src/app/ucap/chat/components/room-expansion.strategy.ts deleted file mode 100644 index 5624900..0000000 --- a/src/app/ucap/chat/components/room-expansion.strategy.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Observable, Subject } from 'rxjs'; - -import { - VirtualScrollStrategy, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; -import { distinctUntilChanged } from 'rxjs/operators'; - -export class ChatRoomVirtualScrollStrategy implements VirtualScrollStrategy { - scrolledIndexChange: Observable; - - private indexSubject = new Subject(); - private viewport: CdkVirtualScrollViewport | null = null; - - constructor() { - this.scrolledIndexChange = this.indexSubject.pipe(distinctUntilChanged()); - } - - attach(viewport: CdkVirtualScrollViewport): void { - this.viewport = viewport; - } - detach(): void { - this.indexSubject.complete(); - this.viewport = null; - } - onContentScrolled(): void {} - onDataLengthChanged(): void {} - onContentRendered(): void {} - onRenderedOffsetChanged(): void {} - scrollToIndex(index: number, behavior: ScrollBehavior): void {} -} diff --git a/src/app/ucap/chat/components/room-list-item-01.component.html b/src/app/ucap/chat/components/room-list-item-01.component.html new file mode 100644 index 0000000..026c3bb --- /dev/null +++ b/src/app/ucap/chat/components/room-list-item-01.component.html @@ -0,0 +1,21 @@ +
    + +
    diff --git a/src/app/ucap/chat/components/room-list-item-01.component.scss b/src/app/ucap/chat/components/room-list-item-01.component.scss new file mode 100644 index 0000000..be45828 --- /dev/null +++ b/src/app/ucap/chat/components/room-list-item-01.component.scss @@ -0,0 +1,4 @@ +.profile-list-container { + width: 100%; + height: 100%; +} diff --git a/src/app/ucap/chat/components/room-list-item-01.component.spec.ts b/src/app/ucap/chat/components/room-list-item-01.component.spec.ts new file mode 100644 index 0000000..bb28696 --- /dev/null +++ b/src/app/ucap/chat/components/room-list-item-01.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { RoomListItem01Component } from './room-list-item-01.component'; + +describe('app::ucap::caht::RoomListItem01Component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [RoomListItem01Component] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(RoomListItem01Component); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(RoomListItem01Component); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(RoomListItem01Component); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/chat/components/room-list-item-01.component.ts b/src/app/ucap/chat/components/room-list-item-01.component.ts new file mode 100644 index 0000000..212a623 --- /dev/null +++ b/src/app/ucap/chat/components/room-list-item-01.component.ts @@ -0,0 +1,187 @@ +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Output, + EventEmitter +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { RoomInfo, RoomType } from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; + +import { I18nService } from '@ucap/ng-i18n'; +import { UserSelector } from '@ucap/ng-store-organization'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { + RoomSelector, + RoomUserMap, + RoomUserShortMap +} from '@ucap/ng-store-chat'; + +import { + TranslatePipe as OrganizationTranslate, + TranslateService +} from '@ucap/ng-ui-organization'; + +import { AppChatService } from '@app/services/app-chat.service'; + +@Component({ + selector: 'app-chat-room-list-item-01', + templateUrl: './room-list-item-01.component.html', + styleUrls: ['./room-list-item-01.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class RoomListItem01Component implements OnInit, OnDestroy { + private ngOnDestroySubject: Subject = new Subject(); + + @Input() + roomInfo: RoomInfo; + + @Input() + currentRoomId: string; + + @Input() + checkable = false; + + @Input() + selectedRoomList: RoomInfo[] = []; + + @Input() + moreable = true; + + @Output() + toggleItem = new EventEmitter<{ + checked: boolean; + roomInfo: RoomInfo; + }>(); + + @Output() + openChatRoom = new EventEmitter(); + + @Output() + toggleAlarm = new EventEmitter(); + + @Output() + delRoom = new EventEmitter(); + + user: User; + versionInfo2Res: VersionInfo2Response; + + organizationTranslate: OrganizationTranslate; + + defaultProfileImage: string; + defaultProfileImageMulti: string; + + roomUserMap: RoomUserMap; + roomUserShortMap: RoomUserShortMap; + + RoomType = RoomType; + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private appChatService: AppChatService, + private i18nService: I18nService, + private translateService: TranslateService + ) { + this.translateService.setDefaultLang(this.i18nService.currentLng); + this.translateService.use(this.i18nService.currentLng); + this.organizationTranslate = new OrganizationTranslate( + this.translateService, + this.changeDetectorRef + ); + + // default image setting + this.defaultProfileImage = this.appChatService.defaultProfileImage; + this.defaultProfileImageMulti = this.appChatService.defaultProfileImageMulti; + } + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + combineLatest([ + this.store.pipe(select(UserSelector.user)), + this.store.pipe(select(RoomSelector.roomUser, this.roomInfo.roomId)), + this.store.pipe(select(RoomSelector.roomUserShort, this.roomInfo.roomId)) + ]) + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe(([user, roomUserMap, roomUserShortMap]) => { + this.user = user; + this.roomUserMap = roomUserMap; + this.roomUserShortMap = roomUserShortMap; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + getRoomName(): string { + if (!this.roomInfo) { + return ''; + } + const roomName = this.appChatService.getRoomName( + this.organizationTranslate, + this.user, + this.roomInfo, + this.roomUserMap, + this.roomUserShortMap + ); + + return roomName; + } + + getRoomProfileImage(): string { + if (!this.roomInfo) { + return ''; + } + const roomImage = this.appChatService.getRoomProfileImage( + this.user, + this.roomInfo, + this.roomUserMap, + this.roomUserShortMap + ); + + return roomImage; + } + + getChecked(roomInfo: RoomInfo): boolean { + if (this.selectedRoomList.some((info) => info.roomId === roomInfo.roomId)) { + return true; + } else { + return false; + } + } + + onToggleRoom(event: { checked: boolean; roomInfo: RoomInfo }): void { + this.toggleItem.emit(event); + } + onOpenChatRoom(roomInfo: RoomInfo) { + this.openChatRoom.emit(roomInfo); + } + onToggleAlarm(roomInfo: RoomInfo) { + this.toggleAlarm.emit(roomInfo); + } + onDelRoom(roomInfo: RoomInfo) { + this.delRoom.emit(roomInfo); + } +} diff --git a/src/app/ucap/chat/components/room-list.component.html b/src/app/ucap/chat/components/room-list.component.html new file mode 100644 index 0000000..40531f6 --- /dev/null +++ b/src/app/ucap/chat/components/room-list.component.html @@ -0,0 +1,12 @@ +
    + + + + + +
    diff --git a/src/app/ucap/chat/components/room-list.component.scss b/src/app/ucap/chat/components/room-list.component.scss new file mode 100644 index 0000000..be45828 --- /dev/null +++ b/src/app/ucap/chat/components/room-list.component.scss @@ -0,0 +1,4 @@ +.profile-list-container { + width: 100%; + height: 100%; +} diff --git a/src/app/sections/group/components/component-ui/profile.component.spec.ts b/src/app/ucap/chat/components/room-list.component.spec.ts similarity index 66% rename from src/app/sections/group/components/component-ui/profile.component.spec.ts rename to src/app/ucap/chat/components/room-list.component.spec.ts index 0dc6211..c9660ae 100644 --- a/src/app/sections/group/components/component-ui/profile.component.spec.ts +++ b/src/app/ucap/chat/components/room-list.component.spec.ts @@ -1,28 +1,28 @@ import { TestBed, async } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { ProfileComponent } from './profile.component'; +import { Profile01Component } from './profile-01.component'; -describe('app::sections::group::ProfileComponent', () => { +describe('app::ucap::organization::Profile01Component', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule], - declarations: [ProfileComponent] + declarations: [Profile01Component] }).compileComponents(); })); it('should create the app', () => { - const fixture = TestBed.createComponent(ProfileComponent); + const fixture = TestBed.createComponent(Profile01Component); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it(`should have as title 'ucap-lg-web'`, () => { - const fixture = TestBed.createComponent(ProfileComponent); + const fixture = TestBed.createComponent(Profile01Component); const app = fixture.componentInstance; }); it('should render title', () => { - const fixture = TestBed.createComponent(ProfileComponent); + const fixture = TestBed.createComponent(Profile01Component); fixture.detectChanges(); const compiled = fixture.nativeElement; expect(compiled.querySelector('.content span').textContent).toContain( diff --git a/src/app/ucap/chat/components/room-list.component.ts b/src/app/ucap/chat/components/room-list.component.ts new file mode 100644 index 0000000..7f83a74 --- /dev/null +++ b/src/app/ucap/chat/components/room-list.component.ts @@ -0,0 +1,94 @@ +import { Subject, combineLatest } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Output, + EventEmitter +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { RoomInfo } from '@ucap/protocol-room'; +import { UserInfoSS } from '@ucap/protocol-query'; + +import { RoomSelector } from '@ucap/ng-store-chat'; + +@Component({ + selector: 'app-chat-room-list', + templateUrl: './room-list.component.html', + styleUrls: ['./room-list.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class RoomListComponent implements OnInit, OnDestroy { + @Input() + checkable = false; + + @Input() + isDialog = false; + + @Input() + isMultiCheck = false; + + @Output() + clicked: EventEmitter<{ userInfo: UserInfoSS }> = new EventEmitter(); + + @Output() + toggleRoom: EventEmitter = new EventEmitter(); + + selectedRoomList: RoomInfo[] = []; + selectedRoom: RoomInfo; + + roomList: RoomInfo[]; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + combineLatest([ + this.store.pipe(select(RoomSelector.rooms)), + this.store.pipe(select(RoomSelector.standbyRooms)) + ]) + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe(([rooms, standbyRooms]) => { + rooms = (rooms || []).filter((info) => { + return ( + info.isJoinRoom && + !standbyRooms.find((standbyRoom) => standbyRoom === info.roomId) + ); + }); + this.roomList = rooms; + this.changeDetectorRef.markForCheck(); + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onToggleRoom(event: { checked: boolean; roomInfo: RoomInfo }): void { + if (!!this.isMultiCheck) { + } else { + if (!!event.checked) { + this.selectedRoom = event.roomInfo; + this.selectedRoomList = [this.selectedRoom]; + } else { + this.selectedRoom = undefined; + this.selectedRoomList = []; + } + } + this.toggleRoom.emit(this.selectedRoom); + } +} diff --git a/src/app/ucap/chat/components/room-setting.component.html b/src/app/ucap/chat/components/room-setting.component.html new file mode 100644 index 0000000..e2d16a3 --- /dev/null +++ b/src/app/ucap/chat/components/room-setting.component.html @@ -0,0 +1,77 @@ +
    +
    +
    +
    +

    + {{ 'chat:dialog.roomName' | ucapI18n }} +

    + + + + {{ input.value?.length || 0 }}/20 + +
    +
    +

    + {{ 'chat:dialog.roomNameChangeTarget' | ucapI18n }} +

    + + {{ + 'chat:dialog.me' | ucapI18n + }} + {{ + 'chat:dialog.all' | ucapI18n + }} + + +
    +
    + +
    +
    +

    + {{ 'chat:dialog.settingTimer' | ucapI18n }} +

    + + + + {{ timer.text }} + + + {{ 'chat:dialog:settingTimerHint' | ucapI18n }} + +
    +
    +
    +
    diff --git a/src/app/ucap/chat/components/room-setting.component.scss b/src/app/ucap/chat/components/room-setting.component.scss new file mode 100644 index 0000000..57c053a --- /dev/null +++ b/src/app/ucap/chat/components/room-setting.component.scss @@ -0,0 +1,15 @@ +.mat-form-field { + font-size: 1em; + width: 100%; + .btn-close { + margin-top: 2px; + color: #fd78a1 !important; + &.hide { + display: none; + } + } +} +.write-timer-set { + display: flex; + flex-direction: column; +} diff --git a/src/app/sections/organization/components/detail-table.component.spec.ts b/src/app/ucap/chat/components/room-setting.component.spec.ts similarity index 52% rename from src/app/sections/organization/components/detail-table.component.spec.ts rename to src/app/ucap/chat/components/room-setting.component.spec.ts index 17ac9d1..a58ae44 100644 --- a/src/app/sections/organization/components/detail-table.component.spec.ts +++ b/src/app/ucap/chat/components/room-setting.component.spec.ts @@ -1,19 +1,19 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { DetailTableComponent } from './detail-table.component'; +import { RoomSettingComponent } from './room-setting.component'; -describe('Organization::DetailTableComponent', () => { - let component: DetailTableComponent; - let fixture: ComponentFixture; +describe('app::ucap::chat::RoomSettingComponent', () => { + let component: RoomSettingComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [DetailTableComponent] + declarations: [RoomSettingComponent] }).compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(DetailTableComponent); + fixture = TestBed.createComponent(RoomSettingComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/ucap/chat/components/room-setting.component.ts b/src/app/ucap/chat/components/room-setting.component.ts new file mode 100644 index 0000000..e39af50 --- /dev/null +++ b/src/app/ucap/chat/components/room-setting.component.ts @@ -0,0 +1,138 @@ +import { + Component, + OnInit, + OnDestroy, + Output, + EventEmitter, + Input, + ChangeDetectorRef, + ChangeDetectionStrategy +} from '@angular/core'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort, + RoomInfo +} from '@ucap/protocol-room'; +import { I18nService } from '@ucap/ng-i18n'; +import { Store } from '@ngrx/store'; +import { takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { MatSelectChange } from '@angular/material/select'; +import { MatRadioChange } from '@angular/material/radio'; + +@Component({ + selector: 'app-chat-room-setting', + templateUrl: './room-setting.component.html', + styleUrls: ['./room-setting.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class RoomSettingComponent implements OnInit, OnDestroy { + @Input() + roomInfo: RoomInfo; + + @Input() + isDialog = false; + + @Output() + changedRoomSetting: EventEmitter<{ + invalid?: boolean; + roomName?: string; + checkedMe?: string; + timerInterval?: number; + }> = new EventEmitter(); + + private ngOnDestroySubject = new Subject(); + + constructor( + private i18nService: I18nService, + private changeDetectorRef: ChangeDetectorRef + ) {} + + roomName: string; + timerArray: { value: number; text: string }[]; + checkMe: string; + isInvlid: boolean; + + ngOnInit() { + this.i18nService.languageChanged$ + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((_) => { + this._setTimerArray(); + }); + this._setTimerArray(); + this.checkMe = 'all'; + } + + ngOnDestroy() { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + // onKeyupName() { + // this.chatSettingForm.get('roomName').markAsTouched(); + // } + + onChangeName(roomName: string) { + this.roomName = roomName; + this.isInvlid = false; + + if (!!this.roomName && this.roomName.trim().localeCompare('') !== 0) { + const forbidden = /[\{\}\[\]\/?.;:|\)*~`!^+<>@\#$%&\\\=\(\'\"]/g.test( + this.roomName + ); + + if (forbidden) { + this.isInvlid = true; + } + } + + this.changedRoomSetting.emit({ + invalid: this.isInvlid, + roomName: this.roomName, + checkedMe: this.checkMe + }); + } + + private _setTimerArray() { + const hourFrom = this.i18nService.t('common:units.hourFrom'); + const minute = this.i18nService.t('common:units.minute'); + const second = this.i18nService.t('common:units.second'); + + this.timerArray = [ + { value: 5, text: `5 ${second}` }, + { value: 10, text: `10 ${second}` }, + { value: 30, text: `30 ${second}` }, + { value: 60, text: `1 ${minute}` }, + { value: 300, text: `5 ${minute}` }, + { value: 600, text: `10 ${minute}` }, + { value: 1800, text: `30 ${minute}` }, + { value: 3600, text: `1 ${hourFrom}` }, + { value: 21600, text: `6 ${hourFrom}` }, + { value: 43200, text: `12 ${hourFrom}` }, + { value: 86400, text: `24 ${hourFrom}` } + ]; + } + + onChangeRadioBtn(event: MatRadioChange) { + if (event.value === 'me') { + this.checkMe = 'me'; + } else { + this.checkMe = 'all'; + } + + this.changedRoomSetting.emit({ + invalid: this.isInvlid, + roomName: this.roomName, + checkedMe: this.checkMe + }); + } + onChangeSelection(value: number) { + const interval = value; + + this.changedRoomSetting.emit({ + timerInterval: !value ? 86400 : value + }); + } +} diff --git a/src/app/ucap/chat/components/sticker.selector.component.html b/src/app/ucap/chat/components/sticker.selector.component.html index 8b33ca2..42b18b9 100644 --- a/src/app/ucap/chat/components/sticker.selector.component.html +++ b/src/app/ucap/chat/components/sticker.selector.component.html @@ -1,6 +1,6 @@ - +
    -

    이모티콘

    +

    {{ 'chat:label.imoticon' | ucapI18n }}

    @@ -10,7 +10,7 @@
    -
    +
    (); @Output() - closeSticker = new EventEmitter(); + closed = new EventEmitter(); stickerHistory: string[] = []; - stickerBasePath = '../../../../assets/sticker/'; + stickerBasePath = 'assets/sticker/'; stickerInfoList: StickerInfo[] = []; stickerFileInfoList: StickerFilesInfo[] = []; currentSticker: StickerFilesInfo; @@ -115,6 +115,6 @@ export class StickerSelectorComponent implements OnInit, AfterViewInit { } onClickClose() { - this.closeSticker.emit(); + this.closed.emit(); } } diff --git a/src/app/ucap/chat/components/translation.selector.component.html b/src/app/ucap/chat/components/translation.selector.component.html index c26bd54..d3507e1 100644 --- a/src/app/ucap/chat/components/translation.selector.component.html +++ b/src/app/ucap/chat/components/translation.selector.component.html @@ -1,39 +1,91 @@ - +
    -

    번역

    +

    {{ 'chat:label.translations.translation' | ucapI18n }}

    -
    -
    -
    - 미리보기 영역입니다. -
    -
    - - -
    -
    -
    - 대상언어 - - - 번역없음 - 영어 - 일어 - - +
    +
    +
    + {{ + 'chat:label.translations.targetLanguage' | ucapI18n + }} + + + {{ + 'chat:label.translations.noTranslation' | ucapI18n + }} + {{ dest.text }} + + + - - 간략보기 - - - 미리보기 - -
    +
    + + {{ 'chat:label.translations.simpleView' | ucapI18n }} + + + {{ 'chat:label.translations.preview' | ucapI18n }} + +
    +
    + +
    +
    + {{ translationPreviewInfo.previewInfo.translation }} +
    +
    + + +
    +
    + + +
    diff --git a/src/app/ucap/chat/components/translation.selector.component.scss b/src/app/ucap/chat/components/translation.selector.component.scss index ed7da72..bedd0b9 100644 --- a/src/app/ucap/chat/components/translation.selector.component.scss +++ b/src/app/ucap/chat/components/translation.selector.component.scss @@ -1,9 +1,130 @@ -.bubble-main { - padding: 10px; - text-align: left; - span { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-word; +@import '~@ucap/lg-scss/mixins'; + +.translation-info-box { + display: flex; + flex-direction: column; + .translation-input-box { + display: flex; + flex-direction: row; + align-items: center; + height: 44px; + padding: 0 16px; + .text-language { + font-size: 0.929em; + font-weight: 600; + color: #333; + flex-grow: 0; + white-space: nowrap; + @include screen(mid) { + display: none; + } + } + .select-language { + margin-left: 18px; + padding-bottom: 0; + flex-grow: 0; + @include ucapMatFormField(0, 0, 230px, 330px, 230px, 40px, 24px); + @include screen(custom, max, 1320) { + @include ucapMatFormField(0, 0, 130px, 150px, 130px, 40px, 24px); + } + //@include screen(mid) { + // @include ucapMatFormField(0, 0, 100px, 120px, 100px, 40px, 24px); + //} + @include screen(mid) { + margin-left: 16; + } + @include screen(xs) { + margin-left: 0; + } + } + .btn-language-view { + flex-grow: 1; + display: flex; + flex-direction: row-reverse; + align-items: center; + .btn-simpleview { + order: 2; + br { + display: none; + } + } + .btn-preview { + order: 1; + margin-left: 20px; + br { + display: none; + } + } + @include screen(custom, max, 414) { + .btn-simpleview { + line-height: 1; + margin-left: 15px; + + br { + display: block; + } + } + .btn-preview { + line-height: 1; + margin-left: 12px; + + br { + display: block; + } + } + } + } + } + .preview { + background-color: rgba(0, 0, 0, 0.6); + height: 70px; + padding: 13px 45px 13px 16px; + position: relative; + overflow-y: auto; + display: flex; + flex-direction: row; + align-items: flex-start; + .preview-contents { + font-size: 0.929em; + line-height: 1.67; + color: #fff; + flex-grow: 1; + } + .btn-area { + align-self: flex-start; + justify-content: flex-end; + .btn-message-send { + width: 38px; + height: 38px; + box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.11); + border: solid 3px #ffffff; + background-image: linear-gradient(225deg, #fadfaa 13%, #f92465 95%); + font-size: 1.714em; + position: fixed; + z-index: 10; + right: 20px; + border-radius: 50%; + color: $white; + text-align: center; + padding: 4px; + } + } + } + .btn-language-conversion { + width: 38px; + height: 38px; + box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.11); + border: solid 3px #ffffff; + background-color: #584f52; + font-size: 1.714em; + position: absolute; + z-index: 15; + bottom: 25px; + right: 20px; + transition: all 0.3s; + border-radius: 50%; + color: $white; + text-align: center; + padding: 4px; } } diff --git a/src/app/ucap/chat/components/translation.selector.component.ts b/src/app/ucap/chat/components/translation.selector.component.ts index 8546cd8..f9bf62a 100644 --- a/src/app/ucap/chat/components/translation.selector.component.ts +++ b/src/app/ucap/chat/components/translation.selector.component.ts @@ -1,11 +1,16 @@ import { Component, OnInit, - Input, - ElementRef, AfterViewInit, - Inject + EventEmitter, + Output, + Input } from '@angular/core'; +import { MatSelectChange } from '@angular/material/select'; +import { FormGroup, FormBuilder } from '@angular/forms'; +import { TranslationSaveResponse } from '@ucap/api-common'; +import { EventType } from '@ucap/protocol-event'; +import { MatSlideToggleChange } from '@angular/material/slide-toggle'; @Component({ selector: 'app-chat-selector-translation', @@ -13,9 +18,194 @@ import { styleUrls: ['./translation.selector.component.scss'] }) export class TranslationSelectorComponent implements OnInit, AfterViewInit { - constructor() {} + @Input() + destLocale: string; - ngOnInit() {} + @Input() + simpleView: boolean; + + @Input() + preView: boolean; + + @Input() + translationPreviewInfo: { + previewInfo: TranslationSaveResponse | null; + translationType: EventType.Translation | EventType.MassTranslation; + }; + + @Output() + closed = new EventEmitter(); + + @Output() + changeDestLocale = new EventEmitter(); + + @Output() + sendTranslationMessage = new EventEmitter<{ + previewInfo: TranslationSaveResponse | null; + translationType: EventType.Translation | EventType.MassTranslation; + }>(); + + @Output() + translationMessage = new EventEmitter(); + + @Output() + changeTranslationSimpleview = new EventEmitter(); + @Output() + changeTranslationPreview = new EventEmitter(); + + translationDestList: { + key: string; + text: string; + }[] = [ + { key: 'af', text: 'Afrikaans' }, + { key: 'sq', text: 'Albanian' }, + { key: 'am', text: 'Amharic' }, + { key: 'ar', text: 'Arabic' }, + { key: 'hy', text: 'Armenian' }, + { key: 'az', text: 'Azeerbaijani' }, + { key: 'eu', text: 'Basque' }, + { key: 'be', text: 'Belarusian' }, + { key: 'bn', text: 'Bengali' }, + { key: 'bs', text: 'Bosnian' }, + { key: 'bg', text: 'Bulgarian' }, + { key: 'ca', text: 'Catalan' }, + { key: 'ceb', text: 'Cebuano' }, + { key: 'zh-CN', text: 'Chinese(Simplified)' }, + { key: 'zh-TW', text: 'Chinese(Traditional)' }, + { key: 'co', text: 'Corsican' }, + { key: 'hr', text: 'Croatian' }, + { key: 'cs', text: 'Czech' }, + { key: 'da', text: 'Danish' }, + { key: 'nl', text: 'Dutch' }, + { key: 'en', text: 'English' }, + { key: 'eo', text: 'Esperanto' }, + { key: 'fi', text: 'Finnish' }, + { key: 'fr', text: 'French' }, + { key: 'fy', text: 'Frisian' }, + { key: 'gl', text: 'Galician' }, + { key: 'ka', text: 'Georgian' }, + { key: 'de', text: 'German' }, + { key: 'el', text: 'Greek' }, + { key: 'gu', text: 'Gujarati' }, + { key: 'ht', text: 'Haitian Creole' }, + { key: 'ha', text: 'Hausa' }, + { key: 'haw', text: 'Hawaiian' }, + { key: 'iw', text: 'Hebrew' }, + { key: 'hi', text: 'Hindi' }, + { key: 'hmn', text: 'Hmong' }, + { key: 'hu', text: 'Hungarian' }, + { key: 'is', text: 'Icelandic' }, + { key: 'ig', text: 'Igbo' }, + { key: 'id', text: 'Indonesian' }, + { key: 'ga', text: 'Irish' }, + { key: 'it', text: 'Italian' }, + { key: 'ja', text: 'Japanese' }, + { key: 'jw', text: 'Javanese' }, + { key: 'kn', text: 'Kannada' }, + { key: 'kk', text: 'Kazakh' }, + { key: 'km', text: 'Khmer' }, + { key: 'ko', text: 'Korean' }, + { key: 'ku', text: 'Kurdish' }, + { key: 'ky', text: 'Kyrgyz' }, + { key: 'lo', text: 'Lao' }, + { key: 'la', text: 'Latin' }, + { key: 'lv', text: 'Latvian' }, + { key: 'lt', text: 'Lithuanian' }, + { key: 'lb', text: 'Luxembourgish' }, + { key: 'mk', text: 'Macedonian' }, + { key: 'mg', text: 'Malagasy' }, + { key: 'ms', text: 'Malay' }, + { key: 'ml', text: 'Malayalam' }, + { key: 'mi', text: 'Maori' }, + { key: 'mr', text: 'Marathi' }, + { key: 'mn', text: 'Mongolian' }, + { key: 'my', text: 'Myanmar(Burmese)' }, + { key: 'ne', text: 'Nepali' }, + { key: 'no', text: 'Norwegian' }, + { key: 'ny', text: 'Nyanja(Chichewa)' }, + { key: 'ps', text: 'Pashto' }, + { key: 'fa', text: 'Persian' }, + { key: 'pl', text: 'Polish' }, + { key: 'pt', text: 'Portuguese' }, + { key: 'pa', text: 'Punjabi' }, + { key: 'ro', text: 'Romanian' }, + { key: 'ru', text: 'Russian' }, + { key: 'sm', text: 'Samoan' }, + { key: 'gd', text: 'Scots Gaelic' }, + { key: 'sr', text: 'Serbian' }, + { key: 'st', text: 'Sesotho' }, + { key: 'sn', text: 'Shona' }, + { key: 'sd', text: 'Sindhi' }, + { key: 'si', text: 'Sinhala(Sinhalese)' }, + { key: 'sk', text: 'Slovak' }, + { key: 'sl', text: 'Slovenian' }, + { key: 'so', text: 'Somali' }, + { key: 'es', text: 'Spanish' }, + { key: 'su', text: 'Sundanese' }, + { key: 'sw', text: 'Swahili' }, + { key: 'sv', text: 'Swedish' }, + { key: 'tl', text: 'Tagalog(Filipino)' }, + { key: 'tg', text: 'Tajik' }, + { key: 'ta', text: 'Tamil' }, + { key: 'te', text: 'Telugu' }, + { key: 'th', text: 'Thai' }, + { key: 'tr', text: 'Turkish' }, + { key: 'uk', text: 'Ukrainian' }, + { key: 'ur', text: 'Urdu' }, + { key: 'uz', text: 'Uzbek' }, + { key: 'vi', text: 'Vietnamese' }, + { key: 'cy', text: 'Welsh' }, + { key: 'xh', text: 'Xhosa' }, + { key: 'yi', text: 'Yiddish' }, + { key: 'yo', text: 'Yoruba' }, + { key: 'zu', text: 'Zulu' } + ]; + + translationForm: FormGroup; + + isShowTranslationSimpleview = false; + isShowTranslationPreview = false; + + constructor(private formBuilder: FormBuilder) {} + + ngOnInit() { + this.translationForm = this.formBuilder.group({ + destType: [this.destLocale] + }); + + this.isShowTranslationSimpleview = this.simpleView; + this.isShowTranslationPreview = this.preView; + } ngAfterViewInit(): void {} + + onClickClose(): void { + this.closed.emit(); + } + + onChangeSelection(event: MatSelectChange) { + this.destLocale = event.value; + this.changeDestLocale.emit(this.destLocale); + } + + onClickSendMessage(translationInfo: { + previewInfo: TranslationSaveResponse | null; + translationType: EventType.Translation | EventType.MassTranslation; + }) { + this.sendTranslationMessage.emit(translationInfo); + } + + onClickTranslationMessage(event: MouseEvent) { + this.translationMessage.emit(); + } + + onChangToggleSimpleview(event: MatSlideToggleChange) { + this.isShowTranslationSimpleview = event.checked; + this.changeTranslationSimpleview.emit(event.checked); + } + + onChangTogglePreview(event: MatSlideToggleChange) { + this.isShowTranslationPreview = event.checked; + this.changeTranslationPreview.emit(event.checked); + } } diff --git a/src/app/ucap/group/components/expansion.component.html b/src/app/ucap/group/components/expansion-01.component.html similarity index 50% rename from src/app/ucap/group/components/expansion.component.html rename to src/app/ucap/group/components/expansion-01.component.html index 2cf6494..baffc5f 100644 --- a/src/app/ucap/group/components/expansion.component.html +++ b/src/app/ucap/group/components/expansion-01.component.html @@ -1,47 +1,55 @@ -
    +
    - - {{ 'category.favorite' | ucapI18n }} + + {{ 'group:category.favorite' | ucapI18n }} - ({{ node.children?.length }}) + {{ getNodeGroupStatus(node) }} - {{ node.groupDetail.name }} - ({{ node.children?.length }}) + {{ node.groupDetail.name }} + + {{ getNodeGroupStatus(node) }} + - - {{ 'category.default' | ucapI18n }} + + {{ 'group:category.default' | ucapI18n }} - ({{ node.children?.length }}) + {{ getNodeGroupStatus(node) }} @@ -57,21 +65,29 @@ - {{ group.name }} + {{ + group.name + }} + {{ + getGroupNameBySeq(group) + }} + + @@ -105,7 +140,7 @@ #profileContextMenuTrigger="matMenuTrigger" [matMenuTriggerFor]="profileContextMenu" >
    - + - {{ 'moreMenu.profile.open' | ucapI18n }} + face{{ 'group:contextMenu.profileOpen' | ucapI18n }} diff --git a/src/app/ucap/group/components/expansion-01.component.scss b/src/app/ucap/group/components/expansion-01.component.scss new file mode 100644 index 0000000..1c79546 --- /dev/null +++ b/src/app/ucap/group/components/expansion-01.component.scss @@ -0,0 +1,56 @@ +@charset 'UTF-8'; + +@import '~@ucap/lg-scss/mixins'; + +.expansion-01-container { + width: 100%; + height: 100%; + .ucap-clickable { + display: flex; + min-height: 50px; + border-top: 10px solid #f1f2f6; + border-bottom: 1px solid $gray-rec; + li { + width: 100%; + .path { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + .group-info { + width: calc(100% - 100px); + justify-self: self-start; + flex-grow: 1; + font-size: 13px; + } + } + } + } + .currentGroup { + background-color: red; + } + .header-buddy, + .header-favorite, + .header-default { + display: flex; + flex-grow: 1; + flex-direction: row; + + .group-name { + @include ellipsis-column(1); + @include wordBreak(); + line-break: anywhere; + margin-right: 4px; + } + .group-member-amount { + flex: 0 0 auto; + color: #e42f66; + font-weight: 600; + } + } +} + +// +.manu-title { + @include menu-title(); +} diff --git a/src/app/sections/organization/components/tree.section.component.spec.ts b/src/app/ucap/group/components/expansion-01.component.spec.ts similarity index 66% rename from src/app/sections/organization/components/tree.section.component.spec.ts rename to src/app/ucap/group/components/expansion-01.component.spec.ts index fc648f7..34b843f 100644 --- a/src/app/sections/organization/components/tree.section.component.spec.ts +++ b/src/app/ucap/group/components/expansion-01.component.spec.ts @@ -1,28 +1,28 @@ import { TestBed, async } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { TreeSectionComponent } from './tree.section.component'; +import { Expansion01Component } from './expansion-01.component'; -describe('app::sections::organization::TreeSectionComponent', () => { +describe('app::ucap::group::Expansion01Component', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule], - declarations: [TreeSectionComponent] + declarations: [Expansion01Component] }).compileComponents(); })); it('should create the app', () => { - const fixture = TestBed.createComponent(TreeSectionComponent); + const fixture = TestBed.createComponent(Expansion01Component); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it(`should have as title 'ucap-lg-web'`, () => { - const fixture = TestBed.createComponent(TreeSectionComponent); + const fixture = TestBed.createComponent(Expansion01Component); const app = fixture.componentInstance; }); it('should render title', () => { - const fixture = TestBed.createComponent(TreeSectionComponent); + const fixture = TestBed.createComponent(Expansion01Component); fixture.detectChanges(); const compiled = fixture.nativeElement; expect(compiled.querySelector('.content span').textContent).toContain( diff --git a/src/app/ucap/group/components/expansion.component.ts b/src/app/ucap/group/components/expansion-01.component.ts similarity index 62% rename from src/app/ucap/group/components/expansion.component.ts rename to src/app/ucap/group/components/expansion-01.component.ts index d8750c4..45ca490 100644 --- a/src/app/ucap/group/components/expansion.component.ts +++ b/src/app/ucap/group/components/expansion-01.component.ts @@ -1,9 +1,10 @@ import { Subject, combineLatest, of } from 'rxjs'; -import { takeUntil, map, take, catchError } from 'rxjs/operators'; +import { takeUntil } from 'rxjs/operators'; import { Component, OnInit, + AfterViewInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, @@ -17,44 +18,36 @@ import { import { Store, select } from '@ngrx/store'; -import { - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY -} from '@angular/cdk/scrolling'; +import { MatMenuTrigger } from '@angular/material/menu'; +import { StatusCode, PresenceType } from '@ucap/core'; import { VersionInfo2Response } from '@ucap/api-public'; -import { LoginResponse } from '@ucap/protocol-authentication'; +import { StatusBulkInfo } from '@ucap/protocol-status'; import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; import { LogService } from '@ucap/ng-logger'; -import { NodeType, FlatNode } from '@ucap/ng-ui-group'; +import { I18nService } from '@ucap/ng-i18n'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { BuddySelector, GroupSelector } from '@ucap/ng-store-group'; +import { PresenceSelector, UserSelector } from '@ucap/ng-store-organization'; + import { - LoginSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; -import { - BuddySelector, - GroupSelector, - BuddyActions, - GroupActions -} from '@ucap/ng-store-group'; + ExpansionComponent as UcapExpansionComponent, + NodeType, + FlatNode, + GroupNode +} from '@ucap/ng-ui-group'; +import { PresenceUtil } from '@ucap/ng-ui-organization'; import { AppAuthenticationService } from '@app/services/app-authentication.service'; import { LoginSession } from '@app/models/login-session'; -import { MatMenuTrigger } from '@angular/material/menu'; -import { MatDialog } from '@angular/material/dialog'; - -import { ExpansionComponent as UcapExpansionComponent } from '@ucap/ng-ui-group'; import { environment } from '@environments'; -import { PresenceSelector } from '@ucap/ng-store-organization'; -import { StatusCode } from '@ucap/core'; - -import { I18nService } from '@ucap/ng-i18n'; -import { ProfileListItem01Component } from '@ucap/ng-ui-organization'; -import { ProfileListItem02Component } from './profile-list-item-02.component'; +import { GroupOpenInfo } from '@app/models/group-open-info'; +import { SortViewType } from '@app/pages/group/types/sort-view.type'; export type UserInfoTypes = | UserInfo @@ -63,39 +56,21 @@ export type UserInfoTypes = | UserInfoDN | RoomUserInfo; -export class GroupVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(60, 150, 200); // (itemSize, minBufferPx, maxBufferPx) - } -} - @Component({ - selector: 'app-group-expansion', - templateUrl: './expansion.component.html', - styleUrls: ['./expansion.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: GroupVirtualScrollStrategy - } - ], + selector: 'app-group-expansion-01', + templateUrl: './expansion-01.component.html', + styleUrls: ['./expansion-01.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class ExpansionComponent implements OnInit, OnDestroy { - @Input() - checkable = false; - - @Input() - editable = false; - - @Input() - isDialog = false; - +export class Expansion01Component implements OnInit, OnDestroy, AfterViewInit { @Input() selectedUserList: UserInfoTypes[]; @Input() - showType: string; + showType: SortViewType; + + @Input() + loginSession: LoginSession; @Output() profileMenu: EventEmitter = new EventEmitter(); @@ -119,10 +94,12 @@ export class ExpansionComponent implements OnInit, OnDestroy { }> = new EventEmitter(); @Output() - toggleCheckUser: EventEmitter<{ - checked: boolean; - userInfo: UserInfoSS; - }> = new EventEmitter(); + toggleCheckUser: EventEmitter< + { + checked: boolean; + userInfo: UserInfoSS; + }[] + > = new EventEmitter(); @Output() toggleCheckGroup = new EventEmitter<{ @@ -130,6 +107,15 @@ export class ExpansionComponent implements OnInit, OnDestroy { groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; }>(); + @Output() + floatingProfileMenu = new EventEmitter<{ + menuType: string; + userInfo: UserInfoF; + }>(); + + @Output() + groupDestroy = new EventEmitter(); + @ViewChild('groupExpansion', { static: false }) groupExpansion: UcapExpansionComponent; @@ -145,12 +131,12 @@ export class ExpansionComponent implements OnInit, OnDestroy { profileContextMenuTrigger: MatMenuTrigger; profileContextMenuPosition = { x: '0px', y: '0px' }; - loginSession: LoginSession; versionInfo2Res: VersionInfo2Response; - loginRes: LoginResponse; - isProfileClicked = false; + user: User; + groupMenuEvent: MouseEvent; - isSearchData = false; + statusBulkInfos: StatusBulkInfo[]; + currentSelectUser: UserInfo; displayOrder: NodeType[] = [ NodeType.Profile, @@ -159,15 +145,20 @@ export class ExpansionComponent implements OnInit, OnDestroy { NodeType.Default ]; - profile: UserInfo; favorites: UserInfo[]; + onlineFavorites: UserInfo[]; + groupBuddies: { group: GroupDetailData; buddyList: UserInfo[] }[]; onlineBuddies: { group: GroupDetailData; buddyList: UserInfo[] }[]; onOffBuddies: { group: GroupDetailData; buddyList: UserInfo[] }[]; + groupOpenInfo: GroupOpenInfo; + editablGroup: GroupDetailData = null; - private ngOnDestroySubject: Subject; + String = String; + + private ngOnDestroySubject: Subject = new Subject(); constructor( private appAuthenticationService: AppAuthenticationService, @@ -179,12 +170,7 @@ export class ExpansionComponent implements OnInit, OnDestroy { ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - - this.appAuthenticationService - .getLoginSession$() - .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe((loginSession) => (this.loginSession = loginSession)); + this.groupOpenInfo = this.loginSession.groupInfo; this.store .pipe( @@ -196,9 +182,9 @@ export class ExpansionComponent implements OnInit, OnDestroy { }); this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; }); combineLatest([ @@ -218,6 +204,22 @@ export class ExpansionComponent implements OnInit, OnDestroy { if (!!favorites && 0 < favorites.length) { this.favorites = favorites; + this.onlineFavorites = this.favorites.filter((favorite) => { + const tempBulkInfo = bulkInfos.filter( + (bulkInfo) => String(bulkInfo.userSeq) === String(favorite.seq) + ); + + if (!!tempBulkInfo && tempBulkInfo.length > 0) { + const pcStatus = tempBulkInfo[0].pcStatus; + if (pcStatus === StatusCode.OnLine) { + return favorite; + } + } + }); + this.changeDetectorRef.markForCheck(); + } else if (!!favorites && favorites.length === 0) { + this.favorites = undefined; + this.onlineFavorites = undefined; this.changeDetectorRef.markForCheck(); } @@ -251,23 +253,25 @@ export class ExpansionComponent implements OnInit, OnDestroy { this.groupBuddies.push({ group, buddyList: buddies.filter((buddy) => { - return -1 < group.userSeqs.indexOf(buddy.seq as any); + return -1 < group.userSeqs.indexOf(String(buddy.seq)); }) }); } + this.changeDetectorRef.markForCheck(); } - // 접속한 동료 리스트 if (!!bulkInfos && bulkInfos.length > 0) { + // 접속한 동료 리스트 this.onlineBuddies = []; + for (const group of groups) { const tempBuddyList = []; this.onlineBuddies.push({ group, buddyList: buddies.filter((buddy) => { - if (-1 < group.userSeqs.indexOf(buddy.seq as any)) { + if (-1 < group.userSeqs.indexOf(String(buddy.seq))) { const tempBulkinfos = bulkInfos.filter( (bulk) => bulk.userSeq === buddy.seq + '' ); @@ -275,10 +279,7 @@ export class ExpansionComponent implements OnInit, OnDestroy { const pcStatus = tempBulkinfos[0].pcStatus; const mStatus = tempBulkinfos[0].mobileStatus; - if ( - pcStatus === StatusCode.OnLine || - mStatus === StatusCode.OnLine - ) { + if (pcStatus === StatusCode.OnLine) { return tempBuddyList.push(buddy); } } @@ -287,24 +288,23 @@ export class ExpansionComponent implements OnInit, OnDestroy { }); } } - // 온/오프라인 리스트 if (!!bulkInfos && bulkInfos.length > 0) { this.onOffBuddies = []; const onlineGroup = { - SENDER_SEQ: this.loginRes.SENDER_SEQ, + SENDER_SEQ: String(this.user.info.seq), SSVC_TYPE: 5, SVC_TYPE: 82, seq: -998, - name: '온라인', + name: this.i18nService.t('group:label.online'), isActive: true } as GroupDetailData; const offlineGroup = { - SENDER_SEQ: this.loginRes.SENDER_SEQ, + SENDER_SEQ: String(this.user.info.seq), SSVC_TYPE: 5, SVC_TYPE: 82, seq: -999, - name: '오프라인', + name: this.i18nService.t('group:label.offline'), isActive: true } as GroupDetailData; @@ -316,23 +316,29 @@ export class ExpansionComponent implements OnInit, OnDestroy { group, buddyList: buddies.filter((buddy) => { const tempBulkinfos = bulkInfos.filter( - (bulk) => bulk.userSeq === buddy.seq + '' + (bulk) => bulk.userSeq + '' === buddy.seq + '' ); if (!!tempBulkinfos && tempBulkinfos.length > 0) { const pcStatus = tempBulkinfos[0].pcStatus; const mStatus = tempBulkinfos[0].mobileStatus; - if (group.name.localeCompare('온라인') === 0) { - if ( - pcStatus === StatusCode.OnLine || - mStatus === StatusCode.OnLine - ) { + if ( + group.name.localeCompare( + this.i18nService.t('group:label.online') + ) === 0 + ) { + if (pcStatus === StatusCode.OnLine) { return tempBuddyList.push(buddy); } - } else if (group.name.localeCompare('오프라인') === 0) { + } else if ( + group.name.localeCompare( + this.i18nService.t('group:label.offline') + ) === 0 + ) { if ( pcStatus === StatusCode.Offline && - mStatus === StatusCode.Offline + (mStatus === StatusCode.Offline || + mStatus === StatusCode.OnLine) ) { return tempBuddyList.push(buddy); } @@ -343,6 +349,15 @@ export class ExpansionComponent implements OnInit, OnDestroy { } } }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(PresenceSelector.selectAllStatusBulkInfo) + ) + .subscribe((statusArr) => { + this.statusBulkInfos = statusArr; + }); } ngOnDestroy(): void { @@ -350,6 +365,42 @@ export class ExpansionComponent implements OnInit, OnDestroy { this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } + + if (!!this.groupOpenInfo && !!this.groupDestroy) { + this.groupDestroy.emit(this.groupOpenInfo); + } + } + + ngAfterViewInit() { + this._groupOpenBySessionInfo(); + } + + onClickNode(params: { node: FlatNode; isExpand }) { + // const findSeq = this.groupOpenInfo.groupSeqs.filter(seq => node.node.groupDetail.seq === seq)[0]; + const group = params.node.node.groupDetail; + + const i = this.groupOpenInfo.groupSeqs.findIndex( + (seq) => seq === group.seq + ); + if (!!params.isExpand) { + if (-1 === i) { + this.groupOpenInfo.groupSeqs.push(group.seq); + } + } else { + if (-1 < i) { + this.groupOpenInfo.groupSeqs = this.groupOpenInfo.groupSeqs.filter( + (seq) => seq !== group.seq + ); + } + } + + if ( + this.groupExpansion && + !!this.groupOpenInfo && + this.groupOpenInfo.groupSeqs.length > 0 + ) { + this.groupExpansion.groupOpenInfos = this.groupOpenInfo.groupSeqs; + } } onProfileMenu( @@ -362,11 +413,54 @@ export class ExpansionComponent implements OnInit, OnDestroy { } onClickUser(event: MouseEvent, userInfo: UserInfo) { + this.currentSelectUser = userInfo; this.clicked.emit({ event, userInfo }); } + getNodeGroupStatus(groupNode: GroupNode): string { + if ( + !!groupNode && + !!this.showType && + this.showType === SortViewType.onOff + ) { + return `${groupNode.children.length}`; + } + + if ( + !!this.statusBulkInfos && + this.statusBulkInfos.length > 0 && + !!groupNode && + !!groupNode.groupDetail && + !!groupNode.groupDetail.userSeqs && + groupNode.groupDetail.userSeqs.length > 0 && + !!this.showType && + this.showType !== SortViewType.onOff + ) { + let onlineCount = 0; + this.statusBulkInfos.map((statusInfo) => { + groupNode.groupDetail.userSeqs.filter((seq) => { + if (Number(seq) === Number(statusInfo.userSeq)) { + const pcOnline = PresenceUtil.isOnline(statusInfo, PresenceType.PC); + const mobileOnline = PresenceUtil.isOnline( + statusInfo, + PresenceType.MOBILE + ); + + if (pcOnline) { + onlineCount++; + } + } + }); + }); + + return `(${onlineCount}/${groupNode.children.length})`; + } else { + return `(0/0)`; + } + } + onClickMoreMenu(params: { event: MouseEvent; node: FlatNode }) { - if (this.showType.localeCompare('ON_OFF') === 0) { + if (this.showType === SortViewType.onOff) { return; } @@ -408,6 +502,8 @@ export class ExpansionComponent implements OnInit, OnDestroy { menuType === 'DIV1' || menuType === 'RENAME' || menuType === 'MANAGE_MEMBER' || + menuType === 'COPY_MEMBER' || + menuType === 'MOVE_MEMBER' || menuType === 'DELETE' ) { if ( @@ -441,7 +537,9 @@ export class ExpansionComponent implements OnInit, OnDestroy { if ( menuType === 'CHAT' || menuType === 'SEND_MESSAGE' || - menuType === 'DIV1' + menuType === 'DIV1' || + menuType === 'COPY_MEMBER' || + menuType === 'MOVE_MEMBER' ) { if (!!group && !!group.userSeqs && group.userSeqs.length > 0) { return true; @@ -472,9 +570,18 @@ export class ExpansionComponent implements OnInit, OnDestroy { right: clientRect.right }; } - const groupBuddyList = this.groupBuddies.filter( - (g) => g.group.seq === group.seq - ); + + let groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }[]; + + if (group.seq === -9999) { + groupBuddyList = []; + groupBuddyList.push({ group, buddyList: this.favorites }); + } else { + groupBuddyList = this.groupBuddies.filter( + (g) => g.group.seq === group.seq + ); + } + this.selectGroupMenu.emit({ menuType, groupBuddyList: groupBuddyList[0], @@ -482,39 +589,23 @@ export class ExpansionComponent implements OnInit, OnDestroy { }); } - /** 개별선택(토글) 이벤트 */ - onChangeCheckUser(param: { checked: boolean; userInfo: UserInfoSS }) { - this.toggleCheckUser.emit(param); - } - - /** 개별 체크여부 */ - getCheckedUser(userInfo: UserInfoTypes) { - if (!!this.selectedUserList && this.selectedUserList.length > 0) { - return ( - this.selectedUserList.filter( - (item) => (item.seq as any) === userInfo.seq - ).length > 0 - ); + getFavoritesForShowType(): UserInfo[] { + if (!!this.showType && this.showType === SortViewType.all) { + return this.favorites; + } else if (!!this.showType && this.showType === SortViewType.onlineBuddy) { + return this.onlineFavorites; + } else if (!!this.showType && this.showType === SortViewType.onOff) { + return null; } - return false; - } - - onToggleCheckGroup(params: { - isChecked: boolean; - groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; - }) { - this.toggleCheckGroup.emit({ - isChecked: params.isChecked, - groupBuddyList: params.groupBuddyList - }); + return null; } getBuddiesForShowType(): { group: GroupDetailData; buddyList: UserInfo[] }[] { - if (!this.showType || this.showType.localeCompare('ALL') === 0) { + if (!!this.showType && this.showType === SortViewType.all) { return this.groupBuddies; - } else if (this.showType.localeCompare('ONLINE_BUDDY') === 0) { + } else if (!!this.showType && this.showType === SortViewType.onlineBuddy) { return this.onlineBuddies; - } else if (this.showType.localeCompare('ON_OFF') === 0) { + } else if (!!this.showType && this.showType === SortViewType.onOff) { return this.onOffBuddies; } return null; @@ -528,6 +619,7 @@ export class ExpansionComponent implements OnInit, OnDestroy { }) { params.event.preventDefault(); params.event.stopPropagation(); + this.profileContextMenuPosition.x = params.event.clientX + 'px'; this.profileContextMenuPosition.y = params.event.clientY + 'px'; this.profileContextMenuTrigger.menu.focusFirstItem('mouse'); @@ -539,6 +631,10 @@ export class ExpansionComponent implements OnInit, OnDestroy { this.profileContextMenuTrigger.openMenu(); } + onFloatingProfileMenu(params: { menuType: string; userInfo: UserInfoF }) { + this.floatingProfileMenu.emit(params); + } + onClickProfileContextMenu( event: MouseEvent, menuType: string, @@ -546,9 +642,6 @@ export class ExpansionComponent implements OnInit, OnDestroy { group: GroupDetailData, rect: any ) { - event.preventDefault(); - event.stopPropagation(); - const clientRect = { width: rect.width, height: rect.height, @@ -568,20 +661,22 @@ export class ExpansionComponent implements OnInit, OnDestroy { group, rect: clientRect }); + + this.profileContextMenuTrigger.closeMenu(); } + getGroupNameBySeq(group: GroupDetailData): string { + if (!!group && group.seq === 0) { + return this.i18nService.t('group:category.default'); + } else if (!!group && group.seq === -9999) { + return this.i18nService.t('group:category.favorite'); + } + + return ''; + } onProfileMenuClose(event: MouseEvent) {} getShowProfileContextMenu(menuType: string, group: GroupDetailData) { - return true; - if (!!this.isSearchData) { - if (menuType === 'VIEW_PROFILE' || menuType === 'SEND_MESSAGE') { - return true; - } else { - return false; - } - } - if (!group || group === undefined) { if ( menuType === 'REGISTER_FAVORITE' || @@ -593,7 +688,6 @@ export class ExpansionComponent implements OnInit, OnDestroy { return false; } } - /** 수정불가 그룹 핸들링. */ if (!!group && !!environment.productConfig.group.fixedGroupSeqs) { const fixedGroupSeqs: number[] = @@ -609,4 +703,19 @@ export class ExpansionComponent implements OnInit, OnDestroy { return true; } + + private _groupOpenBySessionInfo() { + if ( + !!this.loginSession && + !!this.groupBuddies && + !!this.groupExpansion && + this.loginSession.groupInfo.groupSeqs.length > 0 && + this.groupBuddies.length > 0 + ) { + this.groupExpansion.expand( + this.loginSession.groupInfo.groupSeqs, + this.loginSession.groupInfo.lastGroupSeq + ); + } + } } diff --git a/src/app/ucap/group/components/expansion-02.component.html b/src/app/ucap/group/components/expansion-02.component.html new file mode 100644 index 0000000..6e7601a --- /dev/null +++ b/src/app/ucap/group/components/expansion-02.component.html @@ -0,0 +1,55 @@ +
    + + + + + + + + + {{ 'group:category.favorite' | ucapI18n }} + + {{ getNodeGroupStatus(node) }} + + + + + {{ node.groupDetail.name }} + + {{ getNodeGroupStatus(node) }} + + + + + + + {{ 'group:category.default' | ucapI18n }} + + {{ getNodeGroupStatus(node) }} + + + +
    diff --git a/src/app/ucap/group/components/expansion-02.component.scss b/src/app/ucap/group/components/expansion-02.component.scss new file mode 100644 index 0000000..7943109 --- /dev/null +++ b/src/app/ucap/group/components/expansion-02.component.scss @@ -0,0 +1,58 @@ +@charset 'UTF-8'; + +@import '~@ucap/lg-scss/mixins'; + +.expansion-02-container { + width: 100%; + height: 100%; + .ucap-clickable { + display: flex; + min-height: 50px; + border-top: 10px solid #f1f2f6; + border-bottom: 1px solid $gray-rec; + li { + width: 100%; + .path { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + .group-info { + width: calc(100% - 100px); + justify-self: self-start; + flex-grow: 1; + font-size: 13px; + } + } + } + } + .currentGroup { + background-color: red; + } + .header-buddy, + .header-favorite, + .header-default { + display: flex; + flex-grow: 1; + flex-direction: row; + + .group-name { + display: block; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + white-space: nowrap; + margin-right: 4px; + } + .group-member-amount { + flex: 0 0 auto; + color: #e42f66; + font-weight: 600; + } + } +} + +// +.manu-title { + @include menu-title(); +} diff --git a/src/app/ucap/group/components/expansion-02.component.spec.ts b/src/app/ucap/group/components/expansion-02.component.spec.ts new file mode 100644 index 0000000..da45376 --- /dev/null +++ b/src/app/ucap/group/components/expansion-02.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { Expansion02Component } from './expansion-02.component'; + +describe('app::ucap::group::Expansion02Component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [Expansion02Component] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(Expansion02Component); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(Expansion02Component); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(Expansion02Component); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/group/components/expansion-02.component.ts b/src/app/ucap/group/components/expansion-02.component.ts new file mode 100644 index 0000000..b28bb9d --- /dev/null +++ b/src/app/ucap/group/components/expansion-02.component.ts @@ -0,0 +1,425 @@ +import { Subject, combineLatest, of } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + EventEmitter, + Output, + ViewChild, + ElementRef, + Self +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { PresenceType } from '@ucap/core'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { StatusBulkInfo } from '@ucap/protocol-status'; +import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; +import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; +import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; +import { User } from '@ucap/protocol-info'; + +import { LogService } from '@ucap/ng-logger'; +import { I18nService } from '@ucap/ng-i18n'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { BuddySelector, GroupSelector } from '@ucap/ng-store-group'; +import { PresenceSelector, UserSelector } from '@ucap/ng-store-organization'; + +import { + ExpansionComponent as UcapExpansionComponent, + NodeType, + GroupNode +} from '@ucap/ng-ui-group'; +import { PresenceUtil } from '@ucap/ng-ui-organization'; + +import { AppAuthenticationService } from '@app/services/app-authentication.service'; + +import { environment } from '@environments'; + +export type UserInfoTypes = + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN + | RoomUserInfo; + +@Component({ + selector: 'app-group-expansion-02', + templateUrl: './expansion-02.component.html', + styleUrls: ['./expansion-02.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class Expansion02Component implements OnInit, OnDestroy { + @Input() + checkable = true; + + @Input() + isDialog = true; + + @Input() + selectedUserList: UserInfoTypes[]; + + @Input() + fixedUserList: UserInfoTypes[]; + + @Input() + selectedGroupHeader: GroupDetailData; + + @Output() + clicked = new EventEmitter<{ event: MouseEvent; userInfo: UserInfoTypes }>(); + + @Output() + toggleCheckUser: EventEmitter< + { + checked: boolean; + userInfo: UserInfoSS; + }[] + > = new EventEmitter(); + + @Output() + toggleCheckGroup = new EventEmitter<{ + isChecked: boolean; + groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; + }>(); + + @Output() + floatingProfileMenu = new EventEmitter<{ + menuType: string; + userInfo: UserInfoF; + }>(); + + @ViewChild('groupExpansion', { static: false }) + groupExpansion: UcapExpansionComponent; + + versionInfo2Res: VersionInfo2Response; + user: User; + + statusBulkInfos: StatusBulkInfo[]; + currentSelectUser: UserInfo; + + displayOrder: NodeType[] = [ + NodeType.Profile, + NodeType.Favorite, + NodeType.Buddy, + NodeType.Default + ]; + + profile: UserInfo; + favorites: UserInfo[]; + groupBuddies: { group: GroupDetailData; buddyList: UserInfo[] }[]; + onlineBuddies: { group: GroupDetailData; buddyList: UserInfo[] }[]; + onOffBuddies: { group: GroupDetailData; buddyList: UserInfo[] }[]; + + editablGroup: GroupDetailData = null; + + String = String; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private appAuthenticationService: AppAuthenticationService, + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService, + private i18nService: I18nService, + @Self() private elementRef: ElementRef + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + }); + + combineLatest([ + this.store.pipe(select(BuddySelector.buddies)), + this.store.pipe(select(GroupSelector.groups)), + this.store.pipe(select(PresenceSelector.selectAllStatusBulkInfo)) + ]) + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe(([buddies, groups, bulkInfos]) => { + buddies = buddies || []; + groups = groups || []; + bulkInfos = bulkInfos || []; + + const favorites = buddies + .filter((buddy) => buddy.isFavorit) + .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0)); + + if (!!favorites && 0 < favorites.length) { + this.favorites = favorites; + this.changeDetectorRef.markForCheck(); + } else if (!!favorites && favorites.length === 0) { + this.favorites = undefined; + this.changeDetectorRef.markForCheck(); + } + const tempOrder: GroupDetailData[] = []; + let defaultGroup: GroupDetailData; + const buddyGroup: GroupDetailData[] = []; + groups.forEach((group) => { + if (0 === group.seq) { + defaultGroup = group; + } else { + buddyGroup.push(group); + } + }); + + tempOrder.push( + ...buddyGroup.sort((a, b) => + a.name < b.name ? -1 : a.name > b.name ? 1 : 0 + ) + ); + + if (!!defaultGroup) { + tempOrder.push(defaultGroup); + } + + groups = tempOrder; + + if (!!groups && 0 < groups.length) { + this.groupBuddies = []; + + for (const group of groups) { + this.groupBuddies.push({ + group, + buddyList: buddies.filter((buddy) => { + return -1 < group.userSeqs.indexOf(String(buddy.seq)); + }) + }); + } + + this.changeDetectorRef.markForCheck(); + } + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(PresenceSelector.selectAllStatusBulkInfo) + ) + .subscribe((statusArr) => { + this.statusBulkInfos = statusArr; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + psUpdate() { + if (!!this.groupExpansion) { + this.groupExpansion.psDirectiveRef.update(); + } + } + + onClickUser(event: MouseEvent, userInfo: UserInfo) { + this.currentSelectUser = userInfo; + this.clicked.emit({ event, userInfo }); + } + + getNodeGroupStatus(groupNode: GroupNode): string { + if ( + !!this.statusBulkInfos && + this.statusBulkInfos.length > 0 && + !!groupNode && + !!groupNode.groupDetail && + !!groupNode.groupDetail.userSeqs && + groupNode.groupDetail.userSeqs.length > 0 + ) { + let onlineCount = 0; + this.statusBulkInfos.map((statusInfo) => { + groupNode.groupDetail.userSeqs.filter((seq) => { + if (Number(seq) === Number(statusInfo.userSeq)) { + const pcOnline = PresenceUtil.isOnline(statusInfo, PresenceType.PC); + const mobileOnline = PresenceUtil.isOnline( + statusInfo, + PresenceType.MOBILE + ); + + if (pcOnline) { + onlineCount++; + } + } + }); + }); + + return `(${onlineCount}/${groupNode.children.length})`; + } else { + return `(0/0)`; + } + } + + onExpandMore() { + this.groupExpansion.expandMore(); + } + onExpandLess() { + this.groupExpansion.expandLess(); + } + + getShowGroupContextMenu(menuType: string, group: GroupDetailData) { + // 즐겨찾기 그룹 숨김메뉴 + if ( + menuType === 'DIV1' || + menuType === 'RENAME' || + menuType === 'MANAGE_MEMBER' || + menuType === 'DELETE' + ) { + if ( + !group || + group === undefined || + (group.seq < 0 && group.name === 'Favorite') + ) { + return false; + } + + /** 수정불가 그룹 핸들링. */ + if (!!group && !!environment.productConfig.group.fixedGroupSeqs) { + const fixedGroupSeqs: number[] = + environment.productConfig.group.fixedGroupSeqs; + if (!!fixedGroupSeqs && fixedGroupSeqs.length > 0) { + if (fixedGroupSeqs.indexOf(group.seq) > -1) { + return false; + } + } + } + } + + // 기본 그룹 숨김메뉴 + if (menuType === 'RENAME' || menuType === 'DELETE') { + if (!!group && group.seq === 0) { + return false; + } + } + + // 그룹원 0명인 그룹 메뉴 정리 + if ( + menuType === 'CHAT' || + menuType === 'SEND_MESSAGE' || + menuType === 'DIV1' + ) { + if (!!group && !!group.userSeqs && group.userSeqs.length > 0) { + return true; + } else { + return false; + } + } + + return true; + } + + /** 개별선택(토글) 이벤트 */ + onChangeCheckUser(param: { checked: boolean; userInfo: UserInfoSS }) { + this.toggleCheckUser.emit([param]); + } + + /** 개별 체크가능 여부 */ + getCheckableUser(userInfo: UserInfoTypes) { + if ( + !!this.checkable && + !!this.fixedUserList && + this.fixedUserList.length > 0 + ) { + return !this.fixedUserList.some( + (fix) => fix.seq + '' === userInfo.seq + '' + ); + } else { + return this.checkable; + } + } + /** 개별 체크여부 */ + getCheckedUser(userInfo: UserInfoTypes) { + if (!!this.selectedUserList && this.selectedUserList.length > 0) { + return ( + this.selectedUserList.filter( + (item) => String(item.seq) === String(userInfo.seq) + ).length > 0 + ); + } + return false; + } + + onToggleCheckGroup(params: { + isChecked: boolean; + groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }; + }) { + let trgtUserList = params.groupBuddyList.buddyList; + + // fixedUserList filtering. + if (!!this.fixedUserList && this.fixedUserList.length > 0) { + trgtUserList = trgtUserList.filter( + (item) => !this.fixedUserList.some((fixed) => fixed.seq === item.seq) + ); + } + + if (!!trgtUserList && trgtUserList.length > 0) { + this.toggleCheckGroup.emit({ + isChecked: params.isChecked, + groupBuddyList: { + group: params.groupBuddyList.group, + buddyList: trgtUserList + } + }); + } + } + + onFloatingProfileMenu(params: { menuType: string; userInfo: UserInfoF }) { + this.floatingProfileMenu.emit(params); + } + + getGroupNameBySeq(group: GroupDetailData): string { + if (!!group && group.seq === 0) { + return this.i18nService.t('group:category.default'); + } else if (!!group && group.seq === -9999) { + return this.i18nService.t('group:category.favorite'); + } + + return ''; + } + + getShowProfileContextMenu(menuType: string, group: GroupDetailData) { + if (!group || group === undefined) { + if ( + menuType === 'REGISTER_FAVORITE' || + menuType === 'SEND_MESSAGE' || + menuType === 'REGISTER_NICKNAME' + ) { + // continue; + } else { + return false; + } + } + /** 수정불가 그룹 핸들링. */ + if (!!group && !!environment.productConfig.group.fixedGroupSeqs) { + const fixedGroupSeqs: number[] = + environment.productConfig.group.fixedGroupSeqs; + if (!!fixedGroupSeqs && fixedGroupSeqs.length > 0) { + if (fixedGroupSeqs.indexOf(group.seq) > -1) { + if (menuType === 'REMOVE_FROM_GROUP' || menuType === 'MOVE_BUDDY') { + return false; + } + } + } + } + + return true; + } +} diff --git a/src/app/ucap/group/components/expansion.component.scss b/src/app/ucap/group/components/expansion.component.scss deleted file mode 100644 index 72eaf11..0000000 --- a/src/app/ucap/group/components/expansion.component.scss +++ /dev/null @@ -1,27 +0,0 @@ -@charset 'UTF-8'; - -@import '~@ucap/lg-scss/mixins'; - -.expansion-container { - width: 100%; - height: 100%; - .ucap-clickable { - display: flex; - min-height: 60px; - border-top: 10px solid #f1f2f6; - border-bottom: 1px solid $gray-rec; - li { - width: 100%; - .path { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - .group-info { - justify-self: self-start; - flex-grow: 1; - } - } - } - } -} diff --git a/src/app/ucap/group/components/expansion.strategy.ts b/src/app/ucap/group/components/expansion.strategy.ts deleted file mode 100644 index cb565a2..0000000 --- a/src/app/ucap/group/components/expansion.strategy.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Observable, Subject } from 'rxjs'; - -import { - VirtualScrollStrategy, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; -import { distinctUntilChanged } from 'rxjs/operators'; - -export class GroupVirtualScrollStrategy implements VirtualScrollStrategy { - scrolledIndexChange: Observable; - - private indexSubject = new Subject(); - private viewport: CdkVirtualScrollViewport | null = null; - - constructor() { - this.scrolledIndexChange = this.indexSubject.pipe(distinctUntilChanged()); - } - - attach(viewport: CdkVirtualScrollViewport): void { - this.viewport = viewport; - } - detach(): void { - this.indexSubject.complete(); - this.viewport = null; - } - onContentScrolled(): void {} - onDataLengthChanged(): void {} - onContentRendered(): void {} - onRenderedOffsetChanged(): void {} - scrollToIndex(index: number, behavior: ScrollBehavior): void {} -} diff --git a/src/app/ucap/group/components/index.ts b/src/app/ucap/group/components/index.ts index 6bb4c0d..1d9f49e 100644 --- a/src/app/ucap/group/components/index.ts +++ b/src/app/ucap/group/components/index.ts @@ -1,10 +1,20 @@ -import { ExpansionComponent } from './expansion.component'; +import { Expansion01Component } from './expansion-01.component'; +import { Expansion02Component } from './expansion-02.component'; import { ProfileListItem02Component } from './profile-list-item-02.component'; +import { ProfileListItem03Component } from './profile-list-item-03.component'; import { ProfileListComponent } from './profile-list.component'; +import { ProfileList01Component } from './profile-list-01.component'; +import { NameInputComponent } from './name-input.component'; +import { ProfileImage01Component } from './profile-image-01.component'; export const COMPONENTS = [ - ExpansionComponent, + Expansion01Component, + Expansion02Component, ProfileListItem02Component, - ProfileListComponent + ProfileListItem03Component, + ProfileListComponent, + ProfileList01Component, + NameInputComponent, + ProfileImage01Component ]; diff --git a/src/app/ucap/group/components/name-input.component.html b/src/app/ucap/group/components/name-input.component.html new file mode 100644 index 0000000..9210739 --- /dev/null +++ b/src/app/ucap/group/components/name-input.component.html @@ -0,0 +1,43 @@ +
    +
    +
    + + {{ 'group:dialog.newGroupName' | ucapI18n }} + + {{ input.value?.length || 0 }}/20 + + + + {{ + 'group:error.bannedWords' + | ucapI18n: { bannedWords: appService.bannedGroupNames.join(',') } + }} + + + {{ 'group:error.sameNameExist' | ucapI18n }} + + +
    +
    diff --git a/src/app/ucap/group/components/name-input.component.scss b/src/app/ucap/group/components/name-input.component.scss new file mode 100644 index 0000000..921e279 --- /dev/null +++ b/src/app/ucap/group/components/name-input.component.scss @@ -0,0 +1,26 @@ +@import '~@ucap/lg-scss/mixins'; +.name-input-container { + width: 100%; + height: 100%; + display: flex; + flex-flow: column; + justify-content: center; + .img-group-add { + margin: 10px 0; + background-image: url(../../../../assets/images/bg/bg_group_add.png); + background-repeat: no-repeat; + background-position: 50% 50%; + width: 100%; + height: 160px; + margin-bottom: 40px; + } + .name-input-form { + width: 100%; + display: flex; + justify-content: center; + .mat-form-field { + width: 70%; + height:60px; + } + } +} diff --git a/src/app/ucap/group/components/expansion.component.spec.ts b/src/app/ucap/group/components/name-input.component.spec.ts similarity index 67% rename from src/app/ucap/group/components/expansion.component.spec.ts rename to src/app/ucap/group/components/name-input.component.spec.ts index 0f0057a..9c03891 100644 --- a/src/app/ucap/group/components/expansion.component.spec.ts +++ b/src/app/ucap/group/components/name-input.component.spec.ts @@ -1,28 +1,28 @@ import { TestBed, async } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { ExpansionComponent } from './expansion.component'; +import { NameInputComponent } from './name-input.component'; -describe('app::ucap::group::ExpansionComponent', () => { +describe('app::ucap::group::NameInputComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule], - declarations: [ExpansionComponent] + declarations: [NameInputComponent] }).compileComponents(); })); it('should create the app', () => { - const fixture = TestBed.createComponent(ExpansionComponent); + const fixture = TestBed.createComponent(NameInputComponent); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it(`should have as title 'ucap-lg-web'`, () => { - const fixture = TestBed.createComponent(ExpansionComponent); + const fixture = TestBed.createComponent(NameInputComponent); const app = fixture.componentInstance; }); it('should render title', () => { - const fixture = TestBed.createComponent(ExpansionComponent); + const fixture = TestBed.createComponent(NameInputComponent); fixture.detectChanges(); const compiled = fixture.nativeElement; expect(compiled.querySelector('.content span').textContent).toContain( diff --git a/src/app/ucap/group/components/name-input.component.ts b/src/app/ucap/group/components/name-input.component.ts new file mode 100644 index 0000000..47bb695 --- /dev/null +++ b/src/app/ucap/group/components/name-input.component.ts @@ -0,0 +1,127 @@ +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Output, + EventEmitter +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { LogService } from '@ucap/ng-logger'; +import { Subject } from 'rxjs'; +import { + FormBuilder, + FormGroup, + Validators, + ValidatorFn, + AbstractControl +} from '@angular/forms'; +import { I18nService } from '@ucap/ng-i18n'; +import { GroupDetailData } from '@ucap/protocol-sync'; +import { StringUtil } from '@ucap/ng-core'; +import { takeUntil } from 'rxjs/operators'; +import { GroupSelector } from '@ucap/ng-store-group'; +import { AppService } from '@app/services/app.service'; + +@Component({ + selector: 'app-group-name-input', + templateUrl: './name-input.component.html', + styleUrls: ['./name-input.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class NameInputComponent implements OnInit, OnDestroy { + @Output() + chagneName: EventEmitter<{ + invalid: boolean; + groupName: string; + }> = new EventEmitter(); + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private formBuilder: FormBuilder, + private changeDetectorRef: ChangeDetectorRef, + private i18nService: I18nService, + private logService: LogService, + public appService: AppService + ) {} + + inputForm: FormGroup; + groupList: GroupDetailData[]; + + ngOnInit(): void { + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(GroupSelector.groups)) + .subscribe((groups) => { + this.groupList = groups; + }); + + this.inputForm = this.formBuilder.group({ + groupName: [ + '', + [ + Validators.required, + StringUtil.checkSpecialCharacter(), + this.checkBanWords(), + this.checkSameName() + ] + ] + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onChange() { + const invalid = this.inputForm.invalid; + + const groupName = this.inputForm.get('groupName').value; + this.chagneName.emit({ invalid, groupName }); + } + + onKeyupName(event: KeyboardEvent) { + this.inputForm.get('groupName').markAsTouched(); + } + + checkBanWords(): ValidatorFn { + return (control: AbstractControl): { [key: string]: any } | null => { + if (!control || !control.value) { + return null; + } + + const ban = this.appService.bannedGroupNames.filter( + (name) => + name.toLowerCase() === (control.value as string).trim().toLowerCase() + )[0]; + + return !!ban && ban !== '' + ? { groupNameBanned: { value: control.value } } + : null; + }; + } + + checkSameName(): ValidatorFn { + return (control: AbstractControl): { [key: string]: any } | null => { + if ( + !control || + !control.value || + !this.groupList || + 0 === this.groupList.length + ) { + return null; + } + const v = (control.value as string).trim(); + const ban = -1 < this.groupList.findIndex((g) => g.name === v); + return ban ? { groupNameSamed: { value: control.value } } : null; + }; + } +} diff --git a/src/app/ucap/group/components/profile-image-01.component.html b/src/app/ucap/group/components/profile-image-01.component.html new file mode 100644 index 0000000..8020a40 --- /dev/null +++ b/src/app/ucap/group/components/profile-image-01.component.html @@ -0,0 +1,9 @@ +
    + + +
    diff --git a/src/app/ucap/group/components/profile-image-01.component.scss b/src/app/ucap/group/components/profile-image-01.component.scss new file mode 100644 index 0000000..198d940 --- /dev/null +++ b/src/app/ucap/group/components/profile-image-01.component.scss @@ -0,0 +1,6 @@ +@import '~@ucap/lg-scss/mixins'; + +.profile-image-container { + width: 100%; + height: 100%; +} diff --git a/src/app/ucap/group/components/profile-image-01.component.spec.ts b/src/app/ucap/group/components/profile-image-01.component.spec.ts new file mode 100644 index 0000000..f96305b --- /dev/null +++ b/src/app/ucap/group/components/profile-image-01.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ProfileImage01Component } from './profile-image-01.component'; + +describe('app::ucap::group::ProfileImage01Component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [ProfileImage01Component] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(ProfileImage01Component); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(ProfileImage01Component); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(ProfileImage01Component); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/group/components/profile-image-01.component.ts b/src/app/ucap/group/components/profile-image-01.component.ts new file mode 100644 index 0000000..015b09c --- /dev/null +++ b/src/app/ucap/group/components/profile-image-01.component.ts @@ -0,0 +1,72 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { UserInfoSS } from '@ucap/protocol-query'; + +import { LogService } from '@ucap/ng-logger'; +import { PresenceSelector } from '@ucap/ng-store-organization'; +import { StatusBulkInfo } from '@ucap/protocol-status'; + +@Component({ + selector: 'app-group-profile-image-01', + templateUrl: './profile-image-01.component.html', + styleUrls: ['./profile-image-01.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileImage01Component implements OnInit, OnDestroy { + @Input() + set userInfo(userInfo: UserInfoSS) { + this._userInfo = userInfo; + } + get userInfo(): UserInfoSS { + return this._userInfo; + } + // tslint:disable-next-line: variable-name + _userInfo: UserInfoSS; + + @Input() + versionInfo: VersionInfo2Response; + + presenceInfo: StatusBulkInfo; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select( + PresenceSelector.selectStatusBulkInfo, + Number(this.userInfo?.seq) + ) + ) + .subscribe((status) => { + this.presenceInfo = status as any; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } +} diff --git a/src/app/ucap/group/components/profile-list-01.component.html b/src/app/ucap/group/components/profile-list-01.component.html new file mode 100644 index 0000000..1dbc048 --- /dev/null +++ b/src/app/ucap/group/components/profile-list-01.component.html @@ -0,0 +1,138 @@ +
    +
    + +
    + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NO + + + +
    +
    +
    diff --git a/src/app/ucap/group/components/profile-list-01.component.scss b/src/app/ucap/group/components/profile-list-01.component.scss new file mode 100644 index 0000000..89e12ee --- /dev/null +++ b/src/app/ucap/group/components/profile-list-01.component.scss @@ -0,0 +1,39 @@ +.profile-list-01-item-container { + .empty { + widows: 100%; + height: 100%; + background-color: #f1f2f6; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + svg { + .empty-fix-1, + .empty-fix-3 { + stroke: #bababa; + stroke-width: 3px; + } + + .empty-fix-1 { + fill: #fff; + } + + .empty-fix-3 { + stroke-linecap: round; + } + + .empty-fix-3, + .empty-fix-5 { + fill: none; + } + + .empty-fix-4 { + fill: #bababa; + } + + .empty-fix-7 { + stroke: none; + } + } + } +} diff --git a/src/app/sections/group/components/search.section.component.spec.ts b/src/app/ucap/group/components/profile-list-01.component.spec.ts similarity index 66% rename from src/app/sections/group/components/search.section.component.spec.ts rename to src/app/ucap/group/components/profile-list-01.component.spec.ts index e45a1ca..6b05c9a 100644 --- a/src/app/sections/group/components/search.section.component.spec.ts +++ b/src/app/ucap/group/components/profile-list-01.component.spec.ts @@ -1,28 +1,28 @@ import { TestBed, async } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { SearchSectionComponent } from './search.section.component'; +import { ProfileList01Component } from './profile-list-01.component'; -describe('app::sections::group::SearchSectionComponent', () => { +describe('app::ucap::organization::ProfileList01Component', () => { beforeEach(async(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule], - declarations: [SearchSectionComponent] + declarations: [ProfileList01Component] }).compileComponents(); })); it('should create the app', () => { - const fixture = TestBed.createComponent(SearchSectionComponent); + const fixture = TestBed.createComponent(ProfileList01Component); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); it(`should have as title 'ucap-lg-web'`, () => { - const fixture = TestBed.createComponent(SearchSectionComponent); + const fixture = TestBed.createComponent(ProfileList01Component); const app = fixture.componentInstance; }); it('should render title', () => { - const fixture = TestBed.createComponent(SearchSectionComponent); + const fixture = TestBed.createComponent(ProfileList01Component); fixture.detectChanges(); const compiled = fixture.nativeElement; expect(compiled.querySelector('.content span').textContent).toContain( diff --git a/src/app/ucap/group/components/profile-list-01.component.ts b/src/app/ucap/group/components/profile-list-01.component.ts new file mode 100644 index 0000000..f9b8ce7 --- /dev/null +++ b/src/app/ucap/group/components/profile-list-01.component.ts @@ -0,0 +1,138 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Output, + EventEmitter +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { UserInfoF } from '@ucap/protocol-query'; + +import { LogService } from '@ucap/ng-logger'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; + +interface CheckedInfo { + checked: boolean; + userInfo: UserInfoF; +} +@Component({ + selector: 'app-group-profile-list-01', + templateUrl: './profile-list-01.component.html', + styleUrls: ['./profile-list-01.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileList01Component implements OnInit, OnDestroy { + @Input() + checkable = false; + + @Input() + isDialog = false; + + @Input() + set userInfos(userInfos: UserInfoF[]) { + this._userInfos = userInfos; + } + get userInfos(): UserInfoF[] { + return this._userInfos; + } + // tslint:disable-next-line: variable-name + _userInfos: UserInfoF[]; + + @Input() selectedUser: UserInfoF[]; + + @Output() + clicked: EventEmitter<{ userInfo: UserInfoF }> = new EventEmitter(); + + @Output() + toggleCheck: EventEmitter = new EventEmitter(); + + versionInfo2Res: VersionInfo2Response; + + processing = false; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + /** 전체 체크여부 */ + checkAll() { + if (!this.userInfos || 0 === this.userInfos.length) { + return; + } + + const checked: CheckedInfo[] = []; + this.userInfos.forEach((u) => { + checked.push({ + checked: true, + userInfo: u + }); + }); + this.toggleCheck.emit(checked); + } + + uncheckAll() { + if (!this.userInfos || 0 === this.userInfos.length) { + return; + } + + const unchecked: CheckedInfo[] = []; + this.userInfos.forEach((u) => { + unchecked.push({ + checked: false, + userInfo: u + }); + }); + this.toggleCheck.emit(unchecked); + } + + /** 개별 체크여부 */ + getCheckedUser(userInfo: UserInfoF) { + if (!!this.selectedUser && this.selectedUser.length > 0) { + return ( + this.selectedUser.filter((item) => item.seq === userInfo.seq).length > 0 + ); + } + return false; + } + + /** 개별선택(토글) 이벤트 */ + onChangeCheckUser(param: { checked: boolean; userInfo: UserInfoF }) { + this.toggleCheck.emit([param]); + this.changeDetectorRef.detectChanges(); + } + + onClickUser(userInfo: UserInfoF): void { + this.clicked.emit({ userInfo }); + } +} diff --git a/src/app/ucap/group/components/profile-list-item-02.component.html b/src/app/ucap/group/components/profile-list-item-02.component.html index 7d4e7a4..24ae6e0 100644 --- a/src/app/ucap/group/components/profile-list-item-02.component.html +++ b/src/app/ucap/group/components/profile-list-item-02.component.html @@ -7,33 +7,40 @@ [userInfo]="userInfo" [checkable]="checkable" [checked]="checked" - (openProfile)="onOpenProfile($event)" (changeCheck)="onChangeCheckUser($event)" + class="ucap-organization-profile-list-user" > -
    -
    - {{ userInfo.nickName }} - {{ userInfo.intro }} +
    +
    +

    {{ _userStatusMessage() }}

    +
    - + + + +
    + +
    diff --git a/src/app/ucap/group/components/profile-list-item-03.component.scss b/src/app/ucap/group/components/profile-list-item-03.component.scss new file mode 100644 index 0000000..7645a66 --- /dev/null +++ b/src/app/ucap/group/components/profile-list-item-03.component.scss @@ -0,0 +1,42 @@ +@import '~@ucap/ng-ui-material/material'; + +/// var +/// --ucap-organization-profile-list-item-01-size: 70px +.profile-list-container { + display: flex; + flex-flow: row nowrap; + justify-content: space-between; + //padding: 0 16px; + height: 60px; + align-items: center; + position: relative; + border-bottom: 1px solid #ccc; + overflow: hidden; + &:hover { + transition: all 0.2s; + background-color: #f1f2f6; + } + .chat-member-list-item { + width: 100%; + } + .icon-me { + display: inline-flex; + align-items: center; + justify-content: center; + margin-left: auto; + margin-right: 4px; + border: 1px solid #fd578a; + border-radius: 14px; + width: 40px; + height: 20px; + color: #fd578a; + } +} + +.divider { + margin: 0 4px 0 5px; + width: 1px; + height: 15px; + display: inline-block; + background-color: #ccc; +} diff --git a/src/app/ucap/group/components/profile-list-item.component.spec.ts b/src/app/ucap/group/components/profile-list-item-03.component.spec.ts similarity index 100% rename from src/app/ucap/group/components/profile-list-item.component.spec.ts rename to src/app/ucap/group/components/profile-list-item-03.component.spec.ts diff --git a/src/app/ucap/group/components/profile-list-item-03.component.ts b/src/app/ucap/group/components/profile-list-item-03.component.ts new file mode 100644 index 0000000..797cc8f --- /dev/null +++ b/src/app/ucap/group/components/profile-list-item-03.component.ts @@ -0,0 +1,172 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + EventEmitter, + Output +} from '@angular/core'; + +import { select, Store } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { GroupDetailData } from '@ucap/protocol-sync'; +import { UserInfoSS } from '@ucap/protocol-query'; +import { + UserInfo as RoomUserInfo, + UserInfoShort as RoomUserInfoShort +} from '@ucap/protocol-room'; +import { StatusBulkInfo } from '@ucap/protocol-status'; +import { User } from '@ucap/protocol-info'; + +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; +import { PresenceSelector, UserSelector } from '@ucap/ng-store-organization'; + +import { ucapAnimations } from '@ucap/ng-ui'; + +export type UserInfoTypes = RoomUserInfo | RoomUserInfoShort; + +/** + * @Useage Chat > Room User List. + */ +@Component({ + selector: 'app-group-profile-list-item-03', + templateUrl: './profile-list-item-03.component.html', + styleUrls: ['./profile-list-item-03.component.scss'], + animations: ucapAnimations, + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileListItem03Component implements OnInit, OnDestroy { + @Input() + userInfo: UserInfoTypes; + + @Input() + group: GroupDetailData; + + @Input() + checkable = false; + + @Input() + isMe = false; + + @Input() + checked = false; + + @Input() + isShow = false; + + @Input() + isDialog = false; + + @Output() + openProfile = new EventEmitter(); + + @Output() + openChatRoom = new EventEmitter(); + + @Output() + sendMessage = new EventEmitter(); + + @Output() + exitForcing = new EventEmitter(); + + user: User; + versionInfo2Res: VersionInfo2Response; + + presenceInfo: StatusBulkInfo; + + tempRect: any; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private changeDetectorRef: ChangeDetectorRef, + private store: Store + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(PresenceSelector.selectStatusBulkInfo, Number(this.userInfo.seq)) + ) + .subscribe((status) => { + this.presenceInfo = status; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onOpenProfile(userInfo: UserInfoSS): void { + this.openProfile.emit(String(userInfo.seq)); + } + + onMouseover(event: MouseEvent): void { + if (!this.isDialog) { + this.isShow = true; + } + event.preventDefault(); + event.stopPropagation(); + } + onMouseleave(event: MouseEvent): void { + if (!this.isDialog) { + this.isShow = false; + } + + event.preventDefault(); + event.stopPropagation(); + } + + onClickProfileContextMenu(event: MouseEvent, type: string) { + event.preventDefault(); + event.stopPropagation(); + + switch (type) { + case 'PROFILE': + { + this.openProfile.emit(String(this.userInfo.seq)); + } + break; + case 'CHAT': + { + this.openChatRoom.emit(String(this.userInfo.seq)); + } + break; + case 'MESSAGE': + { + this.sendMessage.emit(String(this.userInfo.seq)); + } + break; + case 'EXIT': + { + this.exitForcing.emit(this.userInfo); + } + break; + } + } +} diff --git a/src/app/ucap/group/components/profile-list-item.component.html b/src/app/ucap/group/components/profile-list-item.component.html deleted file mode 100644 index 6ee735d..0000000 --- a/src/app/ucap/group/components/profile-list-item.component.html +++ /dev/null @@ -1,98 +0,0 @@ -
    - -
    - {{ userInfo.intro }} -
    -
    - {{ userInfo.nickName }} -
    - -
    - - - - -
    -
    - -
    -
    diff --git a/src/app/ucap/group/components/profile-list-item.component.scss b/src/app/ucap/group/components/profile-list-item.component.scss deleted file mode 100644 index 1111e59..0000000 --- a/src/app/ucap/group/components/profile-list-item.component.scss +++ /dev/null @@ -1,136 +0,0 @@ -@import '~@ucap/lg-scss/mixins'; - -.user-list { - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - padding: 0 16px; - height: 70px; - align-items: center; - &.line-top { - border-top: 1px solid $gray-rec; - } - .user-profile-info { - display: inline-flex; - flex-direction: row; - flex-grow: 2.3; - .user-profile-thumb { - @include profile-avatar-default( - 0 5px 5px 0, - 8, - $green, - 18px - ); //오른 아래 공간, 모바일 온라인 아이콘 크기, 모바일 아이콘 색, 모바일 아이콘 bg크기 - .presence { - //PC 상태 - @include presence-state(8px); //원크기 - } - .profile-image { - @include avatar-img(36px, 2px); //아바타 크기, 왼쪽공간 - } - } - .user-info { - display: flex; - flex-direction: column; - align-items: flex-start; - justify-content: flex-start; - padding-left: 16px; - .user-n-g { - display: flex; - flex-flow: row-reverse nowrap; - align-items: flex-end; - height: 22px; - .user-name { - @include ellipsis-column(1); - height: 22px; - font: { - size: 16px; - weight: 600; - } - color: $gray-re21; - order: 1; - -ms-flex-order: 1; - } - .user-grade { - @include ellipsis(1); - align-self: stretch; - font: { - size: 13px; - } - color: $gray-re70; - margin-left: 4px; - order: 0; - -ms-flex-order: 0; - } - } - .dept-name { - @include ellipsis(1); - font-size: 12px; - color: $gray-re6; - line-height: 16px; - } - } - } - .intro { - display: inline-flex; - flex-flow: row nowrap; - flex-basis: 35%; - flex-grow: 0; - align-items: baseline; - p { - font-size: 11px; - line-height: 1.4; - @include ellipsis(2); - height: 30px; - } - &:before { - content: 'chat'; - @include font-family-ico($font-ico-default, 12, center, $lipstick); - flex-direction: row; - align-items: flex-start; - width: 12px; - height: 12px; - line-height: 12px; - margin-right: 4.8px; - position: relative; - top: 2px; - } - } - .btn-partner-set { - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 25px; - border-top: 1px solid rgba(255, 255, 255, 0.8); - border-bottom: 1px solid rgba(255, 255, 255, 0.8); - height: 20px; - margin-top: 20px; - img { - vertical-align: top; - } - } - .intro-name { - display: inline-flex; - flex-flow: row nowrap; - flex-basis: 35%; - align-items: center; - justify-content: center; - overflow: hidden; - span { - display: inline-block; - text-align: center; - width: 100%; - height: 20px; - line-height: 20px; - color: $gray-re70; - font-size: 11px; - padding: 0 10px; - border-radius: 30px; - border: solid 1px $warm-pink; - background-color: #ffffff; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - } -} diff --git a/src/app/ucap/group/components/profile-list-item.component.ts b/src/app/ucap/group/components/profile-list-item.component.ts deleted file mode 100644 index 49027ec..0000000 --- a/src/app/ucap/group/components/profile-list-item.component.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - ChangeDetectionStrategy, - ChangeDetectorRef, - Input, - EventEmitter, - Output, - ElementRef, - Self -} from '@angular/core'; -import { UserInfo, GroupDetailData } from '@ucap/protocol-sync'; -import { UserInfoSS, UserInfoF, UserInfoDN } from '@ucap/protocol-query'; -import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; -import { StatusBulkInfo, StatusInfo } from '@ucap/protocol-status'; -import { PresenceType, StatusCode } from '@ucap/core'; -import { I18nService } from '@ucap/ng-i18n'; -import { ucapAnimations } from '@ucap/ng-ui'; - -export type UserInfoTypes = - | UserInfo - | UserInfoSS - | UserInfoF - | UserInfoDN - | RoomUserInfo; - -@Component({ - selector: 'app-group-profile-list-item', - templateUrl: './profile-list-item.component.html', - styleUrls: ['./profile-list-item.component.scss'], - animations: ucapAnimations, - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class ProfileListItemComponent implements OnInit, OnDestroy { - @Input() - userInfo: UserInfoF; - - @Input() - group: GroupDetailData; - - @Input() - isSearchData = false; - - @Input() - defaultProfileImage: string; - - @Input() - profileImageRoot: string; - - @Input() - set presence(info: StatusBulkInfo | StatusInfo) { - this._presence = info; - } - get presence(): StatusBulkInfo | StatusInfo { - return this._presence; - } - _presence: StatusBulkInfo | StatusInfo; - - @Input() - showMenu = true; - - @Input() - checkable = false; - @Input() - set isChecked(checked: boolean) { - this._isChecked = checked; - } - - get isChecked(): boolean { - return this._isChecked; - } - _isChecked = false; - - @Output() - checked = new EventEmitter<{ - isChecked: boolean; - userInfo: UserInfoTypes; - }>(); - - @Output() - moreMenu: EventEmitter<{ - event: MouseEvent; - userInfo: UserInfoTypes; - group: GroupDetailData; - rect: any; - }> = new EventEmitter(); - - isClicked = false; - isShowMenu = false; - - @Input() - isMe = false; - - PresenceType = PresenceType; - isClickMore = false; - - constructor( - private changeDetectorRef: ChangeDetectorRef, - private i18nService: I18nService, - @Self() private elementRef: ElementRef - ) { - this.i18nService.setDefaultNamespace('organization'); - } - - ngOnInit(): void {} - - ngOnDestroy(): void {} - - onClickProfileImage(event: Event, userInfo: UserInfoTypes): void {} - - onChangeCheck(value: boolean, userInfo: UserInfoTypes) { - this.checked.emit({ - isChecked: value, - userInfo - }); - } - - getPresence(type: PresenceType): string { - let status: string; - let rtnClass = ''; - switch (type) { - case PresenceType.PC: - status = !!this.presence ? this.presence.pcStatus : undefined; - break; - case PresenceType.MOBILE: - status = !!this.presence ? this.presence.mobileStatus : undefined; - break; - } - - switch (status) { - case StatusCode.OnLine: - rtnClass = 'online'; - break; - case StatusCode.Away: - rtnClass = 'absence'; - break; - case StatusCode.Busy: - rtnClass = 'other-business'; - break; - default: - rtnClass = 'offline'; - break; - } - - return rtnClass; - } - - getPresenceMsg(): string { - let presenceMsg = this.i18nService.t('presence.offline'); - - if (!!this.presence) { - switch (this.presence.pcStatus) { - case StatusCode.OnLine: - presenceMsg = this.i18nService.t('presence.online'); - break; - case StatusCode.Away: - presenceMsg = this.i18nService.t('presence.away'); - break; - case StatusCode.Busy: - if ( - !!this.presence.statusMessage && - this.presence.statusMessage !== '.' - ) { - presenceMsg = this.presence.statusMessage; - } else { - presenceMsg = this.i18nService.t('presence.statusMessage1'); - } - break; - } - } - - return presenceMsg; - } - - onClickMore(event: MouseEvent) { - this.isClickMore = true; - const rect = this.elementRef.nativeElement.getBoundingClientRect(); - - this.moreMenu.emit({ - event, - userInfo: this.userInfo, - group: this.group, - rect - }); - } - - onClickProfileContextMenu(event: MouseEvent, type: string) {} - onClickProfile(event: MouseEvent) { - event.preventDefault(); - event.stopPropagation(); - if (this.showMenu && !this.isMe) { - this.isShowMenu = true; - } - } - onMouseover(event: MouseEvent): void { - if (this.showMenu && !this.isMe) { - this.isShowMenu = true; - if (this.isClickMore) { - this.isClickMore = false; - } - } - event.preventDefault(); - event.stopPropagation(); - } - onMouseleave(event: MouseEvent): void { - if (this.showMenu && !this.isMe) { - this.isShowMenu = false; - } - - event.preventDefault(); - event.stopPropagation(); - } -} diff --git a/src/app/ucap/group/components/profile-list.component.html b/src/app/ucap/group/components/profile-list.component.html index af8dd64..00c0080 100644 --- a/src/app/ucap/group/components/profile-list.component.html +++ b/src/app/ucap/group/components/profile-list.component.html @@ -1,21 +1,140 @@ -
    - - - - +
    + +
    + + + +
    -
    -
    -
    + [checkable]="getCheckable(userInfo)" + [isDialog]="isDialog" + [isMoreMenu]="isMoreMenu" + [checked]="getCheckedUser(userInfo)" + (click)="onClickUser(userInfo)" + (floatingProfileMenu)="onFloatingProfileMenu($event)" + (changeCheckUser)="onChangeCheckUser($event)" + > + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NO + + + +
    +
    diff --git a/src/app/ucap/group/components/profile-list.component.scss b/src/app/ucap/group/components/profile-list.component.scss index be45828..51f6c91 100644 --- a/src/app/ucap/group/components/profile-list.component.scss +++ b/src/app/ucap/group/components/profile-list.component.scss @@ -1,4 +1,39 @@ -.profile-list-container { - width: 100%; - height: 100%; +.profile-list-item-container { + .empty { + widows: 100%; + height: 100%; + background-color: #f1f2f6; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + svg { + .empty-fix-1, + .empty-fix-3 { + stroke: #bababa; + stroke-width: 3px; + } + + .empty-fix-1 { + fill: #fff; + } + + .empty-fix-3 { + stroke-linecap: round; + } + + .empty-fix-3, + .empty-fix-5 { + fill: none; + } + + .empty-fix-4 { + fill: #bababa; + } + + .empty-fix-7 { + stroke: none; + } + } + } } diff --git a/src/app/ucap/group/components/profile-list.component.ts b/src/app/ucap/group/components/profile-list.component.ts index 1b26cd3..c116016 100644 --- a/src/app/ucap/group/components/profile-list.component.ts +++ b/src/app/ucap/group/components/profile-list.component.ts @@ -1,5 +1,5 @@ -import { Subject, of } from 'rxjs'; -import { takeUntil, take, map, catchError } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { takeUntil, take } from 'rxjs/operators'; import { Component, @@ -15,48 +15,45 @@ import { import { Store, select } from '@ngrx/store'; import { VersionInfo2Response } from '@ucap/api-public'; -import { LoginResponse } from '@ucap/protocol-authentication'; + import { - AuthResponse, UserInfoSS, + UserInfoF, + UserInfoDN, DeptSearchType, DeptUserRequest } from '@ucap/protocol-query'; +import { UserInfo as RoomUserInfo } from '@ucap/protocol-room'; +import { UserInfo } from '@ucap/protocol-sync'; +import { User } from '@ucap/protocol-info'; import { LogService } from '@ucap/ng-logger'; -import { - LoginSelector, - AuthorizationSelector, - ConfigurationSelector -} from '@ucap/ng-store-authentication'; import { QueryProtocolService } from '@ucap/ng-protocol-query'; import { - DepartmentSelector, - PresenceActions -} from '@ucap/ng-store-organization'; -import { - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY -} from '@angular/cdk/scrolling'; + LoginSelector, + ConfigurationSelector +} from '@ucap/ng-store-authentication'; +import { PresenceActions, UserSelector } from '@ucap/ng-store-organization'; import { SearchData } from '@app/ucap/organization/models/search-data'; -export class ProfileListVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(70, 250, 500); // (itemSize, minBufferPx, maxBufferPx) - } -} +const DEPT_ORDER_PROPERTY = 'order'; +export type UserInfoTypes = + | UserInfo + | UserInfoSS + | UserInfoF + | UserInfoDN + | RoomUserInfo; + +interface CheckedInfo { + checked: boolean; + userInfo: UserInfoSS; +} @Component({ selector: 'app-group-profile-list', templateUrl: './profile-list.component.html', styleUrls: ['./profile-list.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: ProfileListVirtualScrollStrategy - } - ], changeDetection: ChangeDetectionStrategy.OnPush }) export class ProfileListComponent implements OnInit, OnDestroy { @@ -66,12 +63,16 @@ export class ProfileListComponent implements OnInit, OnDestroy { @Input() isDialog = false; + @Input() + isMoreMenu = true; + @Input() set searchData(data: SearchData) { - if (!this.loginRes) { + if (!this.user) { this._searchData = data; return; } + this.searchMember(data); } // tslint:disable-next-line: variable-name @@ -79,14 +80,23 @@ export class ProfileListComponent implements OnInit, OnDestroy { @Input() selectedUser: UserInfoSS[]; + @Input() + fixedUserList?: UserInfoTypes[]; + @Output() searched: EventEmitter = new EventEmitter(); @Output() - toggleCheck: EventEmitter<{ - checked: boolean; - userInfo: UserInfoSS; - }> = new EventEmitter(); + clicked: EventEmitter<{ userInfo: UserInfoSS }> = new EventEmitter(); + + @Output() + floatingProfileMenu = new EventEmitter<{ + menuType: string; + userInfo: UserInfoF; + }>(); + + @Output() + toggleCheck: EventEmitter = new EventEmitter(); set userInfos(userInfos: UserInfoSS[]) { this._userInfos = userInfos; @@ -98,12 +108,12 @@ export class ProfileListComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _userInfos: UserInfoSS[] = []; - loginRes: LoginResponse; + user: User; versionInfo2Res: VersionInfo2Response; processing = false; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private queryProtocolService: QueryProtocolService, @@ -113,8 +123,6 @@ export class ProfileListComponent implements OnInit, OnDestroy { ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.store .pipe( takeUntil(this.ngOnDestroySubject), @@ -125,9 +133,9 @@ export class ProfileListComponent implements OnInit, OnDestroy { }); this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; if (!!this._searchData) { this.searchMember(this._searchData); this._searchData = undefined; @@ -137,15 +145,59 @@ export class ProfileListComponent implements OnInit, OnDestroy { ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } + /** 전체 체크여부 */ + checkAll() { + if (!this.userInfos || 0 === this.userInfos.length) { + return; + } + + const checked: CheckedInfo[] = []; + this.userInfos.forEach((u) => { + checked.push({ + checked: true, + userInfo: u + }); + }); + this.toggleCheck.emit(checked); + } + + uncheckAll() { + if (!this.userInfos || 0 === this.userInfos.length) { + return; + } + + const unchecked: CheckedInfo[] = []; + this.userInfos.forEach((u) => { + unchecked.push({ + checked: false, + userInfo: u + }); + }); + this.toggleCheck.emit(unchecked); + } + + getCheckable(userInfo: UserInfoSS): boolean { + if (!!this.fixedUserList && this.fixedUserList.length > 0) { + return !this.fixedUserList.some( + (item) => String(item.seq) === String(userInfo.seq) + ); + } + + return this.checkable; + } + /** 개별 체크여부 */ getCheckedUser(userInfo: UserInfoSS) { if (!!this.selectedUser && this.selectedUser.length > 0) { return ( - this.selectedUser.filter((item) => item.seq === userInfo.seq).length > 0 + this.selectedUser.filter( + (item) => String(item.seq) === String(userInfo.seq) + ).length > 0 ); } return false; @@ -153,11 +205,16 @@ export class ProfileListComponent implements OnInit, OnDestroy { /** 개별선택(토글) 이벤트 */ onChangeCheckUser(param: { checked: boolean; userInfo: UserInfoSS }) { - this.toggleCheck.emit(param); + this.toggleCheck.emit([param]); + this.changeDetectorRef.detectChanges(); } - onOpenProfile(userInfo: UserInfoSS): void { - alert('Open Profile'); + onFloatingProfileMenu(params: { menuType: string; userInfo: UserInfoF }) { + this.floatingProfileMenu.emit(params); + } + + onClickUser(userInfo: UserInfoSS): void { + this.clicked.emit({ userInfo }); } private searchMember(searchData: SearchData) { @@ -165,43 +222,85 @@ export class ProfileListComponent implements OnInit, OnDestroy { return; } + this.processing = true; + this.changeDetectorRef.markForCheck(); + const req = { divCd: 'ORGS', companyCode: searchData.companyCode, searchRange: DeptSearchType.All, search: searchData.searchWord, - senderCompanyCode: this.loginRes.userInfo.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType + senderCompanyCode: this.user.info.companyCode, + senderEmployeeType: this.user.info.employeeType } as DeptUserRequest; - this.processing = true; this.queryProtocolService .deptUser(req) .pipe(take(1)) .subscribe( (data) => { - this.userInfos = data.userInfos.sort((a, b) => - a.name < b.name ? -1 : a.name > b.name ? 1 : 0 - ); - this.changeDetectorRef.detectChanges(); - - // 검색 결과에 따른 프레즌스 조회. - const userSeqList: string[] = []; - this.userInfos.map((user) => userSeqList.push(user.seq)); - - if (userSeqList.length > 0) { - this.store.dispatch( - PresenceActions.bulkInfo({ - divCd: 'orgSrch', - userSeqs: userSeqList - }) - ); - } + this._refreshUserInfos(data.userInfos); }, (error) => {}, () => { this.processing = false; + this.changeDetectorRef.markForCheck(); } ); } + + private sort(userInfos: UserInfoSS[]): UserInfoSS[] { + if (!userInfos || 0 === userInfos.length) { + return userInfos; + } + + const property = 'name'; + const ascending = undefined; + let deptA: any; + let deptB: any; + let c: any; + let d: any; + + return userInfos.slice().sort((a, b) => { + try { + deptA = a[DEPT_ORDER_PROPERTY]; + deptB = b[DEPT_ORDER_PROPERTY]; + + if (undefined === ascending) { + return deptA < deptB + ? -1 + : deptA > deptB + ? 1 + : a[property] < b[property] + ? -1 + : a[property] > b[property] + ? 1 + : 0; + } + + c = ascending ? a[property] : b[property]; + d = ascending ? b[property] : a[property]; + + return c < d ? -1 : c > d ? 1 : 0; + } catch (error) { + console.log(error); + } + }); + } + + private _refreshUserInfos(userInfos: UserInfoSS[]) { + this.userInfos = this.sort(userInfos); + + // 검색 결과에 따른 프레즌스 조회. + const userSeqList: string[] = userInfos.map((user) => user.seq); + + if (userSeqList.length > 0) { + this.store.dispatch( + PresenceActions.bulkInfo({ + divCd: 'orgSrch', + userSeqs: userSeqList + }) + ); + } + } } diff --git a/src/app/ucap/group/group.module.ts b/src/app/ucap/group/group.module.ts index 4b05f46..de55341 100644 --- a/src/app/ucap/group/group.module.ts +++ b/src/app/ucap/group/group.module.ts @@ -12,6 +12,7 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatInputModule } from '@angular/material/input'; import { MatButtonModule } from '@angular/material/button'; import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; import { UiModule } from '@ucap/ng-ui'; @@ -35,6 +36,7 @@ import { COMPONENTS } from './components'; MatMenuModule, MatButtonModule, MatTooltipModule, + MatProgressBarModule, I18nModule, UiModule, diff --git a/src/app/ucap/organization/components/index.ts b/src/app/ucap/organization/components/index.ts index 4503211..a93d204 100644 --- a/src/app/ucap/organization/components/index.ts +++ b/src/app/ucap/organization/components/index.ts @@ -1,11 +1,17 @@ import { Profile01Component } from './profile-01.component'; +import { ProfileImage01Component } from './profile-image-01.component'; import { ProfileListComponent } from './profile-list.component'; +import { ProfileMenu01Component } from './profile-menu-01.component'; +import { ProfileNavigationListComponent } from './profile-navigation-list.component'; import { SearchForTenantComponent } from './search-for-tenant.component'; import { TreeComponent } from './tree.component'; export const COMPONENTS = [ Profile01Component, + ProfileImage01Component, ProfileListComponent, + ProfileMenu01Component, + ProfileNavigationListComponent, SearchForTenantComponent, TreeComponent ]; diff --git a/src/app/ucap/organization/components/profile-01.component.html b/src/app/ucap/organization/components/profile-01.component.html index d114692..434c41b 100644 --- a/src/app/ucap/organization/components/profile-01.component.html +++ b/src/app/ucap/organization/components/profile-01.component.html @@ -1,19 +1,17 @@
    = new EventEmitter(); + @Output() + sendMessage: EventEmitter = new EventEmitter(); + @Output() + sendCall: EventEmitter = new EventEmitter(); + @Output() + sendSms: EventEmitter = new EventEmitter(); + @Output() + createConference: EventEmitter = new EventEmitter(); + @Output() + toggleFavorit: EventEmitter<{ + userInfo: UserInfoSS; + isFavorite: boolean; + }> = new EventEmitter(); + @Output() + toggleBuddy: EventEmitter<{ + userInfo: UserInfoSS; + isBuddy: boolean; + }> = new EventEmitter(); + + @Output() + uploadProfileImage: EventEmitter = new EventEmitter(); + @Output() + updateIntro: EventEmitter = new EventEmitter(); + @Output() + updateNickname: EventEmitter<{ + userInfo: UserInfoTypes; + nickname: string; + }> = new EventEmitter(); + @ViewChild('profileImageFileInput', { static: false }) profileImageFileInput: ElementRef; @@ -60,29 +99,33 @@ export class Profile01Component implements OnInit, OnDestroy { userInfo: UserInfoSS; - loginRes: LoginResponse; + user: User; authRes: AuthResponse; versionInfo2Res: VersionInfo2Response; - presence: StatusBulkInfo; + presences: Dictionary; String = String; + PresenceUtil = PresenceUtil; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private queryProtocolService: QueryProtocolService, + private appChatService: AppChatService, private store: Store, private changeDetectorRef: ChangeDetectorRef, private logService: LogService, private i18nService: I18nService ) {} - isBuddy = false; PresenceType = PresenceType; + isBuddy = false; isFavorite = false; - ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); + currentNickname: string; + companyList: Company[]; + companyName: string; + ngOnInit(): void { this.store .pipe( takeUntil(this.ngOnDestroySubject), @@ -93,10 +136,10 @@ export class Profile01Component implements OnInit, OnDestroy { }); this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; - this.userSeq = this.loginRes.userSeq; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + this._refreshProfile(); }); this.store @@ -114,82 +157,70 @@ export class Profile01Component implements OnInit, OnDestroy { select(PresenceSelector.selectEntitiesStatusBulkInfo) ) .subscribe((statusBulkInfo) => { - this.presence = !!statusBulkInfo - ? statusBulkInfo[this.userSeq] - : undefined; + this.presences = statusBulkInfo; + }); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(BuddySelector.buddies)) + .subscribe((buddies) => { + const users = buddies.filter((buddy) => { + if (!!buddy && !!this.userInfo) { + return buddy.seq === Number(this.userInfo.seq); + } + }); + this.isBuddy = users.length > 0; + if (this.isBuddy) { + this.isFavorite = users[0].isFavorit; + this.currentNickname = users[0].nickName; + const profileImageFile = users[0].profileImageFile; + const intro = users[0].intro; + + this.userInfo = { ...this.userInfo, profileImageFile, intro }; + } + this.changeDetectorRef.markForCheck(); + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(CompanySelector.companyList) + ) + .subscribe((companyList) => { + if (!companyList) { + return; + } + this.companyList = companyList; }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } - getPresence(type: PresenceType): string { - let status: string; - let rtnClass = ''; - switch (type) { - case PresenceType.PC: - status = !!this.presence ? this.presence.pcStatus : undefined; - break; - case PresenceType.MOBILE: - status = !!this.presence ? this.presence.mobileStatus : undefined; - break; + getPresenceInfo(): StatusBulkInfo | undefined { + if (!!this.presences) { + return this.presences[this._userSeq]; + } else { + return undefined; } - - switch (status) { - case StatusCode.OnLine: - rtnClass = 'online'; - break; - case StatusCode.Away: - rtnClass = 'absence'; - break; - case StatusCode.Busy: - rtnClass = 'other-business'; - break; - default: - rtnClass = 'offline'; - break; - } - - return rtnClass; } - getPresenceMsg(): string { - let presenceMsg = this.i18nService.t('presence.offline'); - - if (!!this.presence) { - switch (this.presence.pcStatus) { - case StatusCode.OnLine: - presenceMsg = this.i18nService.t('presence.online'); - break; - case StatusCode.Away: - presenceMsg = this.i18nService.t('presence.away'); - break; - case StatusCode.Busy: - if ( - !!this.presence.statusMessage && - this.presence.statusMessage !== '.' - ) { - presenceMsg = this.presence.statusMessage; - } else { - presenceMsg = this.i18nService.t('presence.statusMessage1'); - } - break; - } + _refreshProfile() { + if (!this.user || !this.userSeq) { + return; } - return presenceMsg; - } + this.currentNickname = ''; - refreshProfile() { this.queryProtocolService .dataUser({ divCd: 'OPENPROF', seq: Number(this.userSeq), - senderCompanyCode: this.loginRes.userInfo.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType + senderCompanyCode: this.user.info.companyCode, + senderEmployeeType: this.user.info.employeeType }) .pipe( take(1), @@ -197,47 +228,65 @@ export class Profile01Component implements OnInit, OnDestroy { tap(([res, buddies]) => { this.userInfo = res.userInfo; const users = buddies.filter( - (buddy) => buddy.seq + '' === this.userInfo.seq + (buddy) => buddy.seq === Number(this.userInfo.seq) ); this.isBuddy = users.length > 0; if (this.isBuddy) { this.isFavorite = users[0].isFavorit; + this.currentNickname = users[0].nickName.trim(); } - this.changeDetectorRef.detectChanges(); + if ( + !this.userInfo.companyName || + (!!this.userInfo.companyName && + this.userInfo.companyName.trim() === '') + ) { + const company = this.companyList.filter( + (companyInfo) => + companyInfo.companyCode === this.userInfo.companyCode + ); + if (!!company) { + this.companyName = company[0].companyName; + } + } else { + this.companyName = this.userInfo.companyName; + } + this.changeDetectorRef.markForCheck(); }) ) .subscribe(); } - onProfileImageView() {} + onProfileImageView(userInfo: UserInfoSS) {} onChangeFileInput() {} onChangeIntro(intro: string) { - console.log(intro); - this.store.dispatch( - LoginActions.infoUser({ - req: { - type: UserInfoUpdateType.Intro, - info: intro - } - }) - ); + this.updateIntro.emit(intro); } onChangeNickname(nickname: string) { - console.log(nickname); + this.updateNickname.emit({ userInfo: this.userInfo, nickname }); } onToggleFavorite(params: { userInfo: UserInfoSS; isFavorite: boolean }) { - this.store.dispatch( - BuddyActions.update({ - req: { seq: Number(params.userInfo.seq), isFavorit: params.isFavorite } - }) - ); + this.toggleFavorit.emit(params); + } + onToggleBuddy(params: { userInfo: UserInfoSS; isBuddy: boolean }) { + this.toggleBuddy.emit(params); + } + onOpenChat(userInfo: UserInfoSS) { + this.openChat.emit(userInfo); + } + onSendCall(calleeNumber: string) { + this.sendCall.emit(calleeNumber); + } + onSendSms(smsNum: string) { + this.sendSms.emit(smsNum); + } + onCreateConference(userSeq: number) { + this.createConference.emit(userSeq); + } + onSendMessage(userInfo: UserInfoSS) { + this.sendMessage.emit(userInfo); } - onToggleBuddy(params: { userInfo: UserInfoSS; isBuddy: boolean }) {} - onOpenChat(userInfo: UserInfoSS) {} - onSendCall(calleeNumber: string) {} - onSendSms(smsNum: string) {} - onCreateConference(userSeq: number) {} - onSendMessage(userInfo: UserInfoSS) {} - onUploadProfileImage(profileImageFileUploadItem: FileUploadItem) {} + onUploadProfileImage(profileImageFileUploadItem: FileUploadItem) { + this.uploadProfileImage.emit(profileImageFileUploadItem); + } } diff --git a/src/app/ucap/organization/components/profile-image-01.component.html b/src/app/ucap/organization/components/profile-image-01.component.html new file mode 100644 index 0000000..7e320c9 --- /dev/null +++ b/src/app/ucap/organization/components/profile-image-01.component.html @@ -0,0 +1,10 @@ +
    + + +
    diff --git a/src/app/ucap/organization/components/profile-image-01.component.scss b/src/app/ucap/organization/components/profile-image-01.component.scss new file mode 100644 index 0000000..198d940 --- /dev/null +++ b/src/app/ucap/organization/components/profile-image-01.component.scss @@ -0,0 +1,6 @@ +@import '~@ucap/lg-scss/mixins'; + +.profile-image-container { + width: 100%; + height: 100%; +} diff --git a/src/app/ucap/organization/components/profile-image-01.component.spec.ts b/src/app/ucap/organization/components/profile-image-01.component.spec.ts new file mode 100644 index 0000000..a8f5045 --- /dev/null +++ b/src/app/ucap/organization/components/profile-image-01.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ProfileImage01Component } from './profile-image-01.component'; + +describe('app::ucap::organization::ProfileImage01Component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [ProfileImage01Component] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(ProfileImage01Component); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(ProfileImage01Component); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(ProfileImage01Component); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/organization/components/profile-image-01.component.ts b/src/app/ucap/organization/components/profile-image-01.component.ts new file mode 100644 index 0000000..5f289e9 --- /dev/null +++ b/src/app/ucap/organization/components/profile-image-01.component.ts @@ -0,0 +1,72 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectorRef, + Input, + Output, + EventEmitter +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { UserInfoSS } from '@ucap/protocol-query'; +import { StatusBulkInfo } from '@ucap/protocol-status'; + +import { LogService } from '@ucap/ng-logger'; +import { PresenceSelector } from '@ucap/ng-store-organization'; + +@Component({ + selector: 'app-organization-profile-image-01', + templateUrl: './profile-image-01.component.html', + styleUrls: ['./profile-image-01.component.scss'] +}) +export class ProfileImage01Component implements OnInit, OnDestroy { + @Input() + userInfo: UserInfoSS; + + @Input() + versionInfo: VersionInfo2Response; + + @Output() + openProfile: EventEmitter = new EventEmitter(); + + presenceInfo: StatusBulkInfo; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select( + PresenceSelector.selectStatusBulkInfo, + Number(this.userInfo?.seq) + ) + ) + .subscribe((status) => { + this.presenceInfo = status; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onOpenProfile(userInfo: UserInfoSS) { + this.openProfile.emit(userInfo); + } +} diff --git a/src/app/ucap/organization/components/profile-list.component.html b/src/app/ucap/organization/components/profile-list.component.html index 726f0e0..171844a 100644 --- a/src/app/ucap/organization/components/profile-list.component.html +++ b/src/app/ucap/organization/components/profile-list.component.html @@ -1,21 +1,117 @@
    - - - - - - - +
    + +
    +
    + + + + + + + +
    + +
    +
    +
    +
    +
    + + + + + + + + + +
    +
    + + + + + + + + diff --git a/src/app/ucap/organization/components/profile-list.component.scss b/src/app/ucap/organization/components/profile-list.component.scss index be45828..bba0c46 100644 --- a/src/app/ucap/organization/components/profile-list.component.scss +++ b/src/app/ucap/organization/components/profile-list.component.scss @@ -1,4 +1,16 @@ +@import '~@ucap/lg-scss/mixins'; + .profile-list-container { width: 100%; height: 100%; + + .profile-list-progressbar { + width: 100%; + height: 4px; + } + + .profile-list { + width: 100%; + height: calc(100% - 4px); + } } diff --git a/src/app/ucap/organization/components/profile-list.component.ts b/src/app/ucap/organization/components/profile-list.component.ts index a96f379..eea75dd 100644 --- a/src/app/ucap/organization/components/profile-list.component.ts +++ b/src/app/ucap/organization/components/profile-list.component.ts @@ -9,18 +9,20 @@ import { ChangeDetectorRef, Input, Output, - EventEmitter + EventEmitter, + NgZone } from '@angular/core'; import { Store, select } from '@ngrx/store'; +import { SortOrder } from '@ucap/core'; import { VersionInfo2Response } from '@ucap/api-public'; -import { LoginResponse } from '@ucap/protocol-authentication'; import { UserInfoSS, DeptSearchType, DeptUserRequest } from '@ucap/protocol-query'; +import { User } from '@ucap/protocol-info'; import { LogService } from '@ucap/ng-logger'; import { @@ -31,21 +33,13 @@ import { QueryProtocolService } from '@ucap/ng-protocol-query'; import { DepartmentActions, DepartmentSelector, - PresenceActions + PresenceActions, + UserSelector } from '@ucap/ng-store-organization'; -import { - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY -} from '@angular/cdk/scrolling'; import { SearchData } from '../models/search-data'; -import { SortOrder } from '@ucap/core'; -export class ProfileListVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(70, 250, 500); // (itemSize, minBufferPx, maxBufferPx) - } -} +const DEPT_ORDER_PROPERTY = 'order'; interface CheckedInfo { checked: boolean; @@ -56,18 +50,12 @@ interface CheckedInfo { selector: 'app-organization-profile-list', templateUrl: './profile-list.component.html', styleUrls: ['./profile-list.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: ProfileListVirtualScrollStrategy - } - ], changeDetection: ChangeDetectionStrategy.OnPush }) export class ProfileListComponent implements OnInit, OnDestroy { @Input() set searchData(data: SearchData) { - if (!this.loginRes) { + if (!this.user) { this._searchData = data; return; } @@ -80,6 +68,13 @@ export class ProfileListComponent implements OnInit, OnDestroy { selectedUser: UserInfoSS[]; @Input() + nodeType = '01'; + + @Input() + cacheSize: number; + + @Input() + /** Cycle order of sorting by use ascending: undefined -> true -> false */ set sortOrder(value: SortOrder) { this._sortOrder = value; this.userInfos = this.sort(this.userInfos); @@ -90,7 +85,7 @@ export class ProfileListComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _sortOrder: SortOrder = { property: 'name', - ascending: true + ascending: undefined }; @Output() @@ -99,6 +94,15 @@ export class ProfileListComponent implements OnInit, OnDestroy { @Output() changedCheck: EventEmitter = new EventEmitter(); + @Output() + openProfile: EventEmitter = new EventEmitter(); + + @Output() + floatingProfileMenu: EventEmitter<{ + menuType: string; + userInfo: UserInfoSS; + }> = new EventEmitter(); + set userInfos(userInfos: UserInfoSS[]) { this._userInfos = userInfos; this.searched.emit(userInfos); @@ -109,12 +113,15 @@ export class ProfileListComponent implements OnInit, OnDestroy { // tslint:disable-next-line: variable-name _userInfos: UserInfoSS[] = []; - loginRes: LoginResponse; + user: User; versionInfo2Res: VersionInfo2Response; - processing = false; + showFabUserSeq: string; - private ngOnDestroySubject: Subject; + processing = false; + String = String; + + private ngOnDestroySubject: Subject = new Subject(); private myDeptDestroySubject: Subject; constructor( @@ -125,8 +132,6 @@ export class ProfileListComponent implements OnInit, OnDestroy { ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.store .pipe( takeUntil(this.ngOnDestroySubject), @@ -137,18 +142,20 @@ export class ProfileListComponent implements OnInit, OnDestroy { }); this.store - .pipe(takeUntil(this.ngOnDestroySubject), select(LoginSelector.loginRes)) - .subscribe((loginRes) => { - this.loginRes = loginRes; + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; if (!!this._searchData) { - this.searchMember(this._searchData); + const tempData = { ...this._searchData }; this._searchData = undefined; + this.searchMember(tempData); } }); } ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } @@ -168,6 +175,21 @@ export class ProfileListComponent implements OnInit, OnDestroy { this.changedCheck.emit(checked); } + uncheckAll() { + if (!this.userInfos || 0 === this.userInfos.length) { + return; + } + + const unchecked: CheckedInfo[] = []; + this.userInfos.forEach((u) => { + unchecked.push({ + checked: false, + userInfo: u + }); + }); + this.changedCheck.emit(unchecked); + } + /** 개별 체크여부 */ getCheckedUser(userInfo: UserInfoSS) { if (!!this.selectedUser && this.selectedUser.length > 0) { @@ -184,7 +206,8 @@ export class ProfileListComponent implements OnInit, OnDestroy { } onOpenProfile(userInfo: UserInfoSS): void { - alert('Open Profile'); + // alert('Open Profile'); + this.openProfile.emit(userInfo); } private getMyDeptMember() { @@ -192,17 +215,20 @@ export class ProfileListComponent implements OnInit, OnDestroy { const req: DeptUserRequest = { divCd: 'ORG', - companyCode: this.loginRes.companyCode, - seq: this.loginRes.departmentCode, + companyCode: this.user.companyCode, + seq: this.user.departmentCode, search: '', searchRange: DeptSearchType.All, - senderCompanyCode: this.loginRes.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType + senderCompanyCode: this.user.companyCode, + senderEmployeeType: this.user.info.employeeType }; + this.processing = true; + this.store .pipe( takeUntil(this.ngOnDestroySubject), + takeUntil(this.myDeptDestroySubject), select(DepartmentSelector.myDepartmentUserInfoList) ) .subscribe( @@ -211,14 +237,17 @@ export class ProfileListComponent implements OnInit, OnDestroy { this.store.dispatch(DepartmentActions.myDeptUser({ req })); return; } - this.userInfos = this.sort(myDepartmentUserInfoList); + this._refreshUserInfos(myDepartmentUserInfoList); this.myDeptDestroySubject.next(); this.myDeptDestroySubject.complete(); this.myDeptDestroySubject = undefined; }, (error) => {}, - () => {} + () => { + console.log('this.ngOnDestroySubject'); + this.processing = false; + } ); } @@ -229,22 +258,43 @@ export class ProfileListComponent implements OnInit, OnDestroy { const property = this.sortOrder.property; const ascending = this.sortOrder.ascending; + let deptA: any; + let deptB: any; + let c: any; + let d: any; return userInfos.slice().sort((a, b) => { - let c: any; - let d: any; try { + deptA = a[DEPT_ORDER_PROPERTY]; + deptB = b[DEPT_ORDER_PROPERTY]; + + if (undefined === ascending) { + return deptA < deptB + ? -1 + : deptA > deptB + ? 1 + : a[property] < b[property] + ? -1 + : a[property] > b[property] + ? 1 + : 0; + } + c = ascending ? a[property] : b[property]; d = ascending ? b[property] : a[property]; + + return c < d ? -1 : c > d ? 1 : 0; } catch (error) { console.log(error); } - return c < d ? -1 : c > d ? 1 : 0; }); } private searchMember(searchData: SearchData) { - if (!searchData || (!searchData.companyCode && !searchData.deptSeq)) { + if ( + !searchData || + (!searchData.bySearch && undefined === searchData.deptSeq) + ) { this.getMyDeptMember(); return; } @@ -262,18 +312,18 @@ export class ProfileListComponent implements OnInit, OnDestroy { companyCode: searchData.companyCode, searchRange: DeptSearchType.All, search: searchData.searchWord, - senderCompanyCode: this.loginRes.userInfo.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType + senderCompanyCode: this.user.info.companyCode, + senderEmployeeType: this.user.info.employeeType }; } else { req = { divCd: 'ORG', - companyCode: this.loginRes.companyCode, + companyCode: this.user.companyCode, seq: Number(searchData.deptSeq), search: '', searchRange: DeptSearchType.All, - senderCompanyCode: this.loginRes.companyCode, - senderEmployeeType: this.loginRes.userInfo.employeeType + senderCompanyCode: this.user.companyCode, + senderEmployeeType: this.user.info.employeeType }; } @@ -283,21 +333,7 @@ export class ProfileListComponent implements OnInit, OnDestroy { .pipe(take(1)) .subscribe( (data) => { - this.userInfos = this.sort(data.userInfos); - this.changeDetectorRef.detectChanges(); - - // 검색 결과에 따른 프레즌스 조회. - const userSeqList: string[] = []; - this.userInfos.map((user) => userSeqList.push(user.seq)); - - if (userSeqList.length > 0) { - this.store.dispatch( - PresenceActions.bulkInfo({ - divCd: 'orgSrch', - userSeqs: userSeqList - }) - ); - } + this._refreshUserInfos(data.userInfos); }, (error) => {}, () => { @@ -305,4 +341,42 @@ export class ProfileListComponent implements OnInit, OnDestroy { } ); } + + private _refreshUserInfos(userInfos: UserInfoSS[]) { + this.userInfos = this.sort(userInfos); + + // 검색 결과에 따른 프레즌스 조회. + const userSeqList: string[] = userInfos.map((user) => user.seq); + + if (userSeqList.length > 0) { + this.store.dispatch( + PresenceActions.bulkInfo({ + divCd: 'orgSrch', + userSeqs: userSeqList + }) + ); + } + } + + onMouseover(event: MouseEvent, userInfo: UserInfoSS): void { + this.showFabUserSeq = userInfo.seq; + + event.preventDefault(); + event.stopPropagation(); + } + onMouseleave(event: MouseEvent): void { + this.showFabUserSeq = undefined; + + event.preventDefault(); + event.stopPropagation(); + } + + onClickProfileContextMenu( + event: MouseEvent, + menuType: string, + userInfo: UserInfoSS + ) { + this.floatingProfileMenu.emit({ menuType, userInfo }); + event.stopPropagation(); + } } diff --git a/src/app/ucap/organization/components/profile-menu-01.component.html b/src/app/ucap/organization/components/profile-menu-01.component.html new file mode 100644 index 0000000..0f9a673 --- /dev/null +++ b/src/app/ucap/organization/components/profile-menu-01.component.html @@ -0,0 +1,89 @@ +
    + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    diff --git a/src/app/ucap/organization/components/profile-menu-01.component.scss b/src/app/ucap/organization/components/profile-menu-01.component.scss new file mode 100644 index 0000000..3217abc --- /dev/null +++ b/src/app/ucap/organization/components/profile-menu-01.component.scss @@ -0,0 +1,6 @@ +@import '~@ucap/lg-scss/mixins'; + +.profile-menu-container { + width: 100%; + height: 100%; +} diff --git a/src/app/ucap/organization/components/profile-menu-01.component.spec.ts b/src/app/ucap/organization/components/profile-menu-01.component.spec.ts new file mode 100644 index 0000000..7a48b41 --- /dev/null +++ b/src/app/ucap/organization/components/profile-menu-01.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ProfileMenu01Component } from './profile-menu-01.component'; + +describe('app::ucap::organization::ProfileMenu01Component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [ProfileMenu01Component] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(ProfileMenu01Component); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(ProfileMenu01Component); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(ProfileMenu01Component); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/organization/components/profile-menu-01.component.ts b/src/app/ucap/organization/components/profile-menu-01.component.ts new file mode 100644 index 0000000..19d2850 --- /dev/null +++ b/src/app/ucap/organization/components/profile-menu-01.component.ts @@ -0,0 +1,199 @@ +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Output, + EventEmitter +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { StatusType, StatusCode } from '@ucap/core'; +import { VersionInfo2Response } from '@ucap/api-public'; +import { User, UserInfoUpdateType } from '@ucap/protocol-info'; + +import { LogService } from '@ucap/ng-logger'; + +import { + PresenceActions, + UserActions, + UserSelector +} from '@ucap/ng-store-organization'; +import { ConfigurationSelector } from '@ucap/ng-store-authentication'; + +import { AppAuthenticationService } from '@app/services/app-authentication.service'; +import { UserStore } from '@app/models/user-store'; +import { AppActions } from '@app/store/actions'; + +@Component({ + selector: 'app-organization-profile-menu-01', + templateUrl: './profile-menu-01.component.html', + styleUrls: ['./profile-menu-01.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileMenu01Component implements OnInit, OnDestroy { + @Output() + selectedProfileManage: EventEmitter = new EventEmitter(); + + @Output() + selectedNotice: EventEmitter = new EventEmitter(); + + @Output() + selectedSettings: EventEmitter = new EventEmitter(); + + @Output() + selectedLogout: EventEmitter = new EventEmitter(); + + @Output() + selectedExit: EventEmitter = new EventEmitter(); + + @Output() + done: EventEmitter = new EventEmitter(); + + user: User; + + userStore: UserStore; + + versionInfo2Res: VersionInfo2Response; + + idleTimePeriods: number[] = [10, 20, 30]; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private appAuthenticationService: AppAuthenticationService, + private logService: LogService + ) {} + + ngOnInit(): void { + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + this.changeDetectorRef.markForCheck(); + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this.appAuthenticationService + .getUserStore$() + .pipe(takeUntil(this.ngOnDestroySubject)) + .subscribe((userStore) => { + this.userStore = userStore; + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + onChangedIntro(intro: string) { + this.store.dispatch( + UserActions.modifyInfo({ + req: { + type: UserInfoUpdateType.Intro, + info: intro + } + }) + ); + } + + onClickProfileManage(event: Event) { + this.selectedProfileManage.emit(); + } + + onClickNotice(event: Event) { + this.selectedNotice.emit(); + } + + onClickSettings(event: Event) { + this.selectedSettings.emit(); + } + + onChangedStatusMessage(data: { index: number; message: string }) { + console.log('onChangedStatusMessage', data); + this.store.dispatch( + PresenceActions.messageUpdate({ + req: { + index: data.index, + statusMessage: data.message + } + }) + ); + } + + onSelectedStatus(status: 'online' | 'away' | 'busy1' | 'busy2' | 'busy3') { + let statusCode: StatusCode; + let statusMessage: string; + switch (status) { + case 'online': + statusCode = StatusCode.OnLine; + break; + case 'away': + statusCode = StatusCode.Away; + break; + case 'busy1': + statusCode = StatusCode.Busy; + statusMessage = this.user.statusMessage1; + break; + case 'busy2': + statusCode = StatusCode.Busy; + statusMessage = this.user.statusMessage2; + break; + case 'busy3': + statusCode = StatusCode.Busy; + statusMessage = this.user.statusMessage3; + break; + + default: + break; + } + + this.store.dispatch( + PresenceActions.status({ + req: { + statusDivisionType: StatusType.Messenger, + statusType: statusCode, + statusMessage + } + }) + ); + + this.done.emit(); + } + + onChangedIdleCheckTime(idleCheckTime: number) { + this.appAuthenticationService.setUserStore({ + ...this.userStore, + idleCheckTime + }); + this.store.dispatch( + AppActions.idleTimeChanged({ idleTime: idleCheckTime }) + ); + } + + onLogout() { + this.selectedLogout.emit(); + } + + onExit() { + this.selectedExit.emit(); + } +} diff --git a/src/app/ucap/organization/components/profile-navigation-list.component.html b/src/app/ucap/organization/components/profile-navigation-list.component.html new file mode 100644 index 0000000..cca0e6d --- /dev/null +++ b/src/app/ucap/organization/components/profile-navigation-list.component.html @@ -0,0 +1,77 @@ +
    +
    + +
    + + + + +
    +
    +
    +
    + +
    +
    + + +
    + + +
    + {{ item.node | ucapOrganizationTranslate: 'name' }} +
    +
    + + + +
    +
    +

    {{ _userStatusMessage(item.node) }}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/src/app/ucap/organization/components/profile-navigation-list.component.scss b/src/app/ucap/organization/components/profile-navigation-list.component.scss new file mode 100644 index 0000000..4b6c8b3 --- /dev/null +++ b/src/app/ucap/organization/components/profile-navigation-list.component.scss @@ -0,0 +1,105 @@ +@import '~@ucap/lg-scss/mixins'; + +.profile-navigation-list-container { + width: 100%; + height: 100%; + overflow: hidden; + + .organization-tree-simple { + height: 50px; + display: flex; + flex-direction: row; + align-items: center; + background-color: #f1f2f6; + padding: 0 16px; + overflow: hidden; + .organization-dept { + display: flex; + align-content: center; + &:first-child { + .btn-navigate-next { + display: none; + } + } + &:last-child { + .dept-name { + background-color: #fd578a; + color: #ffffff; + border: none; + } + } + .dept-name { + border-radius: 100px; + height: 30px; + box-shadow: none; + border: 1px solid #999999; + color: #666666; + } + .btn-navigate-next { + width: 30px; + height: 30px; + color: #cccccc; + } + } + } + + .profile-navigation-list-progressbar { + width: 100%; + height: 4px; + } + + .profile-navigation-list { + width: 100%; + height: calc(100% - 55px); + + .list-dept-name { + padding: 0 5px; + position: relative; + display: flex; + align-items: center; + height: 60px; + color: #666; + font-weight: 600; + border-top: 1px solid #ccc; + cursor: pointer; + &:before { + content: 'account_tree'; + font-family: 'Material Icons Outlined'; + font-size: 20px; + color: #666; + flex: 0 0 50px; + text-align: center; + font-weight: 400; + } + span { + flex: 1 0 auto; + } + &:after { + content: 'keyboard_arrow_right'; + font-family: 'Material Icons Outlined'; + font-size: 20px; + color: #666; + flex: 0 0 30px; + text-align: center; + font-weight: 400; + } + } + + .list-member-info { + padding: 0 5px; + display: flex; + border-top: 1px solid #ccc; + width: calc(100% - 7px); + height: 60px; + } + + .ng-star-inserted { + &:first-of-type { + .list-dept-name, + .list-member-info { + border-top: none; + } + } + } + } +} diff --git a/src/app/ucap/organization/components/profile-navigation-list.component.spec.ts b/src/app/ucap/organization/components/profile-navigation-list.component.spec.ts new file mode 100644 index 0000000..c9660ae --- /dev/null +++ b/src/app/ucap/organization/components/profile-navigation-list.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { Profile01Component } from './profile-01.component'; + +describe('app::ucap::organization::Profile01Component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + declarations: [Profile01Component] + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(Profile01Component); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'ucap-lg-web'`, () => { + const fixture = TestBed.createComponent(Profile01Component); + const app = fixture.componentInstance; + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(Profile01Component); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain( + 'ucap-lg-web app is running!' + ); + }); +}); diff --git a/src/app/ucap/organization/components/profile-navigation-list.component.ts b/src/app/ucap/organization/components/profile-navigation-list.component.ts new file mode 100644 index 0000000..24c4f95 --- /dev/null +++ b/src/app/ucap/organization/components/profile-navigation-list.component.ts @@ -0,0 +1,408 @@ +import { Subject } from 'rxjs'; +import { takeUntil, take } from 'rxjs/operators'; + +import { + Component, + OnInit, + OnDestroy, + ChangeDetectionStrategy, + ChangeDetectorRef, + Input, + Output, + EventEmitter, + NgZone, + ViewChild +} from '@angular/core'; + +import { Store, select } from '@ngrx/store'; + +import { VersionInfo2Response } from '@ucap/api-public'; +import { + DeptSearchType, + DeptUserRequest, + DeptInfo, + UserInfoSS +} from '@ucap/protocol-query'; + +import { LogService } from '@ucap/ng-logger'; +import { + LoginSelector, + ConfigurationSelector +} from '@ucap/ng-store-authentication'; +import { QueryProtocolService } from '@ucap/ng-protocol-query'; +import { + DepartmentSelector, + PresenceActions, + UserSelector +} from '@ucap/ng-store-organization'; + +import { UserInfoTypes } from '@app/types'; + +import { BreadcrumbComponent } from '@ucap/ng-ui'; +import { User } from '@ucap/protocol-info'; + +const DEPT_ORDER_PROPERTY = 'order'; + +enum NodeType { + dept = 'dept', + member = 'member' +} + +interface CheckedInfo { + checked: boolean; + userInfo: UserInfoTypes; +} + +interface NavigationNode { + nodeType: NodeType; + node: DeptInfo | UserInfoTypes; +} + +@Component({ + selector: 'app-organization-profile-navigation-list', + templateUrl: './profile-navigation-list.component.html', + styleUrls: ['./profile-navigation-list.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ProfileNavigationListComponent implements OnInit, OnDestroy { + @Input() + selectedUser: UserInfoTypes[]; + + @Input() + fixedUserList: UserInfoTypes[]; + + @Input() + displayRootDepartment = false; + + @Output() + searched: EventEmitter = new EventEmitter(); + + @Output() + changedCheck: EventEmitter = new EventEmitter(); + + @ViewChild('breadcrumbForOrganization', { static: false }) + breadcrumbForOrganization: BreadcrumbComponent; + + set departmentCode(departmentCode: number) { + this._departmentCode = departmentCode; + this._changedDepartmentCode(); + } + get departmentCode(): number { + return this._departmentCode; + } + // tslint:disable-next-line: variable-name + _departmentCode: number; + + set userInfos(userInfos: UserInfoTypes[]) { + this._userInfos = userInfos; + this._changedItems(); + this.searched.emit(userInfos); + } + get userInfos() { + return this._userInfos; + } + // tslint:disable-next-line: variable-name + _userInfos: UserInfoTypes[] = []; + + set childLevelDeptInfoList(list: DeptInfo[]) { + this._childLevelDeptInfoList = list; + this._changedItems(); + } + get childLevelDeptInfoList() { + return this._childLevelDeptInfoList; + } + // tslint:disable-next-line: variable-name + _childLevelDeptInfoList: DeptInfo[] = []; + + user: User; + versionInfo2Res: VersionInfo2Response; + + breadcrumbs: DeptInfo[]; + departmentInfoList: DeptInfo[] = []; + nodes: NavigationNode[] = []; + + processing = false; + + itemSize = 60; + statusMsgClass: string; + NodeType = NodeType; + String = String; + + private ngOnDestroySubject: Subject = new Subject(); + + constructor( + private queryProtocolService: QueryProtocolService, + private store: Store, + private changeDetectorRef: ChangeDetectorRef, + private logService: LogService + ) {} + + ngOnInit(): void { + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(ConfigurationSelector.versionInfo2Response) + ) + .subscribe((versionInfo2Res) => { + this.versionInfo2Res = versionInfo2Res; + }); + + this.store + .pipe(takeUntil(this.ngOnDestroySubject), select(UserSelector.user)) + .subscribe((user) => { + this.user = user; + this.departmentCode = user.departmentCode; + }); + + this.store + .pipe( + takeUntil(this.ngOnDestroySubject), + select(DepartmentSelector.departmentInfoList) + ) + .subscribe((departmentInfoList) => { + this.departmentInfoList = departmentInfoList; + this._changedDepartmentCode(); + }); + } + + ngOnDestroy(): void { + if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); + this.ngOnDestroySubject.complete(); + } + } + + checkAll() { + if (!this.userInfos || 0 === this.userInfos.length) { + return; + } + + const checked: CheckedInfo[] = []; + this.userInfos.forEach((u) => { + checked.push({ + checked: true, + userInfo: u + }); + }); + this.changedCheck.emit(checked); + } + + uncheckAll() { + if (!this.userInfos || 0 === this.userInfos.length) { + return; + } + + const unchecked: CheckedInfo[] = []; + this.userInfos.forEach((u) => { + unchecked.push({ + checked: false, + userInfo: u + }); + }); + this.changedCheck.emit(unchecked); + } + + /** 개별 체크가능 여부 */ + getCheckableUser(userInfo: UserInfoTypes) { + let rtnValue = true; + + if (!!this.fixedUserList && this.fixedUserList.length > 0) { + rtnValue = !this.fixedUserList.some( + (fix) => fix.seq + '' === userInfo.seq + '' + ); + } + + if (!!rtnValue && !!this.user.info.seq) { + rtnValue = String(this.user.info.seq) !== String(userInfo.seq); + } + + return rtnValue; + } + /** 개별 체크여부 */ + getCheckedUser(userInfo: UserInfoTypes) { + if (!!this.selectedUser && this.selectedUser.length > 0) { + return ( + this.selectedUser.filter( + (item) => String(item.seq) === String(userInfo.seq) + ).length > 0 + ); + } + return false; + } + + /** 개별선택(토글) 이벤트 */ + onChangeCheckUser(param: { checked: boolean; userInfo: UserInfoTypes }) { + this.changedCheck.emit([param]); + } + + onOpenProfile(userInfo: UserInfoTypes): void { + alert('Open Profile'); + } + + onClickDepartment(deptInfo: DeptInfo) { + this.departmentCode = deptInfo.seq; + } + + private sort(userInfos: UserInfoTypes[]): UserInfoTypes[] { + if (!userInfos || 0 === userInfos.length) { + return userInfos; + } + + const property = 'name'; + const ascending = true; + let deptA: any; + let deptB: any; + + return userInfos.slice().sort((a, b) => { + try { + deptA = a[DEPT_ORDER_PROPERTY]; + deptB = b[DEPT_ORDER_PROPERTY]; + + return deptA < deptB + ? -1 + : deptA > deptB + ? 1 + : a[property] < b[property] + ? -1 + : a[property] > b[property] + ? 1 + : 0; + } catch (error) { + console.log(error); + } + }); + } + + private _searchMember(departmentCode: number) { + const req: DeptUserRequest = { + divCd: 'ORG', + companyCode: this.user.companyCode, + seq: departmentCode, + search: '', + searchRange: DeptSearchType.All, + senderCompanyCode: this.user.companyCode, + senderEmployeeType: this.user.info.employeeType + }; + + this.processing = true; + this.queryProtocolService + .deptUser(req) + .pipe(take(1)) + .subscribe( + (data) => { + this._refreshUserInfos(data.userInfos); + }, + (error) => { + console.log('error', error); + }, + () => { + this.processing = false; + this.changeDetectorRef.markForCheck(); + } + ); + } + + private _refreshUserInfos(userInfos: UserInfoTypes[]) { + this.userInfos = this.sort(userInfos); + + // 검색 결과에 따른 프레즌스 조회. + const userSeqList: string[] = userInfos.map((user) => String(user.seq)); + + if (userSeqList.length > 0) { + this.store.dispatch( + PresenceActions.bulkInfo({ + divCd: 'orgSrch', + userSeqs: userSeqList + }) + ); + } + } + + private _changedItems() { + const nodeList: NavigationNode[] = []; + + if ( + !!this.childLevelDeptInfoList && + 0 < this.childLevelDeptInfoList.length + ) { + this.childLevelDeptInfoList.forEach((d) => { + nodeList.push({ + nodeType: NodeType.dept, + node: d + }); + }); + } + + if (!!this.userInfos && 0 < this.userInfos.length) { + this.userInfos.forEach((u) => { + nodeList.push({ + nodeType: NodeType.member, + node: u + }); + }); + } + + this.nodes = nodeList; + } + + private _changedDepartmentCode() { + if (!this.departmentCode || !this.departmentInfoList) { + return; + } + + const hierarchy: DeptInfo[] = []; + this._hierarchyDepartmentInfo(this.departmentCode, hierarchy); + + if (0 === hierarchy.length) { + return; + } + + const currentDepthInfo = hierarchy[0]; + this.breadcrumbs = hierarchy.reverse(); + this.childLevelDeptInfoList = this._getChildLevelDepthInfos( + currentDepthInfo + ); + + this._searchMember(this.departmentCode); + this.changeDetectorRef.markForCheck(); + } + + private _hierarchyDepartmentInfo( + departmentCode: number, + hierarchy: DeptInfo[] + ) { + const depthInfo = this.departmentInfoList.find( + (deptInfo) => deptInfo.seq === departmentCode + ); + if (!depthInfo) { + return; + } + + if (0 === depthInfo.parentSeq) { + if (this.displayRootDepartment) { + hierarchy.push(depthInfo); + } + return; + } + + hierarchy.push(depthInfo); + + this._hierarchyDepartmentInfo(depthInfo.parentSeq, hierarchy); + } + + private _getChildLevelDepthInfos(deptInfo: DeptInfo): DeptInfo[] { + return this.departmentInfoList + .filter((d) => deptInfo.seq === d.parentSeq) + .sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0)); + } + + _userStatusMessage(userInfo: UserInfoSS): string { + if (!!userInfo && !!userInfo.intro && userInfo.intro.trim() !== '') { + this.statusMsgClass = 'intro'; + return userInfo.intro; + } + + this.statusMsgClass = null; + return ''; + } +} diff --git a/src/app/ucap/organization/components/search-for-tenant.component.html b/src/app/ucap/organization/components/search-for-tenant.component.html index 85313ee..2c24ed1 100644 --- a/src/app/ucap/organization/components/search-for-tenant.component.html +++ b/src/app/ucap/organization/components/search-for-tenant.component.html @@ -1,9 +1,10 @@
    diff --git a/src/app/ucap/organization/components/search-for-tenant.component.scss b/src/app/ucap/organization/components/search-for-tenant.component.scss index 6d08ee7..b26b62f 100644 --- a/src/app/ucap/organization/components/search-for-tenant.component.scss +++ b/src/app/ucap/organization/components/search-for-tenant.component.scss @@ -1,10 +1,16 @@ +@import '~@ucap/lg-scss/mixins'; + .search-container { width: 100%; height: 100%; - padding: 4px 30px; + padding: 0 16px 10px; background-color: white; - height: 48px; - flex-basis: 48px; + height: 50px; + flex-basis: 50px; align-self: center; } + +.placeholder-gray { + color: #999999; +} diff --git a/src/app/ucap/organization/components/search-for-tenant.component.ts b/src/app/ucap/organization/components/search-for-tenant.component.ts index 8f12f87..b5d1c03 100644 --- a/src/app/ucap/organization/components/search-for-tenant.component.ts +++ b/src/app/ucap/organization/components/search-for-tenant.component.ts @@ -9,7 +9,8 @@ import { ChangeDetectorRef, Output, EventEmitter, - Input + Input, + ViewChild } from '@angular/core'; import { Store, select } from '@ngrx/store'; @@ -22,6 +23,7 @@ import { CompanySelector } from '@ucap/ng-store-organization'; import { AppAuthenticationService } from '@app/services/app-authentication.service'; import { SearchData } from '../models/search-data'; import { UserStore } from '@app/models/user-store'; +import { SearchForTenantComponent as UcapSearchForTenantComponent } from '@ucap/ng-ui-organization'; @Component({ selector: 'app-organization-search-for-tenant', @@ -32,15 +34,21 @@ import { UserStore } from '@app/models/user-store'; export class SearchForTenantComponent implements OnInit, OnDestroy { @Output() searchDataChange: EventEmitter = new EventEmitter(); @Input() set searchData(value: SearchData) { - this._searchData = value; - if (!this._searchData) { - this._searchData = { + let data: SearchData = { + ...value + }; + + if (!data.companyCode) { + data = { + ...data, companyCode: this.userStore.companyCode }; - } else { - if (!this._searchData.companyCode) { - this._searchData.companyCode = this.userStore.companyCode; - } + } + this._searchData = { + ...data + }; + if (!!this.searchForTenant && !!value && !!value.searchWord) { + this.searchForTenant.changeSearchword(value.searchWord); } } get searchData() { @@ -52,9 +60,12 @@ export class SearchForTenantComponent implements OnInit, OnDestroy { @Output() canceled: EventEmitter = new EventEmitter(); + @ViewChild('ucapOrgSearchForTenant', { static: true }) + searchForTenant: UcapSearchForTenantComponent; + companyList: Company[]; - private ngOnDestroySubject = new Subject(); + private ngOnDestroySubject: Subject = new Subject(); private userStore: UserStore; constructor( @@ -67,8 +78,6 @@ export class SearchForTenantComponent implements OnInit, OnDestroy { } ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - this.store .pipe( takeUntil(this.ngOnDestroySubject), @@ -81,11 +90,15 @@ export class SearchForTenantComponent implements OnInit, OnDestroy { ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } onChanged(data: { companyCode: string; searchWord: string }): void { + if (!!data && data.searchWord.localeCompare('') === 0) { + return; + } this.searchDataChange.emit({ companyCode: data.companyCode, searchWord: data.searchWord @@ -93,14 +106,9 @@ export class SearchForTenantComponent implements OnInit, OnDestroy { } onCanceled(): void { - this.searchDataChange.emit({ - companyCode: '', - searchWord: '' - }); + this.searchForTenant.changeSearchword(''); + this.searchForTenant.inputSearchWord.nativeElement.value = ''; + this.canceled.emit(); } - - // onCanceled(): void { - // this.canceled.emit(); - // } } diff --git a/src/app/ucap/organization/components/tree.component.html b/src/app/ucap/organization/components/tree.component.html index 683b4b3..1e429b4 100644 --- a/src/app/ucap/organization/components/tree.component.html +++ b/src/app/ucap/organization/components/tree.component.html @@ -2,7 +2,8 @@ diff --git a/src/app/ucap/organization/components/tree.component.scss b/src/app/ucap/organization/components/tree.component.scss index 582f4ce..84ea348 100644 --- a/src/app/ucap/organization/components/tree.component.scss +++ b/src/app/ucap/organization/components/tree.component.scss @@ -1,3 +1,5 @@ +@import '~@ucap/lg-scss/mixins'; + .tree-container { width: 100%; height: 100%; diff --git a/src/app/ucap/organization/components/tree.component.ts b/src/app/ucap/organization/components/tree.component.ts index 7752b58..1d37b34 100644 --- a/src/app/ucap/organization/components/tree.component.ts +++ b/src/app/ucap/organization/components/tree.component.ts @@ -15,43 +15,26 @@ import { import { Store, select } from '@ngrx/store'; -import { - FixedSizeVirtualScrollStrategy, - VIRTUAL_SCROLL_STRATEGY -} from '@angular/cdk/scrolling'; - -import { LoginResponse } from '@ucap/protocol-authentication'; import { DeptInfo } from '@ucap/protocol-query'; import { LogService } from '@ucap/ng-logger'; -import { LoginSelector } from '@ucap/ng-store-authentication'; + import { DepartmentSelector } from '@ucap/ng-store-organization'; import { TreeComponent as UCAPTreeComponent } from '@ucap/ng-ui-organization'; import { environment } from '@environments'; -export class TreeVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy { - constructor() { - super(46, 250, 500); // (itemSize, minBufferPx, maxBufferPx) - } -} - @Component({ selector: 'app-organization-tree', templateUrl: './tree.component.html', styleUrls: ['./tree.component.scss'], - providers: [ - { - provide: VIRTUAL_SCROLL_STRATEGY, - useClass: TreeVirtualScrollStrategy - } - ], changeDetection: ChangeDetectionStrategy.OnPush }) export class TreeComponent implements OnInit, OnDestroy { @Input() set initialExpanded(seq: number) { + this.currentDeptSeq = seq; if (!!this.treeData) { this.expand(seq); return; @@ -73,9 +56,9 @@ export class TreeComponent implements OnInit, OnDestroy { expanded?: number[]; }; - loginRes: LoginResponse; + currentDeptSeq: number; - private ngOnDestroySubject: Subject; + private ngOnDestroySubject: Subject = new Subject(); constructor( private store: Store, @@ -84,15 +67,11 @@ export class TreeComponent implements OnInit, OnDestroy { ) {} ngOnInit(): void { - this.ngOnDestroySubject = new Subject(); - combineLatest([ - this.store.pipe(select(LoginSelector.loginRes)), this.store.pipe(select(DepartmentSelector.departmentInfoList)) ]) .pipe(takeUntil(this.ngOnDestroySubject)) - .subscribe(([loginRes, deptInfoList]) => { - this.loginRes = loginRes; + .subscribe(([deptInfoList]) => { this.treeData = { deptInfoList, displayRoot: environment.productConfig.organization.displayRoot, @@ -101,7 +80,7 @@ export class TreeComponent implements OnInit, OnDestroy { : undefined }; this.changeDetectorRef.markForCheck(); - if (!!loginRes && !!deptInfoList) { + if (!!deptInfoList) { this._initialExpanded = undefined; } }); @@ -109,11 +88,13 @@ export class TreeComponent implements OnInit, OnDestroy { ngOnDestroy(): void { if (!!this.ngOnDestroySubject) { + this.ngOnDestroySubject.next(); this.ngOnDestroySubject.complete(); } } onClickNode(node: DeptInfo) { + this.currentDeptSeq = node.seq; this.clicked.emit(node); } diff --git a/src/app/ucap/organization/components/tree.strategy.ts b/src/app/ucap/organization/components/tree.strategy.ts deleted file mode 100644 index 564488d..0000000 --- a/src/app/ucap/organization/components/tree.strategy.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Observable, Subject } from 'rxjs'; - -import { - VirtualScrollStrategy, - CdkVirtualScrollViewport -} from '@angular/cdk/scrolling'; -import { distinctUntilChanged } from 'rxjs/operators'; - -export class OrganizationTreeVirtualScrollStrategy - implements VirtualScrollStrategy { - scrolledIndexChange: Observable; - - private indexSubject = new Subject(); - private viewport: CdkVirtualScrollViewport | null = null; - - constructor() { - this.scrolledIndexChange = this.indexSubject.pipe(distinctUntilChanged()); - } - - attach(viewport: CdkVirtualScrollViewport): void { - this.viewport = viewport; - } - detach(): void { - this.indexSubject.complete(); - this.viewport = null; - } - onContentScrolled(): void {} - onDataLengthChanged(): void {} - onContentRendered(): void {} - onRenderedOffsetChanged(): void {} - scrollToIndex(index: number, behavior: ScrollBehavior): void {} -} diff --git a/src/app/ucap/organization/organization.module.ts b/src/app/ucap/organization/organization.module.ts index c29a7fd..79ed236 100644 --- a/src/app/ucap/organization/organization.module.ts +++ b/src/app/ucap/organization/organization.module.ts @@ -11,12 +11,13 @@ import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatRippleModule } from '@angular/material/core'; import { MatSelectModule } from '@angular/material/select'; import { MatTreeModule } from '@angular/material/tree'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { I18nModule, UCAP_I18N_NAMESPACE } from '@ucap/ng-i18n'; +import { I18nModule } from '@ucap/ng-i18n'; import { UiModule } from '@ucap/ng-ui'; import { OrganizationUiModule } from '@ucap/ng-ui-organization'; @@ -34,6 +35,7 @@ import { COMPONENTS } from './components'; MatFormFieldModule, MatIconModule, MatInputModule, + MatProgressBarModule, MatRippleModule, MatSelectModule, MatTreeModule, @@ -46,12 +48,6 @@ import { COMPONENTS } from './components'; ], exports: [...COMPONENTS], declarations: [...COMPONENTS], - entryComponents: [], - providers: [ - { - provide: UCAP_I18N_NAMESPACE, - useValue: ['organization', 'common'] - } - ] + entryComponents: [] }) export class AppOrganizationModule {} diff --git a/src/assets/fonts/materialicons/materialicons-v52.woff b/src/assets/fonts/materialicons/materialicons-v52.woff new file mode 100644 index 0000000000000000000000000000000000000000..0d6f66c8c2a888b866bb9e364106feacdcc0f1a8 GIT binary patch literal 102064 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 Q0C?JCU}nGz004ae1R?+fn*aa+ literal 0 HcmV?d00001 diff --git a/src/assets/fonts/materialicons/materialiconsoutlined-v21.woff2 b/src/assets/fonts/materialicons/materialiconsoutlined-v21.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..24c382ed397b91b4260e2597f4f9e35e2d3655c2 GIT binary patch literal 91208 zcmV(_K-9l?Pew9NR8&s@0c1!33IG5A0|@j00b~0B0RR9100000000000000000000 z0000DiMMhbf}w5(U;v$X0X7081C)9M1_go&2OwKJ2$Kt065FN_ULok@prUA}MCFsc zmN9_7MZt7)@j$nss$>B`?L`;ZHa#Y0y_rY_;O%7g|NsC0|Np-&nZ$7B^6ll5e;yD} ztfj5$)Xmzt0nsF9cQEEKaYD{Hdx41Bm1wnA?*|lclVF-ANh;Ve3R7sUgJ}RAT$5W=9^Cc^pOIXNrNJNB0$el}uEaRGJaD35T z*SCIczoaXrl;RMbN~)wvroMkr>*cMr)*{G=Krf-0xn`Ev6S}M1!Dm;yGekth24kqC zN~+|}#T zu`ITeMOJMAJ`l`ka=nEM|3-ud6ho80Pm0~EOj&!yfC_gd-HU0NkVK5wr*aJSKyr?*}SY0KQi8R@DD;Em_q1cXsz~m0ZVDA zOrLb(cmFy1NoD%~gddeuNtKk>@nfEAfjFHaFx01j5#!c<0ZTHnb(UQB7)c&^eSUw^ z`|l4%(L@t$uJWMleoEczzQ7uGCzM-K!}Hhtue!hs@}wjz7~EF#lulJ-V1-IF(Xe&` z9DCh>r*2F4-j2iA+XE~x$@F>h3-Xp_Syn_*_zAKT}>e^;~?PlN*+YC!1}4@iVE z-~(QTIyId^wpB!^a|}2nMk)N6*IxToUC@7j!0(>jefWPtnm{6n=Me`S05{X*nhIOS zH2YCC%aSZhydq=j06FM1X|OKfCB5m$Lwt=g!yrljprR z4W`+#<8&$2Egj1-F2N2M8;K%{bOBY=I!)?GsG&xcL}|L%7$+_*mK{5dq>sp?JIPeD zz1D^TZ>`*qN|ekD=9cg8#PKRCp;!o6C{-uqiglfczV>?Pq|UrfoyP86=B{I&$PSo7 zimg}RWq7~LGQMJJ&ILfUWP7rnM`3_X#peojwQtW8M>V?BQpcc zRGD#*gdrE0D3Q%6BLP;c$=zT^CJ0A_BO%M(NF!((Faqij3|J(~b`5rJ5FP)6Gv@ugHpplHKvU$dUX+VK7(=4~zJZ**?BUg({EuefO zo5w&YUTXxDWuP`t*LfSKBldEt%ofg_oqWe)C7^)z43M*?oH?1GSf`w^Wp_+n0P^uL zvh@G|>(>9c&*9@|&%&Fv&Yj*8%gi7m)@!NJ8JY3M(jcG@5~3Y(^v&EUlrB<&BZSZ; zR|qAc1cexeq5&I*ndjJEX>eTYj5pZXqQg{RKOUUFCbbbv)NyUj4 zI=M|3CU-7R6vP8DO`h0dwk|*8hKXMjt<^ ziquuz_Yr@+c?Sp=cmP8KNt_rZwk*pcwq>Hk4i3=b>?Ojys_gvdGA&Byf^#f$2-sd= z0}YV)lRgP(>|u{-fxXR^kWWdfzNaQdxp{(zi^B#Snbt%9e_zvT`(6N2$aYl+Ru1$m z*GSFIQ;UtHnkM%=?0P%BxbMCHe!Tw!KL1BR=tqEp9|)lU$q;}F2a?PODUgsYOJFM{ zuw7|6OF7Q22|h?hfd&*HTZts66XDGEP?OV@S@SU9?8&w3?p0;4da>-<_Hx?odb6or zF6-o~Yq9HI?0Vn3-nIW|W~%bein(-Zx+__DTx%MQkWyzhsr7jEriHv zLJ!%N2RJ)1Y78vO?>l&-HbX%=8{oFHtDBO&pg^8gd=UeYobcywW!bZe)49F#T}MNJ z*n=oZp!(VSF|B_l*_Lwmi!q|uwsw;kK|p30-0h1vt0KsLlIVFtX(Npg59fH(%Q2lL_f3W|j zJAWFOC}=#RNpuK&O&;)9Zsb~z@Zuld;eW8mfp2kPG=9hk)yPp{^b#)#s?696l%Pzb ze$$q%*>vL8Gdf%(7Jvsj$OI)o16Tnk5DZd55vT)gpa(2~ZE%Aw$TUGFHE<$^a=Msj zjZ?1p&L$NH?4%Xc%uz~ZH8s#$7u^ju*>sDovc(~nJ@VmvNK{y!HW^||Q0D}IA=V)T zhwtAAUo-j|0}RWkG{&)BXVtS>SzRnU>qXXf)?U^@)=}0eR+sU<@ul&bZ`&V=uZugx z05MqD;t^6w4wBRHJPcSn*(6#RCwYH%-%gzPawOg@9 z7qiGX6PbaTn&W=)?7EXae0p%v?oRG*2EB5<8Tdny76t)rWF{;LsS!ck5|Xh+3x?y8 zpH@WbdafxuHE`$1nHxQGRf(pNo6@akazQuZ0+F2ZPMs%qlT#c^s~61K(%5rw`hxX0 z+G57y?Kc>hx9zm)v*vG&u8;e;JlA*kxiPkqi=&Id!i?H36Yz|&m69&k2v4zM2~k&O zuuyHtmW<;5W?1d-9!2f`^!X&XN~RC$;mP?;l2}~|G1=E4gaa6_uk%5>WIp``p>* z&wU>3Gpf(@KB`ZBpVfUD`)ug*Y@b*9?CO*0bD+=hKAneLIpq2wHxKz8{vURYFp@Ei z$C2an5C$I6IFI1~!yfg3W1@l*=$(GjwhncvrZSzXuZ=3&Rir2CBM*x{Zs7QU-{?bx zf*CN@@KK-!4*@e=V*`Q!Irbn!2ZjxfIU>thV3|#JWsmmOKHGKc8!&8^<#smC#-`h? zF_R6LV+)HfDd4+(w{<7(5iQ7=L4yeo5pq1l0y-!f41o}0!=M*=;~w`m)1TRB6HYn8 zXhX)EbXsFf!q6Z3%%A%=%3N|omk|%VqC`MMk2zKL3CZYjqa;cYMlk}kKv&6{ipbMe zdpeV(iJ){56;jm~(L~8+IKVX?;?pXN*V)4kcDm~&o3FaVHTEtyLnP(kioE#)SP_v? zal$1dCTMK9gOagLlRf~O2{(&{*?O3Sy>Jn}EPHCxsj2sUVZp#lZ)`hoVbwiPBSf?a zMJ(z?tLPDsSxBOsa-L!2OtXxYAotlzH^bQZkO<&YC}Ta>+#y388K!Se7bqN3jF_e_ zsL(QLlPY1!C^=fN;-yV{E`0RJnqBAKw(OQ|pC(8LDNVQO=5AIAQ>2L$EjU5a9Hp5- zaO|8_J^2jBcN<`$j$DxeCPzvJ%+ud&ck3pkrnl`Pu~klW-Nwzn5-BgENR4iK=_f_^ z3cBd3L3b6psNSe~cdNEtSiAFXIJgi)4^pUs z!vLW?o`ZC2WABM0OLp97 zaCGg|wKtlz@J3Zxxh{(sVcUu=JM5}accqqq|qIsp) ze!SqRt51ICul=)&uKCt^*W7g1W8b>!1GjwUXRNX2Iq&(5Li(T>@6Oqtnz>+;4 zazKT1YNXs!C!)h7ijl@?Se(bRcoB@xaXYw>VisBikp+w6IEz7maH0(mJQi`DW|i0Z zG%J54pW`IyWs&FPbC%1rlV+Xm1j*9Ptjbl^QV-?zv3^yrFsHR!*JwI&bu4Kj}C9tEEN&_&TxSQ(AZDwev3*EMON&gP3uvx@Cd+gW1j2B9lQgbHwiJ|YOIw>Pq)Q=Q=|X{o z(jb`4rh2KyK5LmB3!v19K!FJ-uvb5rpexL0Jjge&b+~Wh@vJX+sr`JN=UV7!!k0I+ z1PE$=B=q2^VzP{Y+0j+F0ub|aTIk19q_NCQmj3c?L(FDBh`TCqWnlZua4{G1nI1IF_ z4ykYJT5)a-<@IP&r!ybi{m2|YSyn+T4e-c6u-><+m8}AX(8k3db|To=0trbjiI?l7A1`%O>klcE%9^OhU@!|W9IUO%K567&R84ngDG@V>I@Pj3?b--R zLJ8hLIoPh6rNEcWa&mJ5&1CsLdyTMdZDA>=dA?gT6vtih*XA9Djw=I?5dEm-76d{T zmtI>UQz#-VoCs1QZY-z7#pfnhvG=z3zW1^Bx%ajAjq|T9f?(bG=dB(w!7K4O5lqvq z4=B}Paw+q%Ve2%e09@zd#aMu8gl??ai=^;!H^)8aOKfgVU_WBNG3gs0`9zS+(<)#s z6yUarblIv4a%_UnDSjb+iG!eGfsw_rBK>1;28onNEZN3|nzke|sydvP+a{}4NC%yO zgLVc`HRHeT-%+c64G8J(%uJKVZor!Yz#>Aa!IMl1G7jV14jRBeuq>*LSwVq!K7deW z9;t&}p_mgOwC@Jr6~mn2n|2)GrU0W+ojCTgMpTcCp|L#ZBXN>ne=hp>U(}!UZu4!f(aHF*pwd?+%+-Gcf)T+u>2X z1TYI}W;BNCs@W4q0DV^%peNHV+# zj^u$y9{ZG#%4@7+N_^p9mgBGjTKo^8a9UhylmFC0f@yaYE-AYFf7IZ=9o=yyhJ{_K zwT$?>%FR&<|HsDEs`>iXRszWakmR9YOv5tOCH5B|eM)drXbKpACyqt(j0s+5hny>^ zb^L%K1+gZa@3<9?Anb!=5T zD0>m{pg()2QPbYhRso^qOy8lc{S|u?_oxN}A|Lm_aCozuJnJ97=yM*u!*^f`)BZRUeK&t!(|=q>zF398bl5 zuS4#7onWG#r&(%CEj7#-T-rR`6XaK3jU`Scxl1n4vM_P)M6duK7=(c^hmhnze-yO@ z45(l?{IL4Gu`=Br1=;=&rCApchM`0XsZ+^)gq*lQPlc!r<(!o3Cb;c`{3iKxl!X3dAYF7W=lh)$iCJ3B%wE7ZE%Wt#73x_WQm3 zZ~gu)upu=;KHOM1y5f3a58mhJ1Ub;u*Pu?I;#CkMY+^zQXjnm<2Ik|&f*(kPj-0iS zZc`3A+PF9foir2|y=RNgK}i#MnOBx(z)x@or66;ldg5j9;}wA!v%QDjR`f6!)$v5ULc1lm}x9_YSc?49_s_s}$-{clTwEI3|BB zL!|H6x`$|3;p`g5PZfGYi)J>5)ojqt-753`@E3tmni0GC%1*W)Br^@s6-R&+@k_#< zQHRr~A!fS7-AiXECekG89A&RDD)auC0MHaK2!Uf_E$a}_=f5>%)-~`}{!Izo;Po8W zk58!8kDTgAUi}6G_l`Up+Fbz`QOt(v_!A~r7pU+TlT{*z(6ZoUWX=m%Ya=B94etHd zm?VKD2{L1Nz{^D*XoYf_@nho_Mt^BJVc38xfH`*C$YPozx3vP`38Sc`+7jX7c*lml zd;|qo0IQ9W#3>aHCSf zCN)9mW8A`3TYF}GG3sTU{9V7_u-(E*t7^?{+$cpjOh}5~m{euFr6zB9_|qQFIX>>a zE-Z5B%195&B=q{=B&3wMh|VOIm9sVXgZm!$J@0z~DaKFvQBm2W(UR=}X4Y_Nn1x95 zRxE`@`@Ca}CE5mHx1^5H8Ojl{sB*p?)AppDtdLwz_3tM#IMc6K(Rpui*L7QsJT2%q zg192`6e%|#-0{hv5xWpHYb@!QFAg85>UaQd2~|dnZAP6Id@y5v@y2^(Y8=uGZZ)Xz z@gipfu!iaIPH@1 zRKl=c*823{S;A&rEgqnSNDuPJG=*vj2lk@x8M95~Hp7AiN$inBhAD6%c-H&p#xnuK z<1xoegRId(NHHc64Bi2>o7T0fxNe-G1bq=q7V|JK?wBrHhznPnRm5c5_w=aguR@#a z)gq{Q+gm$TTtC;vyPNTm-t~NB%f5Q}`S^ z$)sxt&>vi>c7YreW&^x|oRSMkInEXq%NQe?Uw{#U?5PFjQ@}7=a71+I^S+BL_Es>v zCpbE^c4ZYd{ovHV`5w7fZn8~FOUMOcaoLyBv+MxvMZB#O*@nmx>fnvHV9w_27Pil_ z>@+}*4LV0`TT@)^Vvu6cH|tr60$PF;8-{A$;F^s!-GAe*;~8kDVSe(IvxwGn-PL;M znrR@ac_~ugAXu?WM;NGKF%Ity!>m6M*YwES`AKD&Ji$yn3Xd$gaS)soKb@@ z;fyl#v8R5didy*}nNmY#*h7bRUC%g%s?&x?nU6C zsLL>3xmk21I>Mx$zu?*kOQQE^iOQIOhxu9H(X-!<|JD%%0%Ar;k*c5}$W?2RL}a4< zm!T9UC43n$p3_l@4r`oVM+waqPH3*Md+7u&&W`Z3e%+^`OM*#2wAc`)(q^s?2C%;dyc zk~G1P(Aw`0S6BClN~#d2%2p01rxyI=p^TPFrmhg>?L&1@y5F3kSu?JKC=n>2)Hsx( zbw&YTE?kV|esJX84ZTR@xQSgO#9|y)LIud1$pfZWc2u3VrmT520R#)r0RjZ17CG*i zBg1Wc1afDMJ-JmP0E`6MsNyz@^#_oG6t;nAUS62Ok~UvpvD^0GL+w2bxUWasI>1|F zo;SI3Z6G;R^jbcW2u57;ur2K>;p<@6JWyG$Qz|Z|KjDH>n|4>g_t4MT8hXlBG_I)6 zalPv*c!8QXEm3aalEiXjwl<8jOD!q9q}Rf+BHOxTN%nxc#bK%!?=07kXsp6=w{T_l z--JW*XRT;!;#;N^eW}*3SPhLI>W&OoCq!crYDwPZjEW)|gL7*^JB#L7D0Nh^dSs5O zU?1?oJICA17uCQ23tLXP4r_^=&9WPG@F1XeVIKiLye?Oeorpby56B7pGHqp9CE)p7 zEI(le!>rTGoCBlIqrd9c`&gz6yl*u|xy9h+eLX|j_3(P$5Yb4yO~vK|6w{)Sst3JG z_W3rI?`-nCTuLyvnse{wIofeN)D9%baC1VOZd!=0B4(W09ec;=VjKbHx+gDvLZ^!*5@ zjNUtZ(rLdq=HCHXQ-I;IQl|2f)a-E0Qz82d9rBB$0>#H;29x@74KH@&B=u9x9(4JUJ%lB!8aj zz>pAV70_pTYk?DE=pim&13EFGmk&1$yk6Nlv$`pL1@< zgoPSb0>l@mFS=mB1K8l{jjsDI+9;*|Qaoh(==lKh!wa$!euW8s;R@?3-w+njY%nC~ zBPC-K>@x@|BIQK;fMLpeWZ{vk@BkxY8jIDH3ZA|eu?&tRq&R~s%MAXq_LQ~hUnVsA zFCM2U*X8YGw_}1kz^s4-~<7$ilfxF=oJ26{q>LQw=DhF06`$s2&(XJ@;yidg0Ng}V4!OxuRfi!yfhoj zS5-8gG8o<#1RxJj#Bj}&9s@_j9!py;ZU5GJQp9`}Oo4w#;7LGMM3NFFT zI6Ru{wZVspK!BV;X*Li#n?}T-4lz12B#foFMyl1ApO7hPLGG#_#mfyvi9d7Y?*O$_ zwndpkgWvna3Mr+IRyy$mTFkf$vyP5|D|!Os7_|2qqZcOJEGl%1*-$$c{49)PMa| z6gSf?@w%dYluVR@rz%Jqq5S$>%i#4cl|l^5THBH{wkZEbyMk(E`%^Jki7qqa$^@!a zkh686DyB(|F5&Xrs}m=adG(GoxN>WLFEkNB3q_YUMHcpSaC?)9EM01YdekcP$we3- zq}GsoLn)O;S{jUDBu!w+=jzmyR+bs2a&yC-{rc4cB;mwTpu9b{61J96Yy%}$niX5j z_;aevmK{9h!c5sixu|f!NKd~bQSWjv=>((eEF<0Jb+P7Mae7(0CpV5_cGKO|1INCn z`0?HAz&pYRekVUwi+=#S2YHXYMC9|`;Q4f@Q@eTUZ`z~*deProY*nq$N zTB-*?GBO9L63V26m@t8}M`bOI|i-7%TN_ zHqgYJgYtQHlM4dI7xgSHS(shsDaG0fY1Z4n8n?#b_c{rW4a7{WZ8GWH!b;uo4stwY z__K@d!(Xh-OLe@@oOE6$4)Ak#d-z$=kx-$wjz4KS;ZEKBDPtz8&R!N|;hZ5IGZz$@ zsl0q+<%&9AbJvMtjGDSMA@$I*i)!#x9%4ouzFv7Gaeq_=V|8~Ij`?b zsTSezhoDkVxH(&UMod|rpRhuG`=x8{H$(Zh{s`u4@o%QffA5t9P!awB6p$s+N|%u{ zv7SIm$7b?#ZT_juY@{_@WMs|fDU|6rU$$D81@nl!Fn+k3*mDujBcvrf5z6Fd~Yd*b$WSD7IXpLOVB88$> zN{V9qN46fQ?bOr2lQ&CCSC|DlvZAfiOO<4Xfg^u=jQn}G2nSDJjFt zcca3qT9t^inu8W~f+ycDcSu2D;*7^~Wx1z6UhE3+<_x?Jg&(4;3lhfUL8HBhPS zf!8Scj2Tgx31Who8#6_%+oRbBt>(0q?Zj8AR<9IVk|n3eio=FAU9RSA7<1QdOP)y? z{&#pS+n!2{15R~z9LZx#wG``4AM0}JOqBBB?-K7;?w)q5)1!yHYEQOw410lOO0nmy zXv`ZK;1~K4G=$Mh3V*L70-k>5 zo+3Y2xF=Cr(ahfE@Cvh9OqILU zl0FBeJSEi7yxX#28|BiLEBLfmzAkSMs?4g9B-E(xN^MHrD^2xWo7T|S_)15U&|Wmh zwJ_#bhy7N%jLNpt220p(JAUGMRqs~^aT?Y-@l%)G6}OAsulE`H)f-%S)Bg2IR43a7v`e1a}v_=~voOziaTL9GVW;hCTfp89 zo%&twUD*4&k5oXTjt(TUEx5|vKWsiijwKBV$Ed}*KT#{VD)Xmb3a!lk*=H-~+{x!t zj@=91qPPE&16yG6V{fv&ZH?)rOl8zTRrvX%3GjNk>VxGG}dJKW}0uQ zU#3c-sRW0qSBDb)bt-eSb>`gF zFHAEF(glL*sgL&hW+&9uch6#Q2j{D~`2fB&HT-j#_o74ui#`jUBcb@PUCvK@o{|C* zc^K*e!YQDF6ul)I=w6JB@QEUyB^Dh?OAew*kRW5R412{D5d=PD<(n9#2t>uGu+S!y z!UaJo>uZp#ye0-92qr|-$j}1Zt3EQyr${^?8MDM5BoiTO(t$C1^n}~^ z^y$Kb2i`i^c_8xL|Hui9eJ4Ht7%e{R|CKP4%t6yvsB9)oGgc&QMTEFqYa&y`7^_v4 zF(EnyO;WIFboLII%jN2pW}-5{>N|2S1m>2m?+NbHG%bx5m?aPSrXLru;nOhk!2CR- zqf@;EAo2aGtO>=$3YFE239&L^Euw<|tVFhegK}5mU|H-RsiObPAw$bn&x{#4`Y$hu z2z*7)UeLf0@!^No+JEkEC`NJn*Cf{~ufW&t$8yx2Bv${j-NK0Y7*aPcIi^z}HI?e>1=RF!0#7 zacS;f{?>jx`}^?gy=I)?zs>(rdG~n(-teqr%(7y!&?=leJLl1x=dpfti=kuRpSmBq zC8t6w7KF89zSYml^4~5={O!EkaZG;zhX2UDTY+pe5{|Jbo18u;L<_c75;f4mPtPWTs+pkF+8_ChhRqWkA3lX_Xq zz=0L1e%q03ilQ>%eQd1qZ&y%I@@TdHb(`5_6-l!-Qw)=43K(1j1R1pijVoWn5Tp`q zBQ@@)iN(WL=gQbSG7d;f_APup(8Bp&^_#r8UA#-a z&3R`aBBUrl?6C^22udv=3DOAEg0>n=fT3l>g*~{@Y@zO++;r$A!MmU!6N;y4!J-%EewcSsDrTXqF5UUE1Vu)HHp5^Q73%GMf& zn=V+K6MufW0G~&(Qw6M?B)j)19+{_FeMTuFEamUf(3XqEZ{-f3nobUnZcO61JfhaG zc9I}Su(8P?mX5(_hQWY|RD@ncjHFLO3<@V(>J_IcOct~gIziARAO&y)QUsz%pecb= z)-CB>u%uU)5U7@7O5T%FR+xrd6EbKOz`aVSqE2K(CO9pSmInEK5?hQgpg#24im9p4 z@DwWvb3(yZ?!oEPJMqXXAXwgLgVhwOiYZhRO&aCkz!OteMeZ5pxz0u+!(>wom~+ z;Uy|Si{7$cCp?!bjwVnzuLwQ*=?$jPY`GOZRT#3MHRw1YSCd4{^_AeH$wZtWXQ7q{ zwo!s`c?iqffbS6L>JW71`6FE0QlZHU=DIPsD9emv?t7R^X67GaguN9GKmhg3$y42t z$A#zjxOg$=P_ef5(7bueV{_S}8;EY~x{q}DP7c=nYWEPg5R@O2yBvd&p4QH|yOrDkT$Q z<*H1fm}RGswV6iU{SQ_f^x+^_j%9Uw;JT-0~GF{$v`^$&A$_^EKx z3I>xF$>fP!=}3Vrj(^Ivl#yo^*nXYqo&uFT2g{7vwNTmQdm@p!F#a0krRi@|lhzJO0B{@W>ZF^oS5Ak;f3Mi@HUN`AZ`IHS z?Q;SY`#^s6baVw5G9{*}0@tVtiIUf;2rHP$ga#35t`lY{G)wR-hHQ7=hX%RMrR6x3 z9d=!GnOslJu6 zI7|#wgj~ZaS~?Lk2z}V<@UBESHB*NsK!D76ExMigd{J%k z9m|4!)1wr>2Nb=5(MKD9l;s}``Z39Nyc7?{L(2NhD!WO4bTu#<{MvUkhDnr++lo42HH3FSMWoXXluRhiq*wNQYGIj44YXJ>6~XJ@smt*yJe4R>$@ zw^7u3qyr<~Zcoe`$0bl2d#A!UGLKr~$&4sEl6$N6jJQ;ug<5Is|2m*~g1UeJ(!{I^ zGd*85QY%gosOyM3VUwi;_{59!_RqV!cU7Jw3c={KARQ>`d*t#wA`EtYuc(^#0%1iM5jb(Nk^ZH#-|V>g)F3Jh(8d4HJxx3 z2BAhH91tQXGn@|d%yNfUzJ=rh8XY-X*OI_U#-;`dA?P8KJNdE+Ap90U*GtE!|MEgs zfQlbrAC)xVl&&*^(4lZlnn6K7WKW(b7h;r?Cy}G)vvcNDRt)DM?o#JF=old#`&s9; zC0D>PtU#Cq)=L*CE?f_bS(aEV(%Q+@JRuKl72E7!P}OXlkNNZbn9ArIz68Pd3ic_? z<^v~07eVZk8;`khiQ)$z5mwvh$p{5zCkDHF>;3fg zBF~=Jio1Ay&QQdZXzxv#<9g27V89-ciiwfcD6=H^%AWlYVv-OZAsE5@u`m~snm7Wu zDaYf`O7H{9<BuRuh*fY*xEDYm=B*ROJp{x*Ai1rv)G`}v zM0PM_=Bt;UUDncRz!zH;;@y-9!sS^23PB*++9b3RDFkZv$>`tJH+ak)josms)bF82 zCa`ntMc~ZZf0+bGEUUyaCRfAw9w!%?DCwqaXtz(g{#=UH;d(Eq`}Lk)FV=}J7FD8& zbv2;iIz0!}T-3F7UBm+DZCVFstL=E;=_}6+pe5q{J^o23zN&ZZ*$1=a8LHKm^o2Cj zqaAJv2r7Th3SS}m6^TQ?Gb0Xq`AZ4k?&gSvYX97E-#E+N?7VBnas+E)tzJA#(o>>r zY$!t3Gz_t|-wxG=*W#?KwPXLzLt&l7W*To`-={>HeYAPVu23!g@p`#K(NhgwtO+&J zZRb@U_7jOh7I8c=H!#{UjdZGNYr$yoVDKd43m+9ll=7p&7_N-*QM1eA-_vGra$HM{ zR7BP^x7n?6h4GWC+-ZQ{tG^CDrpNo>JN~-|sF4_!>Rn{BqLr=p|5lZ(Tuty&l`8iU zS-x#Qi&dNf$ppI25E7*gb|wSXTdiEx@pXrj1)XVV8fM}K!xl545Rul=DD6}{(S-+7 z8X9V<8yUbKEnUceEK@F~h3|mv#|M@{wI0PMv{yoBTv`o0PKREpU}>Gh1D3D9E{h|m zAz?jhYfz=}Z5m_jX@$mNaws04V?mnEzekpEYeARjRbN!Q0bXB@i~d_A^V-VL{^yw| z%btEUHavWvgP@K9pkb76zzsQUkCBs|bKnUFY6y?Xr|TnLSoCO{2dL#(n74*ORpD-M>Sr;P!flDVFzo24+odruHsLfP9kL_{QIO>4Ev5*=!!_cq zIhOAdI~f9Iy|`0^V<*&O;+7(%NQIKfyVY`8-Pl5@iXu0wa{?rAlznE%@H{fxN`egy z#@RNHZGOpds1%ZkJhreU6NOkW-Xcz1t;m#DXFHxp>?{y4o5h`CD6&00BwVywRnaYT z{cIvR0C9(-C>S-3Grd8ts<2UXxpW-}xsbJB@tK5c%3 zIZgs$$dYOw4~Up1E2QoX$U?~2c5K%r$G`(lVB#7@;jC3n)jn!3^#v=wPZbG>k{cK| zcj>!Est_dCqx*s_@QbX)S*xpbQtexpV1;)tklH~zMU!KDliJ@#6}974rPt1l7f0lw zU7tUGd^^4J7Z3GIP#T?KGyO zlr%}>6-ioNrUy0KGb-%vuKQUm%7d{?P(q}x8CicA+3Fuy`Inl`&e6pF! zRM<$d@RsT55drH3weZD)0LDJFx*5FV%a;QV(G>b5PHb8ZhQqtY zC?=9p6t3s7kRak}kNQ3%v`wY;r!+xfm8aKl1lgut@O)ZU8;b~~AZShx6aWuVSGVVY z@Jb^aORVZ&qg%I z7|_jUFUnSc=`>l7w;Mr#K>mDnw&t$idV0yiU5Wl2ro{T zufvd1ibwA5@O`Y`^k%5&@kdp&&5YeP+*j&6u~Ka#Rm8E>_%!Di zi0W)pbO}OxRo$$5vX}T=ju(LB7#(PAjDzqVL<@hV7i;mco)Xr+UJ}M9ECF9ZY3Ttk zWd=&)t=ql%0gsu^W1F7yowKP+xP()&!Cd4miMq9Q_3^<~{{mssmSUd{?4y!Q`(aomB3Am#L*lmfWDclcxBz_1&&=yRD zr#_Cb%j4y0+NeEv7Jv7Ap)go;L{+6eU!ZuB6*dN4=-v_f#YZOo2IOu8~blNoEMTb#G^z%`7@zPeCwHEzp%$+%a@{_@306a6weqEvjm0{ zthm+B=i;L`$Wb`~@lmMN&^+|fQ@H6E5TGq(s|}H=32kySDS`;b4MKJ#^r$8Y5b!Sy zhKRN?Gan{AoR#Y(AAd|iXmY45Jb=-FXwWbWoYuV97Y^0INDjzENT!z{a9<*rpzkGdWU+8ruJI48}UB#JgO8HNih@vc-}M|1xd0Dl0*>=z9OOF zyu7Sxcov3gAGS4zvm~e-^}q{>PJ6%7>|R-e&TS)i>|RMM&}3H~G$nzwi1IgnDJv6t;&G7;Q(u)|+kzPGdIE7P8$Vs(9ult2JT- z);HxefbheD(Ya4YO^2-l_nlx60#lU~!u#3%)o_zJn{Xn zu6%N0{_nd!`HLmHG*%DF0~xS+W6pknSMW%&Y3tc~-~|K*d`2U=QXL6H9&iB~g+gxC zCwVd2h`;$xuIHO>@9C6fj#$@}aaxY%a-Kx@Y``y9zurOjxEaBhJ(ln5+%t`Jho|rC z2aC{2`V0UYfi8TNo<)Jl;HgbS6NTpjk%XXdI0;EdWD6f1*Oag!9pHQt))Vu$CsNMI z=$46g=tF99vCYY#)($DZqWuIasR2(-`4Dhtu3Yn2C^U9IAMB6ps68CC@2(;o2!GQ-T4`0o@ysr749G->YfKQI@uA$b5alpk>CWgL^UY~DLi{Gvu zU>I#9h`0CPC&KCrXEUZPCDXh69M z_6q)EbqlG2piw{GDB^G33Q_3UoKB9P&)n*JX!z#+;i>y8hUfPqp)zdT?9YpsPD%D? z(bP4pzCgkGfafgpdW#cIv>hDrsOX+oS~{`3=d{NPz!S02J0Qw zwXL^kBXTBj|(8!s!ztdz7@z{9p3WY;eC|d-QvfS z6EWHBXBYpZ)xW#KZ~ZPwG+K?EV*^cma9sJs7r&WsEHfxzo_+X71MsEG8^#zIZn+w_ zZ%6wD4O@|d1~1OT$#{06;k3(5!9wq#eF86a?E29n_K7CrU-%A&QrO+*XB5eF$_g>!4O;1o`H6wfiv z&+4Loqyim!HL{o3p@>QjCU zI6|HAw&1CNv0ZnjD&k2Vq$V zqx$N45I&WehXv0$%Jubz^Aw_pf?=l$ub9FXCh5#(j@6U*DAsaYO*n}8{yxCUmI$@H z9&{2gBD5(mppKnJ6G1~E6zC4z_4}Xo-!j9Z!rKL{eOiNUV*E6;VJAXR@3GX2FvQ!& zTE2;npau63xF>UU+BCM&1q5rVgs5RKsa$lqI&~2qCYti9PvkxfSXn{9W;0h{U>g~Z z0>?$kB=Abjwy0??Q$&Kty6+CwuaTO~`eWdyZ~jN5#l3QtU64C1Q<-50&*7P`E3p{v zCr>`vjAeJvgHt@UR1o}V^8!SolhBS;hGQz}t{VyRHUx=oX0=FPzlI&l?o;P6;YvN# zg9~$|&6^lAm1()0!#7;7HDEr=<+`|o&g>?FxXz#&Sem1Gu$h4)zD$miccjP|I~E@A zmUk%Rl&|;^vrgR3%t7;vZu?LVHpv+M_yaKWb{_t(KBUM2-B{-_)}uZdI=}5z5lmMm zkIPI8`IaA2@MJ_JjE!VF29m!3JV~>$8$jIGi*==+I{9RaDJSm$*6$ws)bIRZ| z2bsrB;@b1R$Iqp!3EtBPY0=WTf2U!`fs2zz4^}eo!2qpR$-qb#c|Aft)zX&T>6fk# z(#uRn%&}bv0`|BCp4!wRVA|Lc9Iq%ZTgaxS&#vXCbr%N=fge}GN}xM75kA9i*0;k@;J_~sLkjK-Q`)ju?_4nnupyrrs zdz3!wyspogj4?$|RH-nsWF(WV>aX z5@Y_r&(<0Gt!Xy>xBq~2&6I+Qaj);@$>6Vx?8U}QaqziZEC#TpT0gw9Qz-m&%1I(t zYk+S>i(@L@6AK}#tp(tt4_#d#JZ}|Opx9b0ifB{{QpddgLu%1D*Cy!cRJrf1t(bg? zCt#v)9Y&810o?FAL^A)561e;WTY2OdMDK-)S~}dwbh)3ok*P;HDNKSp5@VNJvJQ?Y zlJzmayV?2GuzU78UpI*91f;r4Ke{oL60~8Cn2r}LlJ;E2DbYH_kFb}7A(@2tA=-N+ zLC{3Q&~<1lY630_GGP%*SVQ^{yy9hJkps?9a%jQpiD)eJGS5xXIA5k?g`^fNBAr}A zf*i1DNX8eeZPEo?n)6OM_AugdM18qK=(Rl6wSgghndj>CsBi9s_h@~b4-FZ$uJjB; z*OgHAgK%k%91e0hSab3t?nByynlSlJ#G_&CfubSx87o$Txshy@mn^}t3CDBuxP&ep z8rWyq?a~e{4uYTaW&xHIAfX@?!5nOgmsqUMV~>h}w0*b{$sQ#A;3b6=6w;``L91|_ z?g~MbW)fZyilYKA!OvF!c2KUS>jpC6%_+*)%SZw1#bO80RF3VA{0LnFx7&EAG{-gu zX6ON^^bQ>fEF6TJD4Hc*BM@yAi!Qi)<_K}Z&d&yZG9d_RqRBcSBwKpY@$j2aejEW{ zSJ9gg7)R{{zpMkI#1-EH$p{rFuVw3Mn2)vC>{oRakO1sIeN|B_D!#T3biGc|gqo-o zulZhBL+2OZ#Ihno%`Jo*kEc?fEp!eHhiBjMyHzXjrXrowr$VnoVa}|K8dj9c$#DeC zGods>@fn^sk}aj1Y;q7QkoG4;S4y4CofLtz!bf<#5|7P$x z0KOP?P3|x^wovLsPJr|zl>sM`bqDuOLA!{ajm|M(P|C~iAQD<9)LLLKw6gbSZaz$l0 z*uxIw&-m>Lz(nDB77GC#o5#2_tOXVYY2^nZqJ+vuXkFI2fDUqk^WY;(pdVzv8ERi_ zB^2eWNMNsP-4e7Z!&3xo6}Iqc1(EkVybq9t@@Qfr_h&$c5_G-L2sjjNNKvnR3`#j9 zD60`(&37yIB;bR$FJ6H=9$~K*MUCv<7ph|VOGZrtn{^p;u67l>fpK=-`MzF7Kdl4T z1N)Nu<8>CYdDnUb5i?lrdI7Go+ z-bQng&Xp|tdpG&Sv)?YCgG`_!@Y#Q?2N#GFVhrH;mBoXD@zb_ymB&kGTF-~18)?^e zwj-zCteUV;)-3e&6?|i_{`jZ<{~`7Ai4;=j?lN--!Og6e?E3NYkz9+5Db44;4lA3_ zUF1=&kUZ;?E*GZK2j-TRo ze>vja_@%J5zZmI>9P76Hc;wh9+`dgdg07%&463S#V{_AOs9GZnfqKa2>8hI5nksTW zJ4e7AM)CK?z?cgkTT|-MP-=Nk4~L%FnGB?84>EuX7tzQXffTWw*bSeL$JpvSgvpDB zwx$0?1WZ|fM@Ro68(|$2F|ySt*Bd~=s~xV^)n*0H zm<+rgXv2Fpno3o|{*V@iR40BC1h>(E!!An_#zj>2 zWR>9QzJ8m!bCi-FJyg!w;<3{_#s3UxP9NNUz^)X!^CrHgf3x89A+JfLnB%w7{s1v6 zCOTbcQO>VJIb5+KqCP!GfJDoi97}hu?dGr)tjr!8BBzx2@2PaNkCM?uALMmjmeMA{ zd2E=UeG$IrY*B4==$B#cOViDRV|ac@NkVOgjnNZfBveMdEBx*I*Dh2oX1CRK z;xo+qyIMyceZW(Fnfl^yH2v<+p|N`AgR8X%iT5(P5(2u_{b}DL1$revon}B6n_C^g*9Uj;m z%)#K8Fv>Kfc3R`})VU{Dx#8!4u5&uwmKy4)*0p~nF51&$D7rQrE_u9)A!%RumFWKg zP{L`)gb1}(&@3VzHyJozD0Dj(0*_$Jf&qIL4A`^|OA%N4yCx|lz4B+MY1Srn3uo=L zaZoH8caYeIOle7kUyY%buWtm(%)g@$?l2)oWU|hg8_aE~b0*;mv;}L~kybuiE02@H z*b}ZcHoGdgmRiOgiAsj54cLAKy_bVBYq*||#JnC-5L>Y}YiIZnWU$-p2 zWrobDy{TGdB>JnlMk@!p%tImU|GgB{aNxbO8#fAv@QvHn&zm-IN6DyXB28Mz_ilt!r>7nAlrAIabIn3yzR3b`{5k+zhlD z)YS&*4n|OWsaK6|i=d_K(GhSK>Kd9;M5nQ{n5d(YvGA+VP(wBAw&RNNHmhp7t`ky; zzpES2eu}^vAp`?5WI{}JIwb^%e6cNI7cIyTc-*=@J->mRy|N-_;FJH+>rP!Cc~tn2 z5_^8_;vmwdw9qgKx!h?Jn^?>og-@44N^iAUo1x^HjVSe-9tn|yxcx76uN}iZJ+dfJ zc9*D0=)4(vgf1J<=T$Wg$D{QibqK%EO`Ez!gWD5*3a6(;dW0(}tK>}yrOfq0Y!R=B zo%h2srK%g0uTPgW^!BPx=C}XG-2#mBCKrcDa1WKu7-`QI#z+St;e0CW7G$$8ykoV# zy9BV04}&KR>s^)YK#EPTyMY8LfPpSaUUAwBEBlZax>3D zb_g83rVXe8Qmnp3Lns?#jIAct5GR5}c6=N|q(O?MIyn+!MlmqtYge3`b>xW1JQ;Kn zTu1d`m2sHV&#nHx+8FCFE6_*ZanFNQ6mtgLWwr6qSkYHNUWFGn!zSt_o#XNdU8R4z z`P)UqyP1CQs1l@p<+ks{dQY}h#gc!iPq|}-I`MnoEW44}p|@xXTN3f~c30@XSQ zQleXPBgptr$3j|IHE&1y)%5Zm$stftTjhleOO>)Ps%hjgwa!TQe zbDUT?0edlh>*~hk`;t@UvKWF}=nvmlf}mm&yeuqV_JjgL9HP;gUY>@BO3B3$<|$R` zJ%L^k#+Syy-rop*7I|aD#eMtYkL+U@pwvJNYk&BqQVp6aQ>I73;Se^zm+w{-Gjz6U zTLi14ol294ko>c^)2Ldd|Mcl9>s?^Tv+42Y5gScSQ&T?7lPvr&3D>Ds#y{!D!7q_#C8CdIbZVebbztE$n|Gw5 zFK?RUC#C`_G%A8|({I_&wr}epd%6|w07czgzv^(Tu4+;eB;ZeWlcX{UOta?*ce9)l z1oN|259dMa8$C(bYqG{!+D7T@pZ3rA@tn1{BvIlPCx(b>FvReLa?l&PY|!nv+mL(P z_t$S=x~r>}hu`_f_*+NY)QD<+V#8!@hJdRO0&z=oTp|8sBSD)3Q0`hcOBq1)cf@y7Is zDw{}i6+V?#-Mmp+%2&9QiWcXf{eTo#{He!eLSb;RP9l-5KKEVL{~l~Kz78YXX$vAk@nV1SFsMJht`q+$#KYhs8p({UoJlv{z zVs|aR0-qrrR4RM|!Ja*=J*iMg)pq@gA-BIpPL5g7d~(>Js17XlX02Gfq6&xZxT;c< zlPGqQd3pswg`%OS^})mrSQRevGL=3XBI-!Qv?D2%EmkKGDFWAV(6RMwEL#TwGoh`5 zy~5YA;E}V|t=hD6y9Fa0uOEU`L{ghjQ0D30R+iJ}31~7IWk*JIjzoS7lxm|MZFwm- z+E)<@xtX>Ubm!_!PSb!xu+XJGz${N*+=Xwo#^sbSRs4#TwBpGLm(kVf1WYatWwn$W zgR&Jk+!&+iEO?;)Dm37m9bSYlY`d;i9AW?3DhWRV^ebU5SjRcyCYM>RRFTC(qYYCq zq(l7yas+x*FZHX#-nF{6J^@mq;KeLY`l%_`B)Q!0i4Sp$KL|<=-2*R{Qp)mjj(Jt) zu*{O`Y}DT44#fUOi#Mqgp~%$`WJukItk$m2(5RVeMLG|Ic0p{g_ra54*Uw=*`!NLA z<5B9ihIYHFPY9=|>N@4^*DD%&atgao zj&H6#dVz2b(bzRA46?^h?mf7LtwTZ}1w=|`=Ms239vDf*X6AacNcpLQFn0IWF^ga_1)}y3&-kJ8qj!I= z5%4*k)dodBMeHKjSp~Wou#f+!Z{Y0zwR*AKU`j>UFqJ#HJL=7Jbeagg*Kf_)rK!nb zi>>DZoSF3Z_9;B$(**}VMZvWKl;hACcsaPxQSifV1x{2}%8-^AqJxhR({L*))hJ85 zToYYBB;h9SY4Hy05<8M&SQvDm1~S@%ssVTvd1cB53^E1H4pD-V>>r>XI=uiWGY>0j zB0m=yOr)bj11T`=v#<+Bw%MArp&Xf77NG@WvX~H&P1Z!nFEX&TqCO~GwbWeH`Wtp&& zuxb)uGU#!x%cCR`)Y;A_-;E<7@ITr|Be;*gSps@1Na7DkB2~QV4e&m8g9!x-$Ie5~-3!pV%N+6p^swXD#FO_a@jCT!!_W|& z1-OA5_*2`#f!Qv`%uQg**fxxjll#iPupjvv6f9RJVb~&8I1>wdi_2rxMB#@BVm`gm zpHA*{^EGUHn$4(dbgLaoN#Qt2fkcqx41Rft>5*9DrGHbecF z4Un2_3(<;^N6sF_LINb6s9cp*83)XIv8VN@;6lU|KdmuicD7orF01I$BD?3e02i?W1qperSCY^XC}i&fxHyaXO?&9~xaIlG>YATu&MhRgrN3>!wfAkuY}I z<{BjK!xoa}!YC{>YF;0ZDuz}*F>Q-nh!~qVzA=lBU|}wMYaibmwgc6Rrl0!F@1r}= zLSI`P0aAa~(u{Ep$G@94@QuB!v$%53Rj5pJwFSS=O?S3T`?o_M;!+6)OF z7AZDt3#Dn}&!?)O(1oQh9f0e%H%qiLOMfquge6k;W z23;${hW1>nGQrk(+|-!7w;HYvpT2*mlTb=`m_3zQ`nxSF|LsN5sPbX0HC&xvIcrqo zRi{pG;my|T+Z79PeFxd3>%idmY4_B>NlA{Hdu9O12xQ@3;|HpRm+rQj&-U~*gMvbR z!iGU8un1s+@U>7mf*c1moly1oW;+cyJBNLr4+LW)w+|{(Ae9ZnAq64WwfmuER zt;CU)gOG~413f@9B!B+GF~6m7UY6|9%OnqVE}{_>Y)iSmLZBp!_32Rmbl_uJ?&W^X z(xEV^V@mrLGXW_czpN^Z+-leCBMu0+J#Tfb^XpA>F@F5AOAju zJL3Qz%+WP5uyzM#{CrIZFX)Mwp()9ESl7V#A#=LM$MV$+jG>R2bFXnBsZknP->TH z6-{VCWXCm&Oz9XVz4eB-fe4~?84w{ zbDY}?voU%SPQBPjUpuNskOJg-KhFG2AQT?D9XOh$X&+;$=R9fDfvDjwJ8icYCY>u< zY$o(S28V?5M-?VI;|W=1WUSy1_;@Hm5xCkE*PFVWkVg!itC?RA@anW$gg&_}Uv@2?a2y+`=mGsq!SRpxhhbnI#V(h5*63HQ$S?3sw2 z2nQ3)pn~I2IJXffe}>NuHD7xHRmKjM!$%7HfX4*OmjHO>UeZdOF3pMAb#ZrB6+0t` zE!`47|38ObeAKN&(HGFn*8Sbr4uwIkn(A|w++XsyQP%M(j6dp!LWxi^h^;}P3f;=t zs00?DjtB_?2E!Qi2KZ?u!ZTEf0#nDV^AP*UxY>tJG>y&rPU&FK<1qH7$BrT0ZcETn zHR@=tWBQ71r0H56#0Qriu{ z4PB}4f9q`D>*G461t+e7Iiy++4WVG{o&o&|mAxFYPJ;wk-8luZ04zpfB!Ol0H$$m( zt;B<02DWg^dY;;%E%xpLT-`#jnB8AX7u{NHc$?2*=6Pt3vKDNI+S_+L%=3QH)9Ub6u#uu(PC;+_*yXC-_-px{Q1R1u;#fDCI~*nvRLlL z)F@U5CE#Ni_B?2|QHE5Uz|J3`$(IbLDdH>#n-eoUauA#%dXnpD%l%}YFp3G7ROw#W zun0X%v>*BhAI&Ux@CNvB=%xesa@xYeUhybZ9Y6C`atipl)C)(CQW0^^yudFU?DD;* zq)2|t$A}^T2pw5a)5L7j#@YgjRIv_eR4z3t(5qU^a5~14bX<;+H3URf4`q&y?%G}u z6eVE-*fv6l;yghyeuzR|95R6pzVs)OfJK$?2{GmN0E)>|nE$)hJ+FnM5j2<8&)LT~ zbh#de#%HTF3K{pm$+RF!@&8rnpyP&n2X7Y0zGRx&IfxmD){n=#;k|l)3!8cv7IkSY zZ8Uz^GJxN(VJ$ocw9!VFF_oWzpclb5X|JJ`sMT}Yhy;xqC16FRVtbKTP_V#S!iEOY z3gy=DdQsZ=P(M*7F>o2(j%z_3#h>u=YEj>Q-UIAVGalcV{!fG6RPvZK;3T=G1bA;^ z{*~~5d#|Uz-H`+12h{xutxAn~Sl2nV#)=a=Jsy|oTj0jmMM>734%_TiE?30Z$ zpjN4V{rs+|7V8!~XPN}0B z>41+s+FEK5hg5mlOMF?xj5^b~v;~+L7fyB{){dT|`i5O(=|oVb#h~s}f-g z$*4H0&3!K|;(zh!fD*74QFSddub@;|a>so`zd3qAP|O_D&|n%ZA@ZYqIe*6=jYq$s zKlP}EPImX^eUDsPiejagiE5{*fA^OF+tq{tQZz0l znn-oj?(I|pTyvb6$Pz54a_6S}^qp89vV-;@T$aqtdzhR(zX}4#4&l41HJjA#w%g$9 zWyJ9~>YrV?%Z~6Aa7BCqy21=UjM>mG;4i{ccKZWu^CpFVVuzIolva!<1aa4a6zEjC zK7a(bFw(XJ0G_bCj`G!F;(CAOu4aBC0LVf7${?4jWl!jzD8vqDNJ1eBt81X8qNGRa zZBL_HMK^h#ZqaQ}I@G2}m8F`7siL+A6q`q(%aGpNV~nKusEs5Se_ ztbK6mWqTgQEbYdvKdXC8XL$LF#YGLaQ&LvgCt>xvzUaqvu0UK zamuj*`#_bw&RH$BD%Yf3OoMNhjFy&d*wNza9^8n0WQ;2g$092sDY@W-3v?gc`hz>= z4$-prVtIM#5eKWA`tw?;L!7+)@lNSveVv7+xYYN<-N%&Y$jYAy^;+RpFG)R0TJ4A? z!8s%mijCg{M6f{LouyzKCrJ()+CXhNih^9bSZKin-*bQvz^)Spqi@7Ut=_^3Zd4aE z)15=rNUMEKX;%V8aTgUOZI@R#jgesQco-W@1m;hgLY`P~024eCC{0ly7G@T9Ge;(x z^bxgInMSUqrLo;(wizV8#%NkMnhIt3WHOUy6*y3INkU;W-kg(;0=P?$)h_gt5x8=< zK@l|8GCz@-R4Gc@xKQU5%q0bvs$v*2!#&r(INJmy#Xrg;!LA`h%lq>K%J&L;f;X_O z+MD=1!=@l^+SuUq2q$y#r8R%&jcHE$oxO2OJP@b1Zx1?=kIBiuoZ>4ZX%#o=8Zc&` ziewpADf`HN+nzSl4?kNRhGXTFQDHpAFLPK3&IOdsgKWj z$F&4>XB|`&peX8A0nA(p92&`GA6)aDE^34?)P&=DEoaH06l@-xQ(_$uc1p87*A}q^2o-OmYQ0T%S%96? zL6dgYil7PyXXBSPlj-fGonl$4yEA2{vw!gQSvtvLKHgkj#gO%~E@?vbmQDZC+y$=$ zWc+KH6l8*a+GWWG2wcn?}(T# z=Mju7U?0w091Pt1-^Broc>u;gtdY3NGq1|~+rsOBKT3k;V#FK?8VBN9Yyt$l5{wuW zCccu7tn=RQi8y(mPc?R|$lSbHs~D%w*yiW8P;M?S_@XM#y91}lm6Hn#``!ocz5xS! z>{y?VcSd}wErqn}yzIUK3!4AM=NyzvVo7{ml z88{EzL&(E6qVgUy)wGg&nywYv;Px6kF+&*48$tz-ApKLD1rQRV@mN7v7Zil2X( zn0)eNQ8zWb`v+RZONT!>HWug~9qZp1Poo1>U=0IKag=k_K4{M9+nThxL<2@txvKlX z%}DPoqMNcYfe|*pD7dFK#1M976DAb|o?|v)L6D@nj9sEG8Z0M z>sv#(F?u{E5M~M_&M)BW>;f(R%zBWukyzNHP|#K9gZ30%U02)vD4L@N%eV6}mETgR z%OAyEe0v#)1>Yi&t6bAa3SJJf156j5f`G|iCock>>wm=5TK~rmWA8_J^TvnYu3A;- z{^2RFRqYA)C9(jDv=}tqD`5VkUIZxnz8`oeKEEh35ohIW`S86ZOv#bp+=rl22RYyG z(O#S)mf!xMf>=plEZH{S9nvBoiu~;Bd0-5|1SX$oVMPZsVN&y8#eCvn|LoB(nWoS( zVg~Y^(Kw>EZ4+qYt5-LL+MhgEPoJ@H?MEKT0S3_<0f0rL7G+@nQ>95}80zpb1l7Zd zW;%F8R!yf3PHbm1Zl|^Yy(Z%qK7rGJCNM)YEbq;huKL?%`Q>hzZriBK!>7A4W zC}gOxVZw9Ikhf}J8<=Lr`IP%522mcJ(_yOw6}Zvpv`#ua;%1&gBKzNiA3M!3?=M0& z9S*w*6TQ$_goT#XGik@*8;il(Mc35>Q#j7HM5VKYRKilbkwyMa*WUMs2CEc$>dQGp zgx=Mf0=OgRMqZ;m*CLycAEhgY7@B2&@)2%cVOf5Fcs4J^**2O-1(lKjSdY}w?%~F3_qkNv&1BYI*jq+1TLydTG9@NG1 zL3?3=I|C$0}BOZ~GZcg7%J+W6`wxVJ3z}TfHW75Z`28S-OfE&TOaV49V zKcjXy>|;tTB@g9dwAqOAQ?Z8M->>1kF71Xc1m&VIN|rz6Hk)Tg$a2!Cl_@IvMram~ z*v<&q49=xbSgS#jrnp5j?8nZQbLaYPXd_=c6TqxxGy8u9{4?6Et2p46cjew@-bkG~ zC10+kPK~dBP46IP^-C7Q#q?>hd}g#(iaCfPQayVS{4GeA$+kvz|CQ5Y40I#_Es<7X z-5#}AGzHQ&(7fG7BCAv^8zruDrPHEx5i%sooU`Mdx)A`z$9q7~8D$Oas}k%iu^&&v z$oz~Lg+boR6mUlP0Wes6q4^7O`KO0ll?U4>I@In-clk77bv{YLg zFoVsMDZS9&xuo{zzs!nHIBZn~nPj%iF?7#u3@PJ}<=|!ZpMT<^onZodw}nFkjs|r& z5_T>9IHHR%<;wfIW68?16*!n^c%rf<9@XH+)(3q)-Bylc?pnivwuo1iG@X4X5(h4h zQEC`K?}+(Y!VpA4%wcmfS?i27bV=O%Ctm(E-{gS7bh$|hDLZJ?G1j@@Nb+x zqLZ43n)y-rACU9#;nwS}Y>4WZyqDi+=jX%00Dl-R)^%y3qStA|M%@+wk~S^3~;wp zQh+ZWd6zel{^R=6|K}-F{V%wpuxM%`!D5G>OU0?K89;s<9KqW{sV(LHvA{U^zqq0e z)`qRT+a>$tTN?Qxg^#|^hxx24p<;pZkjyAP{jAdV!t)#mOi*KW3eD`+952CV+x6%a zwkPu5K<2maJ%On71HMMI`~&vbMiO> z-RD}5Q4`O$J@V-*H=^i<*m~k>-;GH%c67a{3t*cW%bU#hL0XmFSXtnEx=^qWNAX1W z5kYZhCWMxOe~Kof-!U_DWNwMRrkLi z3E^n*RaU%a)Ga{EIjQv9lc^7(9iW1vNw^v4;fV(F;`$}#EwVk&u5_? z(SvMzyVoWTL0W>Mx*_fC6261AyQaISS;&QsLjSUsXq_}W@e|UVMH|+TjLh3$?-RltTs)gqp5H)|(McS^+ouU{&sAZQV_K5|k6()YAI8Zb^%W z361YM{Fzur2^<$tHM?sEH{v0=#~#NAywZ`&Mv&WcD~lSc}L3Fc*n2EjQ4H1V$fc!P#^-N`1gSpKqyi` z+lV6pLOqoK5%D$fO80l%jzxj#WAuKC7;4=oXcG;6b2>0V z4U!7bHVVY0H@+!f>JLs_MzvYU+J$#5Sk4^emcd@$`!qKO7cC~ zl}xhPCF1m&6m9K1-(7vXjGZzlDaD|=H#JkG0|hnRcB`zb_xD6wBW|TdGTS74FT|`? z+ZQhZ^iF{yqu-MYlV4ZH{5lnpd+aO= zcCoBtEdO@Z%s6b5)aJy0|GO_R4!kF!2HM#;$%o8agIBR(U?lO7#@L28n|EnK=Q#6iT^KaiH*^491YTCJ@!ff{)ZMk- z{J53hP_MnR+p%^2?nwf~L57)+iF)vG*~-}^d6LF=EmrOQ@@i#$3%d`+v7gG9(OKJ8 zeNJZ8sWhj2fo;REq$ab$k_)aCl~yZW1%EJL3(N54( zPaqG90YkWBx@Z#UJZ6wNkX=9$-9&xd%a+D8ZMZ<`_Pkv=W%pnjexCE@l9%g{BSZzc z2}yPaNPe&_{#X=7xXqE&C^UM3!}|Vu%4cSPqT6sqkqCk2_qxk|4L&N2M!(08S1;a! zqWA1_hMm(Y2T)ts2FYUN>bUTyv(2djuy!asbdcsu&=EfF_zJ4$);7%;xt?QyjgA&) zXBNutcr{k~smxC8w&6(5Whvs04#>8tGp+RfBdeb`;wqu!!@AgH=T2wDC0y45DVg5YM~`s0gk={uKQZ@W5cTTCjZ^Pm6p-8btNM^HR@%1I z&~0_v%oM9cjlgCzvncIxa@;0ZPpE#yLHuV0eKMI2C8HbBBU+bP;& z(IN6c>MB6A3AvJt;gQcVU;y@wX_#naHs=~bp0Wej*k30|0*G(>KZ)33fXabb^roA* zOworA^E4=|z|L(MCr@U4Da$V^%HKtfjJ{30Df#%}x6d3Yx^lJr3+A7+9bh@H-EB2_ zZo|8pj!Ti16F<{efRAw!4%b8SiIcl_T$SxVQB+AX`CKk>e&qayRq!1QCey+&>i1oy z(YP%6Orl{zpF8fnnv!3Xt(y`Gd5{8zgBihXGVx2=;JRo6Dy<$zD2TXgN%W|0U3W*N zng<$i6I_@9$HWvau5%};HU8@oc$LQW=^9S?nZx3J3(Gcj6Uag&#;t zs(`^MWYABY#K@u4vkI+>RHi|jf<`?K!@u$UkN+OWoJ&MOFi9UEqdEXWK)t^K-vbI7 z*7Jds4)x|rUMqHss3lyQ5j~Ct!3R$?btrF~R&CfYyyF(@U`M3kI?~utaVVnVjEc`w z1(PuV5rbIFeB>{ZKzlsK+L+{AHdPw${2|g!((-@$zG65^eY#{J*bp4fA9p+583v85 zOkm46Io&B;_IX&wdECPpgKc|x!!M|Pb{Ws4Xy<*M>pYh=G7;~?L8OU=RmE@_OJDoE z)ht3ZYWfy@zQ6yu&jwPmceBJ17Rbt#Ls%qm^`p36ULbJvGoOc{2Kju>XiGO%) zi_ek-1!tdy@!m)ZQLipHZo<_sjGj0fbYp_h}k~- zNWwpcA3e%Z2@aK0NLPlt#yRFb-KkM z5iWytZ3C9(`a38R(*~J>xY&3w(tLl7LX-v`d{Ei_V0-YOez5PIwt2Yq zMogr$7reRx<|;qRF=02t?ucsO)S)uQbG@@0?u#82y>2r@z!Y+9%NE5SGCi2duy=EcCO1k6C*dUWouC) z#YvbJ%X48ez-#F?1DSN;sk}3L@|;?>b{c5;A~C*rmlR>_(?EG3+q_ls5V55TJhca&44>tkJ< zMm2B+1|;5kpTIg=#T)1WW&BQ$(I>BBo?KP0w4I`+E^KSHqj~a!mfp}^>C0)MxH81` z$Ej5aDwOCtoPwTYkW3+9dl(f)xe`vO+Eto(3Ff`9 z>iZz^!WPjHxm6a4ES!ScM;Rt`$5jksV&Z~%YLXlm+0WzF!46@0dK=ZXuV$m|2CAxy zQVU3cg*~Si38;m>rnlJ=Ma~03`zy3_4pm{cs#_M}(n@S!dtpR6RCj%>vfisJvyLp8mpu#OikkAf^Y!58iZ7b-oRG|%WAy>GxjoiIQ~IC+ zU7@7K|Dh$2DWWW{?&u6)A4?XJ(5t*aU6s<41fu}j6kxtxT$~^X`h}mp3PVrrwWL#u z8Z0L1_?SMLc8ZCxgUc6T1#kcb5r_&{RmF`C!|^>zn2Sd!w#fl*+b3DnrwtI7Snn(Oev&9)FgYqDxMk*3G0*SN1P61ckUy#Ru(%lEWQa?f0 zQAvUZ*0nF|{H`-ebRe^oS*8E^mbnGQPQhT%Ett81tot9iJ(O=nW-pi4pGZD`D;Dm) zOr*u&jftx|mi53})z@mS$vTbi8J@yWm$)4OzA_CmOi~a(Yn%`zQ4a znxVExs3Sx=#9E(3Hpb$3ano(~r@#CRaHk11L}IOM5pg`T*N+Z`-PT0QE@CW1QAl;j zx<6}j9(b2Dp%BsfDY^(_yZmU;9LO(^fq608ijfcqg*uOGdxp}|r-c+6VzEUQai=-$ zuZaV@tEbvi>3V7(1{d2KjpK#Oe&|1h6oUI!vy7xSEu;$i!`ubR@k-O`=LpEHspb}c zT7n><=BV{pwlSVXpr5#AdX9#}cUa9dSIUu{8{Yl)cRa3a%*t?CQFk)fK^hD&>H+V2 zUYtKlHql;%7z;uAEJsTqW_4In-kf++dCl3z&u5~CW#qwZ^RXh&T$XY~uz_j4tEPM2hIzeG7nY9WE%fM@ z5F!Q&EJ)Adnee1@S=p7Mp}P%D%?$1LXc~rQ*7eoZ=3{vP(uSpOsdBPGf+K(eGa0%2 zCwIVK^ubOOxmI<0acRJ@(&qX~=$!`pmK8>J|GT zKLN@DEm~%`@(l|*VDeh|y~FwC%IoJdQws0b4L5S1hX>pAp9KP1(aQA=7jE)N%B_aT zG$kSBlJG?Mef;ie4 z@oHgCwe0-Wpelr22f(0bx1PLz84 zySJj(&+Dc7+FB@f^TPA#@`q+Ls|KuT=a#lu8>*gP@KyhOzn4jJUM|Gy%DDA#qM2qE z)@)|UL9dnZstGtaUfRBbtE+){#MiOagwv{Z z2tKJbN3RXBv}EZ@24Cm_1c5JK0A1sE)%^1#_Sn{X`C7ebxnTRVFE&r-0MB+{GI^`| zyRI)p;Z&oiUc~_E0N+z^D2Z7A>~GgUh!@W69-Ux`f=0t0yH+5IqeA*IfTr*|4!J87 zZ$7+z^`mq4-J^5u+Wl^`S5CQF-Dv{`wTJYyC#A*U)cF1Geal6wq-X+#Fgg^uNz;Ik z4^CAQ-u|RZHO7@6{e*w3=R4O9A2?MZG(TSx^WQ#ybm2#l*dRAs^vft)wB3v6T4T~+ z7|vxX<%)>~`RwvDd^n};-sK2ZC>HeHi0|siXkVHeAw%!0^62eQ{cka?oe5}kD?V8t z5ESNpa8UNkEoyqp+&|z_2IuSN@4tV&yrH*ut}pNYf9Z|M{YSHdC1lkkWfRt&f}ceU zpf<1Ac_N#cv7z6-=VN)dT+6Rj|GedT!@uwBdH-MspGp_^Z{0nqmteN;etIR_6>+cJ za6b&mMr{oP1keb{adK}1mUjdFoN{GL4e~{%Ban+xITDbxL5O;LC33USDOwp4*LdJW zXD|tPT`(n!cqlQ@{EIS3#%a)o(TK=8_;xXHcsvqaN|7u7!EB~GUu-gfXD@q`3#kkq$G|V+9ltJZE_Ewz3M|~7GrSDaQi!?>- z$ARz7s#&XhwIuM{o7nqoIu=R?=e=nzq@-_lNa8Py^YVqu2UgwCM|j!8;kp@Clw!OL z_XQW{#+CH1;zX9caQ%&Wfc2X;si`H^nmr2!jeOub7gz_zwJ+ zqDoh7$D!K{UP(63B-OhJKg|pBlX48u|phPk1c(znL*j>+SLI(A1J0xZvye= ztN>MRQf&4*Cd@er*3Trd!pvN*$gXCo6P-UX(*CJjeFo(lY7EV zgBNPexX*!iH-aaWm`Tt?wOz0)&R6?;04b(Ddmthy1hLm5j${e20%J?l{%Aa){a(Ze z+=B8FX=6-PC{ell%#k`A9&Aw42>t*9bqKiXQlyJ;_ayIx^!xjAJ-E8baEqqX>_!Fu zmL*uU5>X+RL1>5AJA_q&WJ*x%7egh7T7M&ZG63+6!@oW2G(!^XSOr!bLzL?SU#{=T z-I*z9tC{PW+{ko8loy?pzXfVrCg{32aAa<9@T7APCFKHUjx~3ijpOgt^&LF^v{OG6 z8h-Sbb%(~UYv3U}7UMw3i@YsfPG|B(i=kxrS}8W63(Yvi;Qg9UNkNks3rMO4avNya z6?Bzi`=!!YVGxH%F4%3{0N6A-BV+=@A~G-nVz>1ehO?n*`y&ad6lr8<0%}^L;$#Av z7m!Y7UrvgfG%4)fz^HelEQ3oB78(ei^D!d{O{|`8EM__lo&6?kiwf#Z0d)p5@bceOI!Wqs}e3 zauKmu7Hj>~%*s~XwqO)6L%%hB;r%TgfBCC9s{HUpL2rED`g}Qjr-ki#8ix&Vd|vfZvkHjge(t>qkp&NvZ0j?X7g&Sv9zj2z{dTW9lG zX(m~e2N|qgzCaf0U^jzKY=iusYy=ZbW^f}Ob%QjD2e;WMNCOQ!*tiqV_2$z;4%{5| zjGVK?aAY=-C$WAGc^}NWd|VxHQXRch4Er#4F`TD7S+Ta;x1fe?Ufe@hFOUkF#UVVM z{D|2pR1dg+6IMSiTmTOTcd1QyEtB3Aly*vWFfo1bvO@4pA zOsGC?4>50`qZALG1hF`RcRW+vh{9>8ARV!l!uDPDhc5K}PptH*KI3k~)wo9-`OtogO}fLi4YGO+pDHG$9j(K2QJ6`rBU#BcE+FdNCh%4f3osr>E?lAb0FQWAhbo8a!v{2{0F_e$N zhEwPawrw&)Q9kpPLaHt4=<3K|-EKlbLcWF^)zCYkFVJSTB^C~`;aI&{VAf)RSHE}4 zP%7>mAp`-vW%$o@)-4RuO;>#U!@#KA6U?L@X%A_*v0i5@f)F5rbr8rah7(zN&y;L0p$^Ki^M zTdLpHF`z*;EIRbr}u_B3x#pV?_9q zNc#|#ICvOhpomB&Mx`#G@Dgjducx zE(!)Q7$rvDR|O^F+&qQgy%Ayt4mBr08j(Ui_zTDtsGa+Hi>XU$F(%V)ut(zB#~de&rVRGm&p=^_ zSPJRopaE7Q$QQBY0iusDm8BsP@+&c9i^%0jn0(|l&{ejTC=^5_(TJpQg%yNa$&vH1DpRzTI{6rRRq-R9KF|1LPs1kJ{WE#)?8uz}4B zI2VYtZBSrX&gx`B2*H1Gu*}zuT|J+k6D>|}TZfBf4`ffoJ!8^9wit0+!A1ti#0)2v zW%#xZdMX{K^yLd7cO*>nk9An5c!Kj9fsk66Ay)W%V16BV$yfqPToPfWao2(Lb;Clv zApZ^Fo)`w#?yZfmaEcdKfz)X%v*!w&YW9b5eJAv{%dC<@k|G_ zZ&M?D(CLi;CHM>vyXFhqiC%Nqt_d!_7vvL~0`?+N7>+D_Bt21j*92VRt9|UiN$j{< z^Rxq}tA~@Md6dW1k8+%7y8q0>eet^8Y;gGqyZUe68J_??hcR=oQ!erRmejxI*Zmr< zoB9cHV$ee+k*aCUj37`iVfzi1`M$$n5)_Ws6_weP=IW@Kfu9ImL^GkY>C*$#zt9kAd=Wfqg)Vc3{-ic~5rdAQP%~>txHO+hHN&TmxS51C0MH4V6zyG7wz8n@L`*jwE%iy8xawp zC!l{Ej@ennMhS6;REakDM=(1+V<(UGd4!eXMLo8KM+{b%!5nE0Xde|xIB*@zh?Zkt zxK%)dmRm$1Rs#7Q2v*K|y73qSHa*l9N(nCk*&vb%%ccPkv9@iD@^N`gbS`9}lG_1;zb^`b3I zrKpa#gJ_W`9=DPZif=wc4}J{d!YCx4vR4&#_QuU6Uo=u)N@TC=jao|P z_2sl#z)GB|-{7rmJxR{9+`OEI{g(bbH5)(!dOV|N&@IioS-AKK>I=q=4u;iQ{rUBb zzhPSINS*O#=XYIKjoFen^v0g-%f+y;^t{o{M2X#xW?fR9R{97)dQpWDO?o?I9^Hx> zi*Dyd4_*WsGygVv;^(UZ;Soy~fm*>OltRjRt?d7()?^75D-S-BKtjuZt&nZVrkD9o zX=P_JJP^3rxCcak-N4jVBt|GU)PX|IgeIQ0TG)q;xb-KnPaQAGwPHE& zR(=G9ro&CscZ1O`3}FYbhx>&Tp;fhIA6zZ#f&rCaic$>bp@1hUV2U?Fw&3)rtG1>$ zNT!E^f)GtoCo?Oc!`fJllj{-zSj-5V)i5+NZTiY_9YVyXw~+Frp&Gy+Cl)=}4}xuY z*^r+k@IZBTn8QB3Zq+Qp-K>&41eP$@V_)-npO-{o$+_&<@@Rh0`9HnSf3Ee0Zg*k9u>jL8op-P7K63EfYVEuk!`*%urkJ z&RM@jhBUB``XSCZg-deOn8Flvhg5$Cq7gavc0e$fS90C{JYR{LZPFSn1oP5!=iW0~ zgSL%ihlh`YIh)Sw* z5Jja+irYofrR!oz%U6bHL0|>P9N82;`ql={oZ&5!Pd+Tx$m!E)@`b4;CdffI_muqP z!^TDs!7^mCTkR1y+_%FeRaM?<1HW2ZDjU7(!$=ScEy`$6oR67zt7lom|^WTWo^^ujUo#X$Q{PR^2JuR={hbC!$ko z1t~AvD06W*ag9+cLU1s-34F|BCC^l*S(U0UFx{EV?*CtBKk^9$!R>Tr=1(oxrrc9~ z00qOU?OR3WDvXkAK7;wdZJ9_BlqYi-;U?Ffv*|mPM_k{dq<>QhGKiLq1_B%Um);Sq zaZc@?goKum_DT?J5s;6*7Ix!IHasvDNW~T5+SRo{Jw$VSK5do?REJJ!r=lSmMT_bbV6IqXak zr3blrn8c@k_{TH3MaAdHCv7_b4-maurr-@ZK=v-@G=vO>I?As9Xr@gbNJ z+2#0`#AVpsJ$d_f%&v!xCw&?NYz|cwvCi+g^q8JzLh?3zBQSfEsV_7e)K=_b4R{m2 zix~2^aX02YId=a$y8>J&qGW4RualVgzOm(x#qz)kj-`2mjuMzp7zZrS3l`U?k@U5l!AjWbyWi12h2gKNzDroOTFz8{99<%ye=!3 z7jXlh$ZjiRIxwu)WAvtl-_~n>4vF&swrM+ZG{~K;KYmBLd3ZqeAesg<2h!jRkgrcj zd4!YM0j-c-Tm=O1rbf9(bwIFPZvZuV!l%Q)R+Y32WJtj28Tf~Ks`Q%a73e(e=DC1g zahZomXBr=!z+Cbu=kiTPTaOZdG<0Cg!(dJ8bxSq90UU0@u-qi9TE`nQVm+wD5^o%KEn$ZLmoa7fQtJqW|Jh4A4-}q@vIa$jjPrT`W zyeA0Yo@YVK2j98a=x-6O%{_6q`@-gaw_&hyXIl@n=`iaMnyY|cK@6}J=zS=T;z(*A zFf)Cg;PK#T_v^-S%NfcCk6yrL^np9TylO_T-UhtzR`T>|kx{o>-mo+>c-H}-d^r&3 zR%LrixYl(7glH}zE?PL9)=2F}t_1DN!@U_rB4)maQ%6#*K7!ytSgDrX|oaR`t2 za2;f~()nl(=T!QVeERs{FPIW$JXw%rhM{6C)B=M*ouyF3wP?tWO3d|zKnmrE1f3Tn zHJ5Q@LsA(&6~mzv2*kff{|B1%jf5uCAcV?UqFJg*qOOaf6mED;p`Gsvt;^ELr|HxA zCtxU9pDd^hmD(4~hFYYO(C~QnT)L2$vF0;M;gaXlPKm@FJsTadOaG4VY$e?7@PDWH8Z}0|L90*MM zyYF&71D{j;u7Aq&XoInyFbI^lRWuZ8syhPnjucLsmicElCGh+t9@Rw&NKlyNy1GD7 z?d~D_7>}HxgDrJ3Nw{$!n&5Lb%qe9N%YpdnWKG%X9Um)jQ#jBVu()1!`u!ol{BwUO zFGkYRjj};t4TiM|(```K=v=0dty(iuWr%Gqy`yuNRr@1-97G2~ z+7ect+DdbtLJs)~Pre;?&|)YH3^VKqY)b+O<|Wq@JdHf*9(k?~teG7gv&6(le>prk z0rgM$+8TDcO)~!q%ZQ8DrLKon8k-~wh-cHz8kg(O_S|kbvYijogWmNH_b9`pa!Y_R zUlHVUx*iShEzE@yYvRXuw1#$_ujROSDFZh^yY(x``Z>D-RF@?6h`eY&_nuso^d8|afsYiLDjk>woG32}wqHwYM3 z;Uf@w^;_;6&2?mIve{FbdeXsUdcTMK)eS+WJXL@S1jfaV|tNkvyGg@wt+)PF?QeLO4U`UgnO# z_S^7SFvVRhmYKtm&ZU3uKSJniSgJF=;wqAbEPVPEF`d&_#eq7*TyF(Dv}Ydj65N6S ze>)9q3skH6O-aoI#fTYgLkqagyI?|Tz@fER@FzHDdg#u#IOVO&PrGJ>pu(6^s#B# ze^e+wm6p%l&u2!kMRt3t1RGBIrCCBl~DL@#348RKs?Hdf|a7)CqKx82t)KE)7!^}FPb803+`NM76dZv&S_qe4|j2F=>XtBKuAHs_1B8=zJ{g25t&NZ;X9Eqmyj+;DB2@UA za$e;)@73z~acrZjy`H2l12`B3OM|SQxKVSYqxfA!1i}^;UTG8&PuklD7xN54OgDSdnye(V-!LD@!QcE z|IVlYOSll*{zqd8?hgHEnsshJ(#6FQ} zG=Q-$32y1Ma>Ekb73?0~7N$1i3R@&Vg5_@o$+2L+C z1~d!~GwKQqYUd1aYeNRxxCJs7jTZv}z`m$a%B7?mUKu<22(P|JoU;E1D4y1~WS997 zFiw^fi7+7mV~NXmbxy;7xQ20^3RxpifZJIa^%qe2PmG_ zwq%Ma!pPc;05 zS5&Z?0%L-$XU#}rCt+jys_}|9`1lJSqzIw4A-)XVROOWU1 zHl&B!!|~w2hJT{Xs9)?9ZA8QBby4Le+)B6`YXFCdX3`=BsogE3ARi~{-toCaE+%TR zQx@ovI^0PUbuKSJf64_9*2v6Q=?hU69Yf37KGDv>OuvRw;Dfv|RJ_x@OW-OONHM#?{Q?uqtj$ ztOd|DJ$-Q_WKo`cDo7&P>X1CD&4`f#C9hMirm`6$t+s4W;+A|vl9dTIF!$wMXk3`a z%iH5Im1}n+XkgC8oYC;`w~*)c9{o6l3<=RDWh-Y zLO7J@uo*ojl#9dgRD5-vy3by{(DLzSk6nik#UV6W30G-5;!$g~lVcA2#v<@|rh_zf z8gNBVKYa>CZ!82~^l~aqG3%r3MB?#UFsiM7GwsUhd^}sihZ>-(O*_&~D|w}}qG26( z)6y`TSP^5K zY}FRWD%VL8&U(7TjyC})&I!Aw+~sCQr-1_Ms~ADG7nRYajA7*2{2Gnu_OyBM;=*`-zL!^DX8kMP=9Xwn+H)roQ_jnuohR9;w|!Kdbd zPVj)dSqs8BBD8HzMTkO8cm2+w#~DC+r;Fk)j!nJQ9Hyx^L?lff5FbtHk7rBd#nU@Z z<0)nFA3rXxby_0{o|tt~!R<-thi$O(!EkYWVlRf>>q6HfCELLeF6A=hh%6~?Wt%Vs zS4FY5IQT}96naR#pbYh0pkWG7tE9UBJ)4+OsTEhs`_GX5ti>O(8& zL=qLIjfHk;VA%h9+oCo5vTZ?4wx4B?g*?$D+_@f@k8}%=fn;u2jDCHH`9~ieFWGHx zYTg|*9)D{oU^9*2jVu9$px{5{E=Mh*>|2}(HQ~JzL%SSr_j?zIjBg%V_Wbz$uN^PO zy}RDOOKk@vaIN4-PyDKq$#bU!vUO0!8Jm|J`27@8|H zX&eDg-f3~Gh^o(G-zWqk#7u_bixac1_Or2D3)qdO`^*VQ!zYI5>#4nIOchP^xs!%q zFo6zQZm2;OXzwXMu)^~Ly{s19+urk3rS=~N++BqPrA^;Qh)=U>k&~qJ&T4%_5)oQ^+LJmZuA)CNW2A{2G;x-dUG)WrsC^36 zz2hw9njgv2ke(h+`m)@upQlHutW)96=iL- zysK#~FKAOSJqkuz*>oXPES-l|b`7;&8~{saDMN2?K6z3L!R_aLc4Kt$dQtkZnVs7D z@bfcs)~_l|((#<1oF1l-fJS>{JW#$h%XG=Z=RU*lqq(#>Lu?0|x_Oz0`?A~&{qRS$ zOzneW!v_1sRuT9i6vdW6OZQIE4_g6%CsfrTkVN%JXIK3ufO**QmdQOqO~40}F(i@2 z-6>NWdQephK<(kUbvpaaL#G32ygS8s5%7fbAAXkYa8!8Ir15f)w=@K#w3bvy1Da7e zDO=kMv?X+1cp9%qsb4nH4I5s!Y|ndMqA>t#MANi*SaPjV{YF%xx~);0>=gF7&wZkO z_D4Vd_1Vjd`Fz}>id#to{!S8oeDnHEpL=}qTz#Am6Bk$WW9yI#`C&v=#R@Bkc&x~L zgs?RN%k-3e*7{(A97OA^Hc0j{d7b6vKRPom9y9Q5U*&yCqsh6fa`|y#pHGTXYiG<_ zBfnW4@6bOO4#tL+*jObTOY9|hiPz0iYgOcm9_*?vj-b;@!)0*4JbxQa17#8@qs&S^ zj|LQRpi>F2^8!EG68eAncTppEC)*MLCrj?}II@+vvLPjrH7^{gXDzg z@XEQLueoJ_MC^No4-I1=%0jhuC=6I0U2q`8T1@|Phi*ajr4BBm+?VH6Ir&i zY6|HpEsi9maqjCTLIm$XVO1m5+^E5Lg4+IU+#f-l1#Eh_T*lZCq4u*dQVtS1Dt3I= zCfSAo&-3_;)ud6ZSt1C>0ei zQ+BadN)Y7&I&>y*h;WEanT?n*mz_yP+6z#bARRy_LYI_jw&qKUn#&RpyTe{Lwv|+_ z#p{!M(cc1w3s;e0yM=#e%`BQ}adlPvQ^s_6GnLpdQ45nl##W>&5M+>vlW!2Z=&wq! zUPO8|@L*>r;h^Gn`hR_fexm;bMQ?=b zkw}Q{#KFFXe<*VrRn%^vX-S($hg^f)K{FC_!rCGgA@H1Q7dlKsDBA$>L@8dOt0M+e zz&DCN8wP>FU|gV-7v6}Sw_+mk#&YO2O|?&)#7m;Kws~dkb|d>_#Qg7Kr(CE@>;HEC zdK4zA=Itqm&BduUIH28Brpk~A+vuJ5rhZWpD1yEMjvo21$0nnBS5`m1E?q23s$$Xj z?k;{SwZ7-Fw-$L^A3n#MhDGjFZNWl{p$&LLL}YLaG|tyzm>P`ag`O9&Xi7_i*Z8e| zo_GQr^qIf`Qy`j)O zs+B+yfKBJeja_c23K%T0Y`U&G>MrToUNEeXP#dt*J;w^03NHq3jSWrp+%32t>>258 zHphzgp?^r;=g}II3ncSXn zU&dLx)-5cD6LQnbr8(!UT7#C~8(X-Dc5_yQ{i~Z=H#jZ!u9pj>}ehqq3PK~d`PZ<|4JRK@5hUF zZR{|*&l&iYz@EIzb^nb&eOPNf%T{OweKr)wUP|<_=X@x_>k~#{siLTOoD$gR^Ui$M z<9(4t-=pyv@xs#O^oa7+7WMrb9+k!gekhHryGmGbFr8xx2b0LNtCwd|RBV zo^6RMnCWJ|G-~_K&c2N`)C^hgXP`XW8K?L8y^X{UUA&|iB+MXDNk+}PiEs@tw`GzI zj&Y0Fo?c5NWGbrdEU0)1pFZjBet#EVscC&TClm!~5ma35h^6gwInm0^SC(Aj2FipT zeNQ3fLiVVt#qNfr(rWKPdy=M*Q>!|OR1)@(bW*qsEcX zQUwM|X&IKK7*A2|+Rmf~TiR>RE!;{)MpJVRcew19<6sLauark_;_fc|+Ur;3K@b?n&wPISSq}S&!T?N3L|tT&jWh9Fd{Y^G z^l2s_doQlJnZYUxU!osu>m3YBf~nUkfk$iymk79}Z5R);f{lCpT3LgEL0hZgEDfyo zc2;8Vd1qOTwpZ#G7xB2(ALMkQv zv0Nk3pt7enF^Ih2^$2kkr5q*DcW4s<$QUOw)dIExAtS& z#Y2ZaU5Lq?^y+pwpM)#A#ZG=u6%VBpbT?gR@VR~X+E{=&j$fXO`6|Fy85(|jNe!oS zGx*p7QG7NzPhL#`C<+3rw9;@D8*SyFlU$}tB}!2`%t$4XcKAPW9)(;qQ@8!)K@d`v z7U2zll*kXq;RDFq=3vI^q5QZh@S!sYWz-bs08+UX5#Hh{x*@Ae!533>aAN_0VJtM} z6cJ@nH5~VPL$|Osfo4hnX11HLsoAHl^|#wfnH+4+X%AeqWVZ8pXtHcy z%aXM#GHM~N{XKPDC0bT*pPTYJ_3E_p;8L8jDIuTX{O&_EM<9|W=3ZFE0I6<#Y{^*3 zkdO!_vtyp=>5&2IPKeP@ICQt^4t`$?wgAq7oQ_ze{m4(?x9dN(F^PPyvtYi=mB-6V zF27Z^A!=zJ>u-siIOhujWQ>J4M}K0RUWo=)229_Ril&Lq_h$ ziPf&dq}tFoGv$#Zt#`{3aUr39yAyg22)^X|?A;MglbCPZtD*7 zq!52p4nf}dZSI%LyDk{;txzy^Vm4h(Kh+yJ`u)9wGtPsO;>m!3PRW-r@sxhV@t-?e zb=QaK`C}zc1HoXUL=^&$vfo&BnS8_|H`C?#@wq@eK-UZ}_(Qb<3iR#e+ z-XJ5l;`91>)1v&q{~B0XHE`1gOb~-hM2V-qvW&G&K-65ljZp0-Z3|9EB3n_73uvewUv#X9R)0J0mMwes^h6?y8-*HQaK}xMM z)7Kr`E=%&%PE!(0Mtu=oc^$Me5?v)S-C=Q1mWZwB`uzb`^bp3s6uycc4}2kB3({JT(zUC|dMa=x)vZgM)qau!}5m09-FtQO6DMBhhBH15;?m?(jl! zz7)X|%P`vtE@@NK@(sn2NHf{KrROkL{%}2JAeYD!^>Zb7e)}y?3z4BB>(I_w?7(MR z149#%gP|umX8EmQ7uSxRV)qjon4JuFNseJnmml&*kGIwTsqSPqr_-1}WNFeT&3qbI zpPr^q;A!t~X{BRuI^}aZUl2F~IlAUR@A!2(8wpI2{PX_$tv}8i^1teDx#{7HT!iyI zulp(AWZ*62=yvfJ8>OlqRn_jK9L>d_jqIiS1cSN$Rqvj?Xb-=zAg%umeEB8zf|}cu zRQ-(0qI%jaHRnR-oU;LbW4z#}FV=r(jMpy$dh`yM20{~)Xl5Z!^J+~0M05S~^A~y~ z1TtlW5zs@=(-i+)apg1 zs>2vxTd3K*#gT|n_$py)%D=Dym>KTKRbA+DD-{jHy4cj{$_B}FHq&7r4}$XZSj6$G zId@{>jXxik^pWd{uYN$|fB*5S7tZkS`}oL}Cx4~(X3~|fOqQPgE#ClaKgIS{ecvt& zUD&>GxA6Q~fA;yVwg>lw=YgWyC-0>8R@J`r{>g7oAA~Q30XDr+)=ln9ggAH&jLB|v zlCY{Kc7foO4XngRdynDNM1FGv*VclKVXqyhO$F^^Nt^u(%AEhI41jYNI35{-E@z^4 zpacy$yH+KwzClqpzV9WGK2RO|Y^+!4_4VA*U_o!==;aIC<^*N1`o$cq)|e4HR7T0O zML`KTYKPCe(c~y}mMqfD9C`1D|6mhjJ%379(m%DJ9K!of<`m2#bB5)pd1CUbZ{(Vv zS{_u^6X^fIhj%idJ2`t_IH-m2R#Sg(H8Y*8oSGh+9D8?XpCd{uDfk6wG8vn}R#?Gv zs8F_kOKQOnLoI=3xz|yVAU<~CVh|6Wc|Yvl3GM&KQKn?a3%R|tAQS!ViCO|VEcXJp02 z!@Ra3O=vqdfCJCq1G_TFCzAIHtOOP;{PTan0o6pMbJ#F14^`BW`Mk}Za6B2r7prlz zoXhn*c0n%jsxw5tl$*SpbFL;kBEgyZ0JPbLnciq-j;T zXgF}3nu{z&pKX@^Vmyy_#}9?e0Jr;xovnk#3`8JnmX$VZbJCcW!+O5Jt9TWZ$4sd` zETck&<8e|%g<%wltyo!H-X%(h{Ti`2$LKh_^N{hIPz;>m5qG&1+{8`RXY)__=)nV$ z5#G!Te;{YAisD!8+wBXnPw|vKi9AfA3wXqutGM?d={S%+KEc>H-Uu%LbT|@G1h{^| z{hRvF8FjoJ5_c`9kM8c5g3Et~iH0AT4BlF6B>j&RWh$4cI-!13M_A??5xY-5PqGS- z$kvx7h-WW+yQS5{2v0L}%GH1kC&}8v|1_sqfZf|(%sK}=!8(pcMEU%@iD($P`YyC$ z05|a_^x4Sdsd_I6UuibcGhYEsME1g2U~X*JH8>0^1(#(fc7*q?K~I6)=N&+Bsvfw4 zy9dOSQ*hNvg+r(7<7!wi^xfJim;MAdm7KXse`>>bO@IkD^`_q!kT&XK!{|D|Q{Oo?ALHNnFzflc2qi=jiDJ@UPKtqhS$f?G~-UGHO9}H;fD{8v!`MRhFxPi?0l? zr9Efa(<$n>fIjV3_x*IyV~in@Evuov`zSA``@ zIbD6CX{_|ROpC8G(w|_UM}7f>hvsiO{!IWsP?3&EI~GeLMNn4@l}j8h8J;1)C`kAy z%BvV2tUiY5$^;G(I%$>DI90Ze%E95}ez>0^pt z(l$w|vzZeYVIe7_c3uT0?-<;k)a0of&v30E{?iCs4M z(;uY}aDZzT^{y>OyXDYD6o4A#L4DupgH%i^J}AMR?xNyKK?-02giyW=)9)R3=v8irWXTZEN}cqM@(0&YV=;A@hsk1{1%q zso(8#v8JQHXO$*g?t5;B0(K8AhHLf8e8=7G5<&t( zi(2j3(YO5icmi*WNzX&`z2}}vT>TU}D(WP}Rdk2;wPSZ?2iHWXAYFO==O+_?$`%bA zSUFk0J$Mi0jN3a@{O53f9_*MH=e|WNM~iBonWR7d3LmfAC9+q8PoT2ZY|p2gJM3yw zxn2qdoPQbBBqFYq`G(ez9Sl1k5H1HC0$Kaz3#F68gahtroWJ2=&Ma* zM^PPdIo~RNILs6|{1{S?YDX%Kp9%&jFJ0@#Onlyi3Uy|hmuAo?XM>xv@JrClk)g8% zb*S8|N@T)u((r+MLWr`hOvY$905^`4$aj?9lUBG6jzl#?;e<)s^mBDg|I<&H+Oo+} z*7wG~PgR-YKsO$8rxls!-mLr*`K{?L*H#}4M$s;1prxDq45UaAQb`%|@X46H0Bn7u zo8Z?Rp=5=xOfsVOS`K49TlO!2aNMYc?9*FI&>!~!)$2`xCS0v%9}dUZf`eV6&A{2C z9@{BrP1jDv@kn495O+e(1LUdDtbr%G5Gppyq^9(nK^ug54Rju{jz!eDaxd!LdGeTd z;E6#0PuFLFm;psX3^a2^p5of@9|FT9b}YG95HgJ%$~@=I5qtOt^Jn4VBNg+97&eFY zQh#Q^aHT)@!n<M*=ZW(~PP?g5V znFHRy*I}h`pnL*R_qL{NUeQKScLt?yetT`G7@s?9F?K1pKOkMn>_67WV6$tFR?dAN z9uAy~&LiB+G3x(N^43|2c~=fL>&Yvy*^y+D$b9tG#vnX?V!Hi9Y@QeAb86l@cjhQ~ zspIFTkSRNStnPjft9onOz*t`kzX|JoVK0Jws(KTczUn_0FkJCx6?`Bk+(sP?T`=yQ zP|Nmvr4wXNY}Y{Offr`ZLLa-Z9syQ1Dv`1BY9|97d8i%tc=$Bw^(vN00f3lvLtG(A zcC))t#;ZBmBUKE1inyIB$5Xa(jyVRH6P!lG5a5h}Mcv-|2Qm>5qe0mreD`yz`iSdW z(TDlmt4@d0x!bWy?7}_Qf1a&8&pg=T1fnoM{C)p&6tXg@zEYM1-yAXHj-zqHbjzd` zaA=8{MDIp3amYZjq#l#a05RqHfyn}e6m`$^@%a@(EqXpifX(=6xJKaB&#Al~OZol? zk~Tt^j9AP~E*6?)(DNG?`!?*w317EI*?_rc;DhvfVzJTT06qMmKGunAc=TCwv3;Q^ z^mRktIbTZIA9hkC+G_!M8j0dS3nCxx{*C1~_NLQ{O zKV+kp5u5+-4lur4W^r8M@+*)w@mU%54%)H<5lXKBCMmF`2999f@}6FP3k`sgNt`Z3 z#m`m;3|B%a$EUH9dPFp2JVG5YD1U|#UMYa8U;7GaY!&uCd}SQ%Omcl&`?Dd5-_i+6 zqb~^Y$$>MMKFnZp)QG>K;jG*LGwqjkpMWo~IXo8TcIc3B8(bjCp_JUlwcobz9L3zl-hD`^lG zg4bK6EIiP#?4hxu1Ksp50-|uNBTAPCp|RV08C}`1JBdoiA=TVCfn3c4(4{z_C|$F; z8y(4Er-^+|Hs|q-CdwIharbE2k(y{+c(-B11{6~SnH>A!YzRSyx#!Y|9=VOjSJ8*e zyJzpm0_4y|4{}NK4sL7g&DXlXb4+p^H=aNsBU=N1u^|1)c=u-)M-Th(=SOxA%IwxQ zb#uF6`f0d)^}q&pJC{$1Xd?RVS2XH>uh1vatB~@gqVo<1ZKCg$0om9B!7n;b-1)wa zA0w4l%|;#ME#_!==9bmcJRPM3rcGy+V7hFTOJBJr<#<-^Lm_n&wx5(K`_d|=p*C>s zIgsQ@m_p`Jpd043@dt6>;S~)&9`-D5xB{9y&w@J(XRe<-WTIUzd!Z2|`P?Pr_}Fcm zOSp%B0Xblcb#O*!@`da4LN(MGLt+~8;fg5PIYtg!^CApWi7HSnr7neNOJ?p!Dkn?o z#&$3poh{_6j~nkNoxpP3cjmdscWZ|j{LgmO|Ed{TB)d|@s)%L-uJiiqm3JW$;|l_x z3xrnZe7i>)n7Di*1@}<0?t+zN+r+Ee8SJ4ZzFb_5(q)?P-TDCUuVIkZ+Ou*K-bZ{e zbQJB#;I|^N)WJSfVC!eajjS$7=ACen=L}xExwZ-Jt&3-3`YhHFn-VZ-JZm2vcJ)H9 zJPi5J7p9aA#E8IBhc8P1kRC?V8_hX(^n%wy-SkjW6bmsf zahcflEzTb9s!sJ@8#rbEOv~&)*B4YQ*&;6H?6aXYV2^m4vs6!QXS>wwiPd51YWfOS zB2`8>$F1JU0F7i)QXQ_svjRiBF{xbrc;a`J3MX^qe*PDU%c^oJN4zfDOg*^QwN#tD=@Q-}5i4b9u-90ag6ewDoAnZodn2z7(J1PgAANeD zx#Piu`K#YMlMIEh66o%eHRUG=b^w~LED54?j{kWX-NWr)iSJ#0nDH75lLS7J*wf{} zl7QCUr^I+PFOVu8>Ugw9M9edr^Ta14;ZH1F?OJr62k%B7`S`WqM-zeu2>UxnrrNjR z8V;Lbm&g`3a#)k9b&Q@d?si6|Znrg;Dq(I2dIm~@rNltlEHFocA5z(|R==Vquh(QH z4lT3*zoT(1rE$qfA-^O}BkRgz>1xg0Y2hS_IoT~S?ETvz?iwfS;zvJJX)EE5o>y`$ zojP=?PPIl6pmiz&?(1gtzXxNT!zp?0_NJw4GS6oVvr$8i`dm)m7%VJxm;Sh&#+1D+w$hgKcmaRpi~4-xFJ2<4 zO!5fyVs#Zf6Qr)c^L6`tf#3NM%vX`xRV)ALb?Z;BTHswo@OpPf1&iv#W$#6C;VD{* z`#Ezhx<1)ml}hyr5bAbbCmX|^aU;e>AT_i&r|)Mk#M!0DjqHT1Td5hcRkKKcM*rL4 ziq%4EXezp%@7PuQ8m_7eEbZRk!Trs8^ISmd*{ohyvs%dMhATqr%Wb?;M`d{P&?E6S z?rr;!r{|^Du;!C&wL>fGD^>Xk+B3TL?KZH6i2lNaqE3v?+q*_j?UQuQM#{|OhZ0xL zzVd(!<`pt5vg}9^n?9`Vd^Ey7@AIR1{er!tSsZSt32-@qaw^Eo$l{1kdAl=8FT~Wf zBLOgaepCEIX79XmA}dmF)CWUY0_D!f>WDPZ*zVcD5L2+bBXD{-xgqmz#GiU z3#ruZHMr#bXRq#}yFT$4^^yH$sSqN%^62nkWU#tJ-#JMMj!wed8lPwir0&WPnK{puQu;Kj>b2`7rUd8>S za{6+DNh_XpYQJmlW=@?7D3xtXQ5iy}6y05Ae!I_bv49YsPeU#T90qlnJNj7hN7cC? z4!{C@z6_B>M#$~ZNSp%2%O7r-bQ$PbNE4OQNYN4TP8J#>_+5Q=_eRnLV;`|JRUB@w z?g4ijNgx`rA9a4n4E7S=R7^FarRs73M$C)wY=y?a>xh>xm#B(P$Ux6YUeyC*IQ?C{ zyqg@NO{}_|0TgTXE=Z4-92y~ulL|8HSKyWK((i|=HAG}UwIuELFlf19<-QByRDB~r zvMD)Xzgc(Y%zjC>ul&@!4A@B~GK1I>iue*~xFK2!8`=(X$QC8&c-jOG5+MHzkpIDT z1hxLszrapZ;=)Fgjp6MV z2T6?-iWS#DN#~k6u*n3(vbj|Bo{z%ibnK@?51_eBm(bK2ZkbMC*=74McsLQ#<)+e1 zHEUs8cYe_F_3e>gKQxqewK_TdDwC$!_C&xasPAk;E7cW-F00nCxyW3pxP3(9?s6EbP~j@M9b~z^Y2>nmTY|{E zI_uA8#r_=)dnKnjBK}aXhBe;ZG`J>j&mZ`oHT>?{_=9}Lf5rXV#=i5L1g@z-4Qrxl z_k;<1n*LyzR-2wj=0)?BoH_?NzP1@oUbB8ScfpyLPvMc5_x7|)UtV*yA}=!Xx#|7K zoO}6qaq{g?J4c75+Yh}p62+X3VWU71!W&7Hl(?oO)(v*a!cLi~wcZad+p{@!PZjSE zHAf=Bw~2fzMranO;-a+$=l;UZ4BN@B+(T$=|GzOal!(bM46uD)G zAobl={;WOJ-SVCusDiA9l#@d?8i-2Um33^Eu3}^1;;l^It_{Fc1;fA zah02AbU(Uj=HfDuc6?9H{i?zh29ctIR}hM1dPp}RJO+_1AxlCO&Me2+b7mLhT0C}| zOB?wSPW9--?e?wh_ZNv@nS_V65Ifgp`9wn5+1YWdv*+9{-kNZ!&`&_)Z0&y|j-t_A zF1MSvB;3l|qfLl1|b-{ zlNt29`uFgh`vuQn@K8XI&jCadwd=d=I@E9oc+&oW)3LFi*J?XD`2FkJE4}y5dn(E| zgu{%^+~ZbR?c;y^O!_TAat+AijlW8gN$*xHGJ0fTe>x{yutN_&3e`ZITVm zyn_$_;LY;mV5xBzm_5VhK57&W=9&qkZ9$N5FA_b5=ofxHqSyWcEI#n^sbna|F zq9j~8c4(!22|h-h9`+C0xW5c?lmv?JeYE)z@;c#RcqK+@&5M#j4EeJ6f8OJ8CnmiI zJE{hz;-Eb9)RN$$p;Fr^V1eDj>@WSqDyJr?VOIPyKefs?oV>WCuizdVUH|4Yh@jb} zwi$dfEm#zUW)#562CON2D7tgvD#$cgyw4cEEZcBE-wV5v1^vbI6`;irBcQ9r7#)Gn z>6d?MFH6mVnr!BsA!&YSn)Xpv42<2C@@>|{aKqHnsL{JYMclsOqUp9u12mQj_BcK2$EMA7g3Pm7NU|A=5USGYkHZj%*goI8{=Ef z?mYg8jF+@}#wsG++c;<&UAQaFQAF^?;k&rBy4O}I0|WP*Vg=hw{eA1I-J3%H_LTeX z5NS9$yi!J-<9nmR%4rHpv?iP{9NeSJy>eI;)FxZj6XxMp&;S&!Z3T^KlUY|xiM6jQ zoWhyNN1)VB^?>7}X`?58&0f;~NrA#k%g+a-EWR{4Q2H0ZcIOj!L52hPe1^*7bwB@H zjNO=qHrr3|wcwrfAdwhds)>TdHE!Sb^aRxLhD-D;mU3Gy#GtbFCLz?rcrHc9h5x<` z3G}L(oe4vIm-be)5^>reFo&xJt>UG#1ANzV>NS2#gN@|r@o(6@u=csu@X@2+*ardR z)HJKMHgUE8xA?z$e5NAsSFh6E9zo+_oLC9vEB!`M@M4%qT2|{Wz9?pyyt3P%gygh( zn{Fi)aA`ai8LC0vwiBu;Y1ZZ8W!cr|II^YveoM6d3aZ&Gr5o zgG)GDz%wG3(9?o^yZ-q4v+aWkI5Km*$#b(qBpX#T*z6(x%qM}J8J%Qz44)r7ks-*cmU4M%!6;UN#> z3@iJHNogym2#I50eJ8R2yX5CvK7NR`wC}e17TMWINdP?F+-5tpxXgd@S9O%vEWq$e zHQM8L!-?}K4ifvS426~fz&g$JBb&z5U^)4GjV4IIA&(CR4W>--VFOBG`=;MSpp;arTTKZN7h}%@I<6v0LA_-JA4nnH z)+R3pTc>kw8@uXJ_8P-VC-(g~4vJZW5CcQaci5IY>-v`dOwnFxds$dd*su@iE$!`? zO$ip*wqFF^Dfuh8)ZX;`%&$@9m<5#uJjp96krX=d8F2CC_LFy$hk9;=`DD@@R=5em zF2ClXe^r^%8ZOa5JyrLc_|FO;ZqNA|R2B(5V-!-on>g)U3;U4=skfK6o%|B4SH}fz zP@N|F7q<66`uKr=0wc(n;4?tc zmarqNGeN8U=|OXfGfD!T@eS7@)!a-{)L;JP`=BPc0U&C@S=sTHFxnhg0=!ib{RJ-=&IGs}QZ1^5hdasj3 zGEv&0u@wqLBAu$N01&N7dZM+(ha!D73K6qAW588LQgp7cK}mtYez2_!5u}(96d@cb z?JqsDwAvTK=ZNN4?c*WWny@zx^`x`1lKRa7G?&9v9wE-&OKu0{EFaN`kDGGwL^rYg zpg2d``nbw{lNQ;l?ZJTXMHrF?S=hz5nF(yuvY=E;nkvyECVBBOBYQ+z2q1l$uUmKW z;9Rt2*PR)oINBp@ z+Y{z0%+y&=&qUw@cY9FiVkj?<=YkS6xZTfoHPlfx;G}|s9KTy`bX8CU%Qa}KW0b;Y zn{&h)fyMfsE-LcSgdl$-wAXRrjVBt#!}6H!nbXIPNGRjBia0>uz~j|+gNVfjw9SyF zZWFmY_>}k)pSziF<<_c5}8Of*{IeJkPy~%Qs4yIcoUZx%R^-cv^u+U(llx>g zh?3H5N9meP5B|WrF)UH?JEc46C5BOcM)jusTbSG%#>?A2y-It{p;wrhw%?ojfvfiq z=c@2?2cCSjq9$E?^0*Q|7qN`bW4iIB&2wkTFxAzA-!-m3q{!SO~sxW|) z`<~rK7hqyGM^^mSMhJ32KFQrs@69r~p46&C>GLdol5P#|{Kgi3`Q>OPjb2j&B&_C$ zNOoN7XfDW+0*0M|Sb1{92FjP*%ClTs4w}yfe(3u#qTuuKZ!o6z;v`rc{tC26+$xu=`)mzd9!o`8?@>!O;>@6L-Of8 z<0o7z-qWssv7xzjC+v7BKPRhTg5^tbJ%>-q3JS{3i7I%|g{Ah+6dyKnOFC$rsixH9 zgJ83u3qyiLi_*^{#Yucv35_-E$t-OG)}%^7GH1$3UqJ+DXKSJxKfbbIsYB5^SqVJ0 z&-_Wu^%MIJx$L8>PuQ?==@r*^|MG_kyl74IP``aETH8|Ja2aA~cGoz>&f^ttN`;Qt%WM zZ@khCh!!RZ0Xpdut`@MK=}x*}p9AU>V1%gH!IjgEK^I0tA`TiNVIj$g44k)V2`2fi zWSInUssL{ew_N7qD1k^3uVGoLx3g|VE+eoe)#ODos7yhxJWrQVB^pg8BYlX&rIxa* zM7R`4QWv0V4iiw>q33qM1kjm@K@nrW2Z>cYMlxu~5|qra(PbBl1LHEyf;`CZPS~Lg zfPf@TFd2cY>ERu?n*jv|+k=?xV&WYIyUv9oWZJUoG^tEdcfx^|xoZW>)CDb0HWD$P z#rX3<7}>}2oVQHaZjivR1aaHJkKJ0p&Ecw4(g(&9(KB1g@gKJcu| zT3RYlRbs3;s$YbxpW!4E0x~^}$9ebcF;kx#UduKl61QU(En2lnk2Xv`G@JdCWo9_A z9e^%!b3Fq9RxSZ5S9!Od0?;f&AGExgh6NGo+XQ#Y=6WWUritAD=?mBLLeNNkw9)DN z6&hn~DLw=*9R!rd>&N-;JRM1Dg~jg6pcjuT z(VG8LJd6<1G0u575vB@1JeDFNyuc19v?lA9Tl8gaB#?MqL0x2T1v=Xd2M^KSO*KM} za65^*`%i#L{(Gfyd$6CqSl$Yi-Oy(3aPTX)G6V1(jL8e_kcYg zYPiAaqPT|s7G9XXA(tK11(%j_MyRgPXp-F}hYWn`*uuL{1yA^pw_g2qt1JY1DfLm- z_j7mZUMLi)G_-{$6WbX)xHkkC+mJ`UgFjbwSg|3md`~{`D%r!ZQ7f5kXxw@@XTt%$Xq)fS) z8nsQ)60I`n7ag_Ckpd-OVPwvf&h9oRTt%Y9Ayql6Lpavq4xw!0>haN4p zwSBkF`J=Oo5Jcp8H{z$}Eii*c`}*qfdGTMlq-q$fX3g3pe5iAKa?ODwwYUH3J~(og z;k};So3CO_`o&C7%g|$+-H@|@VU_dWpoTYo+hySM0e>;A&jJ3%ap(}fd}RdQp^rXt z<0IC3u@_F~*RJ6!8?@IQK1_9VB&{*FTRAhojYVRhoxH(~;Oe<#KErEajc4y!JH&X_ z@e9yd^{!KFa*oFysa-SiB0}*XTM_rPSFB4!c8iYqq+BOc=*OsP;0&7tqpIAxWx9nG z8uED(x9Ilm|9Y48rM$kO{e^GA11B$?@(`aYZM!l4oAlMHaTCVcAMb!s{iI^3lXfM5Be*pfR})a}XZK=#X7F?n41$Oay+mXwc?(X7v9Au}jtd7B|G&t@!mIjQhjlD5^ z=~y6mMcZ|w4wDHXAC7d_5|!JFB9uy8q#O#Muh zZ0lG|Ddx~}uY@9~G9Jj&ZB{K}IbE;+8GKr8>IQw3)O@oxSW8zc4&kOq9^P*k?-H+2xqi3TK zE9vDs4D|PSw6|(MJHB-&+p?s3l1^+t@HU& zr5heB*g!U1*3VZZ;_FL~XR$S`$2PiGP}Z)2KE8tO6>0%Ez)+Rgds)hGVL}AJbd=tK zUpvU!4&{d2-ZeH-$wdWWw!&j@5v8O6mePFcg83Xx29gJX+|kS-wE}ArSWqVzssv!w zLs)ei{yBq(7pP=l;v#9!7C=ys-W2$asUlqu$fV4sUXJ{2_dB zA^*P|qc(fW9J8irxV|@-o%3RjVO#q{O(VSK9gmOF>n3eA5CzCbWX6jV8VWeq!A_bO zUaFOi^eC8LI4G8TBu?R!EZQ)u_uRQ_j9)yq<-1|7I$E>^9!R2>(Pajr(+DQ4&xm}T z3<1DsnGtBv-hGl115C?a0CvTm+~`Ef>3L^@Hw>HfuwfjzULf?r#joN{Hracl zaT5t;gHq(#XK$Y>wD4}X3gRU-$VBegJ-TO2=J-TnzfvhnKev<5x?g0ztyYZckqET- znLsmlq7&ElS$myuFUs-yo^&>w=B#MLBQZgTBfSs;X5~Myo^@ye7Ju0+A`JAU3^IKw zgG^t_NUGArZ}m3m-2`voiUuZlDvkB;D|#>RyH*u_K>V^2qW1b$lY#C&0B1FZuCG7o zKB-*HuFXF*%#rI~8oxB=;tkOlCajxnL~v=@+x_<+eViosJX22^DemK!y>;b<3ebn& z7p#UXw4S5a2sEQkwqTT^xJB-j74hbfFV9neUozhsVfR5}rbga)N`1U$aFH?ktoOXT zX0qPxrETQ1E7^aIY~=slJ)fWqqYnRSs<*@If+s)4^Ht}M)Dc6@%7fWsI3m@)-r`eE z{^+zEnlXJ-7TRs zWmbdpqu@ZJD8qBg4h};JAkl};l8gc3gG!xf*u1-nJEp;)RWfX-AO>U2=Wu5m5Q^hU zkQGo@-@0@%$0w+#+gUohU&up6+(^+%XaS;3OOg1bMEg|d5$G(~1d}7R8aG2W$Q$_S z!>qGv{rn4e2>ozR@64YUK=Qg|^K|o$2}Ct-S@UB_3;~RrZwE;v*TAT?4Lb6Kws}`u zW5aG2B(~2sdf}v`1fa2oaj5(%Xf5Z&!pqBzpf<@^NgG;8MhF2u7}8WOiN4F)P<==< z_EFImt)%O8uALiBMw*V>w|{}8->D2zTuHM1QT(a^In`@6hY#-vqveP%O_v;aQTRg^ z4Ut6uIV#l|xd9qxG2>y80|6G>4#}CB{RQ(!=5I>PEK59OwO5~3-e)tW&B+(D47~+!c%l9kd~Ndp^fyEX ztmthvgoZG{4y>|5l`g+j z0iM>wpamSx9sWC|o5+$*K=f{B)#N^aZrcC;8%s7B$B>QIbFH@yncx1q>KnF=qLJdv zy!w2F#nyf}nED?}fJR8-54NSA!IvPF`?}V@+oJ=++g^yKt7f(H6W|uH<9%+Io}3F% zdonwjcX6l(rnnT}hy=?$+hi zS#v}DDRDjdslG3gkDi9*WcBsi?sm93&Sg$>YzJX{72kiD;`eG&%b#I3b!@xM*23HM z?B0g1SyK`yGOw58j;_*~By5H8^B|n{ROEkj*m$6ris_q6$T^$ub10UR#~NSMK>E=s z{JDYN{BA=xQa65(dZ4HxW6fG@z2Ef0kJNkL$Q#_qE&F!yJ&kD~^OFttJ&vF}I0S4s zz_M@q2utzao6x{xynPG^V8{e-Ew^MxVHS~aqaf?)R5FVCrH_U8p7dV0lxH$5QDIG!urzu>mI9T} z9(~hXik2-!WtHe+Xhm}#TalwIlZ}**JmRtjgQ|gS8Fv#tk|{h3*o3`-P$`p zYfFtrQsaoQ%ck#xXCX7JIFGH`Jgs#}%HfBha>3{5nzYT%URK1caBCH#`WyOXzC->#av<>@VE(O!!9sCRrQ} zyN?W`^)%fhxse&xc_q>5rtJE3Y$!X{M9ZB7_^Z!8dhS!B-b)92t*q=6T^!VRwo};h zNg&x59-{V5q*y(nYS7@Gv|V8jfQdAt_eE1eZ9w8#2$VG=_V;W==dzpBc_~*stIIUo$iHz1?GVM5SMnNGH8_ zUmXs1_f0%8Jd7u>FuQ(b8Bbf=tJh&edp3@+ihxwFxuYltS`+rwOJY;qufQqQ2~6q;wD<*>l8}#~tH!GO1l!n*vvwymmtMN| zenvky7yF86o#3ap`u*MMdLQKj41e(LcsoRK^b~MK*Eh^4TKB)NmY7QpMUY{VsTr_8 zdtfc`**Jj`+4>X_U5rMDPT^cNTt`v&hH~MAJVu8}BkTd8^RT1up;U~C5ZG2?bSF$s zD4WX=KM8ZhLmXEq1C^fX;)(-UI>{3lk}-3$`s3#_ANf00W~?M=HfG?LyD z7v@9wB9`u(1zVLLfW>dHYcNCYwTFPPPJqUT+a#6)ZJkVwVFDtee?$*a$18Wszk-O4 zj;EPJVU$y0Yib|N1rG8cjhTHE#M!?p%C(}gv?aV6^;*6SW-w!wmNHz~EDPVv5vS(K z2X%19NC$av|0RH+f)U1LNF-igvExfZs$=57>(EsK=@KBLWs8ty$R2{G$l0HVD5HO_ zymxCw3dxaPGz67@jd_sbM2Agh5k9s-hW5H zPuAY`!?uL zqKoN$1+2x3O{15+bYiK8WAVAltG6G3of;&2&?@hJR9GnSlux%pZBr!~bcm-CS`0|9 z)FILG-VNbO4PRpuN;ou!K9SD|zt1E>BG!Dhb=ahDf-V~OHtCY>jXV5EYp_LM5ANZ< zP>@GGL|XXLj(h)BXF}&)@ODmKq>IUgUSu#5&{vPdL_#W2sTOKs&TR`6bP^fadkQ2zj1zV}{B#pOBWcZ>&=*LYr?KU=si_D)b$Nu0zaD%HSEMg}hh1d3 zqbt9xaEaO6!DRM$u-$U$ct!tbLa{gwq$VCPAzHX!}IYnK`PEc@_1n+o+c8Kj13GLu- zdN8npvLDc=onNl)iq8Hh;$vSoJ{ZXHNj%q=LkH2g)bWFeKF)U(gvCf35|eR)m=?Uf zh8ghZDm2~^XNGS8q%{<3wBWQtI@6=HKJkvSTY==Kf#0Y5`#i3EBnmxO?Ed53> z$rBiNj+gn>okQN$JJ7u4i;)!M5GTHM=S1D)bN$PB*{_xG+z^F`B5^ZE0Z z?9FhYpne{lK-?ud!3sR*a|~2hjKcR8*EiwyeSm^`FNihTKIaTHNzInG57X3^nc`dx zoTIA0!^0wzbPVDpxn<&b+d?O*7fN+5pPx_Wa8A~W2D&=y18exFZ*k|&$b6QH3x&qc zqPRRe*VTq+=dKZFyVg51h@XFS+XutYHY62<@0td=xjJQ#k?7raqf^4Jgq<*g8s{JO$2qnztH=ETucaYEgO|B?nhPBr9V zxbs&djK|1aMdeDr~4 z5<4K79h(fyJ)2BchmyRG;bk3>XpX4?s{u%KbJYK@6^>?RF4FrWt%ve#xt!1AHf(+f zBX^DMOhpmWj`Z}=tJ78u@FUbrOcK_KQC+Aj8xA5M;a8@CZyNDUl+OtcYwTA99G4M~ z%p1&u{@wm*>K*~Xck)zO;e=2oZP3yJ4{ zz=*<@bdjksJj<~bYchu3b=pCb=r68>X1v@g)thR$T0sq^ta*v-)Jy9ZAo_1C|Hpn7 zcFi*XwJ&#uo*x@?o@+6UqJ4!? zAwFl2<`ONC$=T|?j}=$e8)-rBmvg)T9rucw5oM5BokUt?H3iPvNm(kS(eu&uGH8qn6E{u zsnNnEuzL)QI3ul|x1i^)RWjK=111@MUr<<npdx41hHkM#tJ7&U<~#@& zyp2m#B>>o)P^#mcL=6Ef`p0fGY?0{P$B(>C1O#pOD|~k;9K3J&Sp4B$Nh~!$+$*HA z)YSDee-HYc@{Gk)8U1Kgvhr8o=iut6AbX{V=m8p%;IKoCYztmKKQwUO0?`=z*}Oc@ zKI3axzMPjTTLYgV3K8R!c1`mCc_p<^Bq|A!&JxegJd}m@&YrY-4-<06L0lXugfq#g zt>joT?OQ^gSEYr1hl{}zjyd~Y3*zBAI%3hx zg3mi%yz|}kj^QX=t!l^)mds{c&^=^UOQcJb2`nAl$8q+P;S|Ai8kBE+#uz-*u6+}r zx~1MOV1E&`#|eD&4#er2{?JdY*8il5mVN94jz86o3|QDs$`Vf5GLZ!38FP%{rPd!L z=)!w;y`$X8>&#K(ELT1DnjRK2-Sf;@~Pgu)yXH%bf~_gN80Mh(9S<6)jRaohj~G9z{xG9luT z7fl~}odv0|R7%&g@e=S`i&(0+pqQ}t?ospMy=EWfsZuu!8MK7+Ap1Go=Yxbt!Dt8H}Q4JP&vr(zN z->dKG2gGtwb#~jmKM_L#3 zbS**DJ9E59|0_dLcn5FT}wJ*`vi88o>5C~=v*Ay&h3Y_WF7&f0{H zMs(M~XV0EOd-hdeiUKi!)1!lli0ie1KECK*hMrzkm2uTI(b`sh7ksPs^G^)5s@^(n zSxUQ;D234NsZMTd3TLoopF=KJWD*Cs07^krK8&RY$IZ8n`hZMu*$yEn$_@`jS1+PZ zz3|&^SYf!Iqdj~UKQJJJv%YK)Hh;?9gEyxy1OoEU|FH2{Z|+cdP@h1inw+9>PfQ-w zrhj1i-%Tb);UQe|Q|#jBUk& zBMF$y#U8C%C}#-VG-4wJWwYtC5bR5MgnX!fboIGQqYPMhJW&1|LFREhNeo_kA-u;B z0_Nejl5vSw(RX6|S#W)~DKy+hsW;~~yp-=|JjE4xCqqqtklozc zSlYrhllsrPx(H!9`@Qy&lMspN>bgW3f4s^5&0fZ(rPE?=K0Bw4Zl;(y#q`r>@2~dH zt%L}6TN=6@S)o|Z+m@}0ex5URE%XUGzYR{|XLi%TY#{4wt|k7l85tv?+2Y})8^3yF zCxA!ZyXff=YXVeq3PoZoGYy=66Mn@PKC+cMZ<1GLdXGDM|o`0DLYQgQfDPHOuva9fvIIJ-#?u061P< zz>t=HVmWEI<2OV0Eid}M*;XB%QPMs+zl1UeKD|3j|Jg&$+q(nMGsiPLb^5s{VIFi% z+{vD>z01p0(bwwCQQsPn>Q@9Plrtc1)~+9PCb3AOMe2iu8$#N-(c45{D2j7gW@hmY zgpD3bY){4U&%xcHIewK6HLINWZuax~FSiiR^MU3s{v<;d*|IjALw*YaR0t3R@9tVY zhOaXh-u$Siry@ZeCfeTq7HY2T3;*TI>HloqiNCxDLlaReiGL$8I&8N}1qi*PEy8Sf zM;cvB0uG(PUMkC4X%^*|`vz#Er(r1a!in9Z(RQEraCLgy@0lZ&gg8C^d)Kxpv)C=9 zGj{~4oPgjbQw$kzEJWe{CzMsE@Yep@aN3L`j6=8BV|eqoifh;9fBY+hPh0I$_?F&6 zcyaQxfk1zMsIE0AUdj!eJ$vrlKrT+G<$M5_`tRg7s&8%$)^f2d=@A2cVE?!HI9j*mjt2P8c9!4p;iR4O)PM*myW0if|@wnLL`0Iz+hrf0HP zmtSd}rnl)vJ`WuK!5yMweX?hAOY+-UpU**=%NSh$3s-)c1ASC3Qv&Un$RS4}_kJI0 z&%M$7+PAVnrc9xz znD07qTYKx`G)rh>SJ@^^r|l@h)6>e^2kNMJeRE!hkED0~;;l^o*A=JFDsGRSMw6L$ zG;-hKD+JaDPY7UIL>G93S(0L_MKSUH?hs*fbZ9_o-y)RW8r&zycvZ*C_V3v3EH@gW6mY{(okt0FAD6+-FXg%Ye(SgTvj3rF&Xxw_T5c=%;Q zdBa-!5rNKETQ5HbXu0w?Ex&Db{TBj|8=ru3E$985(niS(>>TkrT`?H_-B@ph569tP zmEiQ*8{QaVExC^jBVV%uI-J z>>osPd;F9d0Dk&{Ce-SH>;~Dakexmz4W;rM{2g3BO<@yCvyc#`f>;&1Ur;_-M~OWjrM8cbnTRdt z+2YF;FqWWX|9K(OQLZ=oedDZu8qKK>AcVO#n4M4wLK3eC(4SFmd%1OAqpfx_ zmkm5SuPtoOr7c>GX1T6qwh4hY;+SKdB+e(oM{T)nRSd2>=qC3fCY9TTYChfXL=)>* z7DwZHN(Z;ZjWIq81_Q(ODdslXy(J82V`lB+*jLw8@7gfP{+kJ-nj$FC`8FL3&u`Fa zc9DejZ6X4vTkWtmwGp7uCoiRq9gaBC76uKE`q83%WzxYM*gX|BR9XNfhqyo7NPwxP zsiIGobOeM6A*L|*EBFECcKHYEg6F;li#=Yc*;*Yh?|dyNY30CB$Nz@ww_bLdB-Yqp zpTUn8=}zCUyMKq_2bpR6h7owOw^!h4XfQ1X6>RwT;68x)A7&TG(EFX%GAjzC!@)}| z)Ek#q@jvK}9p;X^PF+&S@jtTk{VrXECc9ZHW4m9r zRhvi^%K;E>E82`pNi_p$3t`!z#`2Zv-V6)&FW|g^@&b2aSJ6~xgGk6 zM~Kfn$Q7_T#3(ln3Q0U2Uoi#YFKC_QU-k1QiuEisC z6&cb|bN3!KnAT)|3ijX*8ZwWOiR>&$BvH6EN0ouYI1fu-cWFy_ zn(7qb-6YVmk>!Jia}F9yQzG(~_rgNXtACc=<`-p14F~r6?txlZIamYpb3MgFMyfRPpRPvtb=gF#lG=4Gjx64Hb?fs#fBwe z;x@x9{h8ec^iZZAYP)}2LDN0p-xXFTz~~^QzdH%I-9)67WRLIuc!J+}pZ8b@`)2#f0&B*w!Y=;WzZ>C?695{@D44nmjU0x<1AoC;cuZYYa zHopNE{GL}nePG}x`dIxp*X}o>@>pJAk1eEX1+NX@`H-hp=eO9~S0Va;+U|jOn&r+k9>>a3>c~$#ESY0kDg@Yl7!l z;vZ6wX*E1G7o#8Y8{=!cAJyf$RWaD7#@j1E%0Jv$cxN=Ar-4a`2OG9?o6DE+Aon2J z^u}ZYHl7-{F5@GLeCRa9r!wVJaV_pW*F-pHI|KRryPA6$V8~Abpg3~+2t`0|lNt?| z74;^BY|2Kqs32YZ6oX;ch+P%vla7MC=yWF(gyWKvd;FWnE9Vi0qkU8yH;_~ctT&u) z3uZ7njL=Z-P~C&GOLA$1m$c2oTM)Oc9Vk_*_<|i~NML#Do6TeiE2*dSvyqj=bNugC z`PWT6Kno7Jg?;!?JcVU=U3tT9-vm1eYXYw}?YT$*gS*Z`F5N6&+A|K0)dvVgrrz*y zGHY+d4t$SrY4ijOJ5Tw_IyR++PB*!CXyO8vIV4&}VddJa21PtQfe%q9+|gEXm(na^ z$KeHx=R}D|M5w>#PUQS6JP`Bz&>`H7{DcE*wn=NT2*?KIc4g`UsY&abb}0lYO5Azj z+H?~dn_r9t-MC>Eo~14tk%xK$(s;cT3=XQAh0m|2^TZnE!MZZF9$@CVt%UIT>|3i02w7AOTf1Uq9?*h@g)npG+) zpOt~oc#FTM!J+*2yY(dxUdu2)I1cx}eDR&$Kb)_;^1yvB>gdELcMltO5Eo_dw-yy? zw?CjJL;YqGb&Z3L4lup*fc1?gx`vN3G<*O6a4II?3uMII0)ua}YJQ3d}U0kG%ziiCI+@UJRXqZt9Hi z%)Qb4yFC(GWB_+?gxnWSvTb_vX9vTvP{bHP;=T;S*kBJk`jOkLFK>95I}i)^a@}ySmWCN&SzspmInSEDrk>IhJqrYC+inzahYXEdwhI^ftvRv3eL^=BfPQ+C)j-aY&HL z#!B~bVTj&*Q{|HdU%3b}OJV*xRQDLXiSi;4S+n{>3jaZd1pV9)&`P|*O<0$VjyUwj z8=|6k)YSob#v0$IQibh`V49}AzbVM@1{>Q@k4z7N$)!1w7(k zLkEo@Id?a^qU0_%S%9UA7`uIq+YzOSXnf4d`IJ5cf2>xD#cK8Z9FDaLQ(F$e4%PyU z-HN*xA0kemqnfTM9`YYRz^6D@5v8ca@LMJul9+b+m(G6Mm8GE%BC;5&0-tS(sY*cr;TCnXDl%0m!J&jZVL+%Oqc3uin{eq!5lk=H zWVA55SAaAc_P)!%(&1m_$nb>HiVgiPlI3147W*u<21v~4H;klh>k?X~qjS)X)I+E9 zCv@y#W3ZG(v~MuzUYiuBqAW^gUfI&|=$U zl(dmaUOf*J0RmN5q3%_W9%{LP1^?IPT-9EOzM{QOeZN-jg-%rAMD)St6SJNc7T$3{ zGuiQEB90F%(k>JO-)Pa=gno2$oa;w5pH3(PRv$p|h4!=P3BzM)CP7@>!$gjenca7B z!3mp6f)m9TM#h7Jbz<;)P)If+Srgv@9aXyAh(tp4uxBadJ-R4xLp+EBxV|Snp*Ha; z-}d@SvF*fM+*=NaT#eaxPQCKK!;@*hUh$KmR6Vm&_ROX+Sn{F=oB5l)>F!#w?T>rY zo`@+n-05C;@)*wfzn?C9`lf6!7>Y3+6mb`#a?Wb)8?OIt_lD5_z8%r)08~HAjLvVq zyRh1YqfPLqG>wKEj<%i+;7%4jsVi5H!?t@o6Z~Fjxa3c{q|EucEUB}Z-I5rB4r`%5 z|L*&=#b_mnlZ5!xTs^%dgeS|r((t0?uiGwIi5QUV0{%#8`-olR(NIYi<#$d}w*xeq+ZBL!<HrEcUZaXrR%ali zu$R|xbR;$q7Zh>4qf~B2|5bt)#qG>x8a<)TwFJB$HR}TvQK0zt5NA^2$_H3B)yi2z zL>c*M1tYY@;i$nGd9-`zp@ZPJpb#45_0>ezIT3bgQQU#A^}RVi$$JEOrQx<48u%s$ z^(|@*it+P9Fn{Vl;8z347IY-f^ePl-NrxD5ge6$^{ZGlF9Pql2hXLfQMOF?JexW-$ zo$V|_4L6dj{ryj=GeYz0Hd%i!6feT;gnlj=9{Ju6S-_7BNkf|Wi~ndi9EoEo499_K z-Vs!KII%npuY%8i@*Te2(#@bEWSChP4 zN>o?RO`Jo9>tDHC2R1Hf5{hg7^=JFIr&%@yVd#5rp@K{}1&=o@eF`x0QDTBq|M4+j zV_YN4)8x1O4sFW^5;~d?g9jVuYChAt<}CixZC%R2$UPHSefg4}E3W_ibaKMK=sr}* z!durkNS;Rns;o3Tyept*w4kg55KT2Vx!sk+ z=@ZCU3>t7`PN0j`;B>&m2+B<3DKv%W7kz6E-xUj~Vg|Uplkok-JqwKcw`)9RxX6Pno0&OA z0nO68(9u}BO$adNQ?KZtPY2>wVQu23ZM zP1bo#W84uF=FV@SZa5qixc!hOkgU{Z(4k*pS*#aWk)vi^Zwgi_TX43e#ir6|iMm=R zHs55C+ejOb(CO_?>LY&uSSA_?*b$0aO*9(Yt=Md!Q3{*UV7~iHUdw z0Gj|ncv7`W3)}HQsOmC^kfD}FWseiO^}s(*Q@Vy(vVf}UZA7nNGW%TQ87Pvf$BAh4 zJ!7Wtwp2Mrt0?*cN;Gw>{m}+tnE2TAcMvy(G8Y&%A*-1s3UwJXdh}^WjGLX`J`o6Q z0}hI^Nu5SHm4!C8-|_RxMIw`u38J9VVi*A=3&|plaLmecXt$*t*I3gmD-0by+QQCHgr_gy!3<}01jBr6T#vYkZ5{-MYm-Scq zsxEql1sRGKyBA4yEw`wc&nZxIE}NMM8}{6D>*RR@WYV91#`(`1&<6(FA!rz-ucOJHn8y4ej8;}_WmnIE+NJ(x*Imj7Eqsz) zjIulMHp?7kMy+aU-f*USR5#zzzSeVjw z&tK}MLj+P+=0>@VFVr`-!Y96*)AgGe`qgg+MXAEWn0;|4vQVxm3@WO^?8?q*5Dsof zh!KVz?>Ln*i8ZwPU=ffhz7}z879*pArVAS=edOdvQ()t$jNlSsf#gNP%^(wASOK(X zA2M0?*VO7j3W_H#A+h!gZJEiah{?|7OT3+xXQhv<-n`+#OOLs7<@59w<1wZ%29}a+PLldZi5W;2DhYNBWI$L2$T+R6?gl6!V+`OPx z^ddoT`7XVrxVp`8$`Gj}4XS$Q2Mk)>g^y?ll$P^1URwAbh`C6d0Jw#~Ev`CIHBA$| z8q;ExF2PpQMI}^tGzw?u*q0A|dPGjCD@S+69^Rzx3^cJ6R(Nl6=uaS&tzU+fts}YQ zb2s6OfQle>1+cBkV$^+Vp=+9Q5U%-XU>*17t$lW3x;Jw$wy9I30!%t*+~_4?Q=5?T z@G0oPI<9ad37f{VGY>&qiIrMQn;}7i>=E^upp1vDKHKoAgXYl}PQc{Rq#I6*rIur? z&0-B(-hj9SUi5?BWM-pN2(NDkE?nzhT`8bZPACjnM;Pgwjrx;)ikA*xs#E6?qbPX& zO%u6256S#0jkooYlxnZsZIqe~`;!A|I`A7nDCj|8raBdH-y`~e>L%Zv^EIm*+5>$W z{ElEVh5d2>f1Vh^V}77{G{A%uvH*9pw%L8%$l4***u&eT0ZtGq%EHY+&4vQNZcTvW z5G<$-D-xZ2df1bLk8(n;{K5Yg5xm-W)ODQV>=0#!YU8NB9?T5k6@H+3w7>)v^;2-j zTPW8l%#N#%79F^ZT$l93RhV8VqYak8RqhMx?)yJR^%MzI5)0#Pn@WF450-ObDVv+u z1O!E2V_R%2E2B!{@oJ_?4W5n0(U&%iZR%Vy`8s}}_?eH#Jaw%4qh^@Pm5oA);$SwF z6;NJ6&R;b9K}ezCNo|*%XCGl75-S+ZiogEHo1=dDvbOQ|O|4h2Z{u#Uh@~kW7d0n2 ziZ>yiXY}_zj*dNGej#<`s^0N3lbVH9ouDomxbDISODG+o_y|>SF15jVOFjgX35x!8 z0m90pM74zVduR3r{{$CdTIUZxG__vtDCwH}UJ_d8T7*_(yEi^=+nsbEz4BPq$xBg6 z?0KT%;ALwR(?{9F?724{UwRb~Vj6}-IWcKf!N2W3OVPD=fHsvHj{J1-`^Km{pWxiN zSN<{-8l2)|>dJ%I-)ONs#=*}SGl)V*xaGN#Vfgyg!X7&Sc^qTu@ zeRyzY8hn_0-`cIecYZJ`?)BXMPJ$uNs5tf<%W2EJDE|1zbne(m6T~xP@*YpXV`{<7VCMRsJKzQq=_$S`H9TydSV{CBQbbEd z;ly6Kc2+51;j->wDrae0bwiorcIr~4HBbo-t|K={uqI{?YJx>|n5fAdTwX4|KAh@X zu-Tjd7)zzV&FH(OH`a`jggD@Eia%as*`YS$%>?~lW!UUSbkW{!9D;tTSIu2`{(0lz z;sB@|&Jimm{&xN^+!IvFGr?y~xyg3oZz^Cm@Uv|jU%12cuepIuG2&7$3tY-o;#A$l z=)ph!yv>+;hfjh$_S^9Ow#`jyn{yaaJjRxlV$W&@fjMbdp4DGmG98)Er z(HV?1=6}uIx6*$zxZy(Ux6JZqRxEtK|iJeh=JOJkP)PzqpMz1&~d=G0Wxj z1k3>gOyIPq6&dvJf5ZQqx45Z5brF6J!!`mRC~o1Fmv1+&1r|H5?oF+#2Tr=LVU5|0 zR%Z)^*=ndfS{g|y6)XnH!%1#3VEV%p;8kP}vIpd#K{cN5neLAZzkPUHcxtwt32fxb zXJbs>s4k6K^<@RokRUPjC``9r%%62~)DW)4(>@z~_q(<>b3+w0emwMwJtq&`nTSE2 zTPi*BC}5AW=;H#)_k;n#eQdy)IUtQfUN6q9K)zyM&~l|OwHC}uyDbt;(pguGhDKVQ zQs62YIAKDKDO2%|tcd!e6;@FFVow)W5uG)T@^K|8rMsJ^-Gq+v7P=WU-?_Sw`a=^% zN#O6kmUBC1ccs*J2laL-KN4>14++4L+Gw?)cG;7PqI5 z)C3qK{Ahpd`Ep%4JhWrYiPF7!F0RDZJW8+GX3{uhrHiuW+5P-_0pOzd1!`CGD?eNi zb2PAFB`5NfXV5=fFacbsKI(SA1AFU3Nk9mls^4KJ2ci+8#vbB=x)hk%k}cGJ?1eoE z?||q=IHAR;EC?MDxl1~OhN6B0^?tiK&;rXT(Ni~7beSYpx&{9?g9m{eYT!*9Lg+aM*mF2$19`I0IU*fO@W+ zGSelGE;nItcTfE_oJo8AaEE>&^xuBfhyM86btB7?P2VH(aU?ISk(&*ai;>=S8$=Cs z`-=@`&E|&*ea#Z;G8bl6cG1r)L2%2`meJp_CCL{#jEVJ~N#?D8LWw^()W^z@A_P)9 zZLg0MsPME;8Abk)6d~`xy2LTAbkDpJPdvD;+G$}nb z*df9m_pxGOa|E0A!0n(YKFCZ+pK!`IX9*0H67D)8il6&Vm8^FQgstq5P4TuRc>;va zbZGQ6+%7ZPsUqKNDa-G0gq~dj=@aN)fbB`~X)Sp9Yq~{DML>fo8cGFZgDqD!^^~kM zVZnyx+|biW+8xiI$@y-RKx%^7x2w4XvfBwl+kOK_zjj z%bu;#5wABvZ+hb-I57WNXm$^MvjLCRsJ8*>-DPVRVUKCgkv3$6fzg&wFctAAk49^y zU!*}GW*7+;hwcpoS0$bm<U1~>^@xZ$O1P%GU}~78n8hyvQ7}JK>y(N>%tqB! z%)BP7XfMW%8qFu5>6UoZ!5jWfpUWUo<%FLF{dk1D_{?9d&|=}UdeG8=HpGE~{MUi# z*p%ZkU0S^lZ<5}SXx$#tNcM71c21)lV^&}3*+{AtE@bl}9Q-S=OQ>CYuMLAjTq&_T zLVyutGi(X0e?~=Cb4z_L&g(JbtGI4%1r;SPwW^7bHPVp93T=2m`GMv^pI!#A_?Cr^ z?Dl8EN9OVS&u@HqC@#ih@$Gr+r&I6oinVw6w|2$Q!UFFGZ(bFl&wYohejf;X(BCEh zi@TWId#~%x`?yAlURHD}J3ZKKPr^Bw%Q#CV_39lw+XCFZW^2l2R2y0iISyl#eCCqN zU$rc1O0(gr6`4cWbv<6*xL**`MvR%KEjIFo+s7ZoA-l0x#Xwfl1TJq@U>oL5VpKQn zsOLYxd0}4O+3nh-RCePJ{4@b}V23#ckSupgIoTDzsSF ztQQ~DU-RKu*wQH}T)xE2wj3NPKV@lW-W|i%wofTPy#DAb%uMTVPieg10l{3n?g@dl z*z*roMhT56Kg;%PnPF{-Ru*1UeQ7(PZu#hk_gJHQzqOo%zy@SM6wq39Qvp9S{3?Ep zaKHglR9U9=s-|kZ?pXkIW@XH8b<^zYmmo+&mct=)*iknY9FS2Ig=d$+(d6!7a%(`$$( z%D01|gj7uNtukp!{Jx&L{$$&^uR>PD_WZ^NNdTPcE*Ux$<3fa*sq-};HGe$ z*+5nc;m1yt!fBCvEEajTUweLcGM?l#*me zTQnqy2)fZ-lMpx*x92=GD#b&-4mqemaW;%|f%;2ZQ!>OL>MMbS z+NQ7gRFRjXI{+P{!uih7uUQEUZKDqw8dPcU`~(_i6#UBgoY?oJ$F_zr*V3GKDJ*b7 zOvzkF#D4Tkot;<%mae~x<=vLDe4QrUsinF4I~h*(p7e0{g%7pf;RCy*aV;nDVmzd= zbq@OehX?)Z;!{~*@EGt{Gt(;U?rzj}@ZekEXEFGH1(sv~ZNTyr*gFlW0h3A1Ot7Wf zOHq(|3UjPWJk)xIs{TjonjWQ@L)xaL99zqkuiud_F6->7p%ij#cQ2sHE%)>gL`21M z8IOrC{M*%~8A5ZGN>kLC&gGPhHegD~%<}Y-0UBSEa>qZZX~*AYNQvJCfW>Ox&taRM zu5Uw?X~rzzL2Y({gX7NKP^#-tKuvUQE5iP;XCyEY61f0dV+lKelfwyumQjZi-z-pK zaIwwy0uO(fV^HNO?RvWA0Gj7Ift6~>K-ksApvfToLj@v^-azx7H~4e}v^xt$NNWUE z*c?I@3M^SDvJKR*IUkh3({T#mB|K{$*tNx0sq|_&=zCNELN5v^G=MO%)97@xl^(Rd zx|~mXQ5C8+K4j=B#gY{$Iej4S&}$|#ZGYdw;n#LA!Uyqkbo+6rx1oE8op1)IKgL&$ zaG7&ud|J4Hg_jPToN{X-I7h8;mC@obppH8k4Qz~8>ndyD1l^#{6>aPnjf`Y^qrHy zmT3)))gykj32?k&)bBDA6nzJ3pIEUn>A^DcapiNhYEzEAzso`(C-e;Ha!H zI+i$40($9N)76Zb?=fjT2j~dgDx7K#4_W~yM(Uy&+ zCkt3t;QXkBica)`sVcwVSD|^~Q`m5aFZ3t`7<0k&)e7!RfNwhSjhAe@JBoSi=I_yA zH+BSQtNGeH+}k^Dm0Ns@G;)pZX5_iOl2cGfo z)@zw)vjNdbW?Gj$_J&xI?iMHP<*P047RqCF!KEKXFM)mh?l%#3Nu|>PTM|M&W0dmT z^dpswo3jVhMOWuZC&YZEnxyYLZ~Kk9i_TDdLp~8SVD?~qa?{7{fcgq{Ge7^(Oy(O^ z{hDrwGD~KWsQnW*9MeP{;PX!j+nLpMt*JL!)Ln||d^i8+G1B|pk1+VsQ>Yy-gK(~Q z9C(lRu%|8WNInVgtX+Hh^k=SJ2W)v~Cra9j8d7|KTfO|oY2mYo2W~L5_=vJq+iPFN z#uWH!K8E-r_>*!gx<8#Z|6k8>Py4UPJv4JxNL6dvUZK=`phu!c_m7tMH=b28*BEYy z1^x#E&$NN{a|_JJzYxXk(@*~gPT(^v!h)ygjrkMsl~c(^1A`)s3h<)yxr~3o#m_*~Ut9%ZEvJg&VRUJ1d{iF? z4_{qswd8jM;UKy+IXMsK5NcH`H3(fR>|gQ`V2**Gf5_d%Egb2M`~Y^^#8MfZ%TL}7 zN*7W)QWJ!i?q(nGcfA&>5#`Pwht(s&S*~w3>nWK-CqYhl^hpVMcOS}&IRFiN=L$1gg4oC3GldEn5k4V{&6%mvDc}G@>e7fMh+pD!ZWneGi4NC%rs`Y2X{Tx*ZRT@ zbxEIJ=^4w(E!55;opks7gC7_b8*ybG{Kxl$|4&yQjD>vEC^!gx_$T8 zW-DnRcw23k`+XbW$bkhJhYuO$*ePn^4LTyIu}?tbPhBy=*@tSx7xwo73?mn`Ck*l^ zPS;Gxjp7Yp9QX2VC4JoCuG&H$JBd2L7rnq@^QC(a+N?Wf$ zZ@vB5qc#0w+Du2rPLJ2r){Z? zc=4mB`tQ?St|0{AoAe68v!Bw+5cZp2PBu^piwgKZ0L%FF`>Pp*dOvB#sfs-pkoisd z^$$eu3&Sho9|-pFZ$&DDK@clqZHa^Z9mkqovS^Xbq_nH;bi*TwEm~Nw+`vOh5m}K_ zi30*<2vM-+nIC+_LyvsuQRry+>yTGJ(+LXEVkac*R&I7nSi=_fK!#2w97v#!8LmX< zSqnEVFf_B!d`wtZR9@J;FKe|eZHlAA5P;2r2{ttlU!(f=^zA#L}k zUu}`XKCX`rntcwd$u(_@<$dOVPjS?QkRvyjvQ!u?b%}18(%CW%&V}Dk+M8{4hI|*$ zQDStSaqD#p+LmhTa|V0%N1^I0b0Kc;VcC=3a^|D1%$BWg-F4;O5thb4$mG(_IT471CD_-I}41|%R=WHie{fonJa_Q_6qe0 zuX~ze)hbXXu!>=MQBPBHOZAor4@OW0cVvXoJ&qXc9Zo7s)zDSR#Z)~&WTv(}r&oJC zyp?K|zNFf;o$93yp=X=^N*DWyn1{~&!_=7be~91D`8>Kt)jTjP4B*odx?%OJOoT2q zU0G8Khr?crVAySY02CNWzhp}EB##We<2YW+LHnIvYr%jvm;x5L^g+ zo`cf9&;bRIEoj9CV5Y>l)aOJ0Je%3T>tv>E9BMsrM>R0SC-mQ%ChA$u0_XlVZP!?3 z`s`*bo^5?xj+BMcYq+8b9v|-rJHKXL+VY4Q>b?N>{H7c$@(8W5iv8 z=>%JLoF-1RBN0LjS-fl*K7o})N>Z6D2reW!28StrESrY@5%~~J4#n){xCkeJENJw0r;`nihi_+ zg)_i3bV~u58fyTy(Yh}I7Hvs_aBu=)Dtb;&X0I0CnF*|~_H6=&OthHQ9Vql*x=4J< zX>Rh*ahTBHrR$Z}G{a25`sB-C9Pa8fBD$GMV<7GU!+~7W(ugrv_?KdER}91MHI+zE zaF0^EX9;Lnbr3ABP0j48R2ysR7*8u`OC@$lki3Xy#W5P)V~m)Wg@Vz0nv`K&XVyIp z9L7iKzS$v$c0}lsq}yW}N{=e{{eprVGQ6ID*PsbU^xSmq@+Cgh_O*Ulw#ub-NG)kt zC?hMJI)BaJ=w6RsL|4@9by%f(X@^~v_IX)jLOBExA^>q=^ii=$I6#NuvO%LV3j&eY z&^vO!vH!V1RSEk7zSQSQAqEu}jaG*z+lF*3UnO!;jiPXR`4*2UsMj83l)E+*G^Izs zK1I>ktRSAf{c#s+nw##iG1Zp5F|W%os%-lkwj`rz09calQA0UBE9!&QO(G~1f9UrT zS~u{dXui~}0FI-Qk4$Gq#7$Kz8_&pf^)<9nU7a|DT{xsr-b99231H}M;jLhNP`kq@C3T!I&!(d? z{)L)%`VycC;0{*VaFiiFRben)#YSwi>$a@aV>K~8>8!CAO(?1=*@_l_ zEYuGlityT^{s%H@?=&b4kOB%OQ|LkFdg-`eN)nBa7V8Vo_Kl3wXmBoCQIjGnL%EV5 z67odK4fFRycrRPhRcu0Aky$qq=F|}9{}r7g7~Wyio*!^%Wji}buxFB~&Xb+Bg-zR; z)&{cyRA%1|b8`(x{JLdYh)KZgx@VX^6Wivx3A)j&46k4lzs14{=Fu)UHduq`8#b-( zF+eq^vFA3Nprk`bCvp2GHU}vYE%;%E4;H~T2N7GBXVprUYXQ7!>42qivu5QV0u`-F z7nNb_=+c&C$M|IwwtB;W8VlbS`8extJ5~PAquqzF9nRWTB&)QD4eXgMX+R8JoQY?K zO^mY1ji7DVyXDpUxTNo!(Gmh-s1#81YSN)lCNL40UVZwB)9!HU(R+K|LNh&o%G@FK{k)fT`u&`HpERY$kAIz<;pItnEkIBPh zlQy5eaODp7)1RbJNx{}Y_DCUEEg}`v5TY;wd&%Hzyp;E9r_>;#GsgET{ojua55=va z;*+~{{2wt2aA@;~#7+K`5cw;CP4JO_?2XHDl7h)QM)@v|Qpt)gqO1YuS|~P{iga-W z48%Sn&f-59N}b|dB{u6hSP1L5%A#2ueQG-roi zugwKkDqY)xk#WT0pT{Iuk^x_1zB-ct0YnS$1XBRDWxF)WGSD}i&sdts2mNvi9yT_%!^?Ks z57$9#ty~OSc z@`^U_(Jx;si2l1mR4$fD7YCzXE}5Y7Bif(=b}N^5 zHB9|zCQhWbjA~?82cvZjGxOWjVUYB4A$P%P(sIR(I>0+_H_9HddFYXT9#F&6`YVFp zZg~*iDX3@6gHB2H9X`lC{7II(aVUxFFvRJ~<6XnM4U+q=l{wtqzk~64062A_g5Clf z0zVMEu~^Z@sL*X=aK*}QudoZ_srV=y@iSHi_{Ie&WFTOXJ>C6JqmL_$0U?5isl|7X z=YxG_dH23DhE7k$^24?jh`?U2?^=i%33J2KvH&%)Y2h#UM5w@{lPY8hx z;dz#_um#i4(Q6uV6lEfIBH7ApQoh~Y_0+Uo5c*gfsD@8N-)*Z1#YduGLccQ=C8M~M zMtJl-#9m-1FkLuA6#KlfxDr`Zld|QWek|xx_!irWz;KBS4L01^bMiq)Gsw>5bS`p; zZVS7|ADkHw4OQxY=7S^esG^42%8)`jhb1lpJdT8Jwc3{bzRa_x`^xdjzV7A9Md363 z8VrU3N2VsYzgDPdZo)qF{{Zm_xh*U@a|I%;?(03J4%qAG^!1#}#P$AtGnpMRJ@Seo zX|4+Zg(fk?zF?5`L@_^#JpAn_5GnT3wp>Ad%eInWFD;7yr z#3sFgz_CYQhM}kA^;xR`{w1i%_r8iB$l+6~0$ze%_1N3{RD>#nTL^mSJyrGGb4I*$ z`~$klN+tsJ$$DDV!8x_&$LZAs`-Aw#sZ|5(!&1jcjjR+S>Lyx$Ujv0_gm|g1W=ao~H=u16U>H$P@8y<&uqqdkC^)$ih zav0+M&)ed+B1I?=3%LGX;7V3=6uXE;A9%t;5*E9WAMhle3Pqj$OX!tx5E%K#Q=&z~ zcNv8UAoY)qI<5#<4gWa(OZ@Wv<&QWiu>hC2HI#g?2O&PxS`ptU{sMi!CVx%v{r<`A z7sLYP&Jm#ye_>QuzKB0AQtH{ge`Ch|Ka#UMXzje(zLn|La z8QE@h2QVf9Kv)A2(*PjU06disJ5q&nT`L7whVBG9W`#Y1nGNd)!nu_l*KZQaDvZ4X z0bG{-o#LL3#Ht%JyO~ly5`oa87*?r(Y#B2(9ZJki{RTl#YLskE}zBV>kbTaIa!B6%aypziRyO>3#*i`B)IkS3zHY#8bZBva#a3s(|{{V_bVwq>*|Y} zNIH6J(OQwV=UbccvsRfq8Ps}=4Z$c!Y9q_LYr}<6AkG-U&!slA4tFbk8VecU85wq_ z2$q^|b1FDa5|#iM2{uQKS~XkCIemsLVH;Ck2_hrj(((cr!?z;Y-?Zg{z{m)yBr!Mu z>q0tc!GtQV7PRX`Y=E56(fUukc#xYx%DACic(k4rkVD;Q*M)5s>(L&FTb$o2;ta*0 zgHbn8c6_1~jzxsgQ{bGK?0QND80{e`|7#8i;fDPeQ{)nY|dG@EF!h!g{e#9Ktx7+HokSYP3&TshuO#d1w>r$Qb(=v|)9Wq+MLT*>0KUzR?a6>Vnzn z?nL|S^#k8Ckr+*Ne}rivEXD&PUf`B8rA8N&fL>pPKY8I9g_Ns$OfO zdI4V&;(~lpqVY-|(YcL8-FZ}243T@|o^_#P#>E|5JiO22K|Ddr`wb?+3*J|GWSbE@ zS2Dl1z0PB_{3(nmZ|1gV@wGrJL)F4Dt2+09#3Lo%Y^E;9pa{2Zr%bu?_LJBK&0R3; zbQ>3q_m~+TglHLSL8f*$mnj0bP3JRu)H8GTR>x_l11ek*7&^9NPAlAicuScLT4B`k zm%u}*sRH%SbVGuu&BCzOVHf~Uv*^8Z#+|dgj;79(a`)pcGvtPkcinGFj?UokM;w7d z&4QKVH6;;L%?$uDR2P?p^ock3Rrqe3#1g<*-oGud=B(eTQO?eso~NQacP_z3$^PAf zHEH*nA&G(2LfijP6Lmga#1Gy2%C?Wpe#qQZ6`rV_VaXJ=?=1q@@>g`V^<#_DXsWKQ=Z*WYuwf{6EGx&+88ZYwzAPoD2mm$^g4_^dDM9TUt1YcGC*6+#q2p4S9Y497)%!KdzrD5Ii<4a#DcsHV5Y_O3rQ3Y$>f=sX9FlR zPh0DQ!(v@Q&q{Ze<65!bhu9)yFGVEm2jkrM)0bRpayVQ*hx9kOYB#u>-C=^FwhzR< zstTKs&f-KGJboJ!H+)WRb=VbpX%2A=*1iGe@G3CU%5ij;Rhr?r?x{}r$?c|xRdd3; z4r@_&!oeh`>mtDLBubVh+<36tHpWl6Nr=5?)(2*Or;aKo*$pyt(8W{M@-SgwezNRP z8eGtz<9MC(3~dB1tZOoM@>A=07zv^Ly@%I>VQMx3R3oe05gZ|=4sgA5XsfIi>GfM< znjPusUf&)8W$<7KSh&v*XR(r<9|f1HvP5jj&Z6G zLK_#7>C;2xf97@bV%wgyY1sc%LlKhNcD zi`e06Aeo_HQa-HqH(~m92kZA@{J@$&} zF(y#Alv9;h+LxOp#s9{8aT;Hwrk7VIg(4Mc!Fb`{Mv(MEDbzp|D9pkE5L1jfFPdGV ziwOdgUPR_Cp#m0a8Xw5h=A%#5F8i=I^A0nVu949*Q0y-LOVOVqQvWG~-qv?gm$UEP zp}GO(n8FoStpYCfe(A?$ncO&8=zn4s5%+5#nKW@AQMh`gJ`yJ%nB*;_>{LF(slBeM zPS)Dj6tRz2Egbj=8Bb-+L|9O7dedMqjd$XU@-uDA?*7{)JUvO1oc?r3F-=Lh8QKLp zOv1%lb@mL^T0Un`HibJ^=tHUsz`Mb56n z2a>K$bXU+JAc2`VOAz3Lew8yo=<_7i`CyWMlr!`*(>K1>Bkw_!Q&)`nsCOeSV-ELa zKCMBcOb4O~#=5Kln&h#VlBws`(P>)1>$sW#VScXdgqmzD2)1hq!QvVunrtsxQl^7_}->=o!%d*Hkjz|vA-uoM4l;uFIpF+R%H@}3b8^)Hj$1DQ%uCVUXAW*G_$(>^`NIyam!wp!xCt#DBLa7ox?P1 zmO-SMWSa%zq-ZHtjs)3S3@g~#)O0840&BfgtP)czhW&yrhjze}JpcwBD@l$&3%WuU zAq4Kqf~wgtOe0VDA}u}(3QfwupfVUYhS^;+WtbZx1f4YSp+ofkBm$-)WL1fKD8jiA z9qzH1lJEN%YeF3uP^U)mw~?@egX*leOJ*o16eW%nm_-X){i84|(J^p2A~G}Mi~UHq zGoBl1V|ydQ0TQQN^F>x65E+!Rd)%A^Wu{7k7}Nm56rN^OGZT738EXByT3Zn*#XNb| zMg}w{SFR0fYeLb~`A!~zWyKt%2oCf#+RmtVq^vRSfoMPWhI-0kK_+Sm5pTBiK7(97 zZ)o{sm8@|mj|A=M6dSRNKGUpS*0?L!FwC2JWD30^OE;=_J1hkvL3xSyCJ0oRpf*Qa zN0O$^F`OE8u%XeQ+fno=pln~#VpEm`>9y|xwa}>PF0-Uu84e93>H*sBBb{dcM%6pI zXSK^4%os~JYPk)ybualYp>81DA6fTCbjDbba@D>q^fIv&l6Cs6)3M&1ckAGgD&T3neWIIt7YX%XeHBY_4M zxYP0?eVQ9$fjw^cqbxOFrUjH$OLJX3q-`OGm@Gi#JO{%71X?vIR)|b}EYx==HaK4o zPrdOer(b#8sYi}o=hy{Prd(s{{Ixe6oVj>x=M%_B;1Q2dnZy8MzJfq)PJK~e^buYa z(}AUxXm9H?1x74f6DdMR{fu%a%{#o=SvyxDkwlut?To1#}|$u>HQk)GQ_+R!B)@gW21ZA-$*Qd+-wQqfF3fk!h!FWkAm}6&D$@-3l(R zs`HZtVM9lex=|_`QMVN5D+1F@0>CeAl5ay>C>rPsZklNf=E4OAo$!BIUQ1y7;K)sN zlq>BP?G~B1d9CwRDt}C2MwVC@q*bJiXlDs1K@_YRY3LA35yTKr#&kUP(){a$qerUg zX^9RYxlBKUfSI>mWZ3c08dPwYM~*olKD)?-RBI7QsV$q;-Ehz0tt}!;ONyu!2?PYX z%6IuoRDMNn%M8IY5{Hn_fpLej6pZIiN6g819)V(AorfxsxK@TmGpPtUwgcXE>m#w- zuzW1g&SXDFx+JQC1rg%-<voMaLtV zn=B3=Pt*9&`-X|z(7C_@gZ@wo4796HoRx=0aY8!=M{CCm37G%2iKsaomtmm9aJUXH*8AOry<zN-1qmvXIEO2}fo;0@a8=%GBicmczYZ76J4y*W+!P zyc~k$bPGXiM^2>T+%6An>7l?CnYsrFxnh?-?6T?Lsl5_y4gwO`*>d^mLOp>{Wm&+0 zk{CjNnUJrrRN1wfa`2hc^!R((&4+^;Ai7f>T9k-5M=oSfPbbcIaOLoF9w?p4cqlI3 zTiGL2C=IZ)wlA~suu%jsJueq{wSif>F1dWrV6b^JweShFO9B`0%g)imTJV8G8ZOk^ zdT&e%ufP{CNJug0ek}uy*1{0m>kbp!ZpxLr%4sG%%X3I|ofFUcFiT}5VKFVa^ZYPc zYv|kXqPoQvfuaYn_0an(u)iq6uTrBb%;Zi7Q~>u@H#6Nb20`RbuFyA$yWWcjV)hik zU>06y$D#E?8K%o^BXZ#pIRanQ(01sjUP@a@IJsp~{@rV`-K?&#xh}$GC4FIFxE+{2f1hD38{= z7rKfTD4$UH(KKnX&&7jP7`gtFYp(^|)gnz zr>>vEyr6NA`J+CmmU$)VpY#?7VdIXgx1d#QW)CXBw=5^fq zVzRV5wObc9X}>;J&JqIfX@F2(Vk>w_S?Zd|(36VTL`A53aFXsH{6D~V?;XaTaNN!) zD=DX&ZaGpXG=AHcUkx$ya^F$Hg|kzyaj3L%m;0HXFu4V}l2ps5V!V{lr=hz=MPd;p zQ=cotT-MPT*S}9k6~b1ZaF@jbqp~#BQ&mPBtlQMe-p13;gmq7ooz%j?-oE4zV3(>H z12A}Y6}N_T>}2^$xbb1#bd5E+s^z`e$hE$&hNoSq#0_r6@n3!u`z|}hr`513hl{oB za@8heBCdNA1{D?6ip#JfEt^o#08yi9XdeQpOHCph|FR1Kf)#Njy8^x;(moGOdRTJk zDZ2M~L8T<^v*OqY||yBz2Ea@=c|V;o$Lq5oRfHaiGdkii@u zj>k+jwio{BsVp-k##vcznsy2{V?YIQxX+|5k54h+xSS90!9>Ws)dLnW8IA8kqF`Nk zJbj?>>DIjCiHm6S?(5~b6^rb9Qgdu8 zg0QKdMA|zNBX@;)7lets=nqA9b5zgKH>}-T3B#MmA-BoF7MJap5X=d zSa!@UX9Ba~0>q9?!6}iLGi>_R4Hqrb;}J)V1KVDW1PgWs1$|@;(qciGB~GooJ30gF zSv&0(`*e)?2ks52E%ZAAho0zw;({WCgi`SKIEsE_V*Vv@QsIE*7b+D%bIOw%%Y&&A z8vDut@KO6k@9V==R-f=b|5+_6i)pVdrT+q2-YW9AsT!6U0^)NTH|MoP!c}#Ds22$! zX8E!50u-g@u_kum+BnVVMTuZ|fZ@e}%J@9=QGib2uFIPZlqwlK^uHZgL(=X`HUkv#&1Oe-#W$y*1e}vFq^80(@rq9$&$hhY^ zEN4^uL5mM3vKZoOqjDi6XE_AtWy1FB7q%*DU7M=x;9x3LG9a0KZ8tQnMHWjBemusN z2QOSQIDf;LJ3M|b+N%c_9BPF8!)C!8pA!=-7=0W?zXaNHfx4xfs>IU1+%&)MKx#Ce z)U;D=7T^LZStD#ba}#cau5V3Rf2bgMedpEi>qYPcDl&_k?Cd?U3~vsNpLh={^i=O- z`B`7#6LsG!aQ`B{OnSl%2&iB1Dw`~|VaZybFm{tBQlmb|qcBL~oR%1WzR?@KS9QwSw7qA9S3Nhc^4|YK*W;ObPALXq5 zx%~sU44abJ)k^&)49c6C1`g!bA>d8MdqJ&*$P)nO=&RbU&eHGX>6@G?fYa=gSskV}53)pnX%)cc#Ab8d6xuUGf;ksRKY=PaVWfX z#_9M*C;~L&nJrud+m6{##X_F)f(43b5TZN*T#khTi+mRbz|{;E?0DBrA7tdd8%x^) zc)p>WYA}w^fWoyWAWr~WOAG#$U_ydDiQB^eh3|AH*t-qkt3!?>J8$d7TuT6Vw7{S* z7s1oa56EhWdCxN5$ckX9Ji>dCeK`}s%%dUZ6mi1?*rBNqjC62khOM^-_9ZwAaNPqq zr6pJMtujLDeffq*}&&O|1gM63X#3CB7sQ^H{K{;=GuJpD=a4?B( zL$lm5Wf@#cZUyjOLxbWyjl;o*oEw%t3mdg2BD1flB{D}BLLSdoVBN+dSiI-;HH%CYL>#%TfTKS=OPalXZT3R5N|&JhhQ+OG^kqZ(_{?EI zN^GmDlS@2_WYQCLd-M)2zL!Vt<#|ii85>+VW$s?iJva#YWyqA6r(jAjsijEf)X+v% z-%e&)7L2wLF706;JC>eZI=k1@4JQoF9b13utR*|zaOV7j-S;&P9l7!KU#l_*iKB>4 z=RY>?${&`0H+V*D^4evneJnBomrOCoQXh zhhQA`MaP1QC*3Sj*G{%tn11h3-3%6X&9R9Pq^jrci%{28<98mlu!F??}PP5*k;$+SApd6^O%K}+cDQ7|(#;{5Phl$F%%BYip z9Qv_toTXwLMhQAu^a$vSrL!BlZs0n+^Bu- zK`U;c2g7lKFY-q*G?fy;?~#>7&-wc4BKm~3qHu!&^jj2+pwFC98DE2t9`t%Q@*#cb zr`+`ym8wtC1fGOjUnOlHYuIX*r(v!tMWRVrm4Q5pYa$Qdl##_dO&FXtx_YgFne&<& z{z6=_Xy(J&l4H#9CLB8A{Rlmk@<67J=;$`czfs0U#9txW=iG!-9|K^DU@j;8$8nB#9^H zki*~IDI=uFjCt)815|BeVix)ii^m7alK~=_M3lwMnIAAlY%DdS{rx4&>y_f^PWLpH zFeN$%E{P85*o!PVP7MtWjSzSCX^BPdK8B|%(CPH2?v17yxO#cFxS{NTW|_22jiXYM z7cuaL^h%h~W?Kt$3tpAHC>K9ui4-hnYEMI46$hJin6<_Ea=Q*ERmV7hMEFY!MRlPx zinEY|Vz9kSu|Tp}`1n&5w1}vfz+~<$7YxOCSH4pNpx-2>bk+-k{2GGV(WDqvaaseS z*l9yUv5BC7 z+&2~2P3FiyZ9vVEpgz}C)BVRUN1LZA=~Yc4?P6t0GVg}d$0p5KF@68l@QWZECLc(? z$a6yNqH45$k>!;4-sCmgPiHn|Ey?WTv3V;o_r#*!V52Pt9YV-+xOL`JmM!0}83mgO z5}az91OiOjYqAC0>{jH_N$z@i5dnen%*5X_0;wJs`J#dC`leuBJlG|=&s#&av?n1d~-da7(WtO$L4=}4bDG{w62tavT`zoi63>vNS@IC*! zZ?~u%r_QDar=Z!G3W%<puTNIF zrB`F|umo7MmCTy|=qOPSiU@7odO%xORk7ST7i&6xh+{A?Zu=4a-7PSr3y$sOB*HU? zG@ANxA5t21fyPoAC?4Ev&z`m@;kb`3wS9f%-tOJ>F)YXr?~_oz3MPm5YJXk(_t4%8 zs%%GM4!K3cR6y7#Re1JcjfS&3{(q%ioF#lA61*pt0m8(OlP<9W8t??V=+cr?a?8;U zQqTZllwrb8?>%|;cBQTEI>))W@< z$(v1Kdb6MVDPO+y+2!JEltePgr<{5^nPr<}Zk6_7%H481$GWiFamg9^?c$QVPfl$Z zj<=YJgjfa?Dv?0-95@Ad0yRyCZiul>g|pNvzHs}8Kx=Df2?0XT#Fwg2Jv0AmQ90a# z7M!5x#ig_;s6>ZIM-XKgFgM(P_Tt?tcOAXOx;P*ua)<S3PcoPL{dx{me?`)KKnXrTDZLFvu;C;lNykE`GZ*&jbU zzqZyR>1URTfBk}IM)|YnWyvc)P=&8~&Aa89xqe&2n%1>}&Fmk$Qw?=A$s&&u(E-#K z0N#4uK3}Dab+03=B-#9Ng(>utPybiG_j}704Jd&h54odY2M>Z?+uV8ZlEl!iigQ2v zQeAjgzPodsd%FJ3<`{VH6gjUZ%!s#{WR9NXv`_ON``h5E9d5YEz|_I?qx0WZv*wS6 zBLl0|S>NRU*RE_$AM&l%Ta}SlZI}iwc63^fSO9 zyVzidJ&$_4P+7(H+G($&$)=cYo>f*`6PhS9L{}-JESqn!r7pVcs_Xs{i^+T2``vA+ zuUKdOF|}}oI-gbrE9NvqolLbX(*CdLa`czI95KZ&%^lM5?J(hW?K*Vo(ydpYbr*hX zaHqM}Zr6OFES_YMP2X+UJQ4T^y$3_VpTu3+WRpuitKvHEMoqQUQP&VYv(BxQujiaN z{$uJUPOc7niN|DdI6|bzQIO^+*m-E^V}RLetZjq4*&p_#8`U&hXt5=h+F+wi&Uxr@ z^o^)*%k0$4_Xqfd)zZ-27U$2U5?)cN?@xeccq(ta=E;jUA0fhoi%_CeneynS&%Sy< z6cIg14k)y$B~SA2uDju;yZ#Tigc7UT=tGqOea~c=a0v^Ek|cM$lb!8+7rWfmp4b;* zL=Z&`aU|$v#@N`Z-9(d3Jvf)9u~Vq%8j84;x$^Qp%AUCBDnjRaVk6>~vrb!?{lt+> zHPlc?0|N{(!kA9Bl~qLzwHR<`n0 ztaO#DTJ>sHySmk{aZPJp%UajIj&*K$BOBe=ra&S^9{H3IPXdXg;KW5a^svAZYYHi# zh+;}8rHl%e*yETBF1g}bdRaMn1+n$j*FYo9^s(F_haHKen(1VpQ-Q^oQFb|Hm0L-5 zwYAY^&#i4;8!p`WnrPZlzc-@C5giXTy!s0|j2#}Hoqr$aS;jJ#zTEN6JE4ukMsv*Z z!544*@F##kf=DHebcLzqj2o@AHp>oYQ!AvZ@gH?fxmDy5xpV$$W>R%E)t;H96CJxl z==|!JQOh9uvSYWH2_PgYsx8AwbWv*~}AP&Jo3MIBkt4ylt zXP$Mo+2xUEUL}-NN@?X+P;r$t)L2u^wb#*jE3LNHdRuL`({6hmbl7nxH)Yz)uw=gG zH*`?A`VqWj(l%@po77?d*vpjTEfzoCZ!dwT6^Cgv{VGoxN1WJ_)G`K}@2KNtHq>_~ zH(<{`Z+Bed55xbltP-t^NLahW@{YDc$F9r@FQUkziZ15<@^;uV7C&`{F18A)pknGL zkluVDwP!AL&wdVbobz1fs;_U?es*)}bD3q8T~4p^CeWuc)`+7`Z{{WikqQwngN~yo z$~}f1;03jKc35(GM!9k}{v`2)-q;RqByOF#mdk?s+oWuX}MFzgarGYAAOwnsnZW#9M`RDR$900gK07neQ@=ga?0008jk|Etw2a7wvJb4wfP z3~l+ZXaoT8fW+3(U@@y>VaNNM;Kf^pGo?31TN;6{CDvWP7-d%(gxIp<&cRn^%sHX) zieS5sqZ6w*+tP{^6DLiZLb$*QB)Qd4kwYC#&cr=q!hwr+#$B5-49aRESPkZWR|!UJ j*|1GH&J|~+)kY&;XO=pvzWEM(VBKsUC%hYoE(HJp&jCsR literal 0 HcmV?d00001 diff --git a/src/assets/fonts/materialicons/materialiconsround-v21.woff b/src/assets/fonts/materialicons/materialiconsround-v21.woff new file mode 100644 index 0000000000000000000000000000000000000000..9235713ee83eef47649ef9cde94f0154dc0b4a61 GIT binary patch literal 119684 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%0A(Ph)n= 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 z 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�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 NV_;^$3jhFp00iJ+6dC{k literal 0 HcmV?d00001 diff --git a/src/assets/fonts/materialicons/materialiconsround-v21.woff2 b/src/assets/fonts/materialicons/materialiconsround-v21.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7d6f03964a938e7f6d62113ed263ede0934af8f7 GIT binary patch literal 103344 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%0AJ82OK5SvIugOD%|*&vqWiqi&dR;fJpf#&N~I7o zt%$h%MZa`=;6-RtVv{!&+SEA)#p4B2NRV9<7bfqlwfO^j#N+FY0>(31!13wL^HGnK z{xMPNVa*st#~)=WgSp+4+k0;e=c={56MX{WrccYZ9Ml{b+)zTl4R(+|uAVb~>|VF| z&ftXT5zKi03NZ&68-2x=4kifa=QqT!jdFF2o4J;eNn#hNa=?s@J|A$p5D2^wv0VEB zAx1N5AO~PmW99`~%bOh*AzfgJHTm#^Xn*F(Tl@U^<;{~>zzv5hN>FX61_+Z+lV~*2 zq+@O_&;>Sw)eQn)lN6L>r|8tCoOX^*$I%^iE?nWXFf#Se6BJzTS7xugpJ?Ip=<|qb^~AX!V(&qtb>fI7{F5 zTVw@WV>L^zwvXFwaPijW$&Va?j@og!c*oM&>OzCMomLcBY~$by2&XE`jbf6TTO}F# zpWNKU`=(~7#SYN7$nmFB2%biPWG6wJJVa!Xa+%V==xW*h0qxJl55Maks3uH2D476U zR^{LX^kx@(9kNK~TJtq3fjK6IB~ldKcy6Ha?ZGc_1D#O`?U&KzYHw6(jDCQJR2n&4QWb27w-pF@kp9 z@cl{{aQahJT{`)q!pLu->XHTLr4GkEmQjk{B^8>S%_ig$L9QdCiT6|dIl-`Ut)^d3 z&eQ~Aa@AymOvfsaZ|-w0#Z3e9<}=R4#{`>QQ);sZzu~o*GKxnOl3k&Z=pR))z-~7} z16u7%t2TZW_wTdkYmPq0by`oUMW^8NM1x!>hw?OAQpjA6ofjWM2ObQYdJ`tZ0WC{# z>Z$ur==M@~Ffi8dA3b2~3QbNt#*$ppGvUV=;}#{(!>IdTBor=`&h2{9Bl9|S zWw5=1bei_w0EUJB7MQ4ki}`>#8=AQoourUTtP=}058OEhP0pp701tPMTzdovqh zHJ}{Q8z|<6Dh0aUM2C)eKV)N~d#I5IYbJQ)Qb@Hd((yF## z9{ZeGb6OV780zEb4XFiTw&RU>Rhw7vw#y^$I>l_kx}YyoD71lasXE`bo107F;dFad z>nF*~%X|GKo7Y&of^Jc5BdSxK88%IBfK<25H826~l2jt*6;fX8Lf?)|h-5!b+?t>8 z72U9irBy=lT5P&{=+F<7t$s%|i0B}rV1&0L>|_g+S8sfwA&sJ>pJN~5z>1GthyvgE z3ogv4@~r%gaklJlB%`>;b*O+k3SU!H=T`R-cH2RLzKc?UHkZ3>L6e(!LizwgIIx@d zx69te4*HSS2I^zpp02zHWE4O?Se$!6_-dij=+0qh?b^Y_b%V@2c5JpXOt25JKy-f} z^8M=KP{;MNC$%pfa}YQYv{HNNJ+9BKqZ)|0nwslguFqw+AF4a|k6DFM+-wd7lupJ% z3gw}^*75Jkonq?@7xT{WTuri`tG%2G!c6}A{rmZgp@~wvllVpOGeMQw%IlPgKax;K zCDzM~i`(l*Dy=+-H6I1vex>So7xSb=YC|&o>;hBI6MQI-;t@M=&Y?ohuZcOwRgUL~$Uua;FMYf<5BX z$mwiRjC#7j##XK;B#1UD<+Qc#*<=3utg%wi;+8s1I<2@v6kJeIETw{qrv%az?7YzU z;nB*0`i~ryNlW5K(C|B{rAHwMye079$s29@FE9$PKQ#*oi*@~C*g#e%5;&nxdF9Np zRWp+U83%?I{l)I$`3(-PBPf>dgA-?F6QJ$z8nv0j#B&|Z} z2tIG^hhz}%6VNDr$f=#y2QOF_8z01>AjDyc*ErhIFXJ*s%U3sq5IVA<%)Hk$<+M+e z&f(ViBb%F^Z0)_FlWZy6GgOCT$+%_fjbzAv0G<%inUrewK2mG%3guY72 znsf+qfx?o+z1z-s6(I4BH(+SDqRo`lh@ni+UgFCJu&5v8h7UB1c^=_myvO%eAx5r8 z?qEB$M#;4H;BC<8v`L$c&$++!5LekG!3fSvUwT0&=D0oUOPSEqF(eIp^&9pA3?rUv zde@iQ;-uk_r2kobW%%8d!`$Q}|K#Lcf2aUbv!&+Sf8N#j(YN;3yod&Tl9VFR`hf9n zo`C-m>QV`^dksubdKDwr#x70}`(Fu+d;FmpjZQsq2>I1NV2Bvqs|QvT(YEMzXV_Vm zR5(y>9nFz~phJ}@pT8c`{bDO#6xN6SN&VkPL1YoOjF#*+ZSn6jnwPV6%c^3Mx5&d+ zIvVbVb%-~H+hRIF?-obh8{X^yCym8hwNQ^kN5^0?mT0&(TFsiyw$EM3_~qENH*5vX zc=rWI1wjgC7DQ<`#6lrA)h-;T-18Xd2KyNG2L}{M#cq>5W9bJjpqW&(Yo;6G-i8ji zB630}3@Rh<-5Z68!##tP*>A!LyRt^JP1yMPt@&qz1ek5Ym<`4BP4hiZm-hAhA9j!` z09uUnf4|FnQP}Z^rLCMc16@k~boHavvvaw>uk`{h{2+{@&=}!PxV?c(=oyv?{JF4uuHyH~XsK{%MM7nr zAeyK)`hiuKKx2{TA360jTH}x8z~3zw7ghdA*`I->^h<$An-jzimhyXu8fv29Fufuv zaQxd1+`#IW=K%u_i)bp0)Uh&=;Fm42sZvo973Rp zm%mLMz0^3qk1t-NcsEB#{9bJaP07H)aqrPJStdGjAbeoIKuO-hqBF>=Dn2~cBHw%;z4g#2v48Ny1t`ABOa5u}tbFkVR+(A*>*`SKLiJ*No9mu!Rmmv5wjExV9nm zxm83DW1$>L(Q2Iex>V6{o07|EyFXbR<2%9jjf%kK`O=(QV=DReb(MFkOccm3SF*Oc zZsI5ba>chFpCdjcopr5Y@lz0|<)75Vw;0=ORf~Zk6@=n#5Is*T5Hi?b=cZ+=| zHAoFu&@$2=xaHpdW;Ukbdpcn3B&b3n;MXsbbf4K@iV%*`hc$sKu;@zdpyRLW`WxF& zZrIOnn|ZF2jH=I4R3C0V|Fb1WM~3g-=<>tI<_AM$_eC_cko9}HHvdk&Dg=vl+t8V= zJuml?a95pKE8)^1TMd*^Do?e_lns&~Fsr;l7D7jRRcz7nhNhVob#(UG>LEXRVzhUN zP7e>J<$PByHrWBF)fr=^!^08^)5lRY?ku*d?MXN8Q@Py};t0R}@byP;VspfA!Uoi^ zB({nz2gmdAWP$2@Np9I=ypa_cUVX6jfpzKBn}gS}+sV3&OV!CNw_1|R9>vgQEbnOD zP_}R;EWYUSH9B91`Me>~=V+d;k55f{GqgG20>ZGB>-6%dw4u)*`Txx_%C}kN)dDA$ zwR-cOd$!B&g0q&Rw_Dp?+v2mS*b=+$_Oi~r>14v{ZWs!;wP@$(;nZ}2NNF6z36a=!n5cb3Go`E1f#2*I>c zWSQ_(s{x`T?N>?(Wj5mz35zQ5t+UsTtq${eD}(dUgU3ghL!6yB--6J9tiU+pbWdYA z-XQcL<_HrRMgTO{oNp$uAA|O*dIJV(?@5evh+xWk1!t~asGL4HSnjNf)jRo#pnT)m zDoJ84`xu5rHy{YGeOmu5@aoSY9*E;wnsws zT$iJ}qS&&vz#}J{zB6b?+uj*%%Tb=ffXX(Hx+n6=1;uS z?ARZ>V{M-Dsh5%Dje}h`?p2WX=oA`=54P@DB>G7{)VcJ|IAO>3!%pClcH4Un7d^Gh zJLtik1ONGk%Efo7lI^AzoV0T*`%Z))o@of^|M*=o(ZIdys0i0kd5+jFlz?^Q>&5i>v^u4EO6I#g)|9bCZYK`{8&0QP~ zN5?R2cO#%L^aWgDj8S-;Jxvc@K0G;nhz78Hw_2eUu`xk2aQ!^KgoB6BX!ZW_M}>tj zVqXB*4}S!8sE+iOmjUqg%2I*=u>v5atrKfCp)aI5Lb#dM4DbM^O%x$Id2T z%Kg*e!+7-2xd-e|UsGBjgN)At-7F&NdmS-53%5&8CM-�rp4%=-yZZBe> zWA{zQPhy8`5$FZFdo1cP3tQKYn#81Y=icB|n;O@o|1}^qd(|mQakUOdrlP(&L;_C9 zEYA@-DR8BOSz{-1L*c|ePtt!1UeO0?1N(`<&OJzYJ+R36eHz(>* z$WPXB`BU8T6xSBRC=Pbji+Bnesv=x&1q|UTe^%)B$&zqCH>`wm-2!bde85`JVO8PC zhJOGd3pi{cxTN{Fui{P#b6%)>GWtG_(6MJyNIeP*hDHJ7Z=anqgEpdG@&i!SnG~F1 z*HMt8paED^K(IwsVIe}~D74&h2wG690sw-a6jHt_+^$ZtTJ+P%AS`-gVmj#Jps&{j@`^IlF+V?*x20Px7R`11#y-tjb%r_Y^Ziaa}m zF1;7IAdX@r2&uC06et%A>c?sLu)?lW_Leo`}lZw;X)k~i2TivR<*rb6@ zQdFX>QvP57C4?KZ`qNLlH$UtGJEbWtK3_}t`^*Y=ruI0+c_dWLI4!=ef>Fss>7Zk57@i~Su9$pN%K zWKIIR0sVPuZqZK!Yx2f79dACr|IVA2%eRf-!{03l+4Yy#$7dmd8bqWNxm{@U zyNoY%hQpO-{fjTIU;p)>e+Vxxf9&5c-1GJu_8$iRZUoG9FIy}V(Lb5 zv6~k*>BC>Y|AYI&efT?G&?8TJhQRb3|6)7^2cg~sD_eq&U8p$sA!FV{*DT`Rc<}CN z7RteCl4Z9S`S863=<=qp7R#Yi7h#=We_hVQ8|&+uHlJwY&Iiyk{z~Ok%H%-B8hG!> zwPc0`1mhU_dj0SNxrRSH?;wc2PKHJqz>BC_?q04u0#$rDRK{XCXi5-Adq4>@11lFi z$Fa~`U1Ud#5Z{}kIN24EAHDYIv-p&Sb zOKLFo98@Q%vDn_)GJ8A)7^LGmUKSTo5y73EB!sw=I;bRZqziBGipE#(-1Ay zI_MmYf!>fNm;9!MlxBOoV$2`8t@5;zs9E5G2`;eXOr^OsSHLKVK^d{7Hcbx0gcHI| z=_|YK)q&Kvd|P^(nFi1+-r(#R+Q$r2Jzl9y2W|;UlWK<^dic`SYb0<19&C*?ZLqJg zNGfq-ojJ zgXVji&=sIUn)QRC8%LYlvS&YqD;Ceb-_HlRksg?Cmmm~oPt*>+$C4xxn#B>CGcxDn zL#)*WFe*Z9RD={CiOCbl$|R-8Mzd&5|F$8(fL=(*9^^w-!Ul9rBj0Uxb>)SH@)n#_ z$=PYm#v!Y-t6lsOCPAHewxM8`y*>@Ja?0G+wsyCBLDEaSsU*%cOr$%v`Yyp;sOW4j zv;zT$2%13$9$O%#g zJrx&H%0$v|wt;XPMWVMCpxFo(pA^Zw$VXLr33Mq0%@>h&t2K%?y3`ntxe zO2G@H1O$^-L>n0kRUqJ!xd=>phz3FeHCkb9tQ9oI1B%G1dSJw`FY058W<~Bz+(2Lv zzy~gzLYhMKy4z5v00ijPI)bgiu;bIL-S85(gVYyG^&e;Ipnu>)C1Fpgu{uvr4r zRr{_ioi~|lEpb7&isMx;DwXC0VjwL4>$vNolMGNa#LZp;vYcdXVj6EEJirU2{0S1G zxG4m$X>*u!8of3~WR_KwZ2_>ZwO)WRI)rj%t|4f5DS49cQJtl6POgsz_|c)IffI6I zI)vp2GHd%53F&iC;y48qPQ)4TnBW3L5#?mrToC)UTNUw_1a~Z_xwF`OR!Y|7wVBLEtYK)wN-e8% zV_z<3X!6<^C&I2xypsj+$%~~&0yS&cs)N;0M6pf<9b=+`YIIQ069Bb3IAOH*;gKZ5 zI|Q{fEMP*#S#7Sz3S@b~bm0*QZ3ZUraM0#~fZYp%+EW_TWCq0#xE)^(z5sz1z5l?f zrw)6_m)r2>|DIj^6-axW*oBg#=#(PhwMLwUW)tAA=YxTHZ^UqD<(h$@7F1y!e8jTQ z$T9hu%l#%%EN5a`SB;r5t6CC0+PUdB&zt6J{mOb&WYk2=;g`SRtWWkK;AMDj~!6hoqQ1XxO9Yyj?@xL^CjL0L6s0{1GjrL2eQ6(JhOFW8AduTHSRdLdNMx-KL5o$6=*qI>4PHroo z(DM$ITB}i|ag#XePLr_v&j1fRg?YY!#CG^Jw>qU2dSO^^Kgl=HTz@`wdRldyTeF?)9IsaiQ4v(2z(HL&lpIPQu1N+WvB}+g`Y>8T zCu~y~it9--(D8BqnGleLkH6O{?3*7s7+ zniHG9VLxnEs#$UX^D#?M4fK(0N`50hs5@{VRl~7)2Om0Hd(y_Pc5G-kCo%NEN(?c! zUmPj|v`<3j4CfjmqPl?3a2pcKkmSWiRfJ&TF{U6V+%>-F??`k(1ru+KqZ`Tin{^=p zU5i|Npv*_%^*!-ho4xtBrmXvwiI*dVZE$={Nt=6dRr0>+h#UbvAq=b+X+2L^>qGcO zBlOOG`J)B<{_uHbp-AjNBB$QAx}vtkf9M<8O}b7eefxg-ryjub91<`snqkx~(^31gV0f775@@_FktZ3{|`OMlr}BO19qY^MH;?@&B|$_tH&2 zcEJ~Ttmq9*kEUa|i9tZKW{r2Mf5TlC_8)_WH3DH1o35_a3>pSIC*M9kqXo-4%YxJgQqJpt#Q%e3n0fp9_18O zAvfp1{9_F$(+kOEc5p*2%SFeexq%+QUsV%-^%y)o?Su*}6;H|Ps^+3VQWsR+(K@8J zqJl9)t9U#gu{X%XyiLRxgSr+9tR2=Y$DpkFWI0QdOHvh0$32Adbvi7pb{KCvl*)d& zub6QrRt#+m@(Bo_1pF+<5I7mXh)-zbM9pVV7B~`Wti?zZrV)bnp-VDzBz0;^LP72f z2osWoN~}_SNtpNZVCO(YSOBiOeD zAfT)tQ`;|m`-6@reuX0N&A)8&mw#cwyWkCX22k<;l7)T@K9dHJnF_4YG~8xCL4+{} z!~}LGlU;J?Z``sZhRIcmqgj|gqSPqN#0p)|o^$v@n=@E?I~F3cX9!h=k0)Jla)J#N zb0CDk=?etGPy@@Wf!z`VHFeT~k7vwu^D*(v z1tbfWQy9)YQsmw6;H^fP$rUT!ph7vto?YUlRg*MkFwT|<1!%^IyIedq&Q>`hMu$N` zLQJtoQ?e*l4Br2w{WFwRhfxE8A$G*9Rsxq#$`nR2DlF2rP3+H9a58ojWJ30vXBe*> z>ztuI4@*@`_E7~=S`#4j(Rv)nTB?=}?66-#VF=H14d~yvhAp*DN8#6^lKYH~fcO)J z)X|;}gl8*afd+Vj38v0B{t%cLRYJ{Rb-+4)Ipd}n3D=Gwm*ErK;yMH#&D?&B;cu!r z$U*{wa#%-jO4Dk3=?P=yB_{GBPP95ojJPcD2I)ynFQ&W z+2^ponZF#U`n^_|bHke_3VP$xZ_*9O?~vhcy+HeS=5=)ZE>ynRY`M-rM1*ETCPEtl zaTS2CJs@H@fT7C2LdDEBoL37D#>Ys$7+FVDdIOt#=-s9Uh+DIecXxQz~UJqKN0x`QchwZP+UYZW&Q` zscSRLD<^~f0lnm?=^m%jF6~1H)5Zkt*a0{%bRE+X2&4}`7!6U8$NddU&_u$Pc|aNt zWOuH8{>L`Q`Jx8+NQIU*vz_Qr9_e1&ejB@dVH(9hGJ39?Y<2R$-wCkwid2ARFz54? zM%i^)Z=s9Jo${ti#xZ#l?^qagm4De zyDi>}j(5_EFGzUIA{J6VdsE>4tW1Y=%dt99t7t-HgQiWv1Ahp2vq0cs7zI&~`niAS zGOhaqNhsRm>oDkU`y;Eo6i1i3y;m0p;SQ6I@)(t}j5v8<29 zVlS_poXBo>NiD2T%A6j5>(J^7o^+1`Kb)~KJXo`GR11?UrUtpRiK7HlC*e8l9v9oa zdvolEkA3~GUd{AJhqKU>;Oi^q(0MeR&lP)Mki`aH8AMfj#S%6KK7ybrc%?dw2o6zSklT2=QM9#c|+bqa-qI*es}^}i;*nx zmpuf3Z*_XtEZqxhZ}hb?LWxVtO?b|$m}V-Iw%x|}pQMXh-P9!9w6@v=`#MBQ%!;LmPAxo07JVq^Z z9US2h8(AaME))feBFnw9d$Q$^@xYksu5)oBNLNmfaoUMF39q$P2-bbjVPqa7Eg}h% z5?#L`sjNb`^9)1c@L&C{DW5U^Z70!bN2IvrG~}O%nD4<}#-4<&o9vMr;UbG4bFf`y+IpPPlfCL=g$e|h6JC+8&AMc z{Tng7{{)Rr9d(cBGu9Xk`=k_zPS~^KmBinnszYj^t^JwbAH4}g(VDoX!y>)ZMj(?k z+5Dq{OOwoZ3K~Bf+ylFR?jOQ~N5D^gXoFyZ>`q}1;x?+~gJxIpW1ltNh7phd=YQak z;Z59IlYsfh_IrP)%ii_>{z-98thf^|Z4rFg#Hc;V!WtZD^B%CzabmJ5 zYXKiQOUxVJG-g>CsdO;S7i&7FZR>e;oN@#<+{VhprxPEU-@Q= zKXWIxL;3u;!#G^T4nb4ev6kWcuBN6kH!}&kwgx@O?j&9sL%A7ZOw}u*9m%N+krmI_ z+DiDCZ10)Ev)xX3Qfhl_q;uX-N>9_y>ll=fkK)AoX z_n&)H#z+0N+jAFIK_-RW31mhrshS84ezmMKwz$mU_e#rPN25>09wl`FzpCx*EFNZR z<<>n28R7I0&*q8zEY#{G?La|h;YBvbbB4F#57_RS)W;GzDTYql~q*$zrQ z0}i;}9#K*3ErKL~Ar{y#ER%WdP;iu`R?h`4xJv>PWc>DDgGca+Up(TS7k8m|hPDq9 zlP1uZPe(Aa`VnlB*-~GSum; zV5Y;(LIzD*#~e3ezTyl(Ld5VQ6xn^~pJk(5^RV7gWN7q`OCf~3xePc!k=Lrd2j%+xDEp_!T=d)zoH=jCVI<>gFRct! z3QIU6jDBG3uI_JtG3LSF+uFU_#K)=6+;=apa4U@ue#TiW)qm?1@R|JU!fsc;{HOJB7zPe={F$J542z0N$WSr#Nwja{FdtxJ|{Z8V9hv1UyD%O|-6DGoRTRK&FqIR|qD}o-8j{k`d@^iuJ z37MlwaHdp&e~-yl(pA!H*+58(btAR<^@o7iC1fj7$wE-io(f>$vbD1?(* z?~dq15l1IFM+AGRA`+&5)0Fvr*#MoW*)`6-eN;Ot(vDXfe8=c$Lm@P6OVlfXi=XuN zYE|O#*3<0vo7APN0KG9npRW6$wcL#We6lOMieAhUGO#iR>{}mAAjDagkejDE+Z&A) z+EA5$tnP}I8mvdTu~q*Oku^o1FsZ?~{)SmjN-1r&Em1k#t(Uue``FfOWrK4dL_F$n z4Ak8cH+5#Zh-kwT=JZd;Wetr^Ay4s|jVnUTTqde$-$cM?2=b`Y%@<{E^84qZt-E^3p)Oaz=7pOe^bskj5n;Vz1*u*JNY% zQgX;*zcD%dL7EQ)E_OWZsH@P=G})&p$X%zDCpabSGWRug(;sqf#uKt4kfd)w(q9r) zIKW-E;PQir24~d<0L;gd`|v3s(%^Iqmb@^<*EQdGvVs*ClhPtBlE%%1s27W0dLK)d zeAu3e9WjlAM~2jfIAZrC)Og#{)ai9T(7r6MMqsrre)P~Z$m3$(@4HlAxU;DDL2Sp< zdmpiGbJGK#aW*Y~>C9rytX?+}XbT2qnW872lYL6o12aKI4!9_0*dpCND-fz?VCM2` z*lW&}UFkIq^b-&1s``ONi%?q70ZA$RI;ewMg5FRt*1CE?a*F6m296nr0BW{Ssg))T z^Ai_$hz<3FI+jO~ISX2)9o;JuA<0IH?z5T{up@F zEyH_iYAh-YkgI9bo?h!fP-9ajKq@AU_~x&|UwJ-`R<3ZlKe^V8_yJXyQ+)_Bw=erV z=6a^gk{y6_R9(cB<)9`_)Lz39y#IXqZN=>k=hysl%T7({Fw&Oc*58TBT%9TV(TBY* z-5y>*JmOGcl(Ct6v*$0*2mUUnB@^@WbALC!BU)@3kF$V7ajLsxCsvTap~SLPEPPz* z4&sC3$GvJGsYJ(a6SkP!JbD6-b$R#r`1-C`zJvz;!R{nhI$HE*LF8wdJ5hUu{(DPm zZOWSS^#SgQf*>5ct1N}3nfh!d^=!t8A45J&=^A?c$ASTOXfkqA2C-kJvw1+iKU84N zshjJ+R6Xxvnm`kJdY`p3bBx}3!QABd&VBQnR56MVgNW%0_58y2;OOPmyY2c=7VO38 zgQ%kiRM~c1t5a)u3&oCFw;-E=PH-gbvs|K6a;uBr9G7JR%ae=Uh*G((CZ-xhhBb8$ zzUiT`ClkT%LUhp2*a@1tE zqIL(Fcs{p*?DB2^aR*!`IkAh#+XzUK5`#z&f|^69kz0^k2Eh9%Fj~S#PaLc!-YldB z?4o<#&}|6je4+6MtauK!p|MY{*RIG-3=zSBkxRCX4}W__PN(U?EjtlrdPNsH?5)5> zW^=b}Yn0;O@UEov?6{b46Vz5L#L8kQGv!UMgg2p zWJgkIk(<7wwL}6;O+*JI#7&AWl5cja%;=!&Q9*CFH4oztz$xJ9V25diE@1}x(TyG) zv}qT$8fnvy*kGY!7p$Nb9O2MWn4yp!Se1_nvB2hLB6)$_ugLPR;byj4a4m+GbK2bv ziqj}*uKURNh(gDne7JuxJZ#mZYOF~<*IE+&R!_uEAm)L|No{yIm3c6hpV7XczItQA zX3!e(kUiKWD=^(z0hGa4So_24&{GCMrDf?MhP=(vFi=4G>AIw%fo2$v=g&GGpV_*t5R^x=_Vt@xo=D0dHL~7lEOd$} z3v)x9c#X8)N_%FXU}W@a_QZh+T$Ly^2L^Y9rPU&q_K6YfX?OW%kIp%qSK65_BT(E?txa$Wq zQR)b#2G~fJf~GWnZ6aoFBX|)q)r9MpL!hgUhP^lZO}S{YXM%RR0xhcG_AHq1#BgUP z%&8k|wX3+qj?18JlmN^{?{LzP>yZ#!n~*Bj1`VL!$y;1$D=xRbfZ-aHRdJ?Qjy1bO zL5tfUVmI+=Y1))0D_U_q(mSJopwiCwVLc<(#r)y0PvQ&K47e*9xQ7US-AkUwY zVwIFWLNjs)1*gax>rj01p5y)`Nf5;_@~ws(cnj*~_`|oJ-M~dI;80E zKgB1Nh%Q{h#ABv}Gm8)RKIHa|e!D5MpWzD!jwM+nfFrBH+=wf_m9 z%oABkTcl6ic6h6Vwr&1xozJ|nWh-hobo|Z1YNh^<`O5ogD;6S$uhMGP_AEA-f$BZX z=tSkR0F;lp30;o8%1|4vCTiFhY)E!7N% zDsC58x50ShEf1$y-5#@UI&JhO0^;SljogIb8;>Q6uhZTHn89<2qDpY3fyYVXG4Vmq z1vB8MNeGos1Vnq0SLW~E5`K&sB6-}X1nneN2fEz23-UrZX=0T;c)!Fye>4T@lnc&N z?Q>ASG-{onSgIzVp&|VUpw>zK68e_5juQEhi;3ULzT87B!a2hv792UO0W5RvUFx65DroBi@vEtV7+_P_HiP3@Ab=>543 zbFV`UH0Y5!-|AzV*`rk2L#a7MZzD@_d(eIQoXE%=m3`ppXhw;jEFFigv%hHI*Id^- z3{dtKI$BD{#x1bcC_6dnvV_z=7X9leOZW?SyRsy`*c~Qv`TsssR1cwJNI%>ob**(> zySk6j-O3)~Jlq8}eEcyri0`SGH*+o>7Z?e4saY+W?yK+IGw+x*qrp>4Xx2j``(Ffo zdLcFpg5$OB(8hrFCts$Foo`KR$v5m6EA#Dvm*48!4v6p_6XG4uqhUe&rne+JYk%_H z)3PRTM-ZKB2}T(xdR7#BO-cKF2uQe)bmRwQ6mfa_Rl)YjD__AWYc(pEh-E7kEbNJU zazO%DGD@-Zd@)-Y8yMIm-+_rBXuwXk1Z(Qv`v)yJyVBj;=p&VL>kd$_`mzVDOKBaY z2YDc!ge#BJk+D4t4TUPY7aSKcW+&E40DJv8;SN-pD zC`68Ng`nlGLU%Dn2Jzgyo?HSS+DfSSeA2QFfIllaiXfliJOOvQ# z;>03yR?-}SterTxfrE#f(!t+N4zbl7&4+fkn1|EhYBrtl^8ke4!q)wF`%idb(rtzg zbj|ucrgom)hfJ^fB7OLZ=tJ zsyvHum=t!~mcG<8b%35N%v-R|6Tj;`oAXN=nkAt@g$nFYDB`kJ2&do;W&q&81si9< zy)?ZtcjJ;bz*$R=R&wkLlpv_7sj1}A6|)cBRC)N0L&zi_H~H#DN0){QHAq5rm!%>} zQHQ$5s@$XXHKeMT$pbjfCv~`c<*kuQqfy1G7g;H49@kNE>E{0aW*DiyHoqk&>gcYe z#ZJOu?ELcI4Oca0x0PrcyW}`or2qTIv1A2S^b~~cUe3+2(K~0;_rcbM*L(e3bs{eY z$eyni$8!cZN?c(lC*9rMp+C+QVi$Ba6`|S^xq2F1dB3Weoc->;4$cwEa)m~X_wSsA zM%HX~&d6r1Jf7Y@sLx)S6-sV~!PRXsEDgdIp0ovKY`A*I$*bpaN!8T!pvKhlBuUIU z{#XTvG0{6oCd?lXPqm+D85W;o6Ja}|va#cQHqrj4O7oaMsZE@=!t&kN%#9&K_kW|w znYBEm_7a*oZOZhG$}|~uUuQAFGbB%EC~2Ay?IZTmfY(a~tU;w#-)!Qty`Z_QNfVGb zebrZi$gRa`i?kqCdbu0qK412XP{9HOA-DwRm5vf?gheIF)uPy~XpM$8kqC+r0f(=G z6P>B?!!Au+fF`C;>gUiDw&-X^%7da_34fH1Y`*_~a4ILH$1FG1XL*V=8lqS|{Fd={ zh%q|O8mKY2dK;kq91aE)tK$SlUU=C3tMj(W&f#V_5m4=KAxXqUiIb_pg@d0v>=xd^0H9igvs z=HB@PE`O_Z%EdZq-IjTrpM4l@>QPu870Nkz^cl>uNnJ~w$(Km|t^S_Ok@TAJ;qLU~ zTF=?qsf}m9SZv#MUo%U&eBrHSoBHaXHh4f_52dVPeqA`_%T48;oiYZ8YnoA-%`d+7 zU5ZpDn}0V47EWU+X{n#kpUe8y*Eq;ZY=Zmf^Gv>rZHNc_2$Jcjau+PD0O6SVl2~mmqg? z=+T~rqBs`Da@I7nDQ*Bt5z?5TQ)*NfsacY`zV*&Xa={AGC`WNx@p=pOPR5*DW5`)_v*I^B~u)F?f zFIE`xT54BMQ@XMR`hehvnlN&yF<*9tFq?=gjn+vfpnqEkQY)ChI*i51y|dGhMJ^4Z zl6`1wBu`#pk}yq7d+SrrV#Gfxmp_q$ZkDcYR-RW!G{e7wrfuI<7=T67ymIu@B4p*J zl4zcT>0}>3IauFq>AdfhTidA=W2#BhOJKAsMl5!pnp!?;-TVz@Set$`?=BrnjTTcC zbWGcY=Z%WOZQejB@Mz8669;|k`|zC@VP~zYP5%{D*mo@~V*-$Q_TtW4v_Q+CL<1DJ%!;u-SxW`dL-M+?;v@ zcNnLpHDr+jg3Xh-GEQp_ukCyKiHE&Evo*02>4MIJ>*kHTkHEvSzcY&4r;cM%UuK?y z$X?Qz@z+lXe-dJabb6ytKzh=Pv~~?vwaK>{XQ!_GC{ItU&kaLdpg;zpipJl~H%-HYC&!85!*jFFIC@&f z5sfCHMc@FNgG^6V|#4UyED;<#d;3sB#+j3U#$GK&nD2pfk!*e~1;kI4&nj`7{n) zwKd^v)$y-^XpF3v+oqwB8W9+CVHh{WllS4xUs-~%iG>8eWLM6ZjWeEZ`R%LY3CkF~ zHJX04DZWyB6JLy<&ny7Wr1N=sI*Acy|NhU?|Bzc&zn_%Um45oF(;@`J?sOH>^HIiV zp>;%E;ZQ?JTp`XV@g4kjv@~{qF_c0XRuCj4AU+|w!}i6&S!Qr9_BDL{EJS1Co%8ps zk=biQtJvt5SX+bJkKT0VrHu*sc<*$4Hv%_H3_oxKTBomcuiqM5#yM*Bbp{?-Z3aSt zf#3LxoZ?*JvMdUr=uj^uut^-^O+B;VuG=I_sWPl2ly{MnA2Pw)I4Vx3F6zI`CeK~a z0k@pu#r;_5k$yhXH=5$ARSC;ALY>cmwzJdg%X;X!#lz{OaqaOajVtP1;;&qV-zl zNfOVb2BL}}v#xok$S7FFFeQ%gz?DIn3!zm!a0K{-ONc$*qq8oKx%0jimFs!p`XqK3 z*6X~<=oG6Y(H4C723`rRXCkLRN0p>Z{Ub={Dx?aPBRM5Udcb5-5&;^(ft~Tf3s~+G zRaxVLL98_wc^OD&Kt{m?XgU8!$>ILh6WnsbpKbUp>j^P~T$J@h&G{U}lw0*6!})HE zL`&R^S*a*<1OX8HCCb_GaWf{*^t3KTK5#YRPL6~1sF~1H49f_1O-Q_eN;}GQ;e#lx zbz_Ej>E&=hHhEhNnG+M@dilB(S)l6EbpYX!^BFwH9vtgzK0ic^6qoVPnwneHiUo5wuzW4$JNc1D?2NgL|n z%-Le8hh!9Za6*WAXd;CT(L!eP?n6`Y$YKs<7he;dy>mE^BY+d*+vy5|^v^_Zf{*G8 zaY&F2X25Gw+D?&|LZ&BJWRIRxKGC75U;;h<|HZ0PjpW?r!t`eJp7$&5ZQW^4qoY@a zG*?a3gUY{-CLk)6M^Ygj9(MXo2AH0-=l5|-3*a$zwDmK1wVA(Q1eJ5r(+ehtU+t#h zmc6Nq8n%nQuF7jFQw3Uz-PwI;5tDn-BD`ibh#9x-LKa7MANBT3ZGt!UZ0s-Nxw&i< zSOyFFQ;Et>ZDOL+J$Zj^i=WAsqYd;!Ur_xP6G)nQ|KAV)&actcgWHp4F-q6JS(}E2 z2BN>hqU7fhi&!pL0n(40mk+E{i|)-GEK9i`1;E9kIJDq3t8q(d9wV1O5e1#@ZY}l) z;Ju^ca&hlNyRO)^LM!ouFo^stWGi*qt}Ex-?;YJfQgtDIa$r`kPDbg{{(31E&V8U>CEP`f&h69!7zc z#AM84goz{|>!d#r)^0gK*#CsVBH*Fi)m7_t4&vpJQUjk?(ggK5YIVLy(W-FYzp-=B z5ax?eeo1(>)f;kdIs=?%@M#U4PN&Vn3dI6Xqo~#i$lC3@6?3QnEA6!1(nquv=X7nE z9@a9N(`w*>mhmG#i$y5Z)U$;-+-KVo%9{-LlL_#6l!TC?KOg(R@b9$)qO9puLFcht zZH^O_TO;C%;hCUJspW=HDhpM;wL+s;Q-wiSIND*&u&DDY)N$1WMJ-fER8$SFIubv% z6>ZaM{M^O-AE=UejbT~MTGdM^4xWukqZW(z1nal=Th;pKc5itM-$+rYD*bU=#xbM4 z9kxrJiIE&YHq^yICt$U!cz-AXH1(GOPu&{X4%j=zN)j&NWn7 zlMn2^u3}Zhtp-xY#|gyK1D+Mg3qv*J3PMHQ zB^0^CHMkpnOQj_gxa~Tmk}%*9{=)T9M~8L_Z-=a+bFKAd-lH&?BVYCx0H6OCS*qws+qEf-z5P2BCA>R_rAcd#?52=MR%>M#+V7^ z(r;Rcf^@Z%Ib&bPy(~m^37F;+U_N!rNi9=$Bd^Hw#rP4x!)nt29RqTz%UtVHl!nWxK?C9^P?Ls zo6lSIInE7Rz>PX?$j)_B)-I5OfcY88mv|oui1`v`0<0rAi{C(J$$Z4&HPK2lpgkBI zf+7Z9PNHr)TIW6L6ONngY`fm1enw)0_mDWk)Hja5Q=}@?g+c!FQc<=ZhC>5)Ta_08 z(zAV1n3{$=1OzKs54A`vaM8_^9LZgd?0U*P@sE^B9>>6jb9Rv#oHbe}^u!Xp6zNRk z)vwT8(GCA`S`xWvZ2fajI=RQbjf;-4*)IcS1;b4fpr=dYuJs5@+*TgRVq80289b*| zCw4-yVc!po9d-a#8f?LAOv$V7uTEYtse3|%?d(iNx@e~CL#48C=cyZd2 z@Kg#U`V7^yo$(+@l@)>=#m1-%l*p*AO#*rYX=p8v#4)Oiiw)uplf3B?+=Y&G5-yEl z(ZFE~_(9xYVZ!(XwATVsxyG{vvcScykBTzLUJs)H?z##07h&RtDhx4TQY$XDkQ`B=w zv6b7RF-JV*HX_ia4ysFEt1crkL?=CAM}lBi;gAkqgLB9A5+o+GZXg#JP$qMDne4v^ zS_z!s3&tu&Ob9aPMH)lk{W-thm^WVlKF1Bnt8M2~ujW^|ul0*ZkO}8|4mZPQ>c`SE zVapY{Ho~W0YDK)LbY`3mjPFrdr4$<@bq8&gP&?5yS~}Lp^TZ{XU17fat&xu(;3;C* z9Sr4St%fU}AFC(f8fVV+O}*k{z)|dbmYvzI8Ty%al&~&kWktf+p&{X69Wv>Lc$VWb zLh_^I)j9xHl`=l*har%`_=^b@X;M*CyAlGtk)_s&9Zk$b8_YLtuN$WrpQ3)IA6;_) zEV{2==)3)(@iV&LFfe^1R*M&s@#c=P zxQp1%sFqh$g+U2u8-p!8&>pyL&YATnY1ugw+H49S!B?45+HuW&6he~q z*R}BUt0BaJeB=I0?5LFdJ_!a8*+IhFuM{$alR-` zYNJ(mvxoPq$qbIvJ4WRB8luiC?06g5u-$`+Q~NtuKN?)9WXgmIJq{xTZrsrdX!~Iw z8bN61a0r7;%#Z#+1s}xd&S+4jD)2B;M-HMPHRK3nqTam7q#V8U?jwk+*721_G`6Jm z;;R!0|C$h5o?l+_5t84kq!!%o8eECKC9-u8i>;D_N&1mhs2MzRDG1ti7JE)mr3; z9q3>^u(2eH%_@5{SQLCSJjzG?k9O*0R^+B5Z>-BuP;|H;bg9ZXf{(xG92J7H*z05h zv1zi#V{DQ0NG*E3c66v7)GVD~%0ypNfcg#~kVOK2NCOCBo0{=|{{WKjE#2kgN}$+Z z&p|@~-I9j%XNY8VxifFl7XuNifGQy>!z!ua5&*wvC=^3oH{n!}abdplw5T(6=JQAD zI#9}P-LQG^ZDwcgbe*iA6$uUo792XZI|s6GaB%5nGnfZqe$AkR2ELO?PTV;)A%VPz zk~PFsZ0n}+P!3KO)hsT7Bup1O||2I|9DO+lq!Rq8HHvq-i$G~b8 zd=JwImYt0I^iEoUMCT26lUCX$$hbr3X z-zPP+Q1Zh1TwfUl`qhELVqd`G2K$N!dz?UK>}#k@w((B!(bGpf4!WGx4`ZuS4WcQ7 zmDY}u{isoT$80`4XJsIG>!V$e2lY`Fkw(%gaXtJXDS_oA_A1|Zi1?S#@W*K6b7Jw8 znLgjek~6LIf{oupr{$r(axp@?nd$WxX-CFIZcy|ae|mS+fQqNeuLmEy8t8nYQe(%P zu9<~aMz+`hkBLB%n}>?G&gxz3V$-DMSV}?FwW<}Z%C*LYAWu9HXL>6*^&A#QXPAn^FPw|>``J$3}e z?74ise>5xH2Lv`9UjFS1pM9@*^WHFi=~Ol(JVU+6iZ|d6d)J*VpDs$qKbgXeLiUP4 zN??Ghx`@4lkNbGVa};Og3`W8sXhHCUL82>-oPWzNgjEf_L>PnB8728%d`@G^IUOg2qN_24w-XNB~;`Lpj9wKjTGsf@qLUE3jXR8~m<#MeV!NtdyukW5`AYNuFsW$Ukz9np4mH;-KqivQ zND_vGDfdDisXan=-SBa2pl=uQn49SoorY-(<0Kei4COwF<;gxKi9<2Z8WB87yb29y=(x(XwLc*OA zzFwq=#uuf#bc-=~eu-h7w@oBCTflnodLn~95g*7|PXxVD+Ng`1SCq*^5JJBRvM?S` zhI>IgA%LusjtJ#GICE-S1-bMoHrW*mr&|34EwCVEz~2QC&8SK4Vuq_Ku61^I#lbKJ z4CuTu#VHG2#yz>ajecRv*myfWb&(=E$8zIlJ+2FMXy)Hi8SA)2 z7?}Hy6qATBw@`|M_r(A>X>T7S>Q~K(U+k%Jh5Fv0kj*1>7XlWR9g1jPMQSm4Z}f z*a=S=`>=`JMOqdnmG4WvUzE`T??3n% zB;JL&jpw^H`d9QI*XyOTK2z$ai5RdPnvY^>{WCh-!7H<@9~GX0TDN~VeKVO3Z48E6 z>2TdetDOs(*u2CDDu&vV^z)xc<}kdHE>p{op^4T)(V0}invC~?~w_1QFp5t1qFq%uGjLuI~1BRE%;f{Igh-!Fr&vTKJ z>8?rvAnQE}&vIQ2jviEK7ccuA-g121-3pS_gS?NX?jQsYT5TUcU+^8|-~ty_U?y^E zScEz%HJYRgRcAH4cIf{I~#m?CrXr*jaG z()l{~E9X|*6)R@D;Y$@mI3m7}gmK)&H$pb-zjns!vzJs%pD@lBfXtm2>6u}fALsdI zsLC?Ejpt#)|Brd=7swx!nObW$$e_@19}WNiN}O`@68TPkbohL#|CyP*!C_1Ydd%_s z=6C<^HsN=5G22bLMt`OBNSf0?ULqgLIMdP0lAbabZof(gtxA!t7D`|%&E_a_^Otn|t< z&|3*ga5sG(WI&W(Ra;ub+UO)PZ@$dUi7GcU04~{oX*eggN!v5_gTZhrlSDSxH2&EC zFvJwMtBGV6%6pUqttM%4j%LJYFOB=>_Lta(0a)_s-^lm4Lo(VCV=->j`cNxs|0*f3 zoTM}hkp<>uv!~Qg;7eMl=Fn00$*wvQBAM|V?m@~{?d}Y@V{W9Q`AHW$&s7c@Pkqme zA8CoA@6y2Q&BpKk_ZtDh*2hOhp2v%Rt+L6Pup413;4xn7RbqgEF+qUQc4424vgZth zqH0y~!zKCUf>}tO(Iii44d|L&|1zu^x!?L))ll1FDZoIviOFvqWP*pdr|_lkv~)@&G>nxK5?vkkSVry$ZD0*Fh1G5)GO<#cs3 zRc0g^6;z$_dHn0XnSZPyvy_X$RL%P1%wKPnlR^<^P1Has9<+V~&TV}3xYHgcAmG3X z0n{cGO8}net@0NPAL+fS|Hh)@RRAAU$&3%;(*_G%>r)Cmf3_llu&%_?SzBxE<)AMi z{p%8*@9PNCj0(|RnooBJIGT%DkY)chB=~VyX>vmh)&kl$ir{0)Uj|EkKvnQ68r`oO ze|-BOrO5v23gj!!4lsS-3WQO_?x< z@9&%5QJI7pWKOU_2;$M;RRA8Tk!Yq^V-)`or+J{7*CHmW30e~AS#DU1>nKZ<6>5WX zNx~P!qeo9_(j%muLxpW6eHyB87eP3JagnWw zkVPnz-3dF6F>n2F1tbnN{`z z;SXYpL^z;7ao`8u7?pFK(D~D}E5KrIrO^+4&ssn?a?-w4UH|*Pbo#*kC$GpQ6#0+8 zeTPJKWwv7|Nx2g_PKtJzVqjf|+VztawN!oU5+!yyP`Gb;4F=gQ;8z4RHDxq~4TH`Z zy7n#jM`hk(ic{qo>uCk;V^>0ZfK{=GTVAD9Au^74yn!lflV>NZW!)-{6ievZaXYVnOYPQ5VL;3R{dN9$Y8nkc zT3YNgPl|!6I?9ZRQIM@yvG4 z^-5o9&30Ril(C90-1;h>c3E0b#%ZaGr;7Dt6N%g4nlw#WtPjF%0MNe+fBJ)DpVwjc z`I7AO1-8Dmdm3|;=Q%n|300x!JmfTXGoB1(+a2hjKp)?*=P=Ky7RJc>clGmD$*c2! z>cZ*1gF5qJA723FT<29>`_b+Zh)O-c4 zNqVyIG6GdGk5iv1bxs`QP(S_>3{Li_^Ails$?lJ z8X>C93A(W(m{W>gz6Ukm+y5C!vBf6|G(Ow!*r~<-Cj?_?Rb91YOR?(=J@3yZ=8f~FPn)0Z zc({UCpYWBXpm3zh1btet;yi(SZu6Eu?N)1Q1E-FZP1Ds~netn5R#%rDTs)&z*5b_O zu|^R;E^Wvm_Yse3goXq=Z1Nyf23G54Ll?9)=p%!0Pimx-K`PTGQc0OrM1t-ad;5iX zDsjGb02MWPyYW3{=^T@rH=RH!b^FkC*RP$fo57zU;?eM0YTPE$1vA^Mk-KoOWwe?> z9a%7TPjlzoJZ0S$I|vpX!fJ^T8(TNdZ@OveN`-N*ogD5|jrfGz-7>#R?TS3uN$nYw z>i`#LVS9V9m$qLol{|(m8{>u-ackuEJL`NTlCu&`$A`1}luv6lYycE2 z1rdNsgI`Z#4q`4Msfwx{*IC25Z*jcfh$!7F#*$S6-5A4IR&N!gv4bH*!)cffwD`NX zPIM};43GeO;kwJsC&V=k;g}|Lp`aWQrBa()OCgOlQ5y|x*X}((* zJe#wfHPk8Di6BQgTx+(>2apzWSs*1jsb|3?Y?rfIMtIjWC-FwBZsRKW|ENgqL|A%unQ!LRk`bF@Vo zuUsCZ%CAz6#i(fq;6p_hWVN6&0jcDG$4_*I;>_B>pd*z&p{c+v(L^+^^PI%kgfpJm zRY4(kFIMH_)d*COi{`9u77?DN^3$0Jzc7jTru>gH zbPNBZwSE2IZOkf8f{Ev4>tY0Y@{hYaJc*b%lH%M0+<%D-L}ZrH2Uel9K6=#IQ%GCU#0gXm#OktW&)&=^x)nu&CF)~#piv%3h$G0q3 zRcCkkJ~ShT-6z?`eW2si!M^?skn=jPt?5Z;*}_?4y4|6jZqk7alQR#I-A=`&vzF1N z8hhPks7xue1_Aw(DM~#KmN$TWzA?J3X(#DY^ONEMpXCcfk2ZsjOtY~y9Mof@IZf; z`1ao<%?uA)@ndHB>ZD5(lp)%8pj&Y-;Vyt8tAug`sW((}!BuNl#)8z@b&+{YNF)x; zHbvZuh+Nr7oa2gsn+~`jRuMHDT%@l8E8|ogbpxI*KBS1MnJ0%1;bd+JlzGbswae4} z(@#?U({=?JKb{Db>mHB0nPs@;_6(1K@^n%_`q59q4i(R$s(?JIw`>)arvWDhT$AQ^Of%SMT1zseN-5ZbCCDID=R& zTG;VQ@SJ~}G$bd_Yoq@v}56Na>Qm#Z|Ws=b*OdY5PH z@lMs4mwC#D%%utH3KQgDZY9;LV5%SlEGU86rB1=Vzr!5u`U);?5TJcUown=mYrz+M z^AmqJ$cUAt`To($Py-R;L2bmeb|i+M44wNiVExc>Oq!4xdb|~J`hYV|x;1d{y)z4Kt^Kxv;xztd#?fMjAr1wEtpKP3maeKkrdQ zEJVE-Jj3g^BqgiFNt-wYScE5>g*R-!*7!{)cp|z+!<5G0qxmV^U3c_7>#cjyj^7AaD~NdG6_ z;x$Q7I6il_u`wDh)p8{Dt<9iawi|PVq=sNp!Xc%IqXmYNE2&JHPwj?4mv~*S+d23j zufZL6st33~99}A+(Z;o3q$LnSCu!YN;6F}k1Oq5bhU(^I|1GUMO9r_YXZk+=&ey*+ zlw*;7CrR#}j1?*MkGr>@z6$hC&d<|lwt)#9Q%`$q52msK;!$^*10=Xf8|D>h?M=LU z>LMk08`gUi;IEum|I&;P1s_$@BY3wPV!m5^!uSS+SvRnOIJ%&DvkJBs zt|-)+h!0uv;h$B)rJvq%gvHqnn84!ju_RF~;DmvMIe^{%yA_0SCuQ9tQiCqOk7w4h zWfs{Xo}AD!D*;r8*P#w~!6yWmETI>~L>=|){HhAyFt7p>I*9{Fb$HUS^ff?+vI3ih zYO{>z{V8rgRrXh@Zldy6N>yNnSn4`US zf^df%o*qYphCO*qaJ|H5+V>~S9KL+~>%a0!tvr6Wg{1ND6`ID^!Z#j4IxxPGPw&Mg z*YAVIJ-M@0wc9_l6sRu{JO}AheOfTi<<=a}10zgeEC8jo5R~elbQ=`*g=|Tef%REB zmWWr#7)JwV(CjuEJq<^%Dd)I8n)?$rr~}`{*4H$b&@dmz)A+%Qo0COmS1|eFBCIY< zpX`sgYT$)^`cCyfe9XP*9%yjx7LCyk@BeP7Zt82PGKxn#UaX~IM_bFEz&1YU`XTJg zt_i)q0_F59pII}2m_oE8jhxu=6wCjudncgz zW$>m1#@S0_X_y-_*+hL}Jw|zyC*k(a%I6QBYK{1B@zm0 zgonz6Tgoav5Tea$Wb_g?A$WaP6Y_*>oU7>NWCz-#gF&@OFq=3km;^te%7SxdkNB?O zSYqcQh!xXn?b^ob1#E*rj$ZO@Zxi~_wKeyw^cJ%3x7T-a?It)($^-g6pNN41A^eEY ziMT*X*CQI~5Nf zun?^!wpAmQ=ue7Oo3aD%!u)80sLlv&K%}O{q11yL+x)$=2MRxE3wLN9G%Hsjn0W9e z7;V#Z5U4`WN~eefcc=T-&1;=nHnxwo0c|;u9&F;Z!Z&~L3wJvyXri9fH7K|3{u7B1 zv4HR_T#HAkjBN&84aLzqKGsc$Y}^`I#!9vPD#Ne2T;w@_i*_4sUTW^VAzWFzzBdRf zBnUD1xEBxAlokAGoUlqa_2VBrBfFHe}~y5hcp1Kv|wi-x}`C3H;?VxR^?L z{<$@zgx`I=#gA5?drk0)?~V4%%HQGVsnaL!O`fv!9sT80C$7f?G(79{7S7A3MRM*u z{S`!P6X3i*Ouk8UOTqYT1qBw_%LD`?$vN2#Bo+?6RzzO8ruYsp`Pe&cq%JM>uD^C4 z#YFwscw(=9KpOeMQtoLKkX{2&b=Ipxq})1$JZ5^ z`5=eeH?O{fi^jb69kVyOzp(*-d<%3r&$**zV@4Fa`1+e^-5acl5AktCW7Dpa+V;~9 zH7>B-&clH-cisPD@z-yT_~FP5?{aXV+So≈>Q1Ts|0$zB1$QU^=v|;SBznQQo>w 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 Q0C?JCU}nGz004ae1VZRJ$N&HU literal 0 HcmV?d00001 diff --git a/src/assets/fonts/materialicons/materialiconssharp-v22.woff2 b/src/assets/fonts/materialicons/materialiconssharp-v22.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..025d1279863b588fea96a0d053e58550a730d26d GIT binary patch literal 80464 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%0Dt@ENWUu!kKs>fn>0Ql{##!AJyM^cX9 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 literal 0 HcmV?d00001 diff --git a/src/assets/fonts/materialicons/materialiconstwotone-v20.woff b/src/assets/fonts/materialicons/materialiconstwotone-v20.woff new file mode 100644 index 0000000000000000000000000000000000000000..798c79e4c647c9dbbc10c43c95e9bfdfdc655df6 GIT binary patch literal 194468 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 z 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�E%R$FRpr*oD66%? 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

    Q{>by2Sct1aKst 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

      kE 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 z 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

      FkY#BtgG&G&2a5roh4p6RHHGOR-AZmS@ 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 Ay8r+H diff --git a/src/assets/images/file/icon_talk_exe_d.png b/src/assets/images/file/icon_talk_exe_d.png deleted file mode 100644 index 218da211cfcc8f52ee97f23e4a2f5c92a1505f7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21798 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 YCjR6LXPtVT|K`$`_@rpPTXOz?0C~y&)Bpeg diff --git a/src/assets/images/file/icon_talk_file.png b/src/assets/images/file/icon_talk_file.png deleted file mode 100644 index 72cecf673c76ed0cdc976dd6adb3f55221ff55c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21357 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 U40X0a=7AqW}N^ diff --git a/src/assets/images/file/icon_talk_file_d.png b/src/assets/images/file/icon_talk_file_d.png deleted file mode 100644 index d11676a467b9508a3385bab7eaf84112f9820291..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21807 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 K$KUKuS^Zy(?%U}A diff --git a/src/assets/images/file/icon_talk_img.png b/src/assets/images/file/icon_talk_img.png deleted file mode 100644 index f36fd8a35da2c70b5e1c324a23adb200ed1fe3cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21262 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 diff --git a/src/assets/images/file/icon_talk_ppt_d.png b/src/assets/images/file/icon_talk_ppt_d.png deleted file mode 100644 index 1a9b34c55c646d703f5e3ebc2d3a58d6322cb4f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21524 zcmd^{3zVHzdG`khHw%V}sWEsNhR8)YnSFcryZ1mK?-f!Bgb*cA!JIkgOfr&WLS{k| zM9Za6pn_CTS=6e4EnbjIX@SM1+%GOHETIKNErNc9B2+M%asn`ymQ4Dg3{ zj}=SCjvg5rTUTGx>Pea-gRS2AE9=Wzi(2*OhLgVCI;f}Th-ZfvFBx01;P8RQ$jUkO z@R>R5SFUDtPtQSztY2MkoY)%c9c(QdUNyJxXSdwm*E`&t+jmT~KrC3DwU!SbcFLO8 z(We}-xN*vf4d3iLQ;0v9Z+y{r&6Kt(&t>&ly>>tY3QX!!wks@rl~#hE-$r^|e)_drdqcZ;dwA z46hy=9$D2Jo>(6oSvxkjkCTpzuyXa}V^@uCye2NJe|>#*znmk2NbL_c8`ut z_U6q-e``f+Woy;gD4&&+pIyCtWNc(~`ACOHPyY39ZNSwoSTMOqSeQw5bKHgrudLUcVs*jDVSv)eb zVnWLcC*zYP9C(bNe{zoZ;c-Kq6h7#V*yQ(oz;SjpHJxjtFNefhKyZQmbp%>FN;XZG}77`DYOx}QH2UtJ!w7zi(Bi*4zF)$tr^|u zE@^$)#^0?N?tSBP?av%hUx^OZ_5Jsshlhlp_rJ-?^&M8Of76u{2 zH}t!ZbL;nne3E$5Yf)x} z%tdBWqeP((YHzt>c+$lW7Cy?#G%t!gEwxE9Eo|$NY^BCa@3A` zic@J*dLd+9l%~*`i(FPl+LuWgMP-~NZqrj~@3NSW$}F~-D7mAEtMXB7bCjcO#frqZ zyv&>^5LL&Cja3mTGN$K{DzA{-m@=_a%OojnmMK*l4;Ye0Sf3bKl$-8hk~DW#$Awj~ zDkB#gohL?U@>*)7u8<>&WKu*rc2;DGu`=e6NGxI*tK7zN(>B2>Y&Sm0F5&PI18*RD*8{}4_SbHFV5H2^yWHzydEFIhXiWNMn zz@!X#!6{K%3^I>m6rL4{^QK}&QIhY`f>vJTr7b{0zUd0@iZqdFS|o86 zB^pa!9-_e!UhF8Pn9+rpTx|{ z0u6#eDkM);k`Wb5>WVlig)mWSv{jJ?N9Cw!Q#n#^yiQCS7rB+L&^FFe=Y0}6Zk&fz ztSGtG*mxsj!HxOM3b0zDlyM?)Rj0~aArkL1!@ml(NrBC(JWq|t9EPyz9$D%$Pvk5U z;#Ou;%fVDBOJ!n#Csf>So|#gooPhYI3!biuM3_S4abD(1rjir6aSBFS?fDeV)jk=LLkpGQVzqC$gZ4th;9t`?n{*p?>Ai>xeN8fT^Q z6_Srvam|qiF!qhqqpT8MG#a&`c+i2`oAsJ^DylVOH>m4&&>2x-)g7J{8>I$^L=Af~ z;aRO3_BvRr*L}Se3p}R2`Oj)b#v0D0jGj1`i5j(*9~`vJ7HHj7=&Jf$x;|vBAFS8v z4J|lVOVkFNv8~lrQ+qoYBV%JzEml9vXiVNxi4Hb(Bgp7$UbJkj<#cOEi-v8f=4L;u z(bBEP&`>QJY{>AeM$I*yskw%Yyd4^!nvGj>RMAZ2mPS+ zLfg%j(GIqnt%e?|wOX2Du6?e!Y0zV<gHbd%)Qqqy9r=ytl1A2i-Nj_!!FsGJFiN$IgKn@Dx5QvgHJgLs zST@-kRu4r( z&04)BgC2tqDd~f6H@Gk&&R~UauU$*90aZy=5D9ajsF2bZUX|dam`IvQSz+Si%an

      viy_*yXI0e{|`K-Mgh}$Qi2NC&FMitjPzRY>$GH>!YKmiV!gN6iw z9vldg>U2n%16N3II``u@S!w`k5k)SMaj7~UvM>R`t5ih*ToeHIPJrxDDV5Mkr$Z{z z3y2LR0J{Lvj=H1N%1L1omlYMzr7fEZ6-O3%5@eC*$Oe{lh2(lbWT2l-y=r_}StOiG zl8-cJWSJ>Tk$^zUg!s|PxU|SnGx!r&AC`HbF&C?CnJEg33Y^&94XguNB>AU>4hjJ2 z`vNTIRGCu=RDi|tWl0*Bq2kITq~ws42_;lg8cPQ{>!ddlc>#LOw4@SYHwQNG0p8_> z(Z*Cb^!RSvUyN-?%BA*h0Xni_0fZKma~*C{m$(UF#<5el5@#?_?LkF=PC#ylWyYXX zodG^U62T^Qnx@npt|%j}w4&B%AJRlvRsuK;a41}fqz-a%X`Gb06ctc%e3`ehj4^tZ zjbDjy2G0h&q~7A`oet@A-_k*=&4SfLB--dfF1bVMkOq)FWxhRT4`m7SaSkeXLShcJhEoQ@BtNQ@BxrV3Pn7 zhoDGGkrH(>Woj$R$uv&1ufV5m*{n^<)PvrG=iuFG6d5=HVk^}a z#eN3`V2^MCg`-f)+UiEp5SUr2H8D5oWRo$ay2wKyNo6}IP{8{##!_uYHC2%w+lP#S z^v*``vUXfH7fHalMUPPuy9y*dzD!4np)8=lD#A^s*1@#;vdpZ@i@1|<#RNnSl;nz9 zkjzB2MSbfzBI`8AeW4Lw}65wbOJ}h z6FY@h=TeHLf&^cTBZW|!Ck4SZq7aKa1#_3mn4;HG21nxxNVpoEPBfl4Bj&P}FDg(4mPL=i4jClmxMktNP-Ac_jf!l#)RMfz^f~)CZ zB?(Z%Qhx*3z<43QQCov80uknus-n8B?oWdj=#(AqKWdvVz#4JKkh!@=Re; z0^+Ex0E$5@8-?e1Tt`z*iLFGpMBvM9g(g72k)>)^ZKtxu7SR(4>?VGe^k;=lu z14>xfPI@DPL;Xb-7&D&oO$yZ+1*#X&Av*3>7@3=>gjH?3DSobqe^5uTbGhksCArPP zN;JCEMu6ea1sq@D(^SD)bTFScY+iUJj7y`*N`hMn-kl4b2eK#^250D$I*3ttbgUxl z+u_w~Ko?;WGS6vpSBEPpLCKK8o*Nktco3?YFglHVLZs{z6u?$F@i%g4y)7Fcn=UAl z!cIX0b=r+m&BBDkH?>no8iST2D^&*RZK|lIws(^{DYpQyo=6vBiG!Fd0QJzUp8T`v zZlOUNnyeI0nifJy+d`l@=~DysmL?V=jzXfsQzutS3t{hKQme*DfxbC0xg;&-cQ!{aY$}e{hY~_PD7W0LAF>ck`@hwI~GSY zkTj~uy`&}WG-?)U1)!MRGZ!TW=b$>ULO@GOtsQL8WwiRLAmqeK%*C>y6BKU2r}=GM zkW({yAyfoiY>4cYbFEas@i<7Q;cB_vK_&QW1O9;F@-GhUF0;dEV;}*Nq`{|_N2q%>1JiP z3p8sNFEg-Ra8;#i(*<}o$hm9-P7oFBS?8!}6j2kVCRloq6WgOZVrgD!k!GTzJeas! z;1PsUMs0;wf<8e2xh_&&(0O*Y0z*u$Xfqi)AaQ^fU9>_S8Q7E< z4A7>S(lkqphzt$01+U*Ff{|CL3gH;2CV~wmCCwSSg$Zpje%i&eBj7J8q{;##p~n>F zh6Z0I0z8Cm>3p{lH~@Ys1Dg>fvD-W)P4FDLnov1iYzY2DW>hsamxF(DLng->GDB^t z!L6P5wDc$OY6*;MQxGYjnZ{L$cfv4~T~2GE53EWQdl0|SXGWWlGQCJ3$&zl_p2;gk z4d%)i?v>L*Erj$?7Pv>+)&&;QP0m0LDtf%wOE_&x zmzktZ{6o!3b(1rr@hL5kM8ZTPC-#7f%2JC`WmU}Wgxy;77o!9UqpWQSg$QgHKI^fH zZjstjr$hI}VeF%gq>vJ7h>?Ya#(q^labnLn1g{VwfkSPrkP#A@!7LHdz-OH;0ob;+ zdnzMnmf{%H$l-1QIOKk13_~A6bn$FxUWH%f%mlO}5h%5EaSr$(7z26)=zqbva&^ zB$xnvnrBcaNxQ_Mwo8?T&)BwY2`RmMxIus?$+2nzW^&I$lv$oKsmP^-*cTB^;2z)> zA_%=MxeQcFCz`mPPyz%mqxVH`#c=|-gl-Yc#fn}5)hOGvZ77ei90HNq~p0awZ>5&F;Ei04XO$@b#kS)6vdg1y=_|`%b0TsK^rLmVO`{8 zMhPzg1I1uBv_k8MqhcTud}F)ZExw6?<~*OmJ!r+_+VEut{zk!GcHT2gJ!l1xN!v$c zkSkDO1Yz8TlBe6AzOVrgP@Zh*X{mCEVGt)wkp$1Cdle{vP!Ldcb=#9j?g7HEj{IXC zWl;*C&ItQ7ETS&i9wti=k}>ZsJ#9cSIC7Z#h=Z@dR7G%n5eyuhYq!&;2*?^*Gy!O^ zl0&8@iZLu2p;g?^gbgwE1pVWne?nIkeZt9SIWU`97>?4#hUjJ_nt}zu-}V*4ouT|d zr|`ph)dbk&o?xyhf|U(c8)5=X944;QCR7i;)1(KnX(Wh`z~@a@)RqG98bO-k9|<6RCqW|Mmf;!v}H+iEJs>%%h0OC$JE6P3@YO6pUGr1nI;vB-;6g08ET# z(K*HB+m--D0B@P#p5$=bB~nu%V5Pxbp!V@HnjR4aQt2s%d1jZG0L>3??tIQHYkN;- zG)YiY0|0qd)ux=Vp}eF&Lxlx*i#n-Syh+gzoDtJZ(0pCwWK4>dyV~-V4Gupv`E2GE3`Uv&F zHgE$&qJ`^*6H4d?`eB~XnYZ^0Qku z$(6LlH*;n6_;}TvI1lGNm&1m`-1vr#v)@OzPMVwo?`^+DG*EAZx1;9vHNu-ct!CfG z9}ic&AM>W~r)*riZh4Cb5-~cx@H4*i=*Cyrl4ZP0)BSCt-*`Rcw@*DG4iJ7pA@o=*ual}yOH>6y)dj0U8bc=KqB&%E(68q4dembG}fuKzb*c-c}Z z)LW9m=&2zE0BEaqVFzS9HKc%!{9hmiMc>v+q3nQ~d?W97>ldLPvX$PA6xvP+i!xzo zf)*B8XZ*dtEr?Od4McuwNRhn-Dg1z(8Wsg1MqZ$@f-?%~AN&gc%_~c^VQEvP-SP!5 zF-timbm8ffZmkrN9FUW*=KfB-+uOG!MKm?C9-Q3P>w*`gr-pY!l5M3F(SQh0YHIj} ze+yE8K&FUagcpXkDn_9TEJ{rYU1Uu3QU1Y_Gr<;$I~Wm$CCGua@E9TN5NXX~=?7Fi zV5W!^76OyEFKKbLOH{i0ye7bSosDT%I@v*rcrjmsz&9I+sewS~$^CDT0>}h!l*vY_%??Ox?{0_Et+_K;~0K7olOhl`$$(Q>E66n9UJJc$)FdWw((z zH4~GI@O2C{x#~!(__`SZET1a6phFh(LW*Zro>w@?dc1(eXb!zTUZ5_G?I49(EFFn^ zs#Hn562z-xbk@@?mjZRDslntFiWx#$ezYyOSQk1P&{LznV0@o8q~HYtEC`EYu84^e zW)&pw&GDkiCKknaD}|S2gGCv>d24E5T1Cg0-U&l5^!6=M@JeQQoxw1g&s!Xu`UO&$ zni7lo@-U-+;~S!WrxhzN;Dmufru!JHK?;Vt7)`X2H;$N_iz;mrP zw_u#~@Bi=pfbl=)tu@0?=;fM`l@Qj8T0;X>%>U-d71r`40-Jm@)|++>0=eHl=x=;m z+r*C+{BiwdeBw<8Qua;YU8Q_Z??kbzGWmd-a(+pL57vuK$Evm-aUAKlHSo!Sb1x z=FRxkz2Dq!_MOv5zkBA6(`Pc6G;QG*zj@hZr(b^7&iCDP(vNpIZ`u(D_H293?;o?| zveSP(@AaMUo_)!Wm(DxxxJ#2`jya}h{&V~9{*Sls+w+sv^?Lp6E06rLTJhB1zxR8) zt-A2+r=Ix1ORv26N9Qb?`EGgYFL!^w+~K2pp7!vgUwP>#_x<&5_x0@5TORP)7v_Cu zoAdAPf9|sn%zAb8%+m(9+kMfsm+yPSb=TGJ{@mxE{XX;5oqO-4`(3yVV{T_&b=3je9dJ?aJ|EwEhi!W=ZFpws z>(hSy>mAn3IrWb1&OK$x@7txU zXw~7_r&oMs`iU=o?&mWX?edp|WcoLr zUU+9?n}3`2mxsOl!gr??Gq-tm!_|+T_3sycygYOE3-7(|>sNp4@t2Fww+{S=eLk`9 zjH|x*y$f#N=lYdLy>tHs@kKNK^y=MzaQ$;PAMoJ$tA6kM&pp4_^EdDP;SYcNUl!f? zx$Q1GbJ|nWX5Dx9%)KsN^w7Vrzx}|hykMX6`sU1D`Tdvgy?BS(f}=k>``lL!+5f=p zKlYf}_5J7WGV-IIdw06ju> z+1npD{!@$p>jN`)JOAM)zIp1wGuFJaa^9~l$oKr#^~?YCV?FEMamlSc>9hZI)cJ4! z#$K=9GVc@D|G~O#ZodAMFYa`@7}#a`!aY8C+>#@f{%nRj^ZaE$nt8(Adn_&L+s-)V zD_7hxum0@x2TyzX>D~6Z=|Oe(9XJ2|pZrPl`tST=@25_^^*QJRzU!cOo%+x| zA6Rnk`*u8Q^tk7if9bVL9$EeVzrE(G7e4;=*~jnkfm(jf>;LDjTMqc@jAi?s@YH{P z`MB)VfB4~-&pYGrM^D}Pj33?i^IM<2V&CVpqwbnHZ`-x+yJ7gSpI$j~{Ntaz_^+P0 z=CP0O{^{$6j(u#q{N44L|2+Eoe|-AGw_M^cep1eQQhfTrefuu>@$%hls-S$cShLu;$p1<(;KfZn8o$vG)JbLBIU7vl&^Ro}N?|O0h zFaP|SwYNR|*h?S(t4I-(rCl9U)K5$yT%^7;idClIrWy;v#%|A@a%Q_-gx78|7Pc% z|KNKM-Tm+{?|t#9fBmmLn`h0q>*=!(nEr|Du6=Fx#n+nY2S$Ih+x+Q!7w`GSOWQ}! YpMH9F=Ymu>_L{7Qk{;O_5qL6r);;vjHG@zELZcuS76VhOAI&*wE8cXCY9fU_%K^ z0ZpLgAWBtKx(U>Xhl_&|6z zonkpG;zoSTg-2{iiD6opN;Mb^6oVfH)vch?gMxyr8VrUnj_}p5)?iYjuSV}RqQFJ; za-B+xsZb4QRg}umG>i@5PCt~O)_#)J=s&gzZy41m)l%scnzf`6pg{2dP__CKT91j4 z&wl??STA0!MW`Y~kEZG5_`xmrvZm6)933LXP@Nb>Q%1TdRH7KFSE5>w6UPJ-R2l_p z(7#6u1TbHt$D|rL!soIfoKI1y6fln$#0%i@cwynZAUd7L3c_2?3FmNm{!BVOoE132 z<)ZR5HKM^rxQfr*h*7!LK~QV)%v?mLT7@Vgbf_A9Uofm1-3w<_y^mbQ=w7&^a;dl( zs`Xg^b<87M`0QAhpN19>K8-!1!Dn5E4>hG>S~z}J2Kd}Cv9Uvz97-CZk-ZuKxby5q zVc*p3nEsgI^@9sqYmN^OG{>8!hcpFV_ZT~A%*|)6U{*;%V6ZS}?X!nj_Oi4I8#X5& zYSOwcod?)#bWM=#CYVoGY;@rG_Z7K5Tz1m3F61?MVn$I{L0bxKZDz>WlHSrAUcmDf z6q6@!I!q|pHfX*v*cgfNz_;~>eX{9*&6phr9*15gY-y&REa$c+PR)%i>nSU#?DZ!1 z?KOT;vMD61rzLl-P^|J>;L=!DvXK}pVP_?4`FPj%MlNiK>YRBX_6D?Meu!ZuRQyEPUMK$4+wj{A?cnIgP*uvyxx z6$-e@39Uj_H7QS6Y;v^lW|8jtmG5Znc;q~nkxQS_9Zq3DFFe!N+y1GgRCjfo?g(Q# zyX$jq;b9+va7$c91=Gc05_!fn;ah?m6Xn$_>9Z#vz{I3Km zZYfCg%;2D|S5KRMNV;YNHqQDxmB#T^cwH;E2^#Fe z%gf>}^+3pm1m>-38EfvGBcZoE^8D?0p0#+~ZiBD%HK=AbS4^xp@MVAJqUQN6+n=;# zU)f*uVAAb2_JzK*0l|?7AgZrrnY+@{RFpK$GF|4%j`q~vvSWcmD>oLgDgjH3*eT{x z|IYRTx9-WSqE4u*Z=S1){Bdi~xX0#{HhFu1V`0AYws|L??JUcX#EQz?6j}3yc5w%t kV;-AHL3{1EPN|(XK(Ay)eSAcwz4fQa=f!dlg(sW-0jh1`(*OVf diff --git a/src/assets/images/file/icon_talk_video_d.png b/src/assets/images/file/icon_talk_video_d.png deleted file mode 100644 index 8598815d514262184d56875b079da1cdb3551a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20853 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 diff --git a/src/assets/images/file/icon_talk_zip.png b/src/assets/images/file/icon_talk_zip.png deleted file mode 100644 index bd0ebcf0bc2808af476eca015a7235a8b6d38917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21425 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 diff --git a/src/assets/images/ico/btn_checked_w72.svg b/src/assets/images/ico/btn_checked_w72.svg new file mode 100644 index 0000000..c10aa70 --- /dev/null +++ b/src/assets/images/ico/btn_checked_w72.svg @@ -0,0 +1,24 @@ + +svg + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + enable-background="new 0 0 24 24" + id="Layer_1" + version="1.0" + viewBox="0 0 24 24" + xml:space="preserve" + > + + diff --git a/src/assets/images/ico/btn_icon_chat_capy_g18.svg b/src/assets/images/ico/btn_icon_chat_capy_g18.svg new file mode 100644 index 0000000..0b60675 --- /dev/null +++ b/src/assets/images/ico/btn_icon_chat_capy_g18.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/src/assets/images/ico/btn_icon_chat_delete_g18.svg b/src/assets/images/ico/btn_icon_chat_delete_g18.svg new file mode 100644 index 0000000..a160dc4 --- /dev/null +++ b/src/assets/images/ico/btn_icon_chat_delete_g18.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/ico/btn_icon_chat_me_g18.svg b/src/assets/images/ico/btn_icon_chat_me_g18.svg new file mode 100644 index 0000000..373982f --- /dev/null +++ b/src/assets/images/ico/btn_icon_chat_me_g18.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + m + + + e + + diff --git a/src/assets/images/ico/btn_icon_chat_relay0_g18.svg b/src/assets/images/ico/btn_icon_chat_relay0_g18.svg new file mode 100644 index 0000000..19a5267 --- /dev/null +++ b/src/assets/images/ico/btn_icon_chat_relay0_g18.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/ico/btn_icon_chat_relay_g18.svg b/src/assets/images/ico/btn_icon_chat_relay_g18.svg new file mode 100644 index 0000000..baf9a0a --- /dev/null +++ b/src/assets/images/ico/btn_icon_chat_relay_g18.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/ico/btn_icon_chat_undo_g18.svg b/src/assets/images/ico/btn_icon_chat_undo_g18.svg new file mode 100644 index 0000000..e6fbfbc --- /dev/null +++ b/src/assets/images/ico/btn_icon_chat_undo_g18.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/ico/btn_list_exit_a24.svg b/src/assets/images/ico/btn_list_exit_a24.svg new file mode 100644 index 0000000..eec0e86 --- /dev/null +++ b/src/assets/images/ico/btn_list_exit_a24.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/ico/btn_list_profile_set_a24.svg b/src/assets/images/ico/btn_list_profile_set_a24.svg new file mode 100644 index 0000000..8dfcf7e --- /dev/null +++ b/src/assets/images/ico/btn_list_profile_set_a24.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/ico/btn_list_setting_a24.svg b/src/assets/images/ico/btn_list_setting_a24.svg new file mode 100644 index 0000000..703d423 --- /dev/null +++ b/src/assets/images/ico/btn_list_setting_a24.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/ico/icon_alert_info_a50.svg b/src/assets/images/ico/icon_alert_info_a50.svg new file mode 100644 index 0000000..831e2b6 --- /dev/null +++ b/src/assets/images/ico/icon_alert_info_a50.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/src/assets/images/ico/icon_normal_chat_g60.svg b/src/assets/images/ico/icon_normal_chat_g60.svg new file mode 100644 index 0000000..52b2c08 --- /dev/null +++ b/src/assets/images/ico/icon_normal_chat_g60.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/ico/icon_timer_chat_g60.svg b/src/assets/images/ico/icon_timer_chat_g60.svg new file mode 100644 index 0000000..d0ba60e --- /dev/null +++ b/src/assets/images/ico/icon_timer_chat_g60.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/ico/img_coming_soon.png b/src/assets/images/ico/img_coming_soon.png new file mode 100644 index 0000000000000000000000000000000000000000..80ee6e6b291ebde5e09eab759e4ed63984267729 GIT binary patch literal 45216 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/ico/img_coming_soon.svg b/src/assets/images/ico/img_coming_soon.svg new file mode 100644 index 0000000..629ac41 --- /dev/null +++ b/src/assets/images/ico/img_coming_soon.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/ico/img_nophoto.svg b/src/assets/images/ico/img_nophoto.svg index d90ebec..396deb3 100644 --- a/src/assets/images/ico/img_nophoto.svg +++ b/src/assets/images/ico/img_nophoto.svg @@ -4,26 +4,26 @@ - + - + - + - - - + + + diff --git a/src/assets/images/ico/img_nophoto_multiple.svg b/src/assets/images/ico/img_nophoto_multiple.svg new file mode 100644 index 0000000..10e233d --- /dev/null +++ b/src/assets/images/ico/img_nophoto_multiple.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/img_banner01.png b/src/assets/images/img_banner01.png new file mode 100644 index 0000000000000000000000000000000000000000..99b5b63f3e2feff1d31dd1ae6214447e69d4ff42 GIT binary patch literal 11025 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/img_banner01_2x.png b/src/assets/images/img_banner01_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7208f63c2278cdd3065c9d2146f78bfd3b9854b3 GIT binary patch literal 28680 zcmagF1yEdTw=Ei=ad!#s?(P~Oc<|s3!QG`HG;YCNgKHqT1}C@#cXxMt&EEI?x9a|T zpGU3g>aL=`wbmzdjycAdVakfq$Or@o@7}#bmX(qG^zI!D9{76#91Qr=sG8#K2f$fe zRt*mP=L2UN`tBX+J6TCFH4puxOxP5)?V0}9-BHGtE9y_~Vp0>u#c19TEix+AkMnuP z5JyCmWC+DIlz;Hb!(_1#X{E|lBHPd*uzL_>enL!IoZM##w754p-;NGvuDm=7txBYL zu3lzcdatJT-ujR6U95+Y(BDZwQi}fnT(W3r2uQNy8_F1@5dZ51gadj3b1iz+CB-4B zWY;)sLJohWimc|pUUT21b<|O&Ch97O`$HGS2v%%u7>oYvjbmXU-8LYhL4uvT-U`Tq66XyqWW@P?cgf3xhx z67Wv7B6sA;_640j4vOoZ55wX&$OYk3=FH(Kn<#m{Eb!sieN_F|=TiOypk+B6%PFHvG4xn3W#_I4MQCEjiy>zV1xV; zRXggk%DpX=S>!2ghRagW6B5A(O?Sb~|9T;>0c*^6zBndtuvnlLEz(vDyzh! zDc7iVwg>K`|BbK4Y|gnU{9c}@me=pdIEMJl!SjEe9Z|>{c*6Vj2BO|Mk1;Lh5j5+B zxsMWK;bj9+fRCWg4;7vJJI8aOAGD+P6J~|GOR9Xc-X4?=@({}CNy9wyiLpeRQ2yWd zB3g219ErbUO0h6gU=mN7HMt2L>)Ch$C9vpPM$jB()XV14zZq{<(TC;m&;f!3fc57U z89`XYDJ^D#Q2gJAU5f_~JNDjIwC^2jIUN?BPvBTCIG#tmA+rBvCWPURMC|o1ajdsj(U2TaiaOVzh(oYwfc?WJXLUEf z!!AK39$rVa#c-*7+A$G5itn%exBi#Y7>f`2EUa6d`O%{}^vXe}pfeV~ukMo} zz)#E>iL2ivUSn&xw&lbZf05B3v-Y|%Ha%bzPVv1fXVbs#pm*@5AkmJP9U{m9Q@GC_ z+HXUSz72UYtIFDa6t7xU>2u(Fm0C+%WbIVL4_V3rn`ApUun}Z1p4@k9u(tRDn$~9?0X(2*0nh`Q(@XTp(=$Px}Xyj!$uMtGYd?xv? zgNmBNT|IiN_y*{v3=lwrB){JIO`zjh=!f3AHe@`u&9+kEJ)gQewcBa46!QyJyIs~? zJftXVI~$(;^BO5{0P0rn+|Z5*aa?c`nG18`MO)tOl?NsTaDwt`Lb+iI;0<5lMQaeo zUElqoqr51B(-3p55p7rPA`fOpO8X&`MRG3{mLK_k1-=x>Rl6g?9E>0Lz;c?pL-@nK`JPTtPL!Uabme9nJ5&Z1VB<9_byRlO-g}pvP)M&2F%*Q`8TVncP5u1{p6o zJ}d=vvRFnN?I3GeCu;oO9Gg*UkAT|s%a%s{=wlU*NY&nj6!TB_%)x@UTxC;Vr^XI4 z9H3La3d;FGxvAy@(N&ORB}_49@M^@?Gk3ZPeXKUZBUx=i|MJODCYWFsix8+Y?0jDT z!hPzO`H(&4Fm#x`yBvezx(4j5Q^1AmtA}Z)DMOPLAk6CCrA4HI_Cm;O zfnMoXO4`AK5UBJ;v6!xN8)%h(B5x~f5%({tVk z#P8#3h6tjsdQg-|mIx8K^j$i-KNd7dUb!Hu70pBTw!dv>-&0#)B@cC37)qz=v!;U| zcDzLC9XV~^I{WcLaPJn6FV#OSEh*56H0RlFfr60r6>gx@DU_#-js8#RTCO3lL)mbn zxue_cr+psl7u5j5KS!7-#_8R%n_j`PFDd&Oh{jL}WZZ(eUmpv&3iio#Q~v&_MpK=a+bk@W6jw z(s%G!Fc3t%?MidgBBEPszs`z#+Nw_mdY;;(-3*5QoEB$O0Q%N13$dO*ww#cU}f8NW?i@TvbX`gUQCQ}k(sFqjHTB0Q2;uF0AYh|RzQN1{IbmeZ_| z`Lm(&n(qJZ*F#z;AU^ZZLJ%58B!Rb(6wc@SOyfc;4jBO9SGJa7-GeI>@#EB0;7v_H zhBtS07jMKf4uYlh9>PD~bRJ{;h36+q7a>!u5t>>OQ|K=wpQsc(d&^pp-;ohK502-> zF+0~-1O8-|>lQxrCbX;t;!(~{iiT0#VVtfnDmvRf$7(n}PDfarD?QwhZ1W{{Xn2}{ zLIZaLdLO=!e~NfuL`qr<5P$B^hTkJXvx?XLU6-T+8E#M3NY87#HFbVO%>Ni+%OL&` z{Z7Zi#W$G^0cpNKZV{h?b+VN(`v3*MHrZCf-)qhFsBW*{hD9~wM!f?84`^a~@G~37 z;@wsA5}ePJtro0G9SZcs=Uz+GUi*}t&lBOni+;|#7fzd99hjqKu%ES50TWS4N!}l)PI|;Bu?X5Q+a6_m= ze}^CnP_B5KdT8nW;0gsWfc)_;@3MC~CJ5N6!*zM8{fT-H@4q*SXdH%eB-=1V6tntX zQ~)R4BaxnJ;H1vvz39Y(>(y13}LF85%ZhK;tL9 zI8&rYo_O0_wOONy__2?=9%W}4f^X#`uD@?R5;}+Je}Q@+By|py{R*Echy*)s6{kAg zWrPMoJ@Y+4k?$@`wWIvObF&O`er$KTE(DCt-jgAlMs)seCOKgn8%Vk@Us!&;q-uOQ zcmL7+p$1R0*Sl+E2mWI6IwHK+;z7F^(7t3hrwxguI*=6?31~=JduUO0DK7d{B`oQD zQDv=MRDPcMlGZZ_Qy&%02G z4!xzy?VG_7d3#Q1(AAxzTM}Grkr3MoVG`BhJkO%-KK;`3tmcmnWwI(XtF6exsQvU; zMm!UoA7xh+b@1g&2S+<)pEWX3d$)~c`X%$kgV<$ovheZ(Gtbv>NQ}df(Vj8J7vB#S z(v*q#?iEc^kL~?;eTEPgfP%NkSAKyfiNZ|Tu_tE^x8x~r-#Xc%V;)Im6bvbWQO(QA z1K8QG$1~H9Mhk4xW<@OH)b7B?v`_m6{kzxb6HqBI_e}OJ{PwQ1wJ}OTuDZ0;sna&@ ze}ZaMBV)=;eu?wopd^@Hygryf`x)&lriVDdgk45&SEm28d;NVNo9(~zI2H;}`So0a z^Z|{u0->M5>l+=U5^*C1v49{A6D~ocJdjMaMMeOh>@3Qy%hikOkG1-TqwT4IDIVdF zp^;pl=Ge!d6@Bc1j$H;kF^RMN3EF2({Ug{Wn0H<+Mw(xtO_1Wuk=b#UqS9>9JFS?r z?$$C+$>@7*;E1TW=OXsm)lGWbvR5vVZsY$Us<11F!Y)q=5~3`_#!a!?rr#h0by~N~ ztVM6$45xEo;az~T5L@6Grz#v0^+RSB>L}Ni{tr0(7TT+XhLA}jxkj1lc1+{f=Zpkz z8q^thg6qm=_(BvYVVubFv9w$z5HuEtmqC^bGIq77e!&7- z9c)p*kGvG{^Sm9hamXE+q;Qz*B=Zi>eJssG1qi^I;#wpiWFq$BlBbjuwsJTg6rg^L zfutY@PLe7=diFi0Mt@MJQOIDwZBep`Q9|}$EwAYOm_ERYNV}fXf zaUK5k%7(Ppsv4B%+8e)UFA<&s{zz>&8uLiMUfLdA_fGaeMfiP9L%5f#J}*4nDq%|x z7bb*Jt^>3$xXqyf&Z@)f%3pt`kz#f+arf9vAI+dG{6S+hE-Bv}`pSyU09AP3V(0wI z-)6~^D@w?+9T9^GOYB{a=ajFbEc0~*gK&C!LP^p0W?s_dUKl=B)DB+RFsCzi5p&m` z>-O}MbrMr!!o{h!zYA~p+v&Oy=uHmAP7K@+X__0-2^#Q?mqjDL0&Y7-d8@?Pi^rk6sl+VHH!^%@jVn@uq?^nh79W%ur^wUrVWx zBZ$nTpEftwl!McWi8VveQkh0<%>mOXN3@0K&bNqPmCS%({FVL}iwK+9(6_H*&VQkf z1Ud*IBl-NZ<`3>-4t}ZRv=P-EN7DqenZBgloTUTat>8`E4!wQcX>1##vXgiRJtBwF zKFn!EuDfb4^RPYH?k=$Saq%5wF z9%V0q7nUhmN4?T~@JKYs1WxI2l@9(}6~D37FBPyaFN+H0Q%`+Xo2${e+%VWsLb=>G z5@a=#?q}h;X@K9z*Ix7)U4dj%^QeO_#NqB9w5)fJmY!jFFXn|bE0i5D7H_y!)Ddm` z#pD*TI|YU=_hGXaC|sn^Y_&+JnY{>GmZq`evg{F|Vn~}(LCYfDK1mSC&C>fh!4AK1 z#elIp#lKzsvMnV^N#X!9W_Ea<-OPZ786-gxwvE5}pl67USY) zw4ojunwXM%+*mq{xJTfgxaN8E9nP%b?Tu4r9o$T`(cpAv6&#xUz!lggXVs#jAniKM zzbj=%rC91`qVHLNlCyy$WyK^v&OiRje>phjqQtx#FZuwO96<@)hJXfb-B8c3N}QLg z8p;d{CwXLfn0KQmttn0jVmoDk*&^kSf8)8X{O?$pCRQ?ro`;2v2N}Y5O;VeIza)UU zIraI18TV=}n=qHgHlq38P&`_wL^fG&UyIa?edy3oGAKAIwRPzs*rGS6&P;A2K0je_ zu3~mYzeqwAJs7&1yKM>HjVL?ZYK4B{GM;m_pyu`F^tdt&y|Qy?B_6a<_RLw7zRl2V z71$ZOG-Yuck}~8qTU(Quj@8V>>YbJ#$>!%PFjHytUU~mJ3Q&+ znT%gucD#<2esqM;vJPZ&2buPktHK})t4a~*2GY4y<~EL~-4E-1s&?~tF@OdknBwyI zs|X#Q)5X7L4O_&#?Pr-BEI3*7A%d?>9@GQ9;)hxzFJ3Tt`Ib z=r25(=@{=x#!b<&JmL&&IzG7exT@cEu2I989p4Uclyz8e#jI_FQ-~M+1dh8_bHB-* zQu>A{t4|-8%FfwgY@)hqnrqWk7|+R#K;qL1)%g!9t*(Mz?2;AvUOEjiCk*@ktkm8$ z@k~Inl5RYUYE8kCE5iX(nB!DWa(r8`2^9WWz15X&Up>0bqjfHdgq@alx>pLdJa#j=W|%&#gne5g!a5n}^xO;%_73@MAM~5t)E!~Os^sE2 zH9PR#;zM


      |h$$dnh^nvAH$3W|Un&YcvPWZ(GKJeKD%yOt@sZuv)%pf$|{kClR4 zGhTQ?`|-w)pIeHOH`+h5QF))MFhd5-_IlIfp6L51Oc6e9O?sv2nerR*_1u{>tj(1FMErk`)3*rna% zZBm$kU5B@6C3w$U39=@bz2L|pXDUP0&63K+m-Lp;z=)2RuhOJg+#If2hwNU;fL&>A zcSpU^$#OLi8@D`^j@8s})oLQBlkyVoNdi{7a&BmU_xxOS!lt{B98ucTNNAl|hdL-ZY*-}0r z$WO~pkM(Bm`tjo2m{7!J`*b|PQ9clUm+pC0T|fVm+ZnsW%sGrFXXjTwvG3DQ`RL7U z4H+bT)5VYcGlku3D9w~sik*zIk>5+veAJuW&w=p`plk&N5PPcLIt1U7h?ZW~2+s}^ zLCEPgK4b`M{VCKw!BH@xLO`Mu-NbqY$a6U)X8~tjNM7SVT5heL_`qlS$seo^c}D1C z8^B#%tX-*4J$`jrS#w&igJ(Q&(%u}Y;PywDu|42Gc)C$M+jB*0dWnfUN8^zo`#>Go z;x0an6wJxNTzz|Euz6tu>vp_wU0aunlLGuZ-I-qIvCKqVfNK8OWz9@aD*FmkuAeR& z2hGg!6$3{L2PViHf3+Q=6;&v_Z(lF&0OtDeOTVHu#F}IQ$Ii- z^l^wyuV8ikfE>McpS9*DvNMxQ`pBncF|8l!mrIN(ee_@+E1b!Uqc&E>;zyxwarj~jC5zd%O#V@ZObbghPK7WA$kCW?X;@+ zdzWK$BSXA}-VhEJ)3lOxqrF!c{lhdOpp+v!g}uqX)iopeMk7cGg7_Wbh{UF@G4-Z@ z5F#6xMc&?6@H~DC3pSC92w45SJe{Y=cyV8o-hu=IttcDL z{i4h~#jBc>tQYFAh=mNwRzmFmEBW5QS$3R1hCro2-Gb}k~?>CUsE1&iWv$Gpw-X~L@NVQne zoZWDN{u5+`xBj$QJib1uv09TimB-7n2H6I9df4F!t}M?6JRB@&dyX^FOr8_|oF5EU z%V`em#aFarFi37irlqCfMz~n#FDcfiI`WyZYUPwi0wf@n`b(crACZcw)%EG(^jLto zZlgFrQk8wg+wWi@Z8)*>-Gp^Kx<< ze4J>^t{X#k@KoYQ2QFqW{#e#3M+!W!tIS-(}tR{*6;JW z(MkGcR)>MC(V_(o z{PJuJ!Sg?5ZSwF>DB*Fk793jIh=J#aoKG@8Tq`&4x2RaZay=P~23{VB_!SaA+)WR@ zhMDbdi3KIkpKB%GfXKL-Fz}EjR*MJn>+R2(n;7Hz@o_n)wb2{XAtk6qsOr><0V!Rv zOQTqMooiUm$Ckec7AELxl2w65Yc>4@AhvngX(gCcZ`iplz9x>r3GmeQDv(b5FU_NQ z7B}YS-1>o;of57}k;8Z86<@Y2Jh~!tJC#{=R0yJnId6M1?}&bVN%$aY^}%tTgJdmM z38&DCDt}6|bJ{v^ET*(Wez4e;fC7kwdAGyU&7bp2D{UeR1`WVp|DhJBVV}ZOkut03 zPm-Se1jjH%Y6lXJ9EP*jm%3H7oV4JX!$(~=m^C`SJnh!4Wj3D8bX*s}{FUig<4ZF@ zqEuE?QCcf$DypEMus~(c-WuFK;(3jaHd9NS&3=EX|H1g0>Wm;=USY?SWx@wGWgS?A zMCc=~|qb2cJp+jH-Cqb2wQM5`j-4(+4dd8etw!&0D@m&GsIQ&@^!30l>gl`?tvy zH0zR0sf}3uRSQ4g0+MS=qHv zyuHq6j&!H2Mv~ULgN#=;r^B^EWa?|HG3iyc=6=P3bKc`ZjkX0PN=z!6`~?L_I~z)M zOD*)|_z6iX+f&__k#zDCG!w<)m%Du}vo3b@WLk~+Rn4D|byO|A{4Agi?#E{vu6H-L z+KMl-UcW0>5%;u&P4kCUn7vp%`r}iK#1N4Bk+L>l^o+uqYuep^%xv+ICs9=A)n5SN<7Vs^hliKBIa)0jl~0DW z%}flsAtc-}{mx!m>-;IOW24#Jh)^r9{HP2(TI@)B&%m>txHofwxI?ILYyb)5>J{M) zEH=KX|F*r*gh8?_TIy+S5wI=kJF?o%3Ng`(TiEV}$jdofdFqY6OSVP!p$*rA3+Hi% zJ5ZOYuxY3%YI+o2gA2Ta?my&^p0YxNW`(o9^ju#=O&nX31L2FV;d$30@2XBCg?hMbAsLi;ZVFHINAJvVkq z8%%r7=*RHsx!&`CZE$}utXRbZN@va!)a-ccX?+$CAh3#^>Z z+rT3wp{lGtqZHY&je=4AbDKS4A_CGiJuWT$kL_>wzFjqMqNFk{;Ma5it3I?pBbNW3 z^bOqb!3r@?Rx=4VY{Vtd7R&$(yf-ts2WR5+YslfL;~{GE4q(>HkZ#6ZpHD}3ExV%n zDk_LgO&^a-fB|uw7Tz?jlcxn)2Z4=WvT}RV6s6Id5`2dBtK2gj=;*y&WA?8v5Kn)B zV%m%KSoEu47%0TJzNL;o6|`IW?mM#CR{FjOJ@KAo$GyMwYN_-f&jV5s^B!@Zt>WO8 zi^LouXH1Ar>)E93=r1?BGPEw(IF8D;{vOk!vIdJE=RwI|_q8A;f`n$2EyidTiNwG9 zT4h@U$x2}*^~?itA&bzA3{3CQ@s^Sg{{&}+jaO(S0iUrtYUSf+<5vbVZbMH|RtAMV zPpE!?sf@G3>kZI>lj=33z!cfH;K0t+jE#^-b`fn7n-~3dN|yTR&zBf@lTl^sd<`Gt zWWC2?Voj82S#8J?qGe)7b*qFf{1sKv@xI*|M{#h@P><;w1KZ@wS8M07@XCL-edPZB zkuHljqf}v(;xCAUIk)8hlr808)&9KpFi&&VS2@$@J78}F6RxUT4X0u_@WMy8kG*qn za~JPPtWg7O+ZE1cbtWG5xSo2-fav`wT7@i6avv&M9#VKO0VySAxPH=ogA~zvx(n|w zB7}c546Gzs!c6W4#o!p;R|{D8H?mW<{)sb>n(&-NW=-RXwsPMrht?9_80E#s9W_UE z#Yd>0Tf@T6*pR5DA9zOAVbR+D_T|f$8}vAZ-XH7dEJ|%GPT!gwmP{SpgK^ z=5~Z3JE8QukG^}|^=;<6V(>PYw@nQOs4(!BzKa^Oxg|e3=!19|DZX<^IR@1pC0@Jy zur!ob-LiaFk&!AgYV&QucS>$)JFwih?m;CbkU;^Nu@i#8X zw0gba`}S7VILV3TVt^x@SZGG(Vq(*0VL16!Z-FKMtCOGZ&{9v}x<8bMCA(7RRsE{Y z6YJ%BP!6qrFw-IuY{xb9sGp-^eX`@cCT92}6n47wV6BPY;Q5AbG=TlXT8lo#i(zSW z$*JDj=G#IcH@A}*7*<2xo%i*VgNZvcab6De&smEkOk*dwJa%%1T8AXDdwr^fx6;|-KWDFx(Pm~ETtAf&1Oe! zuC;Es+w%ip+)yf02;aUbSpmnabCu9XN~(v^=%3Q_L!V@Ov%eem8;JeSNRK zVcWRR--W5j?eGhlf5^Fc7Cc-ikDegcLlqH2UM+I``G8VcQWCbvT92kEsuuQbAijft za5>uxiTVOYSM_(yVnoB_=lhbi%OD3~M61ThL1M!&M6_ro7 zFw#Wwu1;2xLPFPCyGx8a-(G91%Smv$W9!bYzDTxdcJ$_BksdEw6qO#k-0RQ|r6DUJ#i^kENO=WmN*RmFU5oDkXb{L^ zIb4^;@s{oE;bknj)6iEbY@;7W$fDf*DzN?pbaHbV9Z4ud@K^mM_!gX&w9xSrEqEGz zP{0z64NL2!bvj{rLOK;K>lVm)u$Wyh82OHj z$wF~Q4dEwl_k?<9*|o(Lis|L}H>lT2j2tcZSb0i~gICV0DZ~j?Mw~`mdmHqfy^hG0 zAnnF_Zf<_WYV#Gxu(#J0A1PWMNdzDFWCc^Djo@YuC3N|5z2AH!&33j>Azi&`sloKm z7v%#=r&II;BzVG8yLX4oH4;EF{K=O-^UsD31~4tzoH5|QgbE}(U@T?!Hy+wTQT(D3 zl|zIN2m`=01SExbuBor|48Z}7^RneZFoL$m zN1@*!s?^K`%S@ShHuzSe8MG#5hU$+|5^wZW-TEl!Z}3XMleTwQ5N^1T6Z>TU#i(S8 zdUVbqV)YpyE-O7G69ZkU02XC| z1IGdRsI?qe?xz6nly_XGcbIs?T!-h+=N%z0&3+MP(t16jA>46C&>|vnNT7(sJ@+|S1vX{X-8`Yu|1X{wG$tN2P zwqX~SV$W_-+YE2`z@LG6pH+eAWUY65uOwSQ$a$B#SDPB$85;_^eZ1MNNC1GeM#eK& zyY;E=GsvN!LDQp{e_4D)=>g)>t1bwVuh559>@Nw7KFX?B+`@lWO;2rx!;2MMytY<^MNA+5#h_4kEYk&~tkc zr8^#4o-LcNM~zoOOV=cfOwoU-4GR2^S}&YvGBC&o1#tQ& zt%foDsIDW?vsQQLRl|ToXByBF-Zf`!cYrG&Qet|hHu}DvkHAM+E?S}Z9?T&}_76)@ z>6wDyQFyZ}6mCngh-YelPdo3K>(jn>P^v}r$OWQdU}Uf{c#cIM+brC04@+Z zQ)lzmf-u0~JaE1mSuafbTb@QQ%4NMfOi*G8=?DQ&=<1L$ z9Lp=8@dUGy+RuKJxrfRK-`XGScpAFR-(iD_2G-C>@`gzHyxBd%Xc{tLZIeC*!Nb=^Mk@MSiCK5F|UcFyU%~4Qw$Hx=uSr4As@&d({3tmSSUTorkEQ z>AdwYDe<-@;0cuD<_iYwZYK*MQs9HB4OA)mM~r*I6360D#{f|!=Lm;$0vw&g8NW(M zX>qm!u_$K-w&B0n|9g=?TDSU*a*6lXA`^U$3t`z^XwP-tg#eIl&vvpp|K^5}V^;LC zma`mHP*?ca&}VkeIdP=c(?}j2NQL_L1`{)n-h&Q|dtp&S^Xc2rgJD-VRIpJsN(tHa z+ndtE331Hh_gbA>C0Y<}^D+7VNYBPMii}~MbgT(I+~&feQJ;a*4ua+>zU=m`k&Gv| z^TxWjk{_T!MNl8sFy8!c?7s$-f5&z#OlAe23DQXX9fD?g{C>P+V5vCl zTEl_IFx92Rpt!oVfLzWS>TQ`d_@t^j)r1xuw<`srTJE89-WYbPW|omhCb3Tpq)SGE z5lL3|>oc`}#ndBgks|l5+SFU1!NB_zMHRP9%hnSohE|pkzb!2eG}B!rm?|RHA%UpvU7ka1h$PVu z9FwooywwL+aC<5|H*l~~?hs**by{9!4sOEmU!h=#c}r;uPuui_mj?zHu<)D$n;LQM zKUtG&BS!r6b>!0zSUI`8$B6WL%DfU%Wz>)uElKfOmfL@y4~;?V1G#$SyY32U(t2E? z$`CpePj=DVA}!GdWKs|NvT}ukheON@nVH=TpUVu! zB}xG01>K*=up_T9vLvR*F!L&;uab}wE)<6gMFl3;A7!|ht@R70!vLC#+}|pKNe(yK zAuy#=%S@lHofU1o2NSs2vGcPt*saQwSKFYXQk`sry(RhWf6A*#hM|;p5mynZqXCqp?^r=oaxi9uG9=)6xu< z2}0Q#oe+Uip2#notqk(sJ*&Tc@$xi5VhY7exO2LW6|F8a3z5816qL#UK>M=wox1Tr zHaT(}QS!N;7keYi=CTmMmzP5(R!06ka?bq*+y#AiFDUW%7EGPtzfZ!8v51IUQLvZa zQv=Fd%ef_t4n@2}Q8i$?x51dmZMldy52%@;kDSNECe9*)KIfS(+48Up=3swgA`i_x z{!yLM2&0g2tkMgon*Yf`#p=P;B>yK_t^ctJa6>_ShaX=W6Si~T#Oo%kU_E;u<8GBL z11GbkT7LUHC$yi^zHX}KJteNtz`pPs#7O$n~$w9!w9QS{qCXQLLaZSd$9S#Ivy z@E!NHO_OkXq}KX`lf?B91!X%MKgLJ0qMZ&NNj?%W`P^grPlhq92!Ap>^B$@dU{(j_ zqWQ8`nlnTSn30r! z`K*nHvfYV@fW#M|izLT5;npZI)&+U2fpmfs6$6g>U(2$?>9-FS-PNB3i@iXC{?8%p zG>)Y332?yE8zQ&%(j}6npoT0`w=1<`|1SJ8uFhw7f$v>2qD>D`EkblmM;zpzVCXdN z^Rw;z7{AGm@1#u;3>!Rdc;D?O^(+5eM6twW2wJ~rMuO2)3Qmd2HsSi}Ho_yFg<>Ns5Gy)n?F8rtW^;XLYQ%rlq98RmGl%{-(K3$%QTBi=f}pheRBeOnhxQ z%1AZH1Mp5Zj=f7Y%_>M;H0BwvfpezIes>! zNY=xTNY6VN5Uo5QLZg`K^8Gjlyht$$bxITD%98imcBT5&V#AtD*%c{iUksHP4hQFp zdY`cxH1YA_`Yag01w|61L}~WH@F)WnkPOolOu7V;+x{g&fb)U?HQpDE^E6Qu()3Bn zvtbB{YHzJthcTSg-7i7Q*V}#5-6#$3RlA35NIzL9@t7_1~jn^RNm_q&J zFM=n^g(58l8_Z0^hR)c-#*O>r!=2$Ut$SY)OogoH%ESmqEWA8AutMBhvPl3&I@=$> zy!%r;T86TnW3ohR2WLf31f$=uB|NOUzxE#Sx z>>FYC$#MbIVX7<)^z`-nb2Xa{?Sb@xV%v)jN&eggp^m%oJRXUn)Wq5=2#QIXjpZD80k% zDvpm_jUSt+5PwP2`|E+a`H@9FWkbh_0m*(j|1DYYrPi*ghX^M-_Fi(82q{wU4a{AM z?A9a=>+h!@-4mjcK!Ys#vGBgVR69bxkqJFi)lILBHRSB!DIa4xABFhWS%SQcqGDc| zS=#ojDe^j%O9j$ND;r!qN* zO$JN+11j}!(P`+t-K1L8TnqseEAem?gmzEEWu0J|;&h5Ej?k&ty7_)O$KEnH(r7;|CXFtBQ6 zNe+>cdDM&EhSD!XWg;ftBJKHOuP3)XuuOAPp%9jY3!@!Xe^-*U4I_nKVGp1KSGT4H z2a6MnX0eiyQ16!en%qny59EV=;Cdx>rbByYo9A%ZU_@Q)i%^qTb7Qq3W*XWaO7Dbd z&=vcU+VP5yz0n=Vdi3@E<^_@WjNI_c793o@^^zl%a07U#f0(poM>K9^Y9k=o@$dWd ze7_)yEA5OO`rOM(qY5d(*7K3%%~V3V2oQ(r&qPS{H}fW17-IrPVT;M{&0?}Va~mo3 zEb%9W%z$YI2ruE}C+sN44o~`*GAi|Ofoz%0N};I)1xf;*5U|6Jw!oAClHJh#yS{o`Dnw{_O{&m7dMPZ{) zF}cs#0p)V~;_rn!@fzYfu|^V=j@WG&f)Mil0hC-Ex&2hUuizTbm#sQ z!Xw}Knm9OK4$uGm7!z93jT=YGe$40W>wLDcqU7LCPaE<1$BbIA zH@g5y}Qm?-R0qpwyJD%oTnt6(1PKE|9DdS`yfY2d!MJ#3WV+yDu< zp%TQ-3(HW4d@?n~Cg)BcWQoYoQ)`eC)n)JfQ+3=QFx{wDXmIOn1hxdrxg1hbxY%$gj zHO2f^8wrCipM=8s93B+GQi;-9ftUm_Ru|t5BG@_<_6j|4iJtt91Mi6h?Ir7aES%!a z@0T1v%-?R?SmXB&?r=9@fGwrXRshVG*_T`PmP6krft9d0i4*J(TF_(rMjnJvHL~v$ z9SVZqFI3ajj-Pf{Wuh>vByuo--}>Xam%OFZavjL8L&_S6~m0V;zRxY z)*j$RW9ZI#exA)WZW&ck=Kd^%U3qa*GQJ%Qy5Sko4oI9`!XAtaRc{|;kmzEn6`%?~uOv+G&j;e+n@KULK*Tosaj>#g8&=#P0p4AyzaF z9qyXsmL!x=*VJxG4;8Y5+wLpu!*!3p+v!JPHaM{HYa;*r`=2#tA zz2_}&UWb#7&#zeir~pXZ!366+SmoU=kpP6qPIuTSE%H2~&1<#LD@#$mRC0GHvl!5j zp8ol$p_b2G=);A~^7N6zI;ojC_01dkluE zd&Jlr!EfMte8{7EmhE;0-|K__s=%Le?OF}ng*xqRZ%Ej`>Q^Af-+sAH<}X76hg6(n zb~Z#-Pvw33V9GyTOXAKdvPUnLzBr2BVhFOZ$=I8UIrr2e%rB|rSXrQfq$-lK8=KB zaV#)0vFKl!xvoM%6(FAT)agin@C8fWxE(=!(SI?7sR1odDuM>;j*sAVt7P2r*n9t$ z^Zo*6`)K13Jf}E+s%PBEwD?sL4Ja?m7T2@_l}h_CqKDO zb2-yJ!FwfS0v>4s?(Fl&J^4_8S&HB+Fz51;jUBHNT${(5_65)KFSODPr+=W7@c5#j zFp^_R{kK~RiySBx1jA)d-ZkUrQ`-}K4fi}T>Tt#pV)B1m21wN*`S+4`)*U>!0qyU% zzc=ITnuT;KjlADnr*Q8Y&f=Qa&XKGDpD$pPUWEdim{Om=>lj98VV(G#n##obj9!DD z{$~|70*nDBpcE`>HcHn-91_3+73y|XZ#%>|@%a(^Mte0IG4ja&@dBWA2tN{N zEQ`>U8abD*pq{WxpSUhW3!|z(UPb%!i81le1Bv@$d|qCqSpS2q zjeyDr@H(@PpAW6I{_=%b)*Q0`uMJ3sQ4IjmbD?0fp}cc>kB+}_rK(OtXPQK-pTX-o z2^)+D<@=vjMp}ip_QkB=0k-e>dREduORcD=PaA{^Po{{{>7TCo7;VW1rNBLleEQHl z4`6%Y3rMy4b2@g0{q{*Lu zA6h7V6f~5zC@uKIi@w}{`xyow<2n`UdiG%=6-}q|v7yy20$Bld88*tx4ppy(_;B?Z zpn(dr_-e|*oN=giGh(h_xZ(hTc9rZ{R{EZvo_@jYVA@JAT&L6OKd0wEUmW4SKE?6Pjn((*XyBsz1dvYVS5SoJr-)%@CY4lXb3crAPq4aNy?_wesJm$)|Ttynn# zSX$@eRm9iGFdQa{8ZtS8@QnN}ca)(>Zb^uxV}vr_eLf-NiK$fqR=491KB1J`I$KcB z>Fmelq7AA!P}=am+7bKHUgfL|5`GN<`Y zbpV?^-DM1f=!c+MtUuywx-hF6WEZw5vJb*Y#j5d?3+6WL#A_B9@y ztq$OQ{O``z3)iwdQUQYrN<)#BYjZhx_y{%Z=ov!TOZbQ?i~1ItK`_5GpHcS4xl>iU zc18!sH?;oWJ}8;MH>oZRjgKvijxfyxa@Exmi0fq=lqytKQz&Z|t;rIzP0NbaC9H$1 z#Bu=i=n;f?KVA$cSQz07I7yu->z67JgQSe*gN%s5J1-1BAz?8gGujD|_AK~n93+ij z`1R0(vp}&C#Z;~e)XXk_!@vFlD~7sALzez%pwYw#I#Ea4P%Dz6E&>n^U@Wd!r>pg^C{Ejwefs#kf| z+(!G8wiX)A~gW zw#ko={QQAaXl?MM7h)LCZk;RIK-aDl9&d4V!d64;TQo(f+zG%T5w>whCa^~=|G+t_ z^U_R=;MWVY8kI)mmU$gbc*wbzxrW7}wmuWvtmsypNMbzqQ-2o47QKDTC5OFa6s*>5i2dioJdnPQc zl8fuiLWtRiZqR!~dKU_vtX?B?zK`1N{m!KDu>tmw5s%0M`aK@>8Wg(&hmOAqX3WsE z7^nv*LuVPfmIb=(aEah4v-G43ki9s0*@=g7M$p=ikaDCrR&Cz-XzA&-b%fe{G{^WW zVE)hP{5zjfQg^l^hT)r;^n9yG+f1*}*@(BT|Fx^v@T-C7v$+ZWf;da z;5r0%cO3}s5FofiaCaNrA-E0h4#E9RcK2m}ud=V|)~)%g>)bxw-|6o2br0*7B;ahk zO93Y)1XT>)q}NxH`h9jdbh*ShYBv)4Sto-zd%xmoe@U<*V|V`-W-WH{o6b+ZrHfS6 zjmUl-tKMn6PInYZ(!{cVwA@91gE+&D1Gy{nnN*}y0;oKKNZ%<=ro?&zVMvp!C);_X zqCv;Ob0wdrZK(R&4+5f(A#$elM2aC1-#e+plOg500@`d@ciS{rQck7uh7GhG8 z(8NaHKqhnGT{c%_5C8`#HD4{ob+GVAKq#-n(2`NGeApdnSs0JyutA)F)-@Lr69xDk z_MN*U&DVw@$OA@ChM~U~seg83kL;6>2G5dvspNvvP`oqxBk9dfK1tmmO zwm4yzSkB`NX>#_WmnMrbo|J|?T*l)OZ!dQDSgnqR`QH&RDGV zX87j<9&L22VOGpFzSfVwM-?7sFFk>^m*tc^8-bvI; zW#%H#lep@WeTpbhsffQh98k>QQ7mAcx|Rx_=A(#9!a#Hv`nJSN;W>IHypj6^yo@(X ze(8KLV`V07#pwU*4*h>0APjk?BH|_4bAIrl8q~2^BXhkL-|&(#-EiqVlI$X9PpGOK z@<@;0dEX%KF2xFf<`#)>UG@URWlDR1JgTrraj@2>SHq*4$)IYkMPL8)wN5?DsuISk z;zNC}G3@!a5L{qO)=O1WB5;vtQf+jfK>zwg{n+mG#vuJdff-~iFM;Bcx--4s!H!Ji zG?Hd0m8`IzTS!@wGHFCNz4{b7Nl{0`;hOavzXBP25KmT+w|)JA0MPYQ(LNo6W({|i z)4@#pO?o%*H5tZFnb_q`ur6uOd}d0D z@INJWPISw|CH6%%RZfA+8mZ7sUZ0hM7pq<0>5-z zwRqxH5tLnqYOdoMHh>kjk4%*ByPrNx$CX{}vP`TJVlV-6fB_I@Ur`o1%*4#R1%-Z~ zUrvDtgb;3C3=`QYZRbvNbA-62ElH$C;W;t>BduNm@AQa+g9C>xF0c2G**vRpzG%el z2I`mC!sa$Q=cjBYDWzv%!9{)5>#LZbA`fShAS~Rg_$WIl!ES5Tl@+Q;nPkx6NWH|i zB0!2z#~hm;&eShGTy4Z}=(`L9`RGroOz5SvfFAw)vSkY0&UaDe2uMP5?=T-5H< z4_!S<juJTCn1u)LLR+Eg|ML@ z)aw*P{oBbbl1_iL0Bg0l!O@7)!opW+gWaB^8dK*jVdAz0TmH0+@9=^8AIGxF!=%W* zGoG;C1JNq40B2>QYgPC~iO2koW44OR<$P>$kkZpRcIv_cxNEAx z4)6DO>SG{WlRbOjKCsL#x3r5&^1F94s@FK#qi1g|jEQKLfKerZ~_jjv4uYWF)#PIgh2zdfGz0@O_*TSXWpcwyBIuTqOd*l!{pTPh(#&5IUE5 zMXwi7jZbtYmg3$)e5o(jf{N^X5|cpnio1ETcW`wJ$R=fV$TM_gw-X(qH}6lK5BHu$keT z&Yb_z)GJ2;c8&#q*%FPw_2N{A#Ypc!NZ-El^I5t6r5Zsv{`iV3iOQVv12nE3EDk|c zgImU)b3;!HRC}fyo?6zP-|NiY%vY`T8Jf1<;}lqLMPXzkiO!fXQwawYD_C){ei8pS zpCom{!vo-*(+&uJMmQh+w7%K(S4-Ae&=P0k3kz1kE`05au2SnCd?96TVO<2V&7{p# zKZ0}!0cH4&5$}N^;Z%0|&Io1)V@TDnk38W-D65z$2V?Amt)IGNS&w8{7G#ZA!dTku zPm?^<(VB+|epOB(Pv!-J<+0GQF=it*evH>_7M!)9z74%~pS_f~8~WE-+hmrcPCq?> z1}VfykbQCeLKesrzDbJe8|uR)(<{T6*Pfu%SUycylg!{1MO}o!4u*iLHW&%bLwP8Y zPy!lSu@Bv4%OGvTq^KZP?7K3MYoG5^{o}@UTU_vUX8^JSjBPW7u|sIlT3(dsc(lM_ zqp*2@#xnEGk?|?6G53Q>n&Y~|*kww5MOEMY2$w3H+U(JZ=yWw1H&>iDPIal_RqMA6 zdZU%bpuCpm@Q8mbQzp*$s=d%fefS!B;4W|3;odsx<^3hST(m}TQ9wzL(N7Hb0TYc1 z`M5$XNOLu9Bf)uzWq{W3`B{?lScOqC9U9EtTDUIXu?BJ5ge=xuFBn;Q0_U&6EU#%N zTp?d%j8Yc<^3$aUre_{V;ziZWmog4m3uukvA`7vtY8lZLtH%?McG-aa`W5fRk7D^@ z{iGq=#rx6_cBL2Vc!P-NirX3bCrMGm7#M%pruJzMP#b^?qiq_}qiHyM9*K%p-$QiQp)4%fmnQGr_Q=ckgN;G#Q#xH13`);b$Iu|B!pt*T;N`ZW@D-e+RIaqEmBU3N zOpAIWi=$+f24f7{^jq6HB(&veMuS~Y+sb9j4WW6xbU)q-f)PT=6` z$>FUEk*I=Ak(fjLYD?2Mrb^vnx)^7}$Hvd^DwW$3xPQ-DA%})sI_A@YYd$lI)eTXX zIK{sQdxO(mefs3*wexc=Pw4el%{QRcM^bM;sY5zE4Q+)=Vx_qD0@O=KSWV;eLqmLv zmhVJPNXi+hGxq2Zzp?^x`*dm~-vYd~GxPyQq}*D(%^s{`&t8qfOculoH=lc(S16G<^L3DH^^H|n~PA+5uRa9t@LCw9gsUZQSr<_HF<5KY##fmE~5P3*Pxf3%oJ%_VOPp+Vy<;P>x zc4hL_ubjb+nJg|YeonGzXRXxzs*d4?rP-^cK&>U>cjMs|BRQzverS{8^nZ=LqF)0kqx@aAR$PFsd7gXh z{M-^h@>Z?J+RtM2IE+k_a}=^i27KhyjB!DBnV#ybEb*VoAw@0l^z;IIY%M5O%FK^G zU@!D?MI}JftL}W%Qb!NzetBL02%i-)(w&8hvxJU3pgC@$AICNMOJ4*%BFrMP`fp3#?ob zmq@GY+MtYWb(qWeG0wYGk-)fsOPqQgnciEm`pL3K_xz(CEc(ORQe<1`e6cTt(_1>m zLO(hpR|fiSn^F`?yj)DAT{(Iq;|rtB;r-cOcVOkVxErZ^^RUT%_ELQ~3`q1{#p8M4 z?;(rd!ptd&K61gCB{1QlW$Stq>efSKfu1wy={9F~9GAiU=}~u`|KB{V0$~@ko)eX8 z!4mhXd;kwqR=Hsx3>lhu0}Gbo)Teq16$l^m8eOgM#Dp9_@NUIa6AasM6?crML9jUA zE+8c~7Fj?v281tnj99|0ul|zFls=+HHM)OtyVhss4f|aAY+GiE_@&Fyv)4+y{fSu@ zEw?)yOoT=+J^A!I%Hq7*9EVe z%8*w31X``oQJY+a@HzCQ?`$3oM@wIM1a15eB%lL-_?}@ypMbL=MN3e4DYLvx|8d9C?L3N$rM|z$x_>?+gmL~;L=DF`#=Hpiitz@Cb zdaDW}tI(E7M0F}h1!-#T66r=}WOxW5vwx3|sZrNCNkXq3 z>#0oaUEg6V3UhIBLav-A<%JULQz21OXas2DQ{V}G;BcveMg@%Rm0Kii?ht!;7q6iA zNkIU?N+>QJujO3Dnl#i)i58W#=~|0f-GE&S$_y+WT|7;Ae_RDt{6go4vns6A@Kl9t zkNBIAlJ2xpp`T0xc;(s|O?hakt zRvw1&XCoqCHtEtp8i*o~-gVg29*Pp!ac!@QyVdTt(mvW1S~G@>HXP@o{fou;R}rKi z7Q!IS7oYq7?PW}4QpHXkCK|!b zzPuS9pSL6c8DBF({dHapA(u5c8xp};AT60hA$K*5#K^t}oW{ii?CfSH>SamXjtb6W z7x0k5ub?kE&JJW&xh*!EnNHcP$0&T&Edu<2qt4P)_wRg~UxE_C!?Mt4IJ~VD@digS zzrn$qU|SXgE0@&gL&x>@Xv8ilD(7!-q1Q{X51PBmkCfryo6Q{GlA}wq@+v1T%2f)q zF{M|skvtfO<1D&RKK`C>*e?W`J7pIoyjf!D_EWe${ae+^)jX@7k~1Af=SXkH4;{P& zW$i5t6gc>d<`${N4RrTc-czcACbsH4n9LOTZF3eu_e1ZDdu3pHgaPwrU1KjcZ7}tS z3>g8&nV*+H&geqg?D&_m3G{n}NC8jul;{wGiI5(O$La;k_?A%?BFf4&e{;~1Fi$$d zYWTQ+3JQSl zxTch;>xNM3HhlL$*UMX5pCB5ynnXGh7}XTK$@Nn5}ynB z){W0aN+k0jgISyaLqcI4Cu7UOp|SSaUx96yN0u z?~lzZLk9*TaHM_(9zzKX77JOTLA5>G9+ikFA4ePwwCgxqGD})pXzh(tor_8)x9_I!dKki`cC8Lh{ zn2r;?mLLwSRf+h^;nFQX^t@wj-CU6Ttt>0pH{fJ)7J$}WA?8WYFdMBw+$OW1QkvRiWChB;eGBH=TnK`Q% z1Kd0>HebIj9z2iSXm`nIgpz5^3`y|C0(KyGqI{v${X8fV{ffQ!8+9nX8PYl~uHq?7 z46{Gsn~3Bs4n~Hi{WtnOQ_j9JO86bPMIElM15BA185G0hDtSAH=M`q5(NcLvnH|uo zujf57P9BE5S9aV4PXwE0ysw(|3QkNMhBlWiOx$IjtiKMw@K&%|IehLlNZ~CitcF*5 z@|t@3VYj%QloJ1ldU&gxc#Rw9qEen_m1tz&?=%9ondVzeF!B-NE2e9Una_%i7*9(h zez}k|RTh%yvdV@E|Ag-c1%p8D3kCBYsb+?Y(P31FOgS8Ga%@7&pW7viuWbWt(KN7l zz6SlY{!Z9GE6(YBWb!e&h~ufjwTxaPh-TH&+~KIApc7e&3KnCx3{)pu{-of*>pa#A z=h3vFqHEW^;q%yc9J$k!j?29Z-&M$Vvi#`mDe1$5Uc>ebKEA(po82Kx@C4D8KE9Z5 zb#QS_5OZ;PvzZ3KLRqe25&r7bt-8Wq4o}c zJ}7uN)dlL1u(zIM+DbP%OaONG%eGfAg`uEfF@!VKp;N%ztVdw@#wD_eqqFwff{R(5 z6~e`hb85RzY_NysHpiRFnyR7@c+r@y(v)TPb-x{&O@@#w0T0Qv! z#1;XoSLimMhTiC4GCQ9ea%*8yHQwy<$#FGa$iz4?RGKMwxOJ7!Cn&X^nyoBHf#Rr) zYwL-UYkS#3je8FtVvkQO&5Lg)Kd{bUSdu2`AST^&IOrV}sp{z!23;NU&pTu~EO*`1 zQ)#u^NDiiZs^)$es^-Js)tZb%6CY)loERlcovLUDR<$1w>R4G+Wh5;;YgOAAI;?y$ zxL;9JYY!W4cbNwC3!L)1l$tU-?zE$5`~PF&0Z4Q6E5)XKx%*B#j!Ibu%?@6&DtU|< zUXf1)Hs#0Kx-+x6spVviJ%p=u3ALhFp#>e$^`RN+HcQ5{2RcOGzFg)7g5bbuBTk|_ zFG&NT5XcoPKnb$tEyHfhZ*N<-$*LcY=hD;^Z97ojs%I8=c_SxPJert3oFyr2IrTr#I~Nc?3xzh2zjKu50)t8MVQe@fo@c$5OSxDa18_4hq& zjuV%b_Q`r47Ya-Z8Gj0sS8ROv)@M5t+EU%6Br=$7O3QX5uLE1iWZ3=4eTCn{a5@;1 zU7vPk;IRjX4asEE5TO{s;m3V;5Ne$qCwlxy?+-7EqZW{g@weTQzk}hl+go)E$l#f4 zqzq1Wz9^h9a-c4TREE1RLXsVP7ppw3MFx%JKWs7`!>|)vm95GbPnA0Rb1r5!l)t+T zdIPv~JO7@H+=(Pf4DkafU^;GQ$B*jtkI4)taVkfn9>GfKw~apl!9Vw-iT(x~gl?V8 z+BUm12gZsnRkAd8k+CQuVwZf-xy#Q>(Q;{j;*$gTND?I|LX=o%jR3rPrv=joN%Gu# zMofLrNsVHO=@L0H791dCU%zHSp$6VCxo>Mj?<~G-+_5o4tK@79xF1EE^Ki8zF3Rh` z2vVVx{IxEKj)QZA-R&p0w)Z+R?Z;9ZnXPoa6enrSm&3HH^WDd2it_E5@(+nntYr3_ zpEX`?jKAbAAsR(E7WVMZ++d^^LyklOm=%?UnO(!IO6ap<6dTo=Y@ z2_Tg+iPfx0bhznSN;sdO4NBcto0)kK9l)meg)LCPY&cd_cxll$R##Kb4$oYqi^>;< zC@4CBYm?|AI&0?nU9VjOU2{Sz#rK3lz_SpKtAs1VJ%bZZGS9fzCHw2 zeqlZ2B^)WNCA#q`wwe3w*R=R|I_?IonniT}NHO2s%CDXzu)#wig+U@$2w$!IJGc~F z=IBf7KQ-cGyp;mw)~n4-rz-s*XZ+W8|F)!G8b(mbtkvI}m%l0|_ZRe8Ky<$V$Gi`e z>IU~UpkMlGQH|Y(d=H|$LjG#x-?4e|!Y6P>gX9_p1`hdKBeGf~VN>=h5anNK|NcS{ z2aUGY^QPV1T*ngO7=m6^)0kVdi~6I)1UHtuMD1CgWMF?p7O%m7I|Sd=$|+~@078q{ zA(gEIog^Qao5$%;PE-8-<^O=eUy3-xGcC1gTH;|qsS2%+Iw-hZ5#Z~`2>IsWyI6GJ zvbbgVYq5hZ9j7HeW$9Jtjp!I}WysU)4b-9tn%cg1poskT-v3#tHYnfIM{(hrbEq+t z+<(bMH%&DP&Cy>hdM}6*Qsu`?Tk|H;x`k}hQtuo4h&O6Z*cXtqJ z6NSqA;c%zDQy@=zd0}q$J+#p>z;&hVdt;q2!%Ub5G%y?XgJwll*>+?$JR8DaCi?%r z$ZesCR;HMiv{I-pk$LBqRvtoid7S`1^gj#ukj-ZIEkzVLmsXbfZ=%yj-;kgz9x;zp z!!1|`IWUnce)W|uFDW76RUN$*mjjXibsO9hLD|mVMthFx;+x%A(1Bbipjr!`th>Y{fg{MetiP-fi_IA77;fT$ykt z8}!aL$1GYa(SNSi6lux3vL z^Oea4$TdSnNOr55uvduR47cZRR9*)?BH{hl&Ovk`K9;|rx$M>>U8`@@;66pZj+JIA zgBaS!NC9my#-FMXR)#BCiv*g<+Qd4vb`INZABHSUocv%G?WLVryHk%U*dFMiwTKlU z0Cuwza8KO=tY7pV<1u@%>Db+v6-yGIBU1h;6rx{T(_$NKh8^lJNo$dUDout@Um+qH zXK?Bze6|Gen_HwCT!CW0BsSg<`NrJC3eKr$@Pvw{HNO7SWPzs0HPc-3@eV^>qd()5 z4Qg*Hoqq|aw-}Zdc&U-m# zQRfK?yQSd&UkCmR*)r37BW(5)k4xoZ?*in`50koTJUa&<;^kU$mL%P$AnEyStmzm+ zcT)!-*80L`!kB1^jc{1W8HV~^NH(vn$-Fxn)kuvW?)9J8%Yyw&3yeGY36w|8jD$J0 zT`#{jR9Z5F5A=#SoZZJPm<`t9 zKDbMcW>i#Nb^9oIR^kNzuMhuicT~clQ60^ctHXMG`#jp6+77*`PBW9Qw4R$A@-9Nt zv#t2AGiVU6T7(Y?QJ5B`miET>-4KmGwD?LhHMK1VjEDvvO8tK%i$MaoJ=7icmakh6 zkKdRMIszAz@-g=2uH9B9h3h#ccw)7gVJgj;E$h1+Bif}hzAG>j4ksG|Js`*NHg%)0 zx#*u-h^3A$vuWu`)l%AT^0ptfeS8Sd%9DQ`dluzPw)gR5TWVWEsROyYsKd5+DU-{~ zyT4-v4>1&A9>d=1raZ!iSQM)C9}d!uJlCD)KN^wCj6P> znn-6yfOG&XMe7QjV<$*Hq8HfJBW^*!#G(Q`uMMTO7nN;a!s3d*`_qwyH4q>vbD7I% zM2JY``SZ_W_xqci>}Z)y`-VZSG6!%||CYGO8bWt=M@3KMOl_TFa|tUkZg#gG=&(@7 z%knB2TLDb^{Q3Kzdcb(g1ay3ypc|Qw%2B!uKcF@{hzSyVlP0xg*IqC60$eAxCC0jj zDAv{iuutA#`q9kE%#Taiqp|Acw(OE3iKaoaL)lOAr$4_{gSJqg5MsDyisfUcgcfNDJ z?@D@mdpW#;ki9NS95)r8L?U@*e=kMMn1n6kwh*?7m^DITpBF<=D%Rnvk}~&a4OWT0 zPC~Z$6`V>jq_kQss;a8c-rmms(=^SVJsTk*AqWZz5=G9^)J|J2#3XoGSs5Nae2A#1 zD9oQfA8u}LY>Y_Wym=G%@83sKQWAW9eFc4qCMJf|>C>kX78ZsL8#YX9*Wcfdg9i^{ z*REag_V%`koT%hC$E8b`5FQ>bNQ$6PC~)Y|A>`-hTlHx!29KCEwVpnG3YAKQ_3PJ* z3c|y~0|5a6XlZG&iJVP}snu$nKYt#3_Uy4Ze(l;d)YjJW?ng#O;`Z&^w!F%en2=iO z>FG#KO~uZgJ27k4EZ+F&=qM^GDi9bL$QzqCZys7(TWumHSS~2~d-v|4udk2gOJ`>% zjvP6HGiT1g#l^*7N7H-qJn_yW; zNlAg7ogE?~BG|&A+gRVhqH1$=}`G&1APkia^mFJ$e*z zadB9_e7Pu61X`J^R;@yFb2D#@)M{vGV4Va1i^L;FQ$uo32fbd8k&zKmWXwT9ySlns z9NV;M6Dlh!4c9zkN~IEu7A>0A`IaqPuz&x4R99DvCRA5fhpenDHieXpao?AWn`Q>)ch?UIv|x$5d_#>GUj z!oot8 zmsVkNaLPkaoDO-e|u#=*gX6+}zu=;&ar$a-QW@TFqL{I2?(Xg^VJUx% zLCL;#>sIvi^<#7TVO+jmiJ-thl$KrQ=|I){ZvDTATDKP4GrmLql|Qj@<3_ggHAZf3 zuA$8tbC`B_L50wK8}zKV4|{&fhthj7v@u^J^6v{c`h7a`i;9tyk~ZN`Cd26H2psM0 z@%bn52nt+)pC4Q<-)mh=U7t>4Gl$Oa|^!7 z{S|i|eW45g2#`)R;WdBd;qsAmlV=A82H@o6WVo)Ytwr3mhv*7kGogsKA6}Ig@o}Ih zzD@cR8jXg{4DDj*3^56wViW=OEIQpRT(}VXf6T+hei_v3z62zug;zJG=f!GFilBVj zj$T)R<1zz^XG!Z zUW`t41N2vtSZ_U7VZzwXXWfWe?2nla hGi>tzW_}z7@E@U!CSoDGk{18~002ovPDHLkV1mJUW%vL9 diff --git a/src/assets/images/img_groupphoto_80.png b/src/assets/images/img_groupphoto_80.png deleted file mode 100644 index 2f6e938f4b97e5b6539c2ea3273ee5487115a288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5259 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 diff --git a/src/assets/images/img_nophoto_36.png b/src/assets/images/img_nophoto_36.png deleted file mode 100644 index f4feed19afa1bbe3d31296bb0acd52f67b423e1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1628 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 bF9+}+*e)T6t;=!000000NkvXXu0mjfqzH+< diff --git a/src/assets/images/img_nophoto_88.png b/src/assets/images/img_nophoto_88.png deleted file mode 100644 index 73205f6b232db73b5e87599a8c125d50c8de0278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4573 zcmV<35hCu1P)3 z2Xs``y8bdLv;7}w z8cPDz07?H9zz+b90JsRi?2$=&fZ(bC`T^)G|LqRk2CxOdm-63kgS!a!0nih`NC3^` z>h%P;ilYIn2CxHwLF+MSO|Tz;0RSesakVN1SMmY?o26XW1Ue1d9V{oYE+3K$Ii_`T zjDxk}LW>pL2*6qZ4b*N}W1I&t9KcyMyHWG5`N~Hw`rnXT$T4&53*}r?fm$n=I_pjV ze^YB<9tKx&4*+*u9fle!xU+n`{;!Y=Ddx`0xw!;a2&Sqv3&2+Z0@ayUz5?g8PtMV4 zwbEG;L9=!Pfd2m$RJo2QscATDemk>*soU=Ue?%_iTzAX4I|N5pFjwv_0A011MM_Ev z&YnGsn>TOb_U+qv^ym?il9G^`nhKN2B(5n~upj~g0#LGKNmQ?19k0InDw;HDf+9tV zXfdSR_)2bmidV8D1bfLxrLP(z&56JM`U_D}QTXx49}yTBh5@o6Wd-^(yx4*@MG}597@@-^8dAc!)??NS;TrH_Fs75Y{7(IHlc>H(l*r5u!M3pL4uwlanG;iJ<MfO1oCz zB{{JxkL;~rMiEW}2vcihl$|8EUAuOeI&~^^I`w@l6dUvA&BMu)C$VPD8Wby5O!Yn_ zE(3TSKxSSS*qhyKHOb}8q&R5Xwk@Vjo2Ci51ZDW-$&*p3QY9=}v`CXaB*@JiTNl`x zVM74p)EWs_)siJkP@zHvL9QbknKR(ci;RrKrAwC(9UZM@S7W7VZ54SD%+J?Iy;l_+ zIdTLsF)?EE@%C1&S(_+TsuTtc7=TTiHi;Xo5xgZ=R=LcJ;K8=;ilcb;>>1XtUyqMJ z{urf8m)49>Yv|dtCmuX_fQuI|YS~Rg$=OS=MsOhjk!tqNjfO@;czC#)%_;)*VaoiY zM~`aVRixzZ1z00^1c0(?^?K^mDSZF^_xSYFPhHy7Zrr#bR61wy_S(_;I zNJEs797b8X$W8DlXZ!y3*IzMX#tiXqY6+astXZ>!{Bsp_>hKZgli)1qdAoP-o|fcV zFe)d(IYmU6D`B6;jT>Xkm@(O|L^@rl=(`Gf&ZbYFj(6U92i2-obGkKdvV6kafWPH5 z&Tq}ZsSW1win zZ#tboZbCMf7J_M3xuiqU^++eqwQJV|ng0I%LN4>sq~w zy8^0f-00kd?iS~mMFxk-R8gnFNCY2c$j6bY5j|QYSSfg8Xx47rxKV6K!-fq*|Ni|| z@mcT&QQWu*6#>-a-fSVbgRA{g2G5^AADcIC7Ms%f^XG*&QMqzulr39Uc(js}lZA(i zgiV|{QT&c8pCVd|;{hMu^J`BZ7`2a#Y}?nR5c@;mC|YPC$4 zBnkfg_uuj7pMT>1{rf_FBPv#`h}U0#T}+bxTI$LqxqkinXw#;RaAQ&|s0~Ivh7KKy zI(6y@k6uVfi0Xah0!_zuB$&>ML=}^tUjSDQH#C-jeEIT1%cxzuHtN=` zE56ejjNQ?qWI%Q4(xpO_X$U5P2a({~0AjT2XYu02h>MHEx^?Ta1DBozZ}ix)V}-a{ zwrrW!BMH^XG=5EBFc^evrJ9x>$c6M1(-}{ZLGh(A!gNaFO3s4ec&bLBp`lt"{L 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 Hu0mjf{!zw5 diff --git a/src/assets/images/login/bg_login01.png b/src/assets/images/login/bg_login01.png deleted file mode 100644 index 6f1db65625e141751c917e3b0745281510f09161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1805262 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
      SB0;7uHXd4ZoY( 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

      ib* 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 literal 0 HcmV?d00001 diff --git a/src/assets/fonts/materialicons/materialiconstwotone-v20.woff2 b/src/assets/fonts/materialicons/materialiconstwotone-v20.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4c6952b920524a9a586a562cc77c17a24093a8fc GIT binary patch literal 130116 zcmV)MK)AnmPew9NR8&s@0sKS&3;+NC1^oB`0sHg-0RR9100000000000000000000 z0000Dl$uf^-A*GS9D=QG24Dc4Y5_I^Bm=M-1O^3y2nQfr8~n8k$|AOUq5ycMDuU%9 zNljGcm*aH~spK{%g@OQn{)h{Tj&%U$s=71xNtF10^Muyfc+L!Jr_>r7ywj&B`~Uy{ z|NsC0|NsB*D*5r$rZe;5&7YaSEGr8lc%a}JVkJtoHiymR^vYxviKL|OCK>DM2go(7L%BMXuYsbrtQc5XDbQuvbueq5BScje^ zwO#ry;eFS9_+!G}CxER55F`*J5F`+i?`XZeVml$Vg!dvK0wN#+(u_mUgnjT`0{!{d zgg%lPg&xqJn&hfnGv!j6eW$(&Y1- z&nIU>rhguoe`!A~oq6%{)!Dp$N0~2Hw(f+{X(RNg))p)uP^RIh)>)7Z&DaXMg0gQy zK1|Mp?}rRXG=j0LnUEQHD80T))U=YYjm`lbZ0WWZ{KbZ(8BPuLGa*wR!RWD20C_qe zC1%;kdo>6~N*PQuDUJK#1S7L-ER-vKs|1zn4xP@WYc?=$Ooc=8eeogf`!Ss@c_yc) zTxlk$bjQ&7X8q$|rR$0BVmKuw6MGN=u|dZQRdmCjmCZLxVcm5Vy8%^H4UX<_GXE)# ze#$?^m-`+2(Ms{(7905~dHN1yh^SI2oYFFcogSIj+&l; zFa~RuN{eYNHcJsItEiBd@^IbI;j4F}$z(QDinb94tq6!$!}OeX#@n;@o`$a46hB;Gn?s-|xq7?R)Om^S()P#7d@lqS7_d=tL6J z8B!!vLe)qIu;&lTykx%IE}d7PfL0JG|0K76TS;$=DZqd^O!TV61d1VS!~D1XFDkew zq7=cC-(Z6k089sCw`Kn~rzJaalGZ8X02UAj_%SaLUXOd)>yRu9>e|vb!o)3d5^h$r zF!9X1@<6VJeaq+S06(<}o3geKtmf&9r$Ic@_C*9%M!216mS zd)7V6;9BIS$RJ4K0rKtvly$CC+b3!!|1OrqsUW_N3dX*G!erXpi~6gB9I>~&lK z2R78zMCxVE|2wt+|Jup^_{qAF_F8+N^BCqb9N+;gaGI2oI5A4LY+1Ht5nHwl9NXb$ znzl2YY3INtK;O08shaxVsqHyjrfSqv)%}6tkprfH46+P@5e;dOgpo-GPMjDpM4JZy z=S4W}DZAwcC?GIMG&y-W5`SqeiU{r6hu28%q!cZ2x%Th7e@S*X8^F6)K-;M!Fal*O zETXPZghF+`E-M0be6&U@)nsp0&qN;akcolV36aV$o!)P*nbd#=YK}zeNKz5ob8X1Y zs_2WrnjR4whr}T=Vj(K`;?)n%Sv&G?oP8S_Q2{um6ljY&Rn^on1ZBq*@_^xex8uI3 zPf$`+@DI;8zV6I_BPBWuiKW2}3UM6g5E<}RXE<%!y7Ri#myEBt{i-}E+k02k-$Y^E zMje7J14&R+!J&BT!1n)ty8ZvS&&kKnzAH}Fnz^;0_a$NrsF61G3$Zk?G>DzjAC@+D ziU?h?B$Q?%1Tck!77`#pK%caG#d=F0*P6F*Oy;eDp4D{7K<4Jomzvn8Ccv<9u4ey# zPn?R84M(O%2y4`+%{phC>FXZvnxaM9VqV)xu0n|7Dlpo{({Exj2u9DDx~v(-F{4Yx z4e<@P(|vJAh;IntPSS@d%1v7p?TJV@Ldcp8Vb*eQ>P7hwtjR*XW)TgR4H01|_;81F z&7g)Pcmt1DVFDI1kgKMe&9MTL1K;c*7-Pf2g$Qi!`DBNusNkhUUEvcE6kTP&H38ti zFPj(-sB?kI7{jzNLpIleH5g@Q)Km-ZOUE8pPLh7{g%apMc zLLIbuM?@pNDV;?{+Up>>Dob6Z4x%T_DEknjBV3>vUfYsdjcOo~J@yPQKLAFUQxYNt z?IH-mB(1rH{O4w4>wKo6% zJGK9>E&1a|YsJ!9=UjRS>E*&ur{hwv2L-W-!dr4J^^RrUXTCG%*;$GNs>vD2!3-f z=kKW?7Bw_1Lp%`U@OOI?5*2rAP^e2*qSF?NlG1L8`s8)7{s{a3eJit{j0k`E@71z8 z%Rn+v#)7B^Fa}6%pojtLEmL>Zv=PgQnrdmNwv0L(Vd#ODW;hm5k~z}ImAB5hJye_j z{$GJxZ`4KeL?enMVPS2Qv0aA{ET&JiYBGoE<`Sl!i;$4qwZ@|q!lUQ@W zHpMu>?y+pAnv^C^X*s2tnK35t|Nq}A{r`!x_x+?dW7H*emVsJkWg4hupfr$LHb)w$ zRidXZGenzMkk!Ui2`Iuq-3AH)mVhE{R_m&z_io2JW9<5g)Y;pzidT~RTUl7LWZA}O z)&&>2&}Jx2m}(Ek5U{C+SxQI{q-ztK6q^#tq%=qfxv;vBN*W=%)XR}l_eg2v3PhXq z3y2@z$3D+DXaD(re#4XYy|QAN6@wL3FVn7hT-U0nU7z!C-+TXmzW)J%{{tL8APW4T zC<>%x=#!FZP*Mnh1TE55iKOMoWTGgRGfds(q^5!TASDWvWE!LfQ?i|qw9{of)s_v0A^!-I2XaS&VWRji8KpXiilx?ALmAb=1L@V7>Cd$?L?RyY424@pEk=`hIle|$=bRm|T znj)6zyLNW`MIiL7O8D%88aIKojN7 zxu_&tKy(w}-$kontQ*>Ky)h+e#H_{PYzz2W< z1{fZOIex$^5CrnS_tnajZ(WnSGW~abHYSpBK{hs$>uyaX`6MInyBDV)-hUr>`~y*J z5abMi25N>q-LmGt_t8}#x~GcZIuhNx1$Sp|PPeu`(Aba-ot?v9e9F2||U* zmO@1e!pOM$HHAJyji}MdprVL?K=Sr*-hL{-RIPH_HBWmEp*aBXltS45Wv=fJmKi^& zyZf;~*XfoHJ%I%7O?j_F-|}(JJXo7c9YQ!h%W{MiwS|aVpBx9v6mf3R~i88G(WE$YwVtk*SWv-|U_=FWmu)k%v+)0qIQRd*=oRiat{D%;Izu;fQc2R2RhFJ`vcMZX|G@ei8q_|PvY+`&A+n$TGdK0 zkHLe=RMqs@{Vyf0jkdqiujhX<|AX6dAz;KMK8Y4vJV|AgPf67@*U?~;tgzWZXI*u} zZO^>-!+$9gaV*Do;-_>*=W;$5d%0J2E!T5{H+$=MDvZR6Yp9Q@ezM;gmp$;<8y|zI zSHq)^HQuCBNjKxHa?P*6V#_YS>Kf{5yoL6<6x~2H(lL#9GW+aa+qKPcJXWe^0zO% z(V%yYW5; zH=NsL%II1Lkf(8iim|0neoJJ!_8j_Z*`CU!PepC1v*<2^O?0>SeCD-x?k0{s_3ZQS z?clX8yVadt{?wD{IM2Ha71lOXDn7efKZ@&So44IT>4f=kv2dU7dCJ@sJG;ImCd^#8 z$3?4;EZb_kOOKy4`(SgWTFpB4snKp=Z{x6Go_Hd0J2kpnY#22Z|ZDMINo;+-0V6waJG z5-J8ZIU`cF1(ZqasEh8J{uNhAEzR|*qNq|CU8E>f1Hf?Llkwt{1ZC>92nhK>lNKW! zJKm@`Z#HLywo5$c!x)ym8D0K!pdG#E>79>7v>2M#iJU<*KW3oz;8g>$apuRjE$p zC6rs8>NRPv8y(82rl?P)nv3WvQMM8ZFac4sm`;IIq0-toczE=tr~&KAC^_s#VsXT% zajR`;ZteKw57+abBTl(&-=QD;ZRWPE*XHawbr}%KDUbZ*H=hB?rIdPj{7g~_%Ovx> zBBn?kXYz_AYHVVRGa|@?p@#vgNFZUbgn$?;D<+P(;|CGT8oXXuKcfD zHL8;Cdg)gQWkjX5P^3g%O_U4kq^BgA3Pd%?GPHH^$@8age)`|o)NRlG>8d;Cw$6R@ z%bHyWF3jwtAvs@pAv5b=@|h9?7}fv_z%tYF%kTVb=*v(dq-R8Fjja68yxYy z-vvP)VZ{Yj&4jJpMRg*ym8gnbo?3Zt-icXY>U3$R zmr>R^%Y6=W8b~n@;iPnPpL)`)@{XAxO>Cla$&ww<6w8Aj7Wv8n>lD0Fq{&uFqpV#& zRaDo95?P(4D%Rk}Cof(tZ+`pAMc?_=Eq}Oe?_V8xp6&TheSYSbiDpTil*uF4c}y#x ziDPrjJ9>gN`DxkErI%j2_tA^G=3DM_rKy9y_p7zy4r_a^QnPVsN6~-;X5@{iFl5h@ z2*d!x2@xHe3}&OWcFVh`Z5M95`(?$ZBdr@Bnuccm)Hif#ZI2bIw(hI9YPB2Z`ZcYx z?Y`YmO^-eI*6+R>X}+cUHJ$gnl_t%qyXm>F>W%th+E&(V+LFr_Y zSx!;1m2sZMb6se(!>;?li+XMPyEX6cQa9(ZZVskakW%i39gR^IAZd$ADOa;(>Q1RMZ9e1Hxdpb8VXfP}5+ z;&<%f4XfBfjVDZ^h!$zOl1eG9RG~51+R_W@ zG;qo5?D5Qb9`Kb1e9muda{KHD#f0!h2N(RKhYc(+4m~GsJlW)iFMcth<&_Q_L4(jP zs-}g01f}(xY!&)gp8fF0B~Sfu#i`d;T*P27Xqco$Lyvl0^_SL8xuP?Ivv+@< zeD>GSQy*Nq76{a!3-;g_Lv!@(0? zF~l8w!#$ki16&azGLe-4!iXjtLWw440_5%N1{6%-!U6_&@DF|1fddQnXkv{M6x`tl z)^UV8)UYH;kqFsT(SVX(sY#kHyS_U6xqo@p z`=0yL9j{{~Z19L;4v0fM#BVerjdds?l>)ypj}kiAViD`O!wzooh6+YF`SZlr{?dCN z{oFVG#dALJjHDuA@~Ed9x}`*OA`R$BFS4lynr)hdbaPJ0i~LTIJdbH*SElANtF1*H z>$@5?s#OW)R@tU^JMUR<`m%q!*^@rB-IK*YD_W&<`k*-~>4j$WL<6?#m9^QP{j(Yi z7-c(_@qgUB%QyU;7rEwpPPyT~aEI3dh7%Tj5%DQse`$hEwQB8hBD`lhC4I%`f{&)U<2zNn;yeVa98y3JOziQQ~!5B6b-HD36J zhrWBo-8WwMjX(OI2mS<}m@~Yv`QR@jce%-$uk7(6Mkr6Yl#29)N+w=@l}J8{THjjI zs2@7erAj(lG~0b=U~lEBW+WO42a`mUdB*wrnJjRoRtuxg@vbwTw$a zx(Wpf^x1MTTc*L0|7w9}Wms7(`%WIQvQtZACLSu$JZ)})OZ0E$RK z9m=9E+M`tj=nmzPjtP(0z$u4fOw=KQIaPf3CILdWSwl1 zOY#gi8irvC&%(bjFZ>mng{*MGVY@>I*WeXoP!E>DJBR`nWPuAVt=ZD{LllnTE&PT3 z@EN{`wNQk=5{u;fnD7k_H0U4qhAVtV0aKia zXdsOW3R0D(^rSKE>6YF|Cdz;8S#ZP?mw3(}p7S05a=^1#nZ=Mw;?k9^)MYN0@+zuS z3VNWM=2Ud86vilLiY z=%wCiOLyAQv(D(Y!p(1k2@9;VYaRIm9E1@& z;#On@mQHR-OBOONt5VCObaKcy1(jEt8dXt^)T#n?sUoVXu$J0up;LY6hMwwq-Smk* z(kadBgE1oPutCC!DlP(J6wNrqKlbAWiWU?ZE+8Tn0J=Efjcr^IY9d-3n5S|@vdbgC z{7YmyvrCpqE}6~O93^v__dLkk2N;l`4LZ2N2=3qqQg8+uNWlgptZ>2~uHgqF$l(#{ zkfI+XRM3VFl%W-RqB82EBZ|?6Xuvt{@fB}4j?1`*%QJWTYW;NSjgZ&s|YnHG%)7cn@c*OrWjB&h- zx!8}pqhkYR%Ty+9`etv8xiVE-Zx3u|^ER}LcE`S2&OsNP;ZEndgqaKgCgfDUWg?BdN>7f8LIrA5Sv6D_)ljKgs+Y3WpqH+8bf?3*sQY@a zBi+$6ebuHe&6tBBCN&>S!3@pKAS2Dy_-3-0t+li5*|q(!X-jS2ZY;86yS6WD+R`19ocblguy6G!w|+{#*AbFbIgPpo^e@NU_*9eGpxf7*%{Wc2kaA@XVDmd z1pzZ~2ME+aA8Y^u5?p};7&H*LfNwAjJvf0C*o6+Bp$-f9sX{_sv_f|jM^&WI0VPPF zEt1h%A;mxV;wgS&h^x4XL;Q^yp5iqYaERAUCUr6=FG2_-hO9`1bci8GqLP46GH!lv z#oqqxYx}`|xj*gk`}NCRZnwt`&(96dgsDz0+VR@)E)=o4IQ_T@P^H-nze$&XLdY_c z@8xsoe3G2TnZY{@G-hCueQp8Zxz8T6)8Cr!lAV2kVrxpnI@&e{zDT(<5RearBTn@V zo{ru?Wr%{hdlza3HA2X!2!E#%!Ez2M^PJ8ckw0_|_6W!bCdd>d6Q6TL8j_(YaGnW} z$05NVdx!=HV;#5Vfq_WWDp=VP(5S^$2Ao6mDLGi*{=hM)`LmT%Tm!=@7-*k9tz4j3 z1sJ>96{osdOw@Wi#U*;&wJT#o$Ol2}CXlf{n4oj#3se6SY+LS?=R6Awq*VEi=3F~2 zOzcU8^d*9t-$)C+N+&D7&4w{(g)EjE= zX$A}ysT40w)|ng|dN*sdovs9{Mw)R;=?Vhg@aX&iEPa(LW$OdtZB60f{q{9(UNWpE z0hOcTt;G9zyLh`6tm^>7HVA4PB;3Mq@?(uv3O5SY49#yPzougcStin6f@II2+?b2t z)F_kx!rZLkR8U{PUHgHT+2&$uql+2G9I)eG`{pYg#dL|s&At1)`@Z|R`}gh-w~bD- zPaH}2EF?jA!W%yD7k;b(|F+%NFU^x~D$WBcChS!bD`^(vNC;r{G$sB-gY3K16V*17 zFM8ktH#z|Qg~uFim5Mpoc;kSFCYZr|7(S}uf%GDEZaVi?r3bq%t8>lSDV^l!0|Rn- z0_V@(TlO4Ot1CtqIi89Qals|0|X<+}tbv$Kw1F;c! zD1;;M#Q8zgn>TUyFZ%fW`u_Pxs)UTw{sU;lt3O@!90?U6;D?|whE4nyT^(SLl=y>X zTUdegP$oKG1t<-oIk<57m;94yj*2By2YEdKPeMG&nADA(HBDxqMg?LcLcnoMh?HtC zkm4G^4~@@xmNB3?*kM?>SA>-?o)Ibx5DLQyXbhGDg4}3{V%M%AI}Q5gWx)HuZn79dFSAZSUoy}I z@S|Vhlq}c10w*&8YSTx7AQDPu27<<=NtCpJJHeii2EuD7J%V?*0DTxve#t+N2FFe& zo!@@}NS?ushp0XC*;kGu@Cd};#BK&L2`@AO&&9+?%n|WdxCEnq7-2=tLV|!GE?88G zhGaNRhBfV(Mlm*|rnT_#%Lf2TPZ^@5*}3Lyk{H!Ys3t&?TIABJmnhXxRG}Q=D;Ug7 zQhQYZ1A~9DoS|hlDhP;bA!NUqervzZZGGcuq5AzrH=9RbM~*s?Y9ITAeh%yk$BOiQ$!*2uUu0of|@ z*Xh(@{}T5Pew?!>9;0u)@%q*uyuX#C12;wk7_(w%L54DRj-&Vy7rrR2R-oP>AluVK zwn5MUJ*$Aim2`B(w-Irv%!2j%@|k)P&K3o>xHm{5vS3eq6~IeriyHYrd+0 z&ggM!_JJ&2x$4 zwF)C5S{F8K3ZSF(vR>=8PAKLhu#@`pD=kgO1Wy)#G_$Xt(nR?cxrsTdftey0&3H`N zU_ar1KRRX1D(`U~;t_`VTGLSPmaGcy`7e@fJGKhRqFBfUfaqt8H$tJ0@83Qp}P)gea zSho2|ybMtG3h6pyv2CGT{cOQKboT+gu3reNv4CI>a5KQciCA=?O;K`1!m3|D-U660 zr~rVIbF-O#N}`~`6!$Pgd-K{2f{YL@;As?qi6ch*Z^j8H{(C)gmcY-`F)iV$Ct!&g zMO~u7w}*5BujBP~a@R06Q7+GDxHnVSm3jg3kL}`zCBu8q9 zo-DELHuwz$UHfBi_qG6Xl>ED_*1&MPYHibmYK&&{vQ+cg9hYLY{6 zdE(V2?l<@DbNL=^TsfSLCJcf*C)M*BrIj~0Q`SinTe+Gy`0uA z6~PIZx^f^R0m9(;YW#RhNX83SrH|BLgo}0}lCNjlUGfydHU3?JVgJ&$ zgCbXk)-~{a73;Y)vdmX2&03-*=AeHfsSuo*L8&ugC)yu*rdyE9o#X zkW=bQk;-o4YDg5%)Bvg{3{kd}nkrEo(OLT;OtyqnnL_Rxv$^p${C1$3V3&CU0)As# zsQHdS>&RVRe#0sWfv+ir9_5wH-I;9Urkd zD06INQ<8e}DFdhx)xIQ0$OGnp|w~e7^O%^}hAN8FKb@KNUxQ zvPQH!Aq;9cV6;AA=iNVOG|VpztHgc^a7)RVY(n=}f3EzoJ!bpbUbn!w2>ScCA32pT zGx2%maJt5^MJfv#QIg$+NF{9MDmc6`D|UNywbT#S${Q z3aRl#kzFJR)sIL1cE4S0m9a14Qphl8qWMv`(pjRn5rlMX zBL>UTaNBqldC79J1&_|Y%HM1u+r(SgmjKpk7IMb!k>zW5An|+FbNm)uAmc1ZqLXw1zdx5B>igD*)qyEDBnn@%#)pNJyx&;i*=;O?M z{S?V!kGUEo2(5YztdCuF|76Ig60cSwl5BO`{XMB5JF-7o_3rv}kc6v!a6f253fuYv z9-&ORMOn9FC;7->qhvQ0`R8Yw=m)n;detG3KFFd>iEI=|zrO@u90@8s-WNToF@*TK zAUKpNCr_HUfQ#IrB+>pp>QkiE_s&@!->W~e!HFujavIX;Hr!b_S)S7pq=Q|5wSRGZ z(-&wMDd^6U+_%XM>=7`6g%PvUTRC-Z%2M(Su%zdJ^=}HReGY_9?O9Wz@meA&HZG3y z2JYb~0Q`?nT_L2M#`Vop#N=Eb=yvN0I4eF-%1gbvERhvEe+1#&pnig9!$oG^DA0fg ztnEXavbq3<;xc61HpI z!_AQDDOgY$>joedJ*OF3t~+FyYNJKw$OP>RGk(s;z1!SJu-9~df%PvW`76UnImBDy z`4usy@L8&_a3ZxNBI=2JzQJyb{M!Ack%DR@(cP0LBNiqsJSH~I5fEj5KP5972N8pl z=ybJkYtu$*P5p(ZnxRueIwGJXWS}QkP;#%WVoCGxqxdgl@%n1xrl_DNlKzNtj6MVa2YB(q|ic39F0}Z zKpzS6=;{B7?qsh}AOOokr63h34F;;!NK)Ow?r1L5x}wKhO5%ZJyOp_X1;C^%NJnQ?maDn?OP>hy)2pGk2 zzwBB~i8Ypp6WXYXX^a9I-5O#%=OuxZ+1eIktGvu>2HiSjy-D{96!i=Nh$Gl(Z1l`9 zY(ib#*3a>CgA$)-i1FM&K8QW?Kdet_f-)GwJCVO}fVEkVA=qiK-2!61HJsH|^5*?-|rV}KSJu_6&h!%!2zkiz8PYI_j)*{qI z;`OU$ym_$+%7L!lp*Oda$w_IKXHl+ox^iNJ!Ie&Nu_2Hd$^auf%MwL;q zjYSsI56TqSU>QXD@-R^Go8Q>DD|%qn*?EEabk?m2e!g<9{A6aJIwUES;*|toa)lfF zDQ3F?@A$wcy=KzdO%s9kM_1@+S|@Y7)jhc~KF0(HY_U zEQe%EURDnMTbfUPHedYmhdk}tN;s+d0;d^j&RFNu$(p>VI*e+)!1ofqLKHna!Cmju zR~~xObZ6`o-P|}|oBe-+9<)EVE@QA)4=MN?)i0aUpnKEth3g9n&ZNkTO2cTey-t_L znGIsOhG-K>30L1*K3X3d12T<0BR z-DS4W%V!TgZ|&ByHACiWcDhr*P1(F?jV5GB^}BvCR|%i^jcJU0#3)gh@{V#aL&|j^ zLDYCm#l&2Su`*yAL_rVA+xTRI`8hUu!FW&=&DVu z>a3Bj`$1JZjdcq%QXgo?iI0dhs?PKK;jIqgnnK^5FV|Z@Hdu7aU4C9ws0rNvjrAtz zA3Qs0G?0t^Bd&^#=;`#1u>~xaaBfO`0liOdlsbSb;3>}9mWzYat4AA^1%}bEp=FBK z^{4dm^#gq5fm3*=%d#u`JMauWmj^bLOx!;jlP@#dz@gU~MZPM)84cBCyuyaf;J0M@ zLs8*Q&{9ZKoEI9Vd2g=qPh6ddJ;FHulq#W$xeLgnFD10<99!&Q66&(G^cAiL{|Z z&0=NAoh4l$AtLGQ!AKAaCzYJjLYRio-sj5#&~w9S?MxmyjyNFW3}QnED%xkHn%l#` zh2??pZhBqhqA%E%SxKA)D}&Z$q_)QS(?2L+6irrGPS6rfkBUP%$~s6HkRnbGHZ8wu z#l4p5P#gdfBsm7a&7mXpoqT@we@We7g{2%zdng9%Z%D(c^z71TIc+SQ0jY9!xixHs z*oFqW+R02e_JE|f!8g(T$2E@8vGX+nEd?oC>OD1J)5BxXfcV-reWhGfXf1u^oS+I7 zU1?`_2C&<(QY2t;jYWh-tQ8l*8&jSh+3LOgIG!Bdx*s_E;RQMfdQqXpmFbl#cZc7* zLt~9{dXlpywd<(0F?W>8s(+7K-pPWUK4#-{+zy^)B^Kh*tYzZ0PU$ z_ig-P8{Y~_hrt|3bDnoCRxHqdp0@j}uI0uT^6OWM@Z#;&A(*?ClH1SkJl_UR`^~zu3P+8#8g*I@)+z@l=k?-+^uI^ z8pJ}1NN_MlZItfdkdm~!Iymi>lW(#$DKZ`J3odO)h_Kz1uka(>1{hKWR{4!w7Mtbo>N2bz;H9S?)HdO7q{g#2!KRK>3a91)dxp zU`;>a+aVfCg&1hiphb%g9eVT_Fkr+uAKL|-bG4i$l^E(^(95JoG-G<5v>DSmXejnJ zqM(@938YhO8rBH%I_`7Og-3viaXP}fel z*N7E`jJHij7GGt9i4=BT^5%h?%YZOV3N&q>HmqY(d6?2fL z96~l^{yM#{xJho6Xx0EQt;|;D=_l*sPv64_%QP!M4|*@6bZSmniFKPTkK+-W%Gfwt zb}rf{9JuUmiV!D-n2KTY%yGwJ<@kWF35yh&zvLIGU;<4!;}m9JGf29H8OlJY&SGUl zZ@uw9O$sY)50o;yy7mmk%)XFL=X(4lUD`u3pAN=#;O_PPadwYbej{X#uF?$yXHFmZ`NAD60@ z;HMmD=tFhDOStP7_~P|FFni=}Sam=*>8EFB2-@*q9anMs>=_5Gga4jCJn)B|(q}Hx zyuFRhl!_^y)P7kY{25$E!w2)a<-W-ayw`qa6fN?auUO}=RX3iX)3$WdPtcr#_VKQE zyTJOzthYc2M?zOaDbQb(N(92wv3>izU0}W6@6s$ZgL!C2w?NBVJE{TpQ2)ynrkkIl z0|hah6`ezI9()&P49yXbMG-5T`MQ)sJD7}ibnOJQQ7jd+M8}9qWAl3yU9?XyA?=+Zo?I!Ns|5pC0K!&A6x-{J8o5*5w(;W-7iOwcZXi(lxy_8Uym zD%h&uXto&$g+zL%{syhoPDQliCmAlY@ezEsa?I9fv|61`uQwQsMw7{076Ev<+S3d% zkN5PNZBk(G&`x;5iWP;dW2~tdBzUq;bM5rNKaomF9^7V)qecujT8B_fdeE8_rcV@u zYb-DeQ`W9#_bu1Q-YXIeu_LQ-pms^N&M?U>L^>3ZvshEXQ2h{ER=X(0jU_desA_xD;D2zbPjew?bt{kbrAyhN%y3T5hjj#t-Um#2yI8 z_f+hKcE08qzuFk-y6&0^EPq#Qt}kHo3U%#U{CMrjlGa1}bi5((>~*)7j^94##q$|g zU(q7}s>EM`QQ-V*i$eQ@=SY%OHjn>(mbTu@TPG=q`UZC)3{iNo{tnu(Z7cKPaQwa* zAJ*f`ISF{oI4k#nUc6F1LpQcPN{|QqZqCxy8|oJqPSg8miabF_wyP+lNBp&fqO|iC zQjKQ_%R)tNZp*n4Y#z*ZRXexjT}5FUna%bU75GL+?ZqXOXM4Ju@bII}swMb|$8MYr z;_(S$FSK=!c0Cm#y`|08bAFi5Q7MTx9<|M_(0)IUIk4Ew;Z1ZDY4>vm*5WI;*X~p8 zOq^%wu2|U&|8aY& zA%+K=Y1T-1l#5u|+}z8JLkXeW21RBcJ_6Me%_~x2Th|eTg8@EzMk*rC=w_GZB&yq0 zP4V&AZPo(y$Sv9!H#WO*TN;Dh?$nfLxbAkPG#>8@`Tm~ZyYF+6iA+D%?54P0@uI~D zY;#v01B1bDRnKR*@vf)gp>|LCUaf z`Fx>3QQ|Ac$U%JwhwK?1#_q-zfTJLxH^k>_>)Vy+d%Ze*J?zR8+8t;IO$tp*C6iuX zlX_0)FIKGDcKi71T480RYDO}9`Vt`x`6bB^LIg6$1gr--YGIp8D9%wM$`R>U2~Rv- z<^RF*HJAjDx$``PM->ozBYg^l$f?LR3L$bU3jcWSp2PpUfQXz${LHZr&P08j+Y>HH zEs}dM^p z@E)GKAi#w1ims+~(~H|J@fB$n>74KSEV&|OhA{HGX^c|o#Xe*FQ3j@V*8S~y+szeg znWj}tDJY{!M03!T(FVlsLNn$Kb1Vlpt|U)L)yQlKS;Hx7(b@_KlBc~$IXy?d^*x>{DfEY@lxTDVqUsszoL|)hGvFc9xJA{2)AP6#kun`8;f9-a&oYeo?&%Q~9;xP-F4 z;`$V`YQ3mK)4Q^-xL#2#OK12Btt`8WXH7pPAKNX;T9y%xRD7`joVbXumT;s#T3(cC z7~I^=aUMiIhYJip=zhuSsVj8BEG-zW3WsGyC#dUkV)}IoukM%?6?sCI%%T}GDp@A0 zr(h~+rWtz-y$t3_Jmxme< zBtD!~wZw47mlazA*8ED1NSY<}K$qN;y+Ao|EyZmW9l>Pxbg#%?xIJg3;)Fe7IeLZW z1=?IMz6Ih69GXoiW7h`J*r!?90V7>)DjZr|k*^3KTHsvb0k7ZV^{hGy%6df&#*ipGh?F={R$Jm8r zo3}%I&Cp zr8?)4lw+0hyf4G8eJ_>yPs#6{8ID?>vU=)_)~AJuXp7XR#XX%B!%V%f zRcoYGFIAI0=3(ZJkK7PeHACnWimMj1#CM!GQAPkYK+3-Y$k=Px=6V!dwT4phaw7q* zE56F>M6a9oT~;$zDb(eHj=ko^=l-fQ60=T*NsSUH6?sCT)}k36)M}*#4sou`Z6>OQ zt=T!2!-1&!g5aC}tqaz3*XZQ7MWBtpd|&mZ>+LSrCFTmUe@iyeEoCSf`<%45M&#qTLwjaIgon1;2$HIp9nh)9&Vavod z^2YWZP5!htvZr9GiQJr+u8StSXgQnJ)A0yn3N!u4&7ZZon$nqQtl!&#HdLHtw8Rw} z&$SSYsqdFA?8>GPw7f(#T_;-pNE|W%{GGB%Q?Ki{WY5*7^Um(z-~ABL5Dn2L+C8tE?E^ASs_d3^OfJ8Hn+L5PWp~G( za{SlPYih4i8D7^h9MbXfN-XC+9sCjyUzFr^HH{0kdATidMvLCEhTu}2KDZryM!;TX ziNB(5Z$9V$)CGQcd(^r&XOwi_Zd`SB{3vX>UfG_q=!C9|?Z?8F>#ja%CorkqFMmeh z#s2s=J<;)rvl7GUPqOLSpmjyXhA?5J$7DII^W#3Ct!|%F}EEc zU6D67BOu49(D@U-B3E2Wn7KsX+V{1dSkhCk*g!$P^*yJl z4HoEYMxSjMSYDB5HfbQM#16xy>{~+C^h88-E)m_atpkUM9o+IkSm0#yCAhhx z%lmRJF|X>WDVcf9J}`{iPp}{(?2|4O0XUmf&=cyTZ3GKS0#@wh5=zl#LI<#IHenI| z5%~mZP02j&mI_8P@2DjhY;|ER#qw;0VGW^UqYTM0l0N>pCI~!#b{a_|WR`(U+ih5c z$5tHXg5w7w4)^$#zi-_^A^_xjeJz~;+-4tYB>Q^Q8N9cDL$?k?n-EThPWhd|wfF;F zy`!sm7vsHCT(?GW|IPg056REWHka5Nh|ml4AF@QWk^Z=~2pJjUC;6XA_{YX0_7O0X z{0i=f3x~}|ET*WRWp#|C+tHvSlrfw?W{%;MgX1a!@BQ}mA{fd1Jh#N$I)#M|V{&U1 zJ+{`yD=Zly)}}0+8p6buEqZLF4P7`Ulwq?M`j)`Q4>&=Rd2wi?q-hyLAF6cH zHaj$>*LeHd_JFYiVWea09+DX{mQ>_hHd7*lP%2t1v7jZsV>2Z(1d?&-OJ}0-{UO*rS3Goy3crf~;)8#XmnO zDpLOTR4PU~ZoY!a+vXvJ+eI=zYtV*m#ax`9i)$G$w8;*%bTU3HOO1)0QBRwQ7HBn(k>~}-Q zPmY5aS*rB5PR}c*DF%ieVk}_dtpBA-Tg<}T>u2E>+ZL;k?0&yeDwpk<)b`kAYvI7= zRW2t?tx=oZbCDCIBUOXRZn^2H3G%r;9s;2~@X9LMJHF=E!cv>%SJ&`@3wZCFK0@^( zUf;9 zj`~A+ao%^Be}OENY6!w6sbVjJ zgTpWPKGZsjyEow_5lj_F5^(7*>V50cuN#gb=Fm|rTc>e_{fXD=X96)!P6|4IpKH9k zL~7n8CSjJH99U-xQRAsX477y!AlGmjW2#rc3NpACo|&A5A*_jPezpIf=LC#)6asl4&Zkgck+nw8qc8ovT% z{_|wCBzN;kQ+?NUf`yhaWH!_wpsw3SY583=nf0rg(fb}-jQiJW*-jf1yN26o1*+|5 z2l4*t>hIR=^Jk3)dR2Mq?zB(8*?v6oEEP08fWdQ52E%S+2{sUX*tE_OB96*h7{w$h zuKuxSg4J|5&PGXW`xC;FTl&JP&hIY2zUHg?jQYlMSHM<%SL7j~@4u<23aNb3qrX#T zl}<|u5M193mw-^S8ZFJy__j|ua)G|wMVdO7*cx7Dkk-Ey3E7vkdOyX3>ed3~gjkPk zcSE;|O(E}he#`24RDC<70>#(4o7~?$dhVJ#+h-Tp=wCMFogC zyZv{4Y9Ur_TP%&1uqL!x{T6PHk_AQmo{4nb_*3P2p}Qb1gqqCh-!@y&qv zlw#Tk3DhO_6(po*UpEms0}UaGWlJXE=G)*i7I~dKm#FFm4lN%lCdK1YF&SDf$!Tc| zZ77Ox3nVr_vI=etisdr7=Qyb;IOc$4e4A%`>w|X@P}K zW}B>93Yve#Cq4w5p{#D%39!-?X|gR22fzErX&HBkhDykFSgb;kzHNLjn zUVcXbN}`PN7eq@>h>5$JPKBQdX<9_58c_yG&A(yERg8jz#%9D{WF#S}t0PILU6hKG z78X{!40AcMFH|=uhe1<*OY&0fDd@HG*0K{tpTn)vsB(=8_+Z$Ws+rmz)U5iZZc>|u zd`+6ToVwHE-wW-}I!+zxzT6c(SACok4an*-1h>y9z!-;NH72A&cFlCfj9PF9=3=t; z&?4NDKyiPqxJ5Q+&CI)F8$9aLjdW?tLeF%!_5$_4BREJntT-k+5j;4l?YA>$t}YA= zD|V$S)(r>eM!IKvpb4(k6TK9#H=kc0H zrjj6fsseTGUhs7oZg=4{^lOhGl-fw-D|T8#MakD4%^5O=yTDj7*8PkVt}33gx&&rU zb-rh;G7*!Lu^y7tnoNGdqK1^0<)mU%_kmM%b7@puYDp){ID=4OGnsg_n#>ZcJ)5W2 z9MazBq4$ulT1^2V*ZK+>+9|3CUR=;!Nyh#w^(}+sUrxuTjf%I8RSHt$R%=y&U@1zq z8gbA=H4|m-vfHbH;>Ax#OTTK_D5z@UBPXZkKC#deTz{QfbM=@~dy49^_pDK^NswWk z&Dhu|^{z#SL#wSe{ccliw4Iyh-gabm((itkUH8jIdSrLtGfS^bBYjFc+aEYUTgM=T zlEi)vp;IV+n4W=Tqrpd{m{&GR%UH!8jctxIY}7>i7gZ}ge5I$Yq}y+r4S)A;7)5OzMlSWeS~k!PD4$`#b|7()27n?bhc=XjL?ipWgx}6XBXVSfpbr zx2Yve_H`^X2yJAAMao{R>i+?ywzcNGV;jrcbUOOJ1JYF9`L0BhdyI|mqm}j-zt#iA zb`P!8H1>~`I$Mbi9c8rlpPaJjkjIhjoTvy?*2F1~U`5TJarOP2fgEoc&0h$JsppcQ z$1Ab&uQ52t_dC>$y{tBFv8YQo-aVY2V_y)j+C_3Vi{j>3+8rs^{d=GFKu9K^$2Zy! zcltBrNsO!m-#wauK*TGBK$)bq3PHn{T?Yi6Nm1tzm`P<24B?6)n7GW_hF~%AY88Ub z%Bf8V4y(W>A-EJgYJ%Y55|UOQ1fPVYc=`Q<5a5Vy0758U5F#|n-ic@)F_e#zZjsQ5 zSL?VZMNfF+p5x$U-I*6ejKp`1RF;Fpwvd5TwimfR3SUJnqqM9am7BcIP?PIu6O9ln zJ?){D;M_NKappQkFRRH==NJG+qMF2LoHwRawSD!Hn}Nc{FvGBMl-GYOL`=oEiWN&u zTVD0Gfz7iF?DV8eb%i6LZkzU~b#ipZ6(hkadB*Q68X^&*3cZi&zqU4M$ zc1FQmnE6oNdXzyC%DhKP`pr?Mz)GKOIaG+r+UtR;SOe7T%A^kQT3onToIzoSsbG^flSH&wzxd1j}78H0N(OI3sd=QX6Ib94m8C zeuiWsyPHh+n7y>x5p!j>+InE&-2zL!`dQg249Qxw2{!n`n_$b&vjcV{9BN`u>5ZIP zy(21vgA5&wt#jn2Bd^b#&`4-89E!7;?nQ9P=8E2DZctvGaev<^4_$T|8|6vut(2?& zNM!jmW{3VJbBd@SE@s2e~ z;Grw43Gd(6A<>GLww5KS`_{f>Od6F+QD7>wdZ{2uzxLRNX=zXv`IF8@MrZ$I$S_da zj7(}~R{AeXow@i1WgBqlL5{ZX{g=xpA-Ft3(Tdua&$7)5ppZhzbSQ#mL~(C_lt^*b z)}c}_j$i0$)sn zz6ekj)r7C;T(-i4>%gm z&4&m<SThs@3mbPOok20VrEBg4ibc;)Y5$?I-%uBb<=7c-ABh~ZUGuEK^H4?o z^MZ)IM6*30Rbj2sPPfSHyF_l&4vH7zT1BZ^87e~bs=7t(Q!*MnQZj2o`^+nzVwysS zBh05R(c_S3uD=ruGTQxW52GA2`L$tshMfU7h4p%gfz&ICZ2O3roU!hfu}F$;6)UN{ zTD+pcDX>CpFsw5Bg58Q=e{n#lm5o!4yYa4YRdkBGtWiAa4dKN`O;>>7{^8T&WUwW# zjd}ahHGYqZ2%zH=Tn9l6%v>b2NC?s)VY&KS7B@f6l0v1|VL!s`~m zLZ^9wXsY`z2n!PjMLh|QlGU^jP66EtrKBz`gs>N^Y8FmUMo)(#I*bGt$;zu7Q36!u zR4ba0P+!Dg3usNOX(Qs8SsM>2UYl2=5@6!BcjrAFM^Q~le5Il@NtQK9rX{4e11aJh zeQsSUGi?=(_y9#mUx=PorO}A!LApxqGM-8AQl@*0vJ9${jZOM0JUPaioA~8r%1>eq zDqtn8q&bC|eN_~%X73b7DS64-Sl3FEYEmZ3y?f=&ns%EnSaD z4?Z(jqnE8CeMa5rSMj?W13q;c6ffTpLv4nQnlbLYnNJ2wsx^j3&u zqs^JX#Km8Nntu6$Pr*dXzS4Oucu#!W@f|`wXFt$z>1)MLUiOAV_~o#pe*2n)YHGuj zYhO+4)Mv(6dV6N6c~)T#KuDaLAZ6W{f6hp(#qKO{@aWDW4ry9GDDB9Sgq9vHcN*)$ z3ZqC3p{(k$6=ttTe{6-@-6w0d)(J=yVgrk$^g3MW` z>#J6O_x4m)!lQEt6ZO12k!LAWvn4@`|m1GsfDiTb$~)swtC?vNVzIg z?)1fNxE`zf4}2D)P^;};Le5(BtPfD3Qf+pwchM?(=swM}zIw>0-eaap&-&phzZO>Z z8ql@XfmpcJ)`bQk!>g-RG$<2(4h^HBz4f6d3!PVNt!OYRYWBMi!jPn)xB)cGmy~77 zk*`Rp3e`TU*Q8a4ZoLK!8}r3?zf766VA&rVw(U7^(3k!l+3EYj} ztA6Ao=+<^&3D&|;%q-rj`l`a+CIyg_(d0T%X?jkr$q8p!d zews^f^95XBi#w~n{@nbVFlX3ZV)2haCb*7C`>r1UI~UmNGE?R$lPL);P4j$gpu(&1 zIl=5}ox{*xn>Sx_E0Ex}n_`T-W}v#-4OkwmZs0-QH(CjN6zZi^Tv?Kfb7eEN3^nEX z8VyW%7e;x>HH7EAn)|FXf%{+M3$@tvoUK@lpw-Ca$TkpG@!|rGo2~RiBx7aEn)UGDy1nQz>zbfNLS+ZN82S24$veW17em|a$+$0lSbN=8OpNnHAFNnG`d=9DO-En^$g2x2j~g9W{CReE;vI zrlq@|7v7(pal2QB`u8a+AHO$U7EhY}mwrcOe|!c*Yh%E9bl0`A<&Li8)FS+fBlN4o zjuPHM^|bw`e(`!rdDTyQ+Wz>`C-7mTY*{-x=X`eV-|jl>U4Avjjm+~Isncvhk}XEc4D_3sZS$zPhJ~t76~D~ zh&g`Xq;?I5;-kE91plXTv+4{WHXuYlXtq8nOPw>AjedG^Yp{0CP`NPf`GmauBZ*}F^cka?OmkW)E?e%(TS zTVZ_SM&a=OcyxGlb2LFpT*U)x8-e2lgxF*{wt>~r4ABFV9Fa+6P)^j|fod8(@ySnS zm|Jlrt29DDHVl@A76sXgr_GfSjQmS>w4em57m#S`7BNhj3BtM-oT-2*g!!Nh6!(wPy^5_6B3w&imU1oU{OR6s0A)9K10sY zS0^BOY|}?2XlYRtsuk1YMKhISn9B<88-iu8Sr2U4I=T106g2-jU%uVeDVN`k!}LjV zHo1y-2EO7Ft;bs@s0f492;fF)$W>}QBAaWg82)>`*3E1hfdB!_|GwbCb3cu4F`q9V z+au2p^lEeN8_t|~l_iW1FkE2M_y}RdFo^U6TU!rlsu!I^B-4N-2WJo#j~E?|$?I+* zGE#Z_g7TXhAVP757)f2aGc~sW z@~Mnh*P{mD2MtFj5P||`2vM7&T4tcL?L)2151?}bfS!5(kJDJehTn~8PL0-N#j4#R zWSxIh*lq!SSEeRDrcS4NBf&PlwXw9Orf3kqtN)uMN1F5l`krS_s$Sfioj<^sC;pmPhFTGfN`?mKw@|gQ0djC+QZokGaCbm;o|Gz{{(WE6iURYoi?)grFaXLLL z$fCY`w=j2$vsd7YRb4jVY*(~H9>m++PADFL#kHI~j;k5?3kklPd&fwdbv!P$Yc#d> z-yWMg@_bcV{E6|sD=a{hc=;^&{lO=`3j2f7VZXCqvGt)yu8&r*P<>W!4)Cd0fFc7dxf8mNmvtF4d-TJ%py`x^nmJU4+V@I z8;L}zh!|73qo#9XaJ|@sHX4lTH9*r;DI?2Nu2XeGVSU5zTFjcsW~Zgc2cdGUeBR9T zJ>;t)ojhqEUy=d4nEDGe}DZiE1mFS(8Ada8h%g3)37jj|KJC=52ivq=r=SnU;(| z?b?DcQ#)Z8XLHjH$X#l1KX8Zns*VX7inrDmn@Ta+LXb+t4wbP35TZ+5=iR-dzfKX4 zmx>+0GH7PZ?oOhv+Et9m8bx#?kO-B9)5v!=7LX>j-sNi~f&*FmUcq#BgEF>+WLrFS zF{sim|H12s7ZoKMG#uMxQ)%B%r-CILul^DL>4?ZxQsil(AJNzk{C=OphDS`vl%aI& z&ejS2k<&Tq+GgoCFrvt3<&ZBi*y<<<1p&UD8Tz>i=5q?+XCS;(bbwYEM_xM(0VZ-n z=M?5HnJf~j_RI4Vy@eojs9bW_oBg$8^p!B!#Tq& zvL^WfA`L;*>qs8cXZEqfe$xHpfw;BB8(W~pHaksJM>07mnIQ&vHFhTLGu2E_JIJ;< zuTgk?{j1~4L)O^!lvvMW^@$E(v*@OvEhsfOGU^ej?rl~PK z@_W6F$Bo6^ZoJNG{+WK?Xs^BUxwaUhoE0bM^N068fBwBoykFYLBp+3}0}~b*@1EI! z7XJ5n-1GU92GlI|{xW89;r6B9{u4C#Ux_2E7_9b1P8u7p>6w#K|9~Y0pQvrAVw>gl zD8@?HPa|4i?|$!PlgOHhISVamDsCFjbxo#PW!MaFkS(l#iBdZ4p$Y`EDDt{xE&>P< zP9cEWGUUeHloBujUi--kXn@pa>2%YY5dn>*1;~})5iqEcu1bOmaBGZR{Pe#EHs`yc z;LAj@gwLfv&$_k#5~a_P9&>6q#CZS$f>`#nbr}(|hd?)-&S+|w^(f{N zU}ClOa#>c#X7o(}-e$4`{B97i1|P%&9pao4N{yM_$HVuCZ*zwNelFAI{sKctCo;wy z9Q%=fKn9{Tq7z9x$|kB9KT*xB(Sk|!6v+0{YtMd`L~0$UX4g7$EnRbDF|9eeSkoK= zZip8^$@VF>jtWEqU9;AM#j14L|M==t1xPLN6!1xI|5Zc!#64(JYqZspv4wiBL)k{q zlNY%&E^{U5BAqtl{;b$L$zSn#cee&KRM;0<-SHylkZF14rW|5fyw&l|B%QJs_sy~p zw@g!P9S0!Va0|}7+3owc?hXAI25BP5|B~4FCtHW~I&E=H)Z`Yy&DG^XHD9GhtenUp z7wJ?gBE}rYXooZs^B9f-6!)dL#S#ryhc0G~ScU%LTpf)ASv@eG!OE&E?oG;QTxu-I zWEQKtVeYV|fA)WDq?q;>aeDuLI~_>j`uHBxsdhHb{`(*B1e`D!kln=LH=GXgz3*cu zcj`z7oP!245rb5J1Z{)r?Y3b|kuq`dk7nTvA ze;H{${lSzE%tU9WY!3JC758lnodmrWt$umUu_)$RnUsI7JsSfr%iodt5mb|iA+GDF zPaV1p#-?`xwg2RXv|mXNQiXq}R(QSK`>k*8*Trrur(~jR-t6eGzv?7Y_UfTJk7t^E zpcDd#Fv_2Y>nF%^9s*b$|jNUH0RkU22RDLu3lS@qNEP#w+Ishi^XwSo0gkCh0R<&W< zKHM)5(5jXFygOvLvJda;q~MBCk)B>nmbJ|-oZgccwdwL6LGbVI zj#zxWVbEzr6O(L_3lehDio8$U&Pqw3JzCwf0=Pd%K%1@X=iZ=h$u1los#HXL-;sa4 z3S|fKc289?N-->z>x_zq8f3@!4u->nFyN979#@U_?>0e3xv^YAM^4AjoOw0=4Z{Pg zUMC=FSn7!cYKWF+*Dj}u#gwkkt))m;x_D<#0?N!mWG_p;tgTfV#tBJKRHiaR=i%_@!b4BH3HiyoHPIqJxjpWF)FTUe&V~;t2 zBxjVnMb0^^PA%wBxsbABxTa4{f`w8?RmODgR#z<1Jz89K21~Y0=LuL@<|wNdwDF}b zr6BnM!)8<5QdY}p>+4ji-?lHqJ?0}v8*`db218vRK{-NX(+~kz z1yC8$ORTE>Q7E|&0VGT$$$x$p;I5w-DiX}nNpwO*hbmPP)KJshB)~f--DU>4;YtkJ zIuqaOoCpNX4!zLc&Djlit#Datg}6&R_Mz0~XMKY`bwbR|y^;r!KKJkFAAkJ&z1!G4 z6~v+vPzVA^K_PvJdRE0ZYE_Hm}R!@7<;@%#Y;Q08mjiz z!ZR{H3kEOgC_D46we0Ql)roF3Dn<7 zU|pD*nB$Gn7~o@S!knTZ(FeA-rpGq*5!%DVGKue4C&$oj|*4xw1sCO^7#(Vf&s&o<0sKd?)S5$DQZu=7*~0tJ`+d{2qa6wd~L6I&_2o>E+w zRfGp!#)DH=ob@w`S?TdxkEE!MX|4~}>Z5wP!rrnV6PLVS=I%qaZO%tO+jn~&@4O!E z#tZ1mIuw+kjDYq7lnX0q)i?QdBLYpg-Vn`zQm~F7N-y@^n3Cr8)b3q>E;gkyx2p!m z=NIEvXqv{c+L-2Sp16gk^Q6j?&&|iB);l=e-z;lrUGjEkm)Us0!_)i$u~wuR`7FYK zC3+Xn)P4xyU{FGd>rlic+D)2>`kO4!5*kd;KO4x?sTRf+-qf^rnp<4NHDA^4!79-Q zyl_>!SQjaf{L0dSFBt&Wl8eEKDJN7)u+9`)3W$3A(7o6WgF-bV4OG6R5fmFsrougm zZDBHFFx3_~ukfas_9l0&nE&Si*-R9yT)}VP6Wvlb>N1!;vwhboMe^ffK_OK}x?6D^ zmcf9`b3yS)(^ zZoHw>A@7@!`=(SWs-i?kG&miMG0ZFKuH;RQdCvdK2n&5E1MLj&>630Mhk_?+OG{fY zR19Eek+=$S4Tg?=jd|No<+jz8>(>n$jn`cc$FLqCkEj8aj2&w67P!hxv|7?T1y_3M~5Y-*rCUS5oh1SDh7c{tr>j8d5K;*SnB-h*02 zMIG)UGNwy~VS^SLs&%Ns5eVzkyKf*ZuKW~@Mgq?n)* zFGDy8OHgX0Fv~UQ0LkdrFRWskB^V-{qoBR##Wk6a7EFdU;L3>jvkOn?8kv+PyS$m)*z`w*4^1EIA|5y?N4YRSI`^c@IO(Z2E5taK9Zs9Y1yI)%dqK7}&HPzQbss=xYcx z@{{Pkt8eRmp@R*Ej%7JAhXQgc2q{d~A;t?5ko!3aVzc{nsaXr*8mQ5P0g5CY_@rLB z#3Od&onU0f0iw!$X;8HV4oIHr%~Bc>RRhg>n*2`U!LJ#olWk|lUcK>L@vX-*Gacgb ze*y@-tR3PCVoaAT@-)(@C?^LYcnpNvGPBvW^;jXG$V$kQ$>lqrn}FYD88`tNEjX%e z5b1j7XLhjYizJ%`#?eC9pg(pvyeyQzk&(+mpkL9p;2S6UpE)<%${eLg7ldl7&mYFy z0jJsygHrhdWw}dBpRTe;1j10pnH1fhX}US8w=iV-lyEHg#c&NzE}GOT)gSertqZId z(4>}6;ucO^7X3GMrjZTn5=n-zZ^U3_e4c47%fzY4G#^O}F}-QR_EpA(6JkE`SJpA! zu_ERVr^&Bzf+V7wpf%tW0wxq1hetO)oToen{rr1Ph8ExiPHndwyJfQ0^*Rjw!j6!&k>rJ8&qnL1% z0-WxH#6-{m&4j&?#wd?SfnnwPo>&UQ5femTo>b|#atWBL=D*&cn%YdLog`uvrHeQwPlxbiH%eSC_C?Hfn-7XZy}AnAVaHVZ2-p z{bTOoY$L`#4MQMUDbh@dgUDAvn$e!r4}o0$SQZ2$j*b}wm@RBX8+zTusOO`BPLck6 z(4VIpu7*T>Zs&K%ylYDCGQ8li z@&IuOpt%4q53+tfIo7q31BLu$45faQEki)rA{xGfFe{7Hb|vdsLP=%wvoNKaTaZ5} zifjja$SgQiB^$WaLgtpnwiSZYpX-e?>MdZUFUQ4j)}?N{ z(GK=wu?EbsRtA$6Nnvkl#HTbN%qXFt*^B1H051ZOBT6H&2}HHl7qL9@*fCz!J03o@9b?az?GXhMg*ae1`UD$i zS|7k?X7AjvoUXL31{rC##LQRDzvF27-=Z;)5yB>XCGfjvne> zlA+giuXm?2(i=@C7ka&ZMoWlf=Ya^Ez-h%QPS{p#J>?YyTuol?6U5@%`_LJkSurK` zxq1#LPV@0(sz0O;j?|O@Z>b+^o$ZpWRd;UVoR# zGfQ=uszU%gHYuv$cW50m#0UzHT38DpMx4~c^pvviIy!nz|CWs4uvZN*>1c@hr2#NE z069($d^uzpY5x-XtqIdW&+6Zi!{S9&9lQvB&7C^VDO#|C1X*x}1Zod*=M8v!ljZyc zb8D-)2O}=BI`(gcy6>1Ib@E^}_7NN!s#N$O$Z)hCA)V*>l-=su?(`T^<}yXnOcOu3 zG$G!Z5NJWsXsMZZX$&M0|I>@?dd(z$ofG;cx8%r%4kK;hoEke=-3$STUp%8rN@6BYeYMEJXxI6*A7IPS5kGKA|ZKqQB<&@LnY*YhpT=IQ7VfXVc zuBicFlMRIeL^?I@Hk6yWw1_6UKzh#FKctuSGkt`fFUV-w%d{Gi&wL}t^D19f0nhl` zO6)(vE(yMTxe-z!A+lopLV@aQM7O9 z8wqFfFhbd_9^M#=C;hkYY9^%)vxHDaHb*@wS7n|mBY@Kg1@=wlGm5gmSFcZ#lf15q z1c(x1nfK0eJ9PwAAUN*4VO+Lmh8a8135=oKo!BNTffxWWLM-*(IkHnr(Dlca5{J?f zi8hr39i&m}97Deh`lTCEw_|Q=-OM$c&?dx+B@B#AR97Er01gnrk_CDQoz=8|FBlm+ z4mzN7G7}`6{0A^Wb`?f;?_?aHagdNhKav|9^`3Yg5b>j*_$B3KO+qhwG3NvATHL(IeO^(s+W=*e2^ z!PtJwb*H69pMO5o9bVdkOEKGDpT>|hS8|I*1GOxT9lhi*sTy2`7#J6i{mhMnJNv-ju|0M z@Jta_uttA2G86HJ0rL)cU$X7nEL=ZmwTBoW`YaG;!BpOJYejb5ub82@EcBzGH|JaP z44Fo$a})Bc{_%hFOL=+`k)}_SVhCx>JqzoVyY{)i^WHn?mpBzV>Rc=YOxBP*gd>g;7{M zwx&jb0B20&s@1RI>1#=_*M>+6d<3s)7#PE9)%X;p$I=rP@ejP3#{JUZR~vHi?b2fI zzvS8@J8;AH+GTFq7cD!DL0FV^H(==;xNh^zUL={k{8Zlbdfik{FIbj+53K8Qs~qun z!8-TWpl=DPhYNKY=oxFT#;ARfjPXR6CI{4#9|i+fNPE6x5b&C+cp_iJO*d06hkj@y z3;3)QzN{f1{ir;a8q~euuGC;ePNnoA{9sRv?ssP`^M%xPzpcRJXwx+|V%#G!#dv%l z7+Gh#3Xh66xajJ@FBp1d|59Xuu!G1E2cp55ba~NJFEIjh5@`>@0S|Gho76c2pDn!0 z9tYhqm)r{s=!%{g_sGB4fnOjqP4BiWY%(J@R*G1^XtRT_G}1@LEmsTgGcx_{z3|PB z8rCSLU!mF?+V8sJA7^jfXqkbTvo2dJJpGQ{;|;8cQp}8ddMB(?+XONPlLJA$GLc$d z*|vCdXag@@-qdF^bt?|OyJP>MViJlw_AgjemgzC_)#}hie%i%h;4Zn7z;$@?jOnI(cAoYd zngioDzPs1--1q$N0s32KvIvl7arZ>u&JHx>Q{MsfPu_KwN`)hr)}j}Kj8=>9%gj(J z8`T*3)!~7a`#NP7zxd0!k6TlXVgogP&gRSir(rf1JndnwXIPVs=<4B?{-1>9P5l>m zF}fq^OaAs5eeWa9da!pdf8Swou)op!gT13}2>kX3xd)v=!dyHD=)}3=F2rq-#LY$s z#^|7EdA)}$B^iufEp7vwBxYM-Z)#xV(pY3P8g3od+MR8HDM+s~fW1 zrh{y-yoEuF-EE71ga-`o&6bw#bL@Z(i2L3ij^|UWZwd9wdIe|+ImQqlAiYF(kA9Yv zi`)0;e~i#1lX}eJ@E3=_&2|uU_NRF+U9ujf)6jbDeyq1UaT{-}L&Jd;ox5ObSH;eZ z@&Xc*cJ#s!`#**FB+jh^t_AnK3{60MAb@ z#!H;z;%-1AV%+}or@h0GGR@UmbyZcmoo|KOC(#A%TnTUbb#emFJ05){xUd;eMB-c<$F8aYOWn z;j5)w$)$JirXlrx$g^l`Gah;sU>HadPzO&JhDUwFxXLAbRZQ)sF>|UW%U>h z>B@TWWqr#a#(Z_8)D`CWuC}2^fApNXOnlRq<9_`Oq*c!TVWZ|C^-+Fz4MImO_+n(2 zHI3TX(6zFY)hKZriA&U#bVj>i7dgJ9D-A6SJCzQ+U$n3g>W1Tc2-z?e$$Bx*2{z|s zT?k8}>+QO7m*@9hc!=(CM&gsimFjhN@MWOwm|>bys12%Z9ez6SYF#PI62@8$=wuuEi;c^Q39l2})ywzd~RnAvf3E6v`_f{)M~$sdCCR_ZWe`9utjXeoYn zK^nmh{6hQ{(hA=|cznet3e>x^&>ph`TA}vTZ7e*Jv4nwPzor$iovly{8+3#N>m2#S zzSKsQFclhml$IvykgCUlhtQ}t`LZ~wTa@~v=@cGPQ0(}%==N!jODC0VXiXY0K#{{; zIwwVhje^z+sj}o$H0Ydh+kk0FGG&hT2Hm0rm<#3NR36{u;ayZIhmy$>J3{nLs?Dtq zqdJl0*HkrA1vbESS1=|g|)1|yyITo4hsg)>=hFz6I zti-7>d9A4_9Ja}!as8yDrKgAGnOi+33JCJZl>j^*utz(^_y@I>j$KI@CV|(&E8t;oFnqkL zk(eB_@|9!LiH);~0xC68u~UE@&6<*vpbY&H>p7`CX-uTlxnS3mfx?0%d+aCch!E1_ zjKZYYiQ=EO+U}#FN2O0Z0!)1JAwemxRgJ$j*BS0g;LBf2{zcQ#Qy3vZNdY*uto+1o zK+*{h1EsA+-Ohf#>Om-7NX1t@+5O}`!-IWVeL%0Fo@xUt2hM)!05w3$zuWK=b)Pr@ z%iXJ;F9PD2Ex-8e?=L;}ei#ZXmf6j^EU_@QxxJdM$NVhS=T62((A6D{I4%zDt7T|y z%I;j%(aqM;OWLmOiJ=Bquo($Cx5svrOhFCZz`#%R$}bh@B;Y*@>~?V=Nbqlo*tX0} z7KF=~8IFlHq+UVJHz^DE#a9SdLuq z8#y8(OdIHMTailPgiLE0xD*MqEAj|zm;SIsHae!x>QO(4U+|YoDk=HVLbm45wgrDw zJ3}BrI2)ZtJ$(DE!z?h<>Z5|=(o{5M8px)-W1=l9z8iYVvg-nhdbZ1HP&W$jAu7H< zp0x;BMASmKX*&Lq&kBDWT)O~Yfwz2h1+W~*D9f#ykwFSg0W@77TxW4zvv1Qk)jYL% zV)0=C$dSW~0^-wPP0UD_z+y(s8|`#;^W2@$$g>b%)hL(+{HVgRr_*YqXj!lEXsP3_ zAV_-zXqi~HY7z-JT05Gf*pwUg7RSjHVXMjopNvqF4AIS?|6@OLO}#PM+4)+a6H)B) z1V+sF#Un*Ne6*)ut;jJ52_X%;gjtBfP1Z}~Ba$u?4Ke);M0#`xq$#h_$RL&Trkij; zNq_D6wUNER&;00OJ#u&rFhcfZ@f9@#kwjaA zP6}@9clWT}n&)Cx+7i(ihDg`jTEo(o(-4OvPY5+HT<82|4gW~@;ib)h$HRoEsn&uY ztF#W+A1<%9z=r&NBB!nyH|3Y>!)0b6OhsC2!dEqsl_RYMbE5odV=bPPpsq zt95sQ6`RxgBW1A0R4U~NPRsL2L|S`d_}Dp-FnNYTddlRzIsQ6$Gju=dnc~-DV?X`0 zZtVLfaO4{+>l7l-z{p$#o~Qzzmkd6cdrx->0g>-~-+raA5Y!GWF)Lzz;cD{>+5kA!nQBRv__15((K_EQf{i})%1om+q_i9NzqtwiBUa z00wH(OxosDi}=_Ow+HOx%~pYHm#yX?+-2;!c}deJ`TsHoeKf`QP(J#B)Ng))|9Bx=VgwWf zqJi6(gn;Te2-73Y*CEXMjg8HGhwS#~!xv*ZeZGgUey-0^Mb*QHVn+SJ(ED?%qbr&6 zO=YmEan4qCX6cjQ>eWJFwXui1Ey#l>aCI6KD6QTHI>16i%KAR7{)b*+1CeM!Lsgxw z;zldfRjDFLN7|uG!c>b@kV~eDgC=iZEurAAcJjlc5S+PC$M1 z{4n$$AhME$nenli%=DTI{@4%)>$zVWP^eR@Xb34}P@N!IO}a=ZY`0G2ImMyEty__b zo=NqF`+QYB(+y@ML&KsRL#hGe$sH8Bo71+dx?Q2>4kK%kA{T{| z<4Kmm6|@$`SyX6-98+97*kGV-CosPI3`1~;U?)pHmcG{ItEPcMo!El^&#z|<^zbGD zKJE`+0BM+!7s&*=zxa3>pQ@~)G%x4GjjuayrjzMi+4mpS(Tu>3fJ2*(ec-z+k?(j#;c^+b98q`Uz!^oM%h}z!DBP_WS_=&Yyv4NWhJc74P&5X ze6eF-hb`b`4D*h|$xc)B@LP#JI`Ya@!tHQFhjx?eI}J5BFYAM<%H_c(&~)ohr9%}J z#9q#*6+4kC5~^ww*?$m;)CIvFgiVrIG&#qxEgh3m2>{WF=Qj}5CRwL#Hw#0`x{ATj zQHG8x(w(1bz}tY4Cp<{tPbQGYR;Zj&O)MF}+2u^eE_vxVZ@M>;7TRKJdZP=wSy5oH=&N4RrzsSq4qeB9T^*1}%mt z;(Y|$90$%REQ|9MQ+(K1_K1gdB$YKw9fDQ4M`cP)UI8xK^ne{sF751GgQXI!=K$+t zy~_gN&~}JX*MJXLeqROw55t+BbwTORKa0;UYMZyJf{J}u9ate}DRC3(#S~h0%3eRR zdTPsQB8|Mil_W0OMifQDJ|4JU>;0;OVOhL?`IrJ)-Pxz3Jy)2+8Dp9M^SqIc$(*!u zf50#9C+fj8U0pD7Gvr<=gr_^KVp~~J+y1OAeB* zG0-3IjT)*=$6c54Rt}C66W4cU?2Y!9YkCV#UX`TJ0!2~c3H-l&;QqGWDFPD62nl(z zs6ulUsi+%AWzZJ&BoB$N7G5>GyjM@GnqS!ruyn-+mK+QvyzsyMjAS zlPJpK|5E?Aehq%F;O(_0aizm7+Q07W$qKR=Z+b5|8$F$TkTF=VKULUq@JrJY)$_sY z-+wvj#{ev4gfn=Dhwz=%U<8s5Dw_>-RtHx<5eRr+@Q{9nER>gbUT=Jju==&119wC( zdTkFdZFxIDRQFV~FLZw(@e{~?fy%_GL)(D69njx~Ao}FB3wF*Rn}kuIo&R6^m244K|XPb#UgEd+HH@$A42>mG`1TN;#;P>SFx>h<>8?d z9<=)I!2!muidM|0w##g0^d}~;odT_JSS6c%BDMJ7-*jYfb)dCNjVPkVc{gfLAS%m~Q z=v!GLBM@JV?s`E3Uj1jHlZ7m+qs7V~jt#2#`PB9dtqMTfDG?H_)clg>>KTAS#@3m( zIZpfh-*LMmr?3dsR%OoTip2K|M!~N)o73=a(&^Q7asT+^IO}`gL$^} z^?U{$=4+W~Jp~Y^O&(xVGANRK!s#B{+=@hS4xPM?g5SK0-1DWA1nFNVAQJ9oK2WzE zqe)Z$2$_pb0vu zi;5@ILgP|krBlck0^4Eis{R9SU*U>&6EcP1uox+espD(~HaWqK1>u%V+mEU@&>bP> zlG`6sMwXec4caVhWx_TaMrCLoq(@?YcR)wgbIx&8eU-sHj*vzGqt@;)cDAFM%f+=4 z%y{)Vf#uctGs?i68y(t3GjEX66JqK94QMkm)igInY8Fx#vsI2vYiM5`ch{Azhxf0w z%1);~FE7HKki+3;0efTRPwJ%c@!3_aKI(sPp4_dwQiD$~X~?5|hz|TB58aN%RCg3F z&-jN0DnKJbgMFQ4%9CLi?CrTr> z-;~+F&&*+bAWM+7U&`Bxuqvaui>l4*l@i_hjRO}VVYX^GG7v#EZ8@pn)v3Z-8L~-T zwCK3>-VsN3@F~Jrm1Uj*c4JiHyz<3lIFC5Ly83O-=P~19S+GW0A<4UT`&=M<7{V!+6O>6M}~S7=^pH|DvXAwH6S{ncKdYJ(o1zv$3Tfa z#2jkY*hjfC&k`R9W;K9UD$(4MU3LzDg2eP|MgKulWdS{g-dZG8Ux0nCtT(h#tOR+Z zbLEYY!EaZRp-A6sp$VR0YyuGYUluVL;9&i{K@@!M+GSmlh$G1C97mWTYMQEe<6iO5 zp{WW(K+6&&Dfz`T>6DSgNs_rvX;YLzLw7_o$w^8=M3ZmPFI zc9Pi`h};>uXjZK@pgX}7J9r?Lw>1JxzW+sUZy#LwJAsovxPBL7&cA2GX25`CT7^~a z`MU{-7(i7jAMA6#3y%=yV_ZCAH;`XUq=S_Tx#w!|L z`&y^$ra==&g4P}5UAG>!u8px)&v0H=A@ACVcCcXeafMWpX-_No>rqK@N-p3i7Na;X z6%vwIEOA6*>xsvVN}|q^AI; zqnKe5E0a(pqYeHXyE-5uHbyMY5JZ_^rR4m~x8e{1AaFaF2b84<3hFpk6hQ_+!w(RO zpct~Ja(Pve@CdRK!DMr%#!&Z?P~;F~I0OXwT4+&}Et?FeNt4~fiw(s%-D7=`PPq*> z>w|CuO4<#n2|0R{kfxSs6f?T@?huJa9Ft*!?1|z8bQ9DDR@S%7-$p+{yhS|E)pNfe z^11Qc^zgN^afrfIy80}ic6D5p@Ev`s?i#%M>OOq*Xf0I+E!mQ_Pe8N?R%R|WXl?j; zHKj*#Mx%g7gt~h~QYhPY1qFU)5^EP{O{vsSlC*j?(6&CJya|&)ijaN4*Pu3g#I_8E zx@EvsSLQHM6SYyOtVXWPySz?SO$*-dCr6w~8k1RC!_z>pQge~)_0JMHK`w5I5L{t5 zw9BXrr4U)bt_M_L79C4)0iC8R0bdGVnx^Lq+Z&XqDFh_6mYnN#%Y8nNTjO}S~s3;Exm^_Uu0D&85rT*x7+;lI_Kv2!al1uD? z-XOX@8@y9WZ$MMVqh28`$OiELMP#a@`s@Sa#n={1GcLh=)DTO#x7vZ6{t^XQ(M(QTd@ zUT_*y2lY8#`V!N&McQ5}m=tMiYs;;ezW8iQ3QVy#)jdQv$w*k~=1ooKIPbZ{;VJ4Tb{ z0Uz^ih{qoSe#2Jcw3P7G31W_g!hPd66bMrWJl5Q!E4B`CWJkb*Vzw8GMQpV#Zmz2` zaE$P>Mi;~-9yivwP=Mt$y(7M$_Q^ZFW;}V6kf7nb6U%l#FaC}g?J>~VaKUxWL5)&_ zL~BBJ^fZt&BEWK^GKqMb&?q^G1b@2ixsa0ErwUW$C`;|@n*AcPOekB4Sbe=^wgk_O z@vZ;9F6{Z=(x2Pp>{7j*dE25cUGn^LC*j4Od-3*dfl2yl;>FW&dAW1S- zn)vm%ZU{S$_u=CyEW--lvAuI)v8*LwZOh!oI(J)Jzr@wc+V>h^5NH+H=2EBj*y3L| z(t}fle^1Fg9;ze)!Hq=CE~y#EeA$-U(gdD?R{Pr%tJ6cs#zDi90RA5QcuHlVOL64? zuepVbF}anPIubawAJVi7H%OeY|u3#k?}cYIN` zK4C2jU_@zaH0dWHIAKOeo*{yZSz{kuIH_iC8Pj7MuV2HFOy~XJki&`u%v>;qA9#j! z`hV%111YaAJr;#{Bw-&15LXj-PGQJW9Cio$zai?<)yR6=q#I^2lv-6LxRdXi@p5hn z`()>`5rkV2wethy(_RIw#JQ^$#)=EDnS+U4Kdv}AaGX6u=C5zLL7$f{2!h$%g3b_M zA_yg;x*|7m)!=_ZVEeXCpos#q0HW1%#(t!zB=wLi`XV&9L%R#(Jf2b+h~7b#;((#- znY0rt)MR{W2mCg zLU)HtoTM*IetHxI5g7%1_cV#Ih8xs2O1Q+opptkZ}A> zuCRCy{|x9k8e}Hx`!T705<=Ow94bsRp<`H3M2(o73<^Q9 zCQve37cn)&6>KKS0G1OaFm5K1eK~=C!mkpay{j(`<5W7-R7Vc%pOa+iLFpLL$-A`y}y#gJ`il zfAdl*pHEHXZ`|`?e5D|_y70p&*pmaVCvCj?*pGvbsoU`rTA;G7l`A`>{!&_i$gb@Q zHH>xKqBm6l&t-L0G~9k9rS5y@%A3;;J?~poyB=bq#i;~-k^%AhoXzbo#eIc?-QDdK znol2|j_HG)JK@NY6|U&g!~^Mt1KaLE)C-;ZTQ!uw&ih3ZznM}WO=nC1P{tsQUuQa^ z$?yJu>5A_ds#FqFCFCfJ#t@%yLW3|98KN8WAjbvZc;mZ4*S?j$l*Y@{>_xEysx2{} zgPY$wHOLX~qPe5LKbOt)>KA_ZI0Hs-Ju9Z>xgI(`quL$f&0HUO2u+p44Nu;~OFOMe ziSxA&C2lDJwZi(58Lf?!b4Ew)Ks3ehgv30UTeH7g?&<@mW+B9uR(eblUa^-}c5>4Y zpG6W(HwbrC9a{NR;~lPWs*luqLBlYw)D#{VpNMLEz9``JR=~w(zuE#MS9;RQ2HAR& zhv9x^Wy=gjIK-`7pN#e4$q0$0-98#7o?IcG_UIN9@l=4s`_~!TXhVmzeRcFR3=e=4 zv>~O9IMsu4X*3724JRb>u$)9z=*gX(Awk%R$`$F>t@32vUwTH7-g6fWmhGHQVfHOp zN>86F6n@|taNAYVQH#n`sd8#CMG+19g_PqEhg)$jHNwC2Xa5=pa9t=|1tJeDR zkKM+c(VEosvv=F~bP%agDCWW3o%`#20ILi%%z2Sl29?0Syu5D~{10`#7?Z_9pk^y` zS|mn%7Y%1Y-VvWt=^H+*iB-uKukPbhC6~#AI$>F+Db{4Fv zUi2mtkkK|o`b4G-`q>_3Drj-(A$C#c`$qVya-!=<87ZXb%dyPmKJPu;9=T_dgJ`poU>LD={jQOD~nQnQx-MY2p{_^YO)a%y) ztzFZh7w;dx@AWzzqh3d>##yfglPsmZyu{dvPMJks9--+OfMdVQ(>1ODGgxO71KxCD zGA~SUui1(2M=6nWPuhf&e`)25sOzI(x`SarjM|7Pp>I9pPy?&bVqw42TJMUGut9gTqg(A3mws!+-%ku z^O{lOw)aeQwLVG?N)!`K0>0c5-&Gqv`J-saZ;J>fH9}E8$T`h1zExsSUPf{xVcB** zYx&*&`r(1!CJ%?ee#vJ9Igyh}IxPt^ry>V;8W!q;qNvBF;LEnZ(io(F%Vcq%;r;u5 zuZD$Ll;8a-Rz~H~U41;j8}spTT7mMP`UbH3mt-L1`6}M!c2(EtZ(y=Yn2`nwp|nN; zs;uW7DrkYI^A9fyh?i>Wlbd+jr(`6jPWS06np_Ef5R~`CMI&FZHEHoa~N$swxKBz zgwb=zal25#H4*j%Jl9X3``uDJ%Fwv5|AcB}jr7j@Bft-*W!Upj1yEtd+| z%+r97Uw+x0IAN&LyaYRt^a>Y9gF7Xu3suksB&PdkzRzDeU%(eWf=&t?uyC@j-_5w3 zdIlf=-#sU-O473c%2HN34!+2{r)0{G6e^@V@I5ug0&+X#cr zvE>mzR_cg*+%Mq-1){5B47QEN8h3f6(YcZcryazLyX9W+f83MqTA8l8c$f0<0L$d* zFhL&Z*7?7)wfe|zb(2>Dx)vzLQZIIAc-=ds*3Zae z2l!A>je4doKvixF1f~o0vC*id-Q~XwZ*ZB2KJ$sWS`m23?j^zE#`+UIn1eahz0Wi#o_G94kO|F1FwP{ zNs+^hB;JFXot~p*do(9DGRkY#MjaMh*Hn(6LQ^o!9peB<2O=JhMoR-K1YPZ zXobvZ1Y^#!a#NlA(_XW$^dW0$i}Sm#8C4KY|qDYrA$~E^?lIqugxRGlOfW z6sO}-Hj5TT8V4<%?7RBiVLkSXk~S`>e#(~``sl-!V!A+4J~YOKr$31f&8c7RMhEMD z^K)@wN$a+aW5gx!3^hz|a=Rguq#{E@aflt7DGdx62SVW9g|ELsmZ1-k2RJ58o}>?x z6{Xcgr1_9hlJa>(7>vU0ht3GG!XR?%x&#t02zmNPTwBs)K^vMP6sIA7K7WWvI8A98 zxJ>6Xs;FS~yjTep5+n<;0ED2U*(K2>ip|GW+Uf98W;0QwAjMxAWJM(xk@kvzo8fQf zDWcI~ha|6oBnr^@%S~^JpptPt?Z>wY++k@ z^Fs=oY+sF(!?YE{g2=<4>GEys(%i z=Q{o^={$RoJ8z=KqemsT!6?(Vz$EYTG6Cm@*DnD_s7Ib?=NWE`Bwgd(q$$*yQO-0(aAaqQkrT#}6WAYWTJn++ras<$7 zP7e0%L86?JWN^Xz97w2Daln! zD7B+-UMeAC_vC~vF(m>av2>LprsRI_d5H$-hQWUx4C#@ojW?d zP6L$K20!tn^+60q1s)eei-^+xFXx-9Ldoi-v|9l}*gimOEIEm6ZWEaj$~mHxtbN1- z$cDVcYR+ui!Ho@|vmvLH{86ILjSmlREebfFc#GuPS8^NBFmS?mTFSJ55l5G@^gdhc zgKif=(vXAXyC0*mF-+aZG3DFwN@m(e2GgW8#=*j^9Brm_Kq{0~wl;+AT2J6D~FHo<_T6 z^RA^H_;INYa$DUjCVjo8J%kI}Hcme16mFm%eaeJ$-zo9~ftfj)PykF7MBu*T&`4so zpV#klCDC)!vv#I|zwWcccSyHScRX5YIdNzxlJ3FyqS;G2=0todkV6|PAA3u|V4t&K z$yL+-3ycv7-<%3Fm?d3o+iBw>jw&JBG8FUMHIJ!d50lYOh!a1fW0L@Z$o2=JfC$9k zDY^5}bPgKl1Ye}H1Xj0+9sb^#yb{eWsVL%UJdB9AT|AT!tGvmeNGWPft|IfYXKT$Z z5fuXZS&r9wc={J?=oT@kf(mI2dAa(U_hi?sfS%pF1h64FX4K=2>LciOF5Uo-uxSrwUaj4@-BK6a>!k!;c} zxTV!x&*pfw)KD7Apz=0sp6xk=w^k#MAUlsse3JxAhxI5mH$Y&-JJA@T&@v|?!&9UUrYX8^MS$vK;RM)*F;6Jd_ z>A(LGyj1clV7GlkS<&rf%5lJ@Xga4veM1MS@BVK9YHV!hOPm~QDZ<#ERF5UjQg%>dpcd4qqH5*qDh&OD z&D&(kNoP7iNOgUWMx*yn`#-Qe*Z@5HxFopgG?dfl21(Sli~-MUBePwwHaG49zpg9= zBv=`NGI_jpU^v{q*;J0XBev=VN0$l{zhK6hN?T7vo9}fp^@QMZUdo4Xp9WJ;2RKX% zKEjdVj$8XOnFYD-GtP+(qcLhtsnqG=`B?3Ay*?GSnMsiDQsFZ8UVb_DXj*eGdv|O` zgcVMYsehVtaG$;GNcIdi+>SLPDA;x@rbXvpR@G<}djFTZ|29X%hlu24U2OAh&O?>i3maMQ0XPQsf7}RafvUB zh9?g+%ada#kL+?BK^*#?I7gPW?Sh{8gMyDVjnqpelp@UTx0)i95r`lxJH(Xd+Uk4eQ6DBYH57q`TbS}eYL!duL_ z8iIZI>e{f+uGony04a?iVEU2af)clpej9Ph$tRMdJV_*7pkNf>|u?3seJd=1wtZ~oWcxrn3)T+1z zW{tN!?%V7Uk$2BOY~waFQ0*dD;;cSnvV({xfQIgt#XeB@2|FbV-t( zt7snG`j#?AQ|a-Dp5jW>)X({$^dDvD-N;-n)M1bZ6U#CY|^j_AV*YHajP&Wo?oS8qzGP2 zA0P-S!qDT8QW*1%Rg}3Ih_(ensn(GU@V-uqEN>GI3PjW=tF_99QM-4TGqIcbqpbUs zNZMkwt#527O)_}Hkv^w#R?B+^kXA4n-W`o|gEa&hVXI*h*(7@2wR@iel>vC4Vxn-8(m#FkiewDQJF>tr~nR}A#5pV8Ixg{-=I zuREU9;dd}hDyq4mdG_?R>PN@Xhq9d)-_^Ml@wixZiCbH>;szd1mPHc$hX@eV$N=Rq zCk*<6Z2~CYly1uQ+`13hAjF9XqEILq-g7 zdVj0B)D5u6(z0vW5-p3PkYEaC0Ufl$@z4J_d&I848%YHjdh1$=t5I46=&F|$J)pJf ztj%G*9X$Po1qWyXG^GJ+!qSnG^l3b!iu+H2F}+v51IrhEHeA6P!Tw}w^)`oDIbyO_ z=5j+`Id0lFfM&j5Yn@)Ner{6?7JFq_7xQl~Ill>h zX7H<5$tW~d^-Rs;H?AlZQWfrkfhP(DU%5S#&;Q1|-%!sm@Nv<_@G&}985(R?yeB67 z!Mec;B763DyM%1Up0sDzW37DQ$jxDeo8Fx;Ph;L`mp6huV{SAbh^brO^v#E4a%(MV zDGmGzL|WS={AK)C=7_idPwf!_jpi1Um+^GZ^^GhlKNCOon@>VT%l)6IQw;V2Snm4P z{fxP{(b9$Y<2+8MAcFt@`;h(tCO11g9u2oQme4Yp2@UHbB+RZ|Jo`fT*Pn5D>FMSk zaylf+5)0rv*mdqxDIb!m2huj?E*hTQY+aZBUQk02Ei($4AR)FkRH&FwR8{=lI)eek zTdSJ1rIn4dx@;i}VHG5^+jKoX83-x6^@GU}Njx0^JE~x{-AuhIVLr-VUM6TF;k1<* zN?r|q!4+6*kX%L1!;Zthu6v9Fv|l$GLPco*?owl^uW4S6uS2ItGfa9;aYb@n3Wdlh9XnMIIyM(q-O+EI_c65TTQhG}h7E9(As?>%cd?pL$ijJSFn2~Sfx|qmB46LZkQUjU3##!0AJu@(t=ea z>W#o1phVue)5;up2Siq+Rm@T>G{2_mYJ^x&3ksvv!^lodo_MZg1)}a53@lmmi|bxE z{f%KKDL6x9nb|6>W?T(St)dYnaK165GVqmxLtn|5R-~jePbmeek|ab5NCX0p5MICv z_`zdPfTNoQMI$OooBYgZ;rs6f|Bu1>Mhlz7d;Z;vLtp-Nvc-EsY<-u*F)KEDBO_Sd z5d@VSl~J4F1Q5F8yfcWy8;o!Tfd?=wnnd=vMgV|-bV^JIU5-)f<+_?95A+!zA0~nh z^q^ju+TAdYj%CKR8M=S9(E!ay%5hBr&+E^+{gK&CC0OEiGNs?igRzM~2=ARp*NMk7 zM!oLA%^CrdbuZj1J<5@m%G^JLr7^v(CVM!eF3Yt>#UBoL`cHQm6-F1}lL@;r0dcEZ zC-`@&?!6dvePGd+^rY;2s%QOwh^K0$2KPJU?^9qRy?tOpQ zhH_rs<-AfohO^Hl`Rs1w_38tPC2rPFw~MeAYO#nrYxROAmdl=W`|uzglM&eeDeu8wa0;17$mw%JxtSy}U9 z7+}IE11z91aJ)Txlxd(dN^v{^3CSX)gyOyhvg+2v^Vn1McJPPB#tvm1ATK;8f^fpY z$!>XU6xzKTat((=H(sJ8DNawH0@=33`zOa|3cfVF|NTEHLK>tm)t88E0L|1j%Fk%z zhdsKna6AzqbLwt!U*MI4oeskj5~w%@?v7S{pEkUCYEp=QAM@03{mLGE3!|}%A_W(~ zZzStB0fIDjaYPfRmc!(Nopsf${khE;&U}p-ziAk53Hz|wX}_N2t|F4zmb5H zRvQhXd}B8-P*Qs2*V3lp*Og(#i)RdlVwy<2-7h{FW6^47=2ryqh^`B~s#9U;l1cBY zg{1gENb|t zx1K+mfU49!+d-+cVg}@PB;YogLS~jEwz~K)sJ2)c59#$*#YAe&+;WEK!xhh`6F$$f za5(I#K1#&7jD^E`)r!OBZ`b2fnVl=RvJx<;d<9Fb15=7?8x!c&;*)<3us|*ckEc%% zxMKm)q!CqHkR>(7vFigg*SUNpMy}d`5MU=(fMV)){D_|8&7ej8RepB%-~CGpJ%`-f z$Yxi$B9L_bjfF8JX$Z7y*yhNKSVcvPs$7NX2wO)+?B?7SP;5COINsWSK=XN=uW9ej4SCaO?u0?~TkD5Z6({rYGBT@q zbqi{S1Urw1ZN+@yEj&+EL4n5Ue5XfGdLkplx9<db1sEs|7k==XE7AmxPuw7K|V0Y&x4_cp7UPUDs7$`;AcbP>qI;9ExovJ4RX!|3%? zi_>xx_L%=dt2c5uIj`~>d^$PU__In#h3ZZd#iE6*K|Z(zrD7&x(on{hFNCb^!g&CP zshks8F(U`X_)c%JY1Q_&4p*g#G`gvKZ33A#v5Pa}MR$Z;Kg+iEdpjjEG$@L+W3f3H zw9IW^>F6+G(y}|W^${n{*sP_H3*8gw6b zu{<$l8uce~vFZVlPluMx$H%k<3wcHO7*?wmU=cC)fjqRT_4-NJ&r1^NCevTHVp*nG za57nJjn*gS)p9#QCa_cUYnblQJ!#r&iZ^u6gXBlNW+@?!GpvEG}OL3v@(<*IbGa-~VvaA(9vf_*yL*KmZ2Uu*aos#oVq zN|w~UOuA&Ae%bJOpE6r!2xuX_Xu;#Gl8QW*8&F{EGN??{eFnV2H;f{-AUQ6(=^rdfHE9eOwP}IcY7D?h}$DRhwEZ$PsFnxmT3Snv1n@U^8Tj9s*kQt7}n`#I(R2vZ@xM z0nUphWV1||d};-`02;fWZiqyS_i7^zq;_D&K{hRps4E_rzU~LWHmrf(hb{0*+)#yo>H<>2tVdJiW#SQVB z_G>dJpjnXBM1dpNWz{OwLxayFtVjaSmX?l&mz`Lz$4TyI=8DtXH_HvF(&aF9=cN5@ zt93Gj_wa1cV<*OJw%UjdEnvnB-!7|;+^fGgJNs#u`cs#kkB&vX)pz4UiDGst$~^7L zhs9g+B3+5sEx}0m88yGju2Lfx(D}&V%G{YiR3KxN5j^EYN&t@r2J#V1kv4*mq)bhN zi#p&CTX2yCBm|})caPMi5`$>QivK64-MJG;4Htw7kV2wy=$M4jG6!=cYLG?BWX2|i z?$i=@zA!0nLV^;0lu-V&vC^l3BAw~kblw4JQ^*FsHQ=z_@1 zY&bTpJu_}xqe~DS|)p!kU4@inaPUO~C!{xeP%bn1s_7kLAr!`Ahl0z?hM`Oep!b%wK z;_uK|Vmlgn?^d0rGANQNfrps1+dsz~^CN1CVevZSH5*5Q-Z^tO8V!un5Muk%-7H=;5o)*jFUZdIkD}@B`$g@^F&o%Bnw0dZ5yiDKpENy z0s$z8e$kP1z~0Qb<;f>5e5ms&m4?s^Swy6ro>^pPTFcA0o{}@@^;EJ0%4}gPZYVM( zQq54V{Px^s9Ve50)TpSP<4J$A^BfT6!fpb8Wm%z0tjYP0GXp^G{zDh1kjZx&ZxuTF zEkH{7)ZB1(NG|WGw=`cF5OnlJ{x4k#*9$7im+~V0%EIZC^W^dJv+-wzMfp`CX`tW8 z4RZVUZvRJhxyCNs2}7%aNDP$*AR$x)fJbNv2(Ou9jEJTvTHqom<;7aRK<$eM%dwz9 z2$h4gvZqI9%gAJ|qGnG;z%$gl$tZLr9H&pqJ9uN&GC66lr!V#|jWvqVHLl5(uTF_N zp=z|UuZx#8HeNC;Sbj}olo)`Js3$P_6SNsIW_RR`2tZaaAxCpS?W)asT)Y6<1C!Dq zRYt7JGCJM?sKKrn7&%?@iS3!rrrZD`ibfW^a@MX4th%z&ttfw5RsD7%z7C67+Ic?dQJQPj4DNJ5%1I*l;ypcU)mDLKA zS#`jaDdNWM7eabj58wG?7Ft-qawa_)qZyP7I_O%33-K8ygXk_;BW7~OdF1<9(A zT0Jx3yb83}lQgbG6NT>+h#FRb4vfNg<(lXVfR58q*60hjLh4H7XvwpHWG3}h>y#=R<-aObOV zmy!AL{2t^;lKzP#Gv>yVQ&_d{BGo_xOK|sSW&_nX4!`uI4dM+lsye4aP7-9kwMCIj znfZ|7v|H3H7YU^ry5xzhe5 zp{I-2v?=q)>GmY>im?HDxWd~5>T%7~HGKytfmN@a+D2@sUTlM){%I_}O*8c8Nce`_ zdPd+L8h|k;E{yy(k6PV8%U|=YQDOFL!z(0#<ke(_4v;GWH`G|%vJ9g0kBr>;sYY=I~Hx|uw2PVc%zelgNy80bStyZzc!f||ldVLiZ#SSbc#jw1+ zhZZ?*k>a+k_c|Gr0naSuO~e(0IfEzw(163xRnZwK`U4zt#=Fy0@Crz7gD6ysolO=o zWx<}C>7!mpInY)W6kq?SzYeY@^5Oq-lFHS6S?=6ustw{xzyzv@i~IJ{0NjfmqIFsRxq;1w^qF| zPxR4vh15PVihjM{ifr z&!go}&`>-KTLf0cDqx>ivJb%OuU5=M&&N+rAciW;qG6{GNsbi?A9S&BBB()o!AXsS8a@-0FLa5{ zv+HKO^tWQEJ67`a&BMT#>c{w2)cW1SE*p~V(7sZAZKBBwill@p2`-gzdPxJ5+=Lr? z>2`+H4UHSdumWaql$OS@bT~4^k;MK*O$Qpn;A!K+haJy7$_HOF}Ard&-Lpc3goI{l2^gn+wfUIM})JHQpsh4!8=3N9(mnG-rgLui@=;-j)XrfRRM1Dpf-m8muVTZAt(2&a`mlU+Y zuB6qjyaAi@&2-^(G;Givk=LFW#?x4M%48{w3nN_35^1?}h+|14x}gwwmMeE+n{4ZY z4GprF*usWp8@{;8@y5A?W3pcD8~@|1DlP2ewQ2IF@AO;a&b@z4@7dDnc=B1P?j~*Qj@)54%a&($ba;8hp8x54IX_=)$_6IkYGITg^ zv7T19DXL#uSp=*fvw5w}z*VVi)Omi4W4+M0>V5-wS(CtdU#zXEgd_q(nK(R`DK?ap zyrh*@QIQfUZRWb8R>WJ;B|0Rxtuojq-B}^~E^o=%Xb*!JMWE$M*;Vty*pcyxwQ!Dx z6FB(Dei1>V5*;-^y^La5@MEr*CA3W>lxP;)Wj&07$@c|A;LkVTh4<;!mO>Sc;>gVn@W|ws>wmGvZR_}>IX4w|+aew+5I{jrktH0v> z2icuOD3A~f9(3})!Q`|)eln%b&0&{xgw`3xVv&W0u?qB|&ew4bxvi~Fo~Uzj*xAA~ z=f$XOjt8tn>^%h!Pxc;YWh_xA8Nk{>KW;#4KF(*tKHSZtzLAX;Bw zGDBt@bJ5wfO~>jGhIGCW(nraK>NRiu0usn~!-keUTXguB3P0a4PjYmUwiD(1Pw$9wt!edqo#VP=ye7U;3)a(hVmN9CH2n6>yjMm0=e z`7D6m=p)O4>~ih=L+0Mm-UK7!IB=o0KKv?V2U1cIVU5P31Tyns5JX>>Xb-dw82aKp z@VUo*oCKDBUXMY6_&vdao2p~cfNljPrpWlo99ddK;1H~w%HlZa%NBuOF*7m0Vecz- zTlXC}G+3@w$ZQP@9(4OCq!SkNO^~M@5z${CWTTYWmub*qj5hS*%@)m(G0H!46S09G z#T>Go*EC!EoJM+|$r!b-5em48rp_`S;tN_3b(=wiE_iRnJ#5g#e18X;wW7(wizGE9 zRTUhFxvJN6>-k>RgQJEmr-T5_fd`O<$CFp#KK+nP6F5{Oe6Fu13wF^n+*gJRTPqZY zh9C8N2*-yEMDWj6TsA!RP8NjHrcfcXQ+;4Qoimsd8|gk~1OF239QEqSMgX8?pGn>DzY$6?$m92Q7Ok zhf)4HA`N{$xY~5L*3kU;7m#gfA<-bhJW0HHns!u$3@KlK?L>SoX>q$ewc!e&8&shz zhvq9gO>4f*9(MfxJh-|C?rHLd`af6rO{s6**t?54IcS@IaqFofGVJk7m<;h@_3zB+sHw^3IQ+2&#=4i1{mr0Rf@j4YQKAQVp0NLTVPY|t&Mx<4 zfG1*$Hkz4YVj<=^z77nAWZp(bqbO$y+z}zr7c2qc7kEPBsfGdF?oXnC=ljpn+6_3A zjJ$rFy9?9Ju|Ua7LQJ6XVOMe#h>HB^WVl;V3=J-(^A7I{9tDb~l3t7%iXw?Imd2ef z@8sb>2mcF;ILGr1HiXTpwjoK zoTzx7X)z}ZWx|D1c7_38g4|}v9`+>*D;dEy?@S{#N4!0lYM{D~pYUGI+f950&9qM- zSwk#Oc2@7U*TClw(tC=mnv{D$R9yPRw}&kxKkQdu%HaM_QG7-utvOEqL-!~@LB@Id zasS3+&r&=y1BFo4RwGI@t8Y?8z}^u@gM?&^Ul6)yMu=F`H3(#6H-BR|Qax|DT1(3B zb8b9#%1YLd&7uiO6P31wu(eZDXv=d1TQ$2-6c}$|itfu;6mitCv-Vi3MX+H;rHEMc z=lLOmURM&g_zNHyFAyjyutV)fF@udxp-WG(OLrwFdV?PIwtqQ!uS@dV=px%3G9n{m z|JH!wDQsq?PtAzp%N`pc#trr{H*zWv+G``$dmi6a7o4`jq6>mYfg6gdGJ949wJqc>$I?wiSCPjAGJ^CC2*E^5xU8UgxYb#(G@bv zi$3HYFbh#RJ{=4KT#^n0ogyyxe2f~2VCJb;oL20}YfgG{Rbq5>sIy$C^7NnTi2XcN|k~;F&xNSz)z7-Yl6AV=Y_9{5Msh zJwNdp?@zq`PO>sb(_2s8B^>uX?>}a{5L% z5;4w1#oo>aitgYCMSA5Y--FJW5(IQ+In%t8I(9(1Ob~5^oG2ZbYZ1*IlWT5_4Kd_i z#l1NX<0SU8Ged0ezBgS)_2)zRHXf6|yD)(ycd7WE*Le#v9@ex^KRR=y574F6+=Brg zoq6I+(85AK(Z{X=DhEAYd?h3Bj#mU7#gd6#h$Fy&`^MVUHkw|_rTZBBJe3l}Iy zBDL8Gi8F80$C9I{JEtZ{c1lshbtHV{q9$0!A~Uj-BD#>NA(7|o-T%WxRf{r%RLsb| zCGTEy)3M#7_q6$*Y`2^*`zlcZ&8#~~@;+S%7P;ANnb~oC!s&UZ?~DPC7++0LAEG*> zqa*;p7ag z|7axekv{0C->v4#RzpVOJSOgQ@jXIxt8Qhe+WW#n=)Ze-G=Y~upwq5YOYW;UFOSs@ zv*o<-wL9`dzTKjQ%L$gcE?wB-J2-oUopI40L>&I@H)wb2Wkvk3OuopHxn1PWVx%Po zylD^&=p%RotTVCXNwMV}5!hcbHNvrZVK{NjT;MG}Grbk&r(?R=X>_Lh} z$o7bvitvy9mx^K!WH0qz)uXuQd!}iwx zXtcnvVf!l=46PwH+tEUTB&!z2r7A?UbC{esA3AW!${gn&K-K6?<%U=!5*r=E^Ae3Q1jH#0XLOm*Z4KIB4#gDQ_xlfaG78-#Fi(`0a)iA91o?a%!N0s*n(x zJZ>&zr#W*q%(3ziZL5vmTlT#I1&)sxl)OI#zi z9deA!&~sh%;!-#OIUG(bQ*1jO-AfOJIs-A><7lVD>m~R+>C8Iapbc?UFk-QEiVZuG zgFhjS10@zNo*_qkxpVp%S!Bp2mq+OO?q1FzG@P_= z1Zoi-`EVLly2k{YihV}83cU-7tTNKuy+PF++a#$E)I|So2TGXe=`tu z=P5|Zovpg;^QNGJP~ts>eh2+<9}VWtRNcVYHdS7zN zsrb02^K43MfE!)d%EON ztVK@6k2+&qCx^nWxY*5_WXKm<0lqV$ZY2eSVSGh`QjtTm?>RJ-g@ELz_3cl2N@9Q~ z1glBG4V3mu)OkJWVeEC;j(J~=M5*b(E^De~iQ_7Zhq0UjYAl$)rB_bgBk8g%I4u|< zn^*)SUtor#l6>~0XSABt&Y687QYM0=YdO!9Hitz;sELstM*+p7KFGfjnX~Ts5(qgv zb036o63Zp)`j{vxB9?dBOxC&{5`q;DLB2!)f)zwq({ap1^O_xx3q>9x2wQ&p8|ds* z>*O*0ywI~e?GA2dsSb9QHqhb-T3r+0uhogj|_rfnRt11GXmwq zHB`r~o;>9eVm=NF7az!fNL>A3^QV(4Iy`oxli3nJT{|p0fJrZEV-*pL9NK8yOCWL7 zq3Le481JEwBRY$}FX~U>V&XIJq&?gNsV7noLcV6#G;)_0`LpRfmuSa9a|vxRyg%$) zQaRZM6K(WTTxcz154zk59BGG<(QrJY-;Ix8{2H5!AYEf`H}(5O5`9l?-0qI5k zNgj|hHITVThg5@FQXp!2$#m8PNZ0yEuJnQ{lSncbWu_@^Z3pJkix*7|_!zlY>d>&I zMF%MIt1tW#XXV9Kr1p^PuF`qZrm?&l2>YprK>mgdb#EYMu1H6E9C9JuK9yYnOu-af zwCxZ+GmMEE!8IhsAHTDekNq_9j5zq&s!Umy;AgK6Fb1ZuLPyBd2;D@NLC@iZJoF`& zg4sJJmbv?4Hz1)-H^rdiV$DX}*-=0Q3PcxbTzTCX!o78uaZFNBNa9qG907HZUaZA| zmdq6Pq0nUazRoV)r&bTX;#6gSv>wOpvqi!z)d{N2B`=YZxb_9Y} z-FOv%a8;^_bpmG3s@P+QmtH;nnWqn<*j*i^?l@FqZCNg_b$XCqd<&z&!?+f^AH!FY zBxrxcp#SRw;=p$mo*aV3Qp84^LRg8Z!|Ra^T0(fqrg5{5D`VwCf;@PDmpyOaktCtFO67(HbLW1~@Jj;2lZiY>vIR!Hx=5@ahHXPF zyd0LmKN~B^+(6cY^`<7LX)sw+iUW1__Zf~D%fkS`Ddp%hp9=D4UJ?3edk9QvMVXVV zX$A+40h?mHnDAU@IZL-8M5hdz3vQov>8-VkyB?|8W_G;u{Ef{pl7vA-7=>B~#1}xr5Uj{o`wGHG*?S=$j}pS5)h1{fqh-g zVqfIxFqif-OUXDB%bIHiXBmn>CMdKFOH=P-w1}a3j=%OUO%2)`&5%k|LRGyewuHym zhr>e;^8C-4j-(O$&%ZQZJ_Z7(o2@W4xVeVrB4aOyv!$Ul18%rS7XI|P$u%07fDirP{$-6=A z@fTk^=5q!5_`rjPXMx1hgDI3UF&C?Z(?l?z2h*rX?@-LpcFN;s3sov6QblD}+!d(f zSchz~+3dC^*V)kGu`nz2SFEOwQ&Lxz{sNq0md@jLk} zoR}1$cN2_H&q$N^GPVHj`beFk0N4B`p_vN2=F~taKw~G?V|fYN&5Xn#NXqVN$vZ0&v)&Sur=QCJNj*s)elWJuQqB0}jM5M)ge1{rnn?vXbhN&z zIXWAx?5u6Y$B5Cchs#|XXvn-h#p5;%$x z9!c~Juzmj&qe>xLZtsmTWY=vy7|zjEk+S7Q0CzX9DGuFZ0%}lN8les9nDU)v?bxSr`5%BvFb@N0!0Q;^ z%WH8^Oo1O4aMT4y>V?p5M`_3+|V*0{3!VGo8tV$`!OAn*fxr+M5 zkkK(^>ZQ$POzBVtncl#ptHKx%^q4^fg0!cYJ;^^u1+$KJg#Bksq9Lur$FY{mp?<^x zmU_j~m)&k4k{*+o=4FAlZH_cb*0W7dxPegOJjmT=e|Y{ls=E>Xs-L-9n!Ub#oICEx=f0&}_J!=8 zbQ;%07I^KgNd4im7EDb-3F**dg~x^z3E4rF$U#Q%VCo?9xR!M3qUN`VS>2(HW&KB4AvXauA(3niTi(M(v?mZni7 z&L8#SdZ7zJaa0CjQ4*d$Un0;7Ve6kXh9jCfC6H!umj2%avDUvw;)o1Gyt6)+eiZ9l z0JE70Q;2IV?PeT)Nao%xo@95js2%NO1D(jK4Ar})$IOG&+r>u@6tn0OJyu!mqdKoL z9dlIQwY`AIO3z%2f0XZ=fDXTGT6Asilq(kR%jNJ2T`ZjqOU`f$*k9+Q3bngl6so>o zUY$C3Dq_V)Gi8%&VSf$6577NuQJt&E7igUGKAHWx5q~x`w|^ht)!@EF)H+m^WSY)- zn@!GR?2D6VT{79-g@HRAa3Z5b2It$CKHzqbJdUQ6$MPkip>hMuRMvgJkE_KGC|Am>_w)zdhFLbP9GJqKy4|1gsgoNv#G(qArWHEp6N% z*z0yxONXQ`4Q$m-P#M>Dp*H0@b6HC{j$SvEtK>1(iO0_{-mL$M@f=8^pQZZ+`H^3t zF2{&or^DM^rm}MxP$vY{U81Su0N7}kbiYK?He-^!*c$uY8o+fY*gKMC79+gNd=KLO zb^WQKJ*iP}o)TpAxM4VJadv@%?P<9CJTEde!L9#D9dfo?qtRs^5I|q!Y5m)5U$M9( z^8RArN;@J;meV0fnXP_+Sf>_Bqj-NxPwWHTr0Y(hi;Eg~#+?P*@>HO^CONO1Z@qd> z_c0kZJ(#pV0epgKj1EU=<~3)nt*stiuRbv3W6Nxv$6e}n_sGrT8_%}A_Xg6$mhX^a znJTj&I$$~5;|w=JZkaa2{pB!`jPKkEwvsV`C1Vom_}Ve61j1#sn$eqhnotHTZqQ8R z6C~MwfgFKkh60~pVw5v78Vb!5<0OPLClwkS&fHKLXiCO)9H|leVM) zwATqHYS1i#3TgNqnc4cZ;(%~qRN#Gbf;OuIm;BtkuJl2-@GRPqZb@BKTGXN9C8M9- z*|eQ)mWxPj7wY?nH5wzsy02K-(GKB4kEof6-?elNeOlQI_pJ4PrEhrr_uQHpg3ZWQ za8d{Un3`0<)aVrIr6fbk!E{4 z_Qft-B=DPF%`Wceq%p-X&tvrl(`R2k1GFpa$+rZl*g(hOF4{XON6ZS#HY9@)i@*_Y z<5mXRBi3OmW#&dhKcgt(0!K4yqqL-(Z#PK#J*g_c_w z#mO49GYLHZBrehawa!wBDvd4$i!N*EI$iYikYl?0vLiSzvfu1Z9sEn>4P)jrA2bhk zWPV{cuT|Caf8B*p+7Jo@?`6g&fX;7CrT^kEj&%WD*_wQ3mD#=6rJU48c0QKzm@it* zlP1Nw;p9_DI`6J!LMSWD(s8u8C!bAHv>fjSIYC8CU zsVxewBokfq`EgykWR$kKvHwZ}Z^$TN9iNG2R59?shJ&r$NK^J#GHlI+&?h4b3bY-U z2U!Y+6l&pj3xTgzd4>?EQ48T&5DqB8*lU9tDKcox1~mE- z*8cmeEcS!Ax=o94#Q3DYS`DO3goO4=4b^%AaHE=MQk!)YSXOYRF z2XOJw*ZXU)lI85Lo@JJw`6-a>vy)Sp{C$;q@_<(F4oOy`(bH>;i0}}ZsAWm@7<_)< z2duKw*cLM?P?}q}+H2n5ExD^Qa zItj_|FX>UgUL}jo{lk|vxn_+6AcPZG87mU5)C%og&NHM^Rj3b8fM9awKZ6{a=m&PN z3o>cBNq9FLfwN;n_be{nf&6(k_=IHaLhJNc%6mpu=u1raRLmzykqTY+eZ<}r(y|>< z3=zySH)dgsZt}{F?S+&*I9>u!kQw@dDk7c(GxPrO`}EDDmWc_H%fY;&KK>3A14hm^ zG!hmXpBU@q3C{!7q&K=nqd->Kn8>+zJbQKB2J>hNdd50Eny@;3GqpX57Km#m-p=X7 zLe2F~sihn%z^1Hz=Hp97J(+|C)6Vt0vwlUuEo8W*qYW#tW#i`ZoVQi0j7w*i{j5%4 zRt@{+v^ipK%{gbYE^96T1}R@v!lnLgLKHBX8DlbCVr+m-+(zynmdtIu2{2eEjM3Vk z(~)TIzKGw)wYa&^ym(G0SIiZMYgM26w2F=({XzP;PuD`~obzTF#qy!jl1y5;$^AUg zS83jU&|TAP3!XVEW%gk)g%NujbAp&dNJjDy)Ku9Ag@{zbK!OLE(+#y?H<)wLlFQ>gOUqw{xHSkYsq_beQ84h9{v$AxlI!9*qc0s{nhs4qx z#I(UqsDheITZS5tg#8NscX$J=fptwZ#R=CpxQ5LKvj!!L2h6Ge&?HZfV z4nm6WvosF0R~xe-_t-i2!}swhXN9~{_BiPwzfYlI2GZ%AeayTZ2Jk0wbRpgK3i|J} zPM`h%Uy5McLose5w|aGsHb+S7W0p{!+0rqAxA6tq3}7hPD&)TOUG<(%qD6FaQgNFS z-DP4iMf(g#np1;5L5Z`cjn7C_!kTSH?Gw}nI&oI9b}^miu4@RFu#d=fi&;kMqP&?Z?-0}zE=vHD$I>-WGD3%WwL2U9QhgxS zEwx*oXMgomn4HvJCx}FF2lKeSdi%ADM|Bp;Gr1UfBjLV#>Gq2n9Z>8BuvS^*nv4Vr zGvt8;1H&#+7V@&W>4+=G)T?uI*BDLE51H$3hBfZ-^oh_)wL$)Qg7Bq0Q7AVF&%wTq zelwOfUh>s3hhqAR}rD+_wmL|9>!j_;Q#VzxMjh zOcQ{OE@Kj43pu7^0BimL=kf_}P@9!H;)sJVIOL7`6d z^=HTQ37Vb7X~8cRXhD*22CHXU9LPRM!EdrTQ_Nu>g5 z2EXrN`A>uX*rM)6r}Jp(28HFX--~G>F0PYMSADBmAJRxAWX~o4YNR)h?E{#B)-2#Q z@o2|`dy@>%s;mbf4V$W&HnUc<^D@9$O$aWh2USN&hN@o-lg@mHg<+D6dU9u;rr&?jrSsmx9eRR$wPbil!>6(FMI;wRWV2Y%tF(3!+zRB>I+x(jO>Z=>niLKCV_3^ykDY>?WqT?`D(=`!Y6=WYm zIB{S&f}7g~G5fRATP_hM!%V{FkHDkN-jK`~B&PS9`hNeV))dliNO>DnI=jmfj7$H=aT=-pz4cY2f_!`3I#}`t0_LUG4Wy^DmqwhQ}Wsx8E_m z{&DV^o`dA&WV;98s7t5}-9?T_ne4u~kwF#JO((ZDaZL@_xolO4 zx-QVzS8Ph^hdh7!ngW1ofKro$?PgBJEmlzmmA*Jjj2DMQrBgyij*F_yS&Ygel(#u^ zmOPD1d3ERvcQ{LR<}jUr>qfelH5@8-IWJ*s6K;f8!ew@m=Ud}?*06~W{P}-UB(yO* z$9ppW=qfsl_5G+p2-(b;DnR)!XMVMvtNwHAY)u11`^TQy4@U*e>3bti)kXK49rpXI z;asVEd}?&++0LGHnWnQ8mXN`qO_rG9ArVYz&#K@rSM_L8t=uU$vgXvbH{K?6cV2zC(&A#H zG0Rg)vabRB+^y{hxzsij9VW%ZgrS(>&fi|vmxxYY6g=xU`^@rEQ~&UO;eJFupmz%C z8GJ}+k%le+KC1}55k7%eMxT`hm6X*>M}V;tYgLhMS9BoN<~@xnflXqE`A2dr_*2|C*C}rTb`%o zVonkfGgBz=&w1bTDtj8aRM5wqz7am{xF3~~1AK@4X#q?V6-&ScU0Bm)WGMVG8%Q8U z+OQvEu@}X{*$>C>iPGJtdZtlmdKwX>Shv68Rlo+7jQSzah|ukT^!9=l;j|i8!`xTj8S4 zKV=1T;_mfWx{3`!>HlL{%N8v^{ZE~|!nd}iVkBQ5hdXsA#20N_>^vWAE+`Yq=YE|u z8dF;qfK%V8=}0@8qO;d`X^URG1;}tcXj6b#`4HgIb%ms+1#%TBae4EDesx}|#tYx! zZ~1&Olib@e7aEy~GY*($7;5VgIiIU97GDZEGu^@G&_aKEVqxlPUy=rSqa*UY|BiOX z4#-mL6v?6=ka;ZmPfPyPKpM}y3lB8kyko5QhBeDY`y#0zUX?SK=j98nodJ6&f;_*d z;}+M!AA@f)Wf@AX;kch$&n>EEx}HK7jswfA$dq?Xa`V9xwc~=HkBPBobEG3WZl(oq zQWHMjDZxda1dMIoa!Db+wxZ>edFWAChPt`=U44m7d{PR{5nFVsSUgcF-Kn?{c(w@^ zK$NYc1NkwcQmyt}S8LK#vwXGP8A@iG!1A+zM$Wpm?CklVMO&VZ`?fvIyZ~8^;9&!f zk!6UXio|zOP1LSeRD_fJE%2?^*PLueb(94YAVIUk#F#`z()NrpUhU3T1-#V?;II@; z8GvcD{?w44JjMpWx9JLK5bY*yGfnWO-(m9=v#`vttiM1I5E;WmNAEGFwOAIt!*r;l zU6c@WQcfglq~u^7_e%riwuU_gG$b?)qq>J#sLmP9W^Ju8GbPus>z4>kTZZbl*8-ho zY{=c|BJU61vlueT-7qGT(xM`$u4KakN#T4^uUhAwI4R|oYtEt`LRoPLQ9)qs3yejw zzLZf2eG>nlVk{6!S;s@vq^_(!|C<own+Q~-HIdaM?^lhw3AxjB_ZTH$aw{5uITNtBs#pd3&2~i25sR{V4l3KlIdOvd zCPcvJuvL!CZK%<&+z=<=5cBDOzyA0|pGKcC%5fBdUT-dXLs$I~wr{+L5t{icRm2Y& z92K$cS=uGtH?}nQU~<>NkRxS24MQB=$-F{c&mrXez?FPY<9SLTBR3v&oeUs68pT+| z{=vb%jjaU7JuLNxs{NG5O5a_D!NQ*T&w7pYZ;A`**!e6!;L3D#o6DxEarbVl4!NbW zgfMgkg6d5MWxjlO`ub^a2?MeiZ3$cAwS~yrJ8a7~hUREVb+_hUeRb;;x5&oVK+~fa zUa)-YJDAziL?Ig9E7=0~$ zWHRQ&$Ir0-QbOOLSccv;{=^nYNy^i^20XDzg`uq5eots%nGK9)#lnlt~~yXjrxsxwu@ z6?A}yxxqM1lL0)gUqLQ=}1VWZ>E14Sg?)c=%3kEf-ScpH7a2do@YpkaA zijjA!ie4YDf}cX`pu!@9AV@Ir&lX%J0(DxGIxCLSb)KD(xFN+p%Pl1=8Ff1ejrpg&`g7x69YeQc^ zlcT;(SV)&=s2=;n9(6s^qq%X9FRrc_!0BdlvsyVo1FR|Mh*{g4c2hZX{mfC`D8l4Q@P9)TGHjP5&J_G`9Co{HU(gGBezt~9rVtCWO1jv5oXfjW8= zzKMtKLOjwe<_wnl=_y;+iY^nYYkXQ8&8akgjg1hL97PBmE1?yK@Hdv3BC*6O_0j@I zFi)N@1?TqXiQs9!0We*O&tt4$7Aim2F;&t&k=7zB@eyH5c#{cff1+hU9>)6QP8EcX zy*k^6j#t(EFOoh-bqDC{s>%0Yoi}NXVsBrq0SvdSXPt_h)@#Mjx#Wma1K}0r^n_lq zo@P!^BW}ZZ@~wItojyCW_!VMYD$Hi|l4oYjaPWHP)hFn^%RKvx3pUA_tFXzIVKbQb za>mYw5K?Wp??Av{io=ieN|`P$@Q8So=Oq_OgSVuqG(qV|-d^Q-DJ8xn{XhS7?a5q~F*sfs$lI=eso~qQ;{TPT4zIZQDgpzk2l85SlTbtl{<~l0q>{_A5th7S?C51wCj}Ko<-IDE~Q) z%Rd86kSqKw0#snE^_;-k`5nFV*Axgw5`4bY>;CCu4^nS7AI=`Y0eX9|PL33ye6?T= z!w7G+Co*S-k~HVC-jh?wBkd>GYPO%=V|4#1sHnb8SSM@O8XxDQMJS2?MRZ5o-9HJ= z-bqJbc}K)HFOQ~rWHTt6a!lPJwN0Z2Qy@%&=9p7EeDMB1a25InRc5m!J4tu_EZ=`C|(2IF+y8}dr9_@ZT z7+<6}4i+msUZkFUeZ5e>)&y`nu_GbS#u4w8HmWvzg(@=P_QAb11KNfOR$6Ul^|K(Y z7zr(k%v}}GyV4RUEs+D`DEm}46SSoDkZq8VMVPjgRq2lEWY}QP|00=}crHE6m>Uz< zkrLBtIntp9^9>dmq^z;H@3lOsU)k8EOX2PQOr;zUbW7SRX@?`LQZzA#Pm0T8BV0NP zm37BZuEV7Mu=jT*@et0<{fNsMRM#2C}f)lWLaBMzL!p0Etk!*Z?rknmoRLY&O+Z z;IAz>&=2}X?=Pfeezd&3c_JNraQ{;DfnjjalbnNkD0<|1-^o)9r(*XdjbdeObK9>8 zTZ95)uhopID-fZ(45-o*tJHCc6#Z_?V$3MC63K(ox2}6=bdMRos!+~LLsRP z$xBZFj{l!l;qbE4U(y5(UW=wq2R48;$muyvw8Un-O)Okk?`N+uSJ;eGi8U{>>$h@1 z-8m(RUM}LYc^00TQLnv`bRjC`gdBC4{fIP~D>*R-Psy%kA0L3mu{-xq=#{0`enj4F zuiyUaU`nfKqE6i-q@pC_nfNUB=u^`U8W?EQG9=;gtQtbKsBL=kPH#)++1c!^FZN~< z39JJAWJ(+Thel|MbB6zVmEO_CU((ovkH$Ru)RcpM>U&jT!<~M;xlfy(sb3{IZwbt5 zt&BK;w$2i-o7c+4AeC7}<~e?Q>`_RL24CCiQb5pdpPcE~NUBR21TC+7X){68>1s>q zD8qJZpvu8vbE!b1HgCjWXRsWYnCF2pn73V;pNzV|07^i$za~cy8d*MvFSY=mRmx>) z^?-3fkg-nVW1lQtul;`B?hF^p59<^&|2fR}%JDk+&`w{*4ya>bWlUQpUPzT8Szpd0 zYnAfE*_rF!AzGW43H+Tc+t3xB&zIU`isC8VDs;rot)~h%*=)$Gu9Io6+fW zC78AE>3@0o?R})H143PN#kFeMqDj132cUWkSTHCy*u-FBYekdspN3AHn#oW;D%mA8 z;CbF4C!o3bhz@<@;?v&Q8BOw2=wf37ybz>!?riIrZ{z1bfvOkC&J8>HPE>Tynhidp z5C?l>8d#>!6n&K!7jDL-q%RA0YxbBgSvg-TfgpA36xq2P5*%U|QSgw(Dc-IwQOrCjbz_9QZO^(j5w7*<)6jxM`OS|87r+>}mR(jq)G zLPLc#rkiBFmIw6Ku0`Pv?R0K9?Gvl4>3wGRl{`O32wZit z-Goa!C~h|Lwp8N#IYde<^F4mJ%i|=o!rG4w8SF49q_$uD@y^k5NxU3Bp=Q|B^$tg<~QWXl1=sq5W zFrLIt$ey@m{7GA|1YPuJy190ft7Y}P2zihh^edAB))UEm`|Jm);@?L$^sYRd_}rW- zoqlCiQiZ!rsZRYzcy2=~urv72g!%R`Aei{Mk(gS)w3JvZqdJ}E;saD0acu;G#Ui#% zwrH=;a`7zX+nX$&EoHRXjzrA#eV2)28HN5}OhuZXjEn>MD~^jd_g6=f-a_9mhQNrT z8uT@86G#Ey>4I#x-D@txi;bq_nJi1+cDLdGvi(YR|L|pfZdl{M#{~#C#Z3us(oH!i zuA#!0P?QAoE;bDwJ%UnsH&gDpl8R-NPrHQQ);^AvmyuTiv=U?I+Cqbd$qdKEN(lc}FQnVZEA?aZr194kOoq?$Kn(OFW z`xVBGh-c63jtu*O)w>S?1A1yC@FGadXHXV}2DmuIa+eEpcLIq_x~?b*%yuC%-MVp6&DJEY?7T+xDK*C1OcYvcyV{giB3aG|l`NR6jr zQQ0>d)zeY|RkLyU18!2GXcV7eo$k)i805xjiJfPsiQt^<`}0oJR?yebSSk%)cqESt zkgn_O&4FB1uIzi_WSWxgq9Zh@P@F`dGB1g1E-pulG)u6(?$_z_lFH9<8L83|2&(J;vT?{C~0hD{~ibFJ46Nq?bm`K@$(k;L#>R zgPXGrAfE8;m+t6Ss>te*>7UAsZ&<6h<9e}ao3nj9aa zqjvAhLYJhU-@URhP!Jk{YPKsnprac3AVW{N0n0r?2}Lln9znw{OD2xRfvEQ0i_XZ+ z@f7V3Q++Qi8S`=NyXA25N25T|VvY>Km#nwGv6oFRf@(hZ;UKdV9@o23z1#G?k$exI zGn_MZSIq1j)6o%IG4Xs`sSb9Qigpjp8>4Z-zs$}#3C=`6?y%_CbZUfnuG6e{M+9^; z6y+))tgE7=VS7VsV6LMigBvqVrHz`QbEE-)>*~_V zjEz!HRXagUDzk4>L-(x8>O=Yy^kif2%YbHB{FZ zo2JF{yxUQDkDTG!tAykjfQqv{VfN<|eDGMcEk;8I6Xx9ExT{RXR&uMOv4-VM-|oyQ z*2G5SLV3&dPjY9}+?4x|9{pP4Iw8WnvC*t8*!a9)RQV8pBnsAiG)2co)WI8L?)RsZPV&j*+eTUG$|Yg zq15cj|MSk0CZh_?8IdGJ)G}g7R&PWQq;F{F@X1|H)$$8aWHktd$H^!|+Mkx<5oA70eL>`6 z3fJ%bvLsFHIDTWeUU}J`+tV+2k;|y2C9#CW&i&&!)KD3*fvUlJGsE1PNB*H4%DjDU zRC|X|zi*oPbm0tbDC``7%`?MkoJFA3*2y9SJ|>s)&|F@QKi}BlKUd~G{wh5pJ6*If zumf4X^9^Olxd{Lvap?{`WODZZ=ua`h>n7lVrBLN?y%1C?4lfW#D;vUP07V|Q~Jx)0NU{$_Wuskq0iAOIIqYUbU z&8uc1$0~-pJ6R55I&OaEP@-i_3{_h(tvWL%@}-$e+Ux0z^Eb7_pE1jHs~f&;`@WNo zn~q~*2>*;ReHhiV{wk3+Og(_?d))eiV8FDvKqJrt3LO@|ldq-K15yn@{%c;5dTy$(UO7kfDu*pG(F>Wnzi4?2Bs_*JU{?{XDhkU`?1} zXeJXzqlmn^Z}!5mjmv~o665#^E@E&@zH%GI>c?zV-nf@(ij#(QlOye zi|HG7`wLQJA=#)v>JAld8EMl4>XN@C{_gEpZQdjxo5-YMk)ws-g#sOm>C1j*_Z6}n zt+R*##7er)WsfX~j0W>B2rpq4de1ldsNc(hh_rm09D7 z01NJFa(6z3CkOu1JjR#^LE0qQ*Z~GPi%gZQFNF9GBA9jyFbsV#k-pJ$Hl@2^DAJ+; zz{9`Hy?8s^Wu+irTdCUM$(IX-MPB5sly6exDIedMB)z4EKZibUOSXNlk`&# znL`N#B|Ivi^CC1Qlagz{VGZbJY*57&56#KMiADKQ4fc>|`a6A$%a&p-5kM_yN*%_< z8TDaiFcx{QQz_qpg&a(>-5kDw;)$Xl=nfEp5InYdkePcbV#mv2^w;RolVkS0zJA4{ zFoPqR6a$ULL}Q+vy_6~U|2DxQ1Nrx;3ochx(s#^Y*Zq|SO4bE(P7$*Gd$hY;U z+I~E9iHMJiziE-tm*Lijq51m8tv75kTEJqx$jOG&xmxanKHAUbJaI(>cMeq=o~4>g zNvDEyav7+oy`9T~fiZ4PM9xncIT6*zdFr;0SK`TJXTPztjuYR~rLmNBPvaqPMgRJS z3zxla#=lJWYj&qXEnX{F{bVNh?Ws>L{xJ2~x7*h(;eyszP2Wf*W(~293J0{bWL_%X zDiCfR|2N-Ueriq?G}we3N7qv(HP}cyRG!UDn4NFHXTep{01WkHiYty$E1Z|1M=imS zxZO|qY13HJS)cqu<>1C8@QxU&Z2l?*R+6BOk|=nj464jnJC+z?sSW$;_c&06V`>Pd znItDDS{E7y>q@|%l;LOY5Qr_pTlQ)Z?~6GrQfUL{HND=J*Xol`+f`_=)GGQA{6t1ByLbP4)zrRz;mHHP{KcdYFsC&R zIiG#{Ap(SN|Gypl$&bRfwDMFQlInxOm1zZ>=xkJ$)iAU^!l^pc2X#Y883ADry8^Z` zeE)F5aEQ6ekRw>mnyH=Ps^uJn=y2quhc=^eDFu+nsYe4eBaAE>?D}|sQbigV=HNQk z;vqOV`7{=ADGoa_5cX-1CiBbT?V3V`YdGz;=-sX72=JBukrYui4X`&FX&DfN`tR%H!!3lQ|m7!){lzZnDxTW7i?zGinY7s#E_@M*mG z1U)dtu3Id^AZY3W#b>bH9{vjjVjQKiFXGIDZN}GAy6mB^-p5j{H|`#hmd&7$^eLigSCj1!AUxps3F6I4)2DSs`~z77Ej5S&o)Tqal{>okYzHgjODag#(2 z2KKzmKYwbT%Mri;@DM46bafGr`$J>?@GZ-`OQUZ8FmaPdSsc1L|8sbp38r16(K!6~ zl~%D8%?>t>xq>x@l`$0Rs4I?{li%g*dG2$$as1pLjc zao)H#KSwUANhBPh@wPm;n@?b-Q>PNr0)p{@(|Z=56TAY;Y!PY;sC2Pp04EugNYez}Kwf+;9e%<6V#$B# zzAI!d{fxQy>A}tvMMS0%TkcPKYzM{#kHq00>WD)T$v{n?R_d;Zt4eNIxX8`Bo8#eNB-Hy zZOiM;-Aw^|ylP=-Ej<`&n(SVRZ0PArW3%?I4<7UJR}Xzh$4v)(0eu{~{WDJ*Ueu$^ za^7W6?Ns?)#ahX|I+OcT>k6 zw3Y}5haSc*bKFYKhS4HF<{smb{ec)wg#Z2)Uotd3^a$Lhmj;Q7cGC)#M}v$%$?fqj z1?^u@d_v*tf`$i>qn33HBRSFI766IQZm!b3Vb}09_?xxQ1W1yWSme$K7aa6!)w3M$ ze~+nEc{?nryI3KZVV?Wr7h9DN*karIe8Qkkx36X2c{Swo>8ro>p$a~_X!3CH_q*^| zYeW`EzMEWq`++*?cT`sSxd@5k7*@?l0nw{SvGC9!99OnjT z<4Q1_k}aPgX6@RN-J5m~IxW-;xe9s0##DFLeY)nqe*0RqEUvBYc=faJ$hnK%0m9l1 zhUXcN3yL+0B_o{0)g+jOsc^jZz~dThgtN0rs)6OfZ?TxZ5ks>~LN4FYdtSdm3DH10 zOU1!wdU`Wkkz2M@qpD9#uuU@M^jTy15C5#5_ve~G-wBR99c1oySo@3E=fuyye)(tk z2^Y~AjGSI1SjxM5W~+94K;3ySId1i;eaI3=A7^B&BX(7%#c-~Og38rck{Ds1{V8Vz zg8F9~k`-_`WBcSYQ6-JI_(%5WkCqF?lFf+jxwp-{J|RAq8m@?{RK z(FNCGEowo2PLgFw5vdWcDynFROlAx~*Za*JhdRI70%z%f!DP;ynD3^|!Ef@eKVy42 zk`CMLFm_MWRB}?U?qUxwy-;kRkl^yqIHVo7Ic7#!;h1?8+{JqO{|6z<((iBxNB;`p z!M^rVN=@g9^r9O%3BW8kESgb_#qwphBAMfalOzPX5_e=*&#M2Le(?kg96;XVPkvmwaH4F98!sY@N+u?#Zzz;qKdC5X%oD0$F&Z{fC*q=*+Ppm7$oYh5yl$NA= z2X$MMr0KejZjm&Y)XH=VHxdepEHjs162XxO>E;Syd6IRSSq_(bKbo0dFO|`!sF8_Q zpL~}xo$P23PNNx=f87L^Fc0myiP!k$_}*mOU9JwF_*UEnhpA{_QhM!b39#2UuCoZ> zA-`7tclmmN(jR2M0ga^WeO)-rYcs zM|$Gp{KPULrTtnJyx-s_FQa8x%VTtRBgMS|Jgn0KXCaUlvM*%LAwjJ9Nh6m`h*6BJ z>I@cSfWamN*Inn9zR%n$<#5(>Xb>QDiXP>j|?JjgQTnJd?C2h7!|`ZvdyLA$45W)a4k)5dTzIo=}w zFLGm4DmM!{YJrSVZXZu=pA8c=;e_0*k&W75Kd!lB z)W9BtcM4G!XzNcFr*ha z(41$2M)ecW)w6D2N8b+t4#xd3^y5CX`n6$NRAs0OYi(A2gZ5@d8(`7t%p$^pwo*W$ ztrSpbD+P`f>B#Gj1_V&>0k(Qzj2o9&`;kRY&(xX`Em#(`V@Au+7yDk5o#s9ORR!6r zq_weH-5kFkJWriKLr;}YSu$3WI59%5gB~M*v-jDbzuQ!e*Ca}n@K_wAr+n_4N!6mk zu0687aIVdjN8gGsGeyL~KW+`jbZhZIfCu}m^X?W;HI%G+6K}Pa<1a#+v!71b0?GvO zaH{gr5w8v&|7HeO)VBk97CBTO=#eQ`6+zcL zWj;v_DsWs{-8sQ(NhVV`MP($_z!Ov6jVxFS8QsKnRen2epqv$LLH_h^w!ndlNmWn zpO=cX)-aWX%7j@*>!Bq&IC`E$Pb3UwH8I!J;tf#a{)FFfvrbaM&z}%orgclN-hZyx z{vt$FRQvXRi?Av|Ly!wq+hipbt(x|sM${N_;|hEG(7g5;BHMiYX3mfrwJ3Be*Z~)* z#}y*w7_}CjAvBTYUH87Lmy=OMX%a5=myuMfQN;ni{do>4xD0)rAiW^s4}OXa$2$HH zMW^D<@j%sb4Kkn^$)>eOqWQx-6?}KA$pi|Fo7pf;u7sGkJI_}!9R+W5mi`sa8d?KaJ<|buet=D)K@g(P z`_fc!c`70nRT6hLGbTG~~ij#nD*KK#x7_ST78tv~#wzkSwj+)il5eQ-3P z|L4ee0MD@T7DUV8pB2z2z`1{yXm z=i^_iQ!QpO2@#&!2{d*P;KTNR^xajTwrzq)_UCKo4!>aLB9C)WrnGZg1`Oo7Rkmo#XTJ z%RVZUV(rA0gSESd>KgCo6p~9eAIA39zI)%g=G6~QSLfPlJOPcm3nx5ir)G$#gZtN4!bJ38I8xHTrLrI zHt3F$8k@B%xMt)_n>6*^#}tpfV_$TpIEp{VcXN5ujWpq-Iusx*b_n1_Vo=@gJNvR% z5Xv4wfH)-f8F08^wV4?wn@%9?f_5?UtmH5;k<)Jh<(rAKetQ5sqQ)^FCU&6ZYb@4Q z8%~&yU>^(mA6;p7SlZ#L-?a1PiHdF*g>VaO`n8C4zq;s2yi>nBmlD)F$^fJ>+i69G z40=2}G3zQ;{H|ARkm?TN4?Z9JJ8ED=(jMUNmfd7AhUD&03v|=*CpN?t4Y&E)PWEvh zq1>XfmHL|}`kr~F|Lsw8?ZG7am-8GKCobB44~6YtI}cfseI(r_v?wX0Vj!dmC60yN zNHh}1LvmGA6^#ePI7_OXr6$%aqj2+@Et%?AJtXdvZ|1?Dmnp^7jR{oWWC{X)l!9T$ z#IbSAbKt^-_v=p;o1LjQZjQ21kbH6X)H*ssa}3)2-1ur!*W03XnjhcjcK612x_Ruo zneGR4JOFr5WEQaNmIa%Y)Z{(9ctjEFAbwF~7>xA1 z3uFtUGSo2)kbHY2r5KDJcmElFp&QcoAf8%VkB_E96}bXMvphhD^x1@rVMh{r2pw}e zAkOZ!Izhdt=_^GRJKb3kf|f9&rl4aC5dfJq@%AF6e>6NZqwQ`#H46*wI%`eqUH%M} zq&7QO<7_FVyCDn9|Uzu@hj zaM!nA0)lZ0sGoeBknE^yHJlg}kP7}ueO?NxyM1s5atwKy^@~BWOTK|4ijkB1K2TIk z*A%TXFafh9r=6(N9!KwDoji{H3;|B(yQPmK8IiHz7a7V(cvtgt2T!eg^L?G}{g53a zkjanJD1*hysAOifs((58)Bdy_o665&^j8@iRx$4^bdTv2FY~D>E3(L^hzC8m;nkae zKsJs6cI$4PwJ%0=jYG%3!ceCsB3ait&e>z1mcQencxslJwY?Ohv=h2Fgw`U!f> zX07&vFE`B7Ov4>+ivA%`7^Q+A%Gst-(vpHy#40L=__v&QQw~?6cB~J=~5#1_* zi5aGN$vjNNvnDe(+v61(tJN0m0x8OW+=e+tqf;HS*C1(2)nJgqlGys&O-YLvB)!cN zpoosy&$LP`%zSQO!<}51%oA@RZrBGRMN=N5h8H80Wk5+KiNsv~Y!_g)$84xuG~tZ< z5QUPG(t3jHGs-O)C4Lknv6#T7_=$XxTdr~UegO78H#BawiPnORXMV&`XAViRldf>c zq8vumV}eK2e~MEfH=!(wIyNPyif-qWgp?zGcnbPB;tPMwi+MSx&RtNHml@f5r`?89 zEr9G1st4zGg;I<4!tz_(Ft)S5w|ds-CUxJU?&xz2Svc){M}I#dTZFcLhD!pGJxr92 zbWcl?+btn4tu!(WQGKmqN&A;VXeW;F7)%!M4Ptl+u8@S{lfU+~X?>_0TGOzeIJG?Y>e; zBNwiZpuSxSmHQ*@HD@NsIh$!qiU^;6Sa zciUedKXs|eNlSud6wy2^aje`*q-p2O=mJ2luuw=%Ca4()x{-1Q+ghkZCpfLeUg5YW zC%eKdF((`sdP8noWe6?iU?W%%tb?M^+D#lp6%P=jD6qnw$gc&ymGChWhRA+~MkVsB z(HIR7*^~4QYHJm(19INnPWqFh9k83{N1G6%{gtwWSC4j;4v489)eXBG>tC?qYDcI4 zU-fQ*vXe6G^{=jaT&GA2&AbvV|3Q{Vzd~Awy@xdnUw`X{yr7qMJ-rOv7^8$)%WA7J z6GNkZA#d^od2wJwr9@zxOyGlYq)0Go-+dgtKI6LOK7HEaqZJkt;#cV~M50QB9>a4! zCPBiUQP``&HH~Kl=%=9Z6H?Q*kBY?#Ni6>SayS5!*&We>koFS0I^aQGdS>y85s#m} zzISM3yA z{)(m%m*G~TDKH>%LSI`OQkD(+X$Vc9jgG7Y%6Vx#D=W1rE0BnL7O8Ul1e8=Ui;!_a z`-0NVs0ktNW#@z?1bxaHcFF|Eqd@#p^@&zc9-s#sXWVIto9`ie;PKrDP$mtCD?e#2oYN&dlM~nJdCfSkq%+59%Y=^D915?gA1F|FA4>)wR zNa)#MPo7vLWZ3-I7{7vH3z3A03IT!|aFkdI`)*9se+R2R$#smma^?*DZhsK|%2^Ui z_qhLq>xc=@pKq7|)d}|0%ff2B1SHIf_%>Lh_vX(V7mz zjB_=QBVVm))qn_73GjB#n?>3Bnan>1Y*Mo`{4|q(@>*J1%AO>0FJWNFXd>`3i69E# zH~i}dXfWg!1H-|*Ylb*}1&xW8pzd+)Ov8q->0GkIQqIWM)_Tk8st{46p?XS=%C&}A z_pMijTJ?gEm%M)YJVN``nSa~QMrwLj$GpA?Q&5%hXj|zd5-O1~P#1k&4zG!|W=gT=OA=6b-C&*Eh9`ToBc_?6 z4tO!%a-|j8plKM8f`mewzkkw;Hg4V8$UYG?<^PHbMBy*a+sVT8OyEMT)0CrI3oU}# zENFRpJ)E#MJi_BrB^xCmx*i_Atj{U%sc*U&`*q03LAvX6)Bp_6LO_qIBY%~*Ef332 zr046Q-(!0rUAp=em3r+3HWW+~a5UG^2V2X3C_4$siL_^+jOrqnQ^kVnwvn}~=X;UX zgh&qla(14bKF3=u=#oj{aX}L3NGNd(x3DJdm|dv!S~4##B6aFH1LuYZ-3N6XNG3a0 zAMxDSi_P+2s^i+mIFdA*0*_(ra~RCtCnD4Py+Lq=>q5SbA=@G$(LkO zIA*b^=4fR3!wd5}JTk6|3hZ8sWhola)t$`d0+XQ)2m#?L=GiC01%l~P87GVCK}2^w z@fm>P5%CfHK6WSg3xdzyhd3c7JmE{7?rEBoy46iC#Jx4=n;~^%38yVFPfBMAk-MqH zQ`MDOY7y)&Kj5Dh+OM}CnNP2jl^wx>5vO4~XnS6|$*_FNykgW!iZew5f&uhk5Gb1} zw*b|$dBJlsY>!0M|E@*~*->8*Ivz|WOrwSbWL5%Kd0nfNx3JVuUdzIUslqhCI8zE0 z#Sp+@iwH$wTXNHS1@d7E9!`Kd3VBhcA8^vDnkrA+R6&zp0b-k&ED4Kst7TxF!i=^ zq9xrC45pfbbr3dQC=mWW^)>`dSGX_bt!#~eoEv3-(rwl|@HTJg%*tuCQ-Jvo_3gN< zizbiFZf;ZvS5(N%n_wP|87p?TBFLRr!gu;DTQpyt#CVVwzu@OpQF#If?uP_gZ&b3!Wpdp;o|kGIi=a8F*6V|DgdHYnDUDZg4>qU0ww;X; z9gE7QK`vjOLw)%zUx*A)RvdAAsEM;Lk!ut+Bgw6YGLa`)Jh-oeX3GY#bT=}?hp-cfy@D2}SsDpWJ@?p`H zDfrrp&vH{sqQj+{<9+xiox?c&bQ4;98_H(%y-a)0?HMV$W54FVsJFX--@nr4VS zE)1&U-&6h1Y6Dy55KQ|Wc64N|d~_m8T-mYUO*)-!cj}IH2x5pIY)LSJ5W6i(sBv(I z^sy+GefJ+wPTiQikufC=Jzwf z)^K^7RL>Yct?!1-nfwz?KoYDwMJwL+N8S+eeiFhHkC%l%WT-)JhJ4W>-tzkNam6XR^j=%t&# zoUs$YlOJAj+Y8k^QkCZNB(!Q#al&=@D{|&J*CE*^Ngnq{da;jWVqrdIJ*Y?I<~Fpi9(?waLuAUV>v*Q9D1lB zT#apY9NIWH9nj0)2t&HAcvL8RVODZ)jUD;kS0db>EC}Y#eSnrZo?*)B%a7e8P)y&7 zpU{q#wTfu#wOHE`@2SQi%Y{M6UAs%uCkHafb&-kvLH%sv6cf1HlFh zg>_3LiLU{CD^A~{-iEldeuddI@S`n+vu$wT=dW%u`*Xr})jO z75A3d?Ij**Fixb!_Uj@{#T?2;@c&cJjpU zj4i^W`s3k4`1&?{Qa=`6jXyUyM7&tdfBMapnbdw}RBq%cQ~O5vi(4>4-$;=&y=C^5 zW93E+V{10_Ifco8xO&zbJ8-5YZ%*Kg!b~T!( z*OAR+5!n8M`*`m5lx-^h(9cC*Ou+78vv>4o`l5OQIEREHEzzV!Hr@C0znhvXKQtcw zY(B3IxALXDGITRX{Pbsa+#fH%2M;TM95Jj|**l+hSHhQiaq?=d3f1_)kgvN_Qrt1VT@IQmm8>U2tK;=80R>^1L_QWN?X|7O#Uo|Y+8Uxuhrc$-oA&xy7`D6? zy>SjuPx+whcGB*~uaS`By2#-!=V}QdRsH@!r|`n~*nfHL`@~{e;u8D6e^_|wKR*5M znt|5^O~2oy{NpLj=dS+f#s7&e{Vqn=_;iupsnNCpJ|3}4uA%V3W3dU);rjcJ0hr!D zfQ?bgM;GH)Hb30b_^wd((^a9*r*O-S&C^NXU%8+ms&Ma+{O#~L=Z@Rm6gKQ<#!kIB zyZy>a-|I&Mw^!cY-umvf+aE&JHcIwlTK=7{J06W(U5t%^*)wccZT$86<6jqL&X&(! zQ|Yew+1%p#J@Omtb1i5(OFcQ(0}Q zE3~|k_DlJ4tdndoOKk9?9nk4lOq=FQq&`$LfHv4GpUK=Rxj!405^~WI;I?hY%MLu| zYQ7PsRfYu0pHVlo;O!9wNFy+uE3z2ts;S6hN(qzF8c1dUc!n*&Tv%3iY(YW+&=X8J z!vc2Y>0rOZ1&;Cf?a^3IsA+gxTL3eMTk+tlbq@a@Asg3&XSR;+3f0uEUc=@6cZU^8 zcFeUTq%qI*l!rr=|Mv}IzHm3>3YfOr@LC~z9P@ZXNe*Gl8ffWP*3jSmagSrde}-$1 zD%AC^RjF7#1@14l`an3ax@8cTdhSmVse4U2Yi0`UW!u#d|{FPgt2nzu_ zq^U0yv)Ywh9ux~qLlgqbOj0L|jLb8~Edyxcz=&v_6nI*QNvxdxAA6mMel~QJ4Rk%F zG4gqv_^8T$5)9yN6R9s=Pt0gVf#tf!tL~oMMjAI*zVs<&f%9m5jJdHf zl^ce(vK)Ezj7n%WDWqc|%qoq>h}(kyDLYI~3P%SZ2*V?0Z?G~}0tQ#?Ubu~(;v>vU zPSvn8pX_C-i26$5{bUC1O?}qHaEM!PEeQpJ`e$o;lF7G2dRbhKi9w!9eG{yQwt9Me z(V6Nl4Go#CY=c7QW5@Je?uW$S-l%)FXg%Dt!#>V(JV-uFP4unWtLuh+ZiW$Ve=b9( z@l8u1|mrS2*QeppsgE8zGDC^ zp-EmH5M{&ULX*y1HdQ4>X_5JCht14qausWq{e+g%Y2e5527gGIpBnrnWd17nPc-uH zRQ{sDBVX7|%FAubU!nW~7@1P>uxGCtt)P~{dgy`CfMk&;$qG>x$hVrrC~G7LI^Zh6 zl|=9vmf_X9#1lE*sh_pRhhZ7>U2b@1$emOxVy=$EKXpZ4^xAY2G!NgSRDQb-^eN^@ z7aqA|IXqiDZp~j{@^_m7EFYZqEHkvNA za#PP=2)E%MdYx4**w=;;&J`0xCfNo0$Aemw#Fh|#naXFR(<(~nA z%$Xh|p$O{}10(728)W>V9dozZBbtJ~q!kzphEyFw(D$l~6XLLrySjk+z`WOm%;3<& z;q0L}K?|3J%m81~G)fmB_AVW0s9gDBDohc>`RUIzVi}^MJr9e~Bf+uo=_UUx_a%q~ zzb-=n3@26w|L+!w?|-4$Tx&CKjohE z#2lHS$o(qw+-d`kXp@s3s(z}g2Fn0#(vd-_QpM145F1}sN@5g0eD38;Bc5DZi3d$T zbo~F8sV$jafbD)=&`}^DN?M@&ZvgJZ_*ma?CC#j;;Ihrq5Ex zCN@qdlT)9eIbFa^OBnXNgh?sA_yIc*0L2kE0SF2Ym^)CTYamql@($G$x*vf>3=| zY_FlA{PTzP1tZ?h*Pfk5hu^yJOV1OVHEn0+N3t!`Z|(Ldo*Ncq=TBCY8Nb`3XF}aZ z11qLLd%Kg)z@})r&*RBS@a5--J=VB6?vn=?JUnu@KPt6LTF~zJmr@2(3NSO{?9b?> zfqk}%Iy*r|Y4RJe-N0`tDbV*SqfF}Yv=FFQmBjYdBv=s_Wm04cK^CA92W10YB}EZs z(I&gPNS6?BPWL+c}Cv$r$jv#eNOR?LYLf&Z@vE6dBzPE*^(WVcNg?!DlGz($C8 zuBM(NkVQE5!EFBz!3a*uHjO)R+A?h0q)QZUSM-VH|33kVMcI8`za~23n2uY1wycf; z2d`uBgj#8wn&hARasuW4?kDql82ent$xDLfp%mD3n*ck1tC>)_KPceqVc#qAY+p;Y zHKkb|lkQBdQE*Vi$E7lh0-@lw8SFajbg)i0hbeln7*KV<0iZyPlq)7C3X?EG<6q8} z)?>uOqR5ihvG{5)DF>3g?QYkMB@#Q4rd8a=pFmnsXf>eLQxs?OlaLc zjem>a<8GdY($0j%%uY!0MG1{LV>gULQY{pWg-c6x2rGVPOygtxN6+U4a-b&Dez&JO zI+QECaq+#9NjV99Lh{n3W5r!U#C!eJ&iOJAxjAC6m;Qup0=q3|F|K7={$9M-rZ~}W=q-usA0-XD?o9M9bOwaHC z5-(_UqA^VsH#6;Eh;sPrGe#Mg0x5X>4UQTM%)xl}gpGmkc>{KZ--j5Ejg?-cDaR0C z+2P`kG%*Ik^JT$eB(f~qJ~fG6Tv0&aQ<_SnosfKdP^yMh5!rA&SZ8zI+t+^1BQ!!u zLhOLNS9B?}ePNInh-;jQn%0489QFv}anw%i$Zk?Q7;NPP>j!;XNxdCO9vqYFNx46W z6?aIUE9y!Qa7cw>G)vnG6cJ?=L~ImUN*Fk6p&Uj^xYxokpVSs$8Jd!^y%BolvPJm> zJ!xEViFu0T4Ty+d`7RTQyBn%@v!l*?>@H8p|5zY7)MwKk#Z}uSNq2I)L>NL@R#ysY zQX%Yj?}9sCRj~wGmQ?w4uroTK4M1q6cAQ#)Ft-g#kZ)VSoH5enr4cL&AqgX*mwYI$ zhb`4lBo=4)3j%KoIi=lh1kor|AiWY`U^_3zf&ly5Z&nA_cN{~B>3?d5cN9n_h*&4n zJp2+9_Oog?<^Mp+9vg(RA3i(-3pAW_CH;fT{{n2W_?j3rOf>UEyCmj;-WVY1_))Ta zx=`*Hlo92=!PU33z>0%1`BMGe?sKAev37))tU`Q(p?}^si?fTTEr>X`^U{dD&RG=% z+Xe{|Gc8e3QQyXt(cw#x!)cxBT*^sjECzhbU#I=Fc+!kT@wZ~{X?d;p!BN@H6hP=w zIsVB}H~yj*ss6eB4Q)16i_gl{xtMNG!6}cEu@}iyyFK{9LKn)4*npyf*hI-Y!oC=oe>q< z?AZYJ%X_P?T9MGnjDRFn7c_#13ogq7d~@?&yOGuKJAd20XlA7hhiWrd()&jZNxNRs zR-d`pX6b}Y-g&h*Hi+U0P2Lvto=1GOj~O^v4nKJ5Sg?WvOy(AGq49u9M@x zso(GVI%6gW^ilMJoy_~YAeon%u89h~gY7=)6Wm-kX;FzcB!>(TWq69XA)HmJ>4{>Y z9}a7n=fVjfpV^%NH$ce0Fot{;+vi!+#R_2il1>GSjwz%PCX{alR5|`s${odx8{$N$ z6>H<+UOWt?)MzUe^0XdYP>j!%pRgKQJ(5)l_)rfiQHbRQGT>!{iAQPoO!wnpPnkJX zG6`8_9T-{Gt8-)qV(n#|6QdoHxY$6(QnbH*@mdxdSy-rCN__dDA_y363KR5z>sJA!%Pr61XwgTsEis|2EjEi| z-QYv?17$L~d3qF6Fk%nWwN8DyCC_N7|p3u0N> zUHa!g;In~^sn9`Wf`3f~+mPWHrqquHflC}$5et9!B=?>_M@+1@k-FgcpnwQ4__9f~#x>Tt@ zNsPV*E{E%cvhfB>;8_b1*9Y-*FTfJiy}-9tca21ghs`H2`yOl+u@`Yu8MsGKCgLn^ z@K#An%;PRqN3Yt(feIUM?3I5O+%B_$i}!O-LgOxTS9CV%@{mMtHY+` zU}-6y7KJ9YJqIWm!~`>=;Vzzt7-9<1p?S=@ye0Aiy-l@c6*(BA|HHNCS`P?RgUA zLAY`&42j*3r$i@s;af3hD-mc!Z8(%$Gg!$~qjO1>Rf@y0z$xN$Y}!)#=nlj=vYr7H zk8*@rqT=_(V-Zbo-nn1^{gf)CA|iqN5(mr^ThG}1U$VrNeotvXbwv&0OOeos&d0~G zAML37loL;%qUOqjMTOAkk|MuAY&RcNMnMPKpcEA zMw%mmZOWFbLXiZLSkD1YdNIQO>8;SCR3zt#-g^^}v3)FpmKR==mqyPWL!HU z#h}|*l0*ZkVm!rEZf4p1&Aa;}^?@~oVOS68cgMwKj0c24*x_JgwS_h#5T{!~{*4N^e6SQNCX~_mE z0LS)N(H~sE_0v0#YP}lX>8sz+|60*_dSLSxv7MuxJNG(aLAc=l*xV#=fv}^VuQ704 zidrWct=4KmB?qYm8$>KZxiyKm@r5XSI$To>zAuUl-d@jn9jw2Xux>zs)tL(%uY+TG zK;;#~rWtUVOPtV~pr{Ie+Sfyt`w@H7o#53r-kJwfnP4=f?`f@k*u{&dl6$GCj^Cug zITBi z!A|6@ThSx+db?S{uyRg6ywzJFx35JQ7LA}eVJh18ZnFeNS*9_6H%)Jg=`;t0@m+dp zYCJVCj&e2C1a3H^&dn>ZQBlYSXass#430bd=;GYnYl|31-Ox%UZiSBnyxdAEsH35) z&JHYn$2jup8Q9xCiN>6v6v2>f71!#@CZvS$ydQK%Qyrhj-hBX=yxzI05~`^I%&t1D zWwORCl7HK_4>W<6LcZa9Uai(@s5RHVeZo#eyfD#obdaC@d6M+OG+nqQG#WU8%0}ncGvI9 zUc;4XN|x6T#J*YZQB;!m{IC68GH}S*o$iG=!)0UQpoXPVU=)^fx!)Iz7l9C5lFosw zCu$FAnBliZl)NA!iG<9No0}^cB@1z-c>^``xKa5-^%tEx%|*4!faTjKbM&NVGXd2DpwkCoK5lvnO*VH$)@6fUGX00?_P zcmr8z(pn*tlIv$8oDj1rI$XdJ%$ibJxqW(TzPN)Io7~K=noLH#I2^3660J5r7BlfL z8nle2t{?u5Mo(RltV00S-B4u(a=yA7ovukZoyH|$&(fU&@;e6TS|ll^-YxNt4MlnS zy)~S2L-(;j#h?lkf2Ds~?Tp^Mba8svdEY&!?pd1DNCZu)pwG(cJ#Ch5Up_Pwy{3~$ zUt7*RC+V0zif}J4z4xs0O#rvj7@fp|x8>$H|J?S?Z$C7!mR#K}L%w((oh2Qx<+ zr(xsY{;O$%de!@e=>1%R1e_r)G_2hRanUKAk@1AQvgY4DsX8wZIHDq_Ztmmsf%CGk%P=hZH?+&FWktG9oRU_wtqqR{rPuQQ&E7Ono*C!*MNCx3i;Oei2p7NQ+OlI0M zK}Sb0{w`u70Di1b3y!}r_ zpLwx1r1a=YIl+<^AA+|cCg+~)Khhxnfe2aQn|ei!D^sJD9W?Lgt>!?Jqf>Vs;G$76 zx3S4_*R~)+ku4JPv8I+6{>D_v+-y~P*^nDjH~vq=E(b2EX5vdTO#GQtsx$VT^5+B# z1#~k$Cn|d&SgK1@u;>NS#TM;9Fk-S5;Td`6Dk#!K-FDW%5@H?5+XPQufhC)~KJ}f) zfKc!x1`RMvNsHG36;&1sBx0?wgreFa*X8(lu$J#DqR+*UM}?&~_3C26Q6=ZIF& z(GI_?R|%zovMU|(q|AO@_VPuopoZY*?BG2evp=lJ2Vp0$qAefR_SAHHDi{xx3y87|rke6%=$6ISEhyat*N9G*#& zuDegRw)!<`bEv08kBD@*+a(D~tN+%boS9|6Ul zP9==oO&&w?#-`k_opJ^W1z~zh_)DPj^@neRbRm{To>eI?;t0h_>fgoq}15<`HeknBhAhFG4HcZvzGI8}*=<=wlsPTt~x-S`CeKJeW5kWlAv2|w|J)nu>B)s%|`L| z-!3m*EMs|frfuRTuzHz<3BzrW5n;)CzT$n%z@xDKRFMaJEKZ%$&Gb8p&>2O?;*&_v zZK!A*Sk(3;5R~26rlptM#8y)V>d;s!z8k~@*iq{qMU2@p^Ce8ntll@tYWB^-f5)iEr~S(+W~hx7EsBx*k(IwW4~^heKUg+l*~H|C zWEpuh^-OM)F7dXb+9Gk?a2ZdjTyC$#HdjOcDMn%V&M`!3v_BbZ=yhac+{1MOL`rWr zm#tkwrdlH@P+AWHG6iRIkEGgA&}By>#6njZsSjtOKrcK{(lwgBgMCi=5FuD_gQmbf z&Nb}0$&_l@;guGy<;@AZ66lB`2fNe@argDNMEo}%hK2Gv;hsUpPwmFLdbORg3f7vp z)dHC&bN$;3LZPh(0rmVI6l_vMIw|__P9*qJ)ODEthlb_xx+tl&L0^9cT@+h(I#6gH zB>fC%$9S|TD?Yy?eqG+Hz4mbmR;tSKD4-dr>@aPPYb(2q_}j>+ zr5LEyA{=Fu!<)j0Vr-Q+izAhNlB}vaiAGynkZ4HdH)1{nccHA zo%}NDPso4!2>WTq*|2A-gSJJfQI(V>WcQ+CMwxhE1R-sT7mSqsAhtrJ*sXlt(5P#O zjoHkj<8VZ}%>=|h-LTaWaZ-|8)|Wt@KeyV(XuXIu$)=L9(|8pu&J=JacBp|5?2qg> z{+R!t*J#XE;)xunO(nCH&U=3U!ANkzF09k5GQxT{J57ew7*CXg_Z^GX2R*ak-AVJa zhXpSWi3d?bg#}T89g3Wh#RH*?e@-~pr7MyHfI&HOTHV3 zvIpp;c8ElT>!a-@hdJT|VNW}H;HP+|c`&2(C_CRrD@lv8g+nT+>+_xWaaZ(<$6mhC zYK0Jx>_{L7_85V{^fX*RDU3)zqwXvYS4x@Dl5xsX82ww;UnStuGRqOh~L3XR^o0@TD&BniUW5Z2H)9oDjgzY*U zDzD)C8WEk5*YHOi3efjyP=^WOOI$J(faas8&Sx_PhE<(<%R21H_;4ogPZ{kVeZSl? zuuCw6V-`yZ8`d#8TxwksL75_5C<7cVAKe1V)2i_&oRY%dGBCIIf(gd^SiCWu(Pxw; zaRMQ}mjU#`EUCd9xtYL$KEuH8$?LE__n4n@1VYGHvtlVCXcbvYB$V{t8*-2MY5ni* z>Zv>Y`rCC@AOLz^VlkmV_gZcUr-FU@$@G}7ZAU(|cgefBlDg97j)#~y_RM_A&Ruv- zfL?*i9KpU2ib}ydupU#q(xy}g9-mCFEp4wo%rbg5r#7tj%c4^lgfq&LWdc=LkWTCp zV=XD!uMeFL6nf~38)3;Pvef)(owzmheC=@;*p0@4O6!XmOBT10ouS2kP&n5r`Y@LU-dr4M#>`j8c7D60J@PvbM!);(DJHQ}V@)4PhK_NkPZc>wt#R(8R$Z zDo)muuIg61g!Wq#qxfK4Ua>(2GD&!tLz8G%dEfDHa8goZT|%IUIzKEl!`E zhY856v_u>Ky~0ilkntqpy2|v2bs8mp`1IjQ{NUjg6VcZi&* zL>#v%fX_a;M8Kr!kl&dHA~@S~$0bsQW1G$}C2X0NpJuykdB-6Ixs@JS%n6(*Nj|xu zq)R@Y>yaP++Kxwq#H-&w$l8)zUh5(~nbj7oJl-V@RBLK~@72cwhO-DFa@35#^2sjs zP$0!N2#^)|G_PJMA^_QeYn7Ir(&dh`4Q$!u*)pOGK?Lkg( zSs~-;iNb%qIY5T$I;%Cabp*>A8soOjJblOxNn}ffb{2T_$3mlMe_%1y8K8N#k71Q+EXoJRhwLZC=PGLV?h?&Aen}IEmUkC8G^w6o zz@HI{C|a^m;`ev*`h0ApC1**6a8+pQ{M|78;DxO-0JGO(%ueec$+00T*i~58+@?nVgD@u z8if0bj2=gevFXrjc5Jj;8g??Hnf1MH+auvHFwA`-pob%x37gcO*o24-rF7beEu3jo zinVJb3FOVt_B=g6kuS;XHAM3C_rkCT&s8&r#k+sI%6H4KagX*;!Nj}jYOq%ZK0GoV zi0@zyc^C>9W^nQX5uxNM}(&Y&5?zV#kU1HxTjP>sk6eBJRNZdl0kgxiJI51 zbEnZ*r-p-EsH?6GQ66dw1Khz2x}#6NkYp|WDle(?et2sJHfjDAnd`&SYUri z(1q((FT*xmIDI*1Ov#|!%AHt_OtkztC#~*?`vo?{w#3-3r6B1u&Rjvj19U60F}sw+ z{T}70fz`S}YW-m7^n>QU$O*MW8wh{$Kj_J}u^~$c+*z>rzTP{!Y z?$$AU%uMUA46Q!#XO#2;cjLm^vt9T|?O0>|@G@}P8u*a)V_ayHK#vMJsL!Z9mFqsG z^QJ;8>-4qAjguCpV2GCM9lmLYH4|T=l1^+rSHIbwrjwgCcBvP%BbHzb15SpNXU7W#S?oNqjj?$eue?mT@l z7Z@~8M=Zc2`bLIb56ZoWLRs##;r{3Lo&Lzk6DJ-4Z~41*Q=>z0SEvSR@5!yBie+D1 zN{z2yg#O(U79NSwQ)`|O|9ykRf$#sjyuYbN?&{R5acQy-d*2EVM=myn?|hD;`uVu#udg9#eaqQgqrY>b1r`S_t=pHH*{ibhHB3B`Tff4! zZualPR&Pl`r?Hr5E`hJU*STG0Y99l;&3ym;F(H80pTe^E@zQH?@^8LA8h?k=CCs8R z`-F8^r)#C-fNXp)&L>>@3Lp1w80^2ihEb>) zW-{%=_i2DwwP#hZ;%_OZ{ZiMth;GAM>rYE4+zdDB)t`I9kWe9-dKyVWl%Tmc09tQ? z0imB#e*s`Moa)UKzO$YxomNg~mAE@zNe4vt|E*B*HKjT0|R&JMgM?C0+_AQ51Bugd4t$!h5$FU=yuwjLmWY4+T1X@L%*!%|$cBu97}a za2xO6y@PDwF`443q`<8nd(u~U5LmA`2pYqsS$0vZO&D90fir?oJQ7IdJS2}ENLrye ziQHhD1prE*v4GT1u%?-!a2X6Cm$l0QViS$dZT0x~WJtg$KfDBbBAIkrv@2)D_1RzE zT|{=%6?=;~G~?{;UpXZSxlAu?RQg3@4UoC&&^7@UYEj?gqDYhsGC5i zPO>;SiBd?O;6C$@R{@9ryC#SP3YNYq(U^nov^om895G?k`4&&6sY}ao1K;8;5 zebGFo#~3GUS`qXzTwl+e%#DiNVMdWsD3gOaO4<20{(nGN7k~4jf|s658nH3YZ}&fa z+85=YhE8EO(sK8IR_a9b1R9E)l(>w3l`~Tk^EG^^7{bp`c&X?u5x?=q2PybvyRNsr2C)aT$KuPQOFlXKJs%neK`M)ReA1sx7UgNR zO8amB1@M-psUK!!>_t_*uwJ1K`w+LVvy0zU@Uqd&Y6x}0`b-q3F}+ULEv$D7!q+$j z2D;GN`95BbVTRnZzm@Wt~za>>j@N>!O?4|E$c@c%Eun_o@=Ujdll^_Ct;?q>(4ZQt9P0ho1|LM~H z(@su8i-EvzNj&WSVx?L&iwNNhL=&V_&i)sv2nBAzhY+ZkKbk_9Y--j{`vm&Kiba&& zxLopIqy|ynf(xPLv&=J_wrQ(5ttI|whGra+V~AW-br5X+{gvF6=RNcC<5#bqyj^KMK$oPJ_?UmnJDRq?D>KuNgk}4jbj&CYtOJ#hG~lo9sZwP%@PBa8q7gid z58K0Y=*|!G$4slp8-!ZaU<`cD?fY9{i_(kHTCOUt7zX1;VEhF^3uNGTH{og({J0@V zVGQV8CpHH$JrpifeuCk1t44u3*TISXLq$y*yg{9$IdMRRod-ukR z@D&6*(Z(@Q#C=;~iWl%o40kXp9YFwtt%J^?N=UA!7�$hc5E^#p=RVHGB*>Gi(ei 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 F*#tt1Wm5nE literal 0 HcmV?d00001 diff --git a/src/assets/i18n/en/authentication.json b/src/assets/i18n/en/authentication.json index fcf54b4..93d8f9f 100644 --- a/src/assets/i18n/en/authentication.json +++ b/src/assets/i18n/en/authentication.json @@ -2,13 +2,16 @@ "login": { "labels": { "doLogin": "Login", + "doLogout": "Logout", "rememberMe": "Remember me", "autoLogin": "Auto login", "instructionsOfLogin": "LOGIN TO YOUR ACCOUNT", "forgotPassword": "Forgot Password", "resetPassword": "Reset Password", "notesOnUse": "Notes on use", - "selectCompany": "Select company" + "selectCompany": "Select company", + "changePassword": "Change login password", + "privacyPolicy": "Privacy Policy" }, "fields": { "company": "Company", @@ -21,6 +24,48 @@ "requireLoginPw": "password is required.", "failed": "Failed to login", "attemptsExceeded": "Password error count exceeded." + }, + "settings": { + "login": "Login", + "autoStartOnBoot": "Auto start on OS boot time", + "autoLogin": "Auto login", + "autoHide": "Hide window on excuted" + } + }, + "password": { + "labels": {}, + "fields": { + "changePassword": "Change login password", + "currentPassword": "Current login password", + "newPassword": "New login password", + "newPasswordConfirm": "New login password confirm" + }, + "errors": { + "requireCurrentPassword": "Current password is required.", + "notSameWithCurrentPassword": "Does not match current password", + "sameWithCurrentPassword": "Same as current password", + "requireNewPassword": "New password is required.", + "requireNewPasswordConfirm": "New password confirm is required.", + "notSameWithNewPassword": "Does not match new password and new password confirm.", + "notContainSpacesForPassword": "Passwords cannot contain spaces", + "notContainUseridForPassword": "User ID cannot be included in the password", + "notContainPhonenumberForPassword": "Your mobile phone number cannot be included in your password", + "notAllowedAlphaNumOver3TimesForPassword": "You can't use numbers or letters over 3 times.", + "notAllowedConsecutiveAlphaNumOver3TimesForPassword": "You cannot use consecutive numbers or letters more than 3 times.", + "notSatisfiedCombineForPassword": "Combination of two or more kinds of letters, numbers and special characters.", + "minLengthCombineForPassword": "Password must be {{lengthOfPassword}} characters if {{countOfCombine}} combination.", + "failToChange": "Failed to change password." + }, + "notice": { + "condition": "Condition", + "condition1": "At least 8 digits: Can be set to 3 combinations of English lowercase letters, numbers, and special characters", + "condition2": "At least 10 digits: Can be set to 2 combinations of English lowercase letters, numbers, and special characters", + "condition3": "Password cannot be set if it contains more than 3 digits", + "condition4": "Password cannot be set if 3 or more consecutive numbers or characters are included", + "condition5": "Password cannot be set when user ID and mobile phone number are included" + }, + "settings": { + "label": "Login password" } } } diff --git a/src/assets/i18n/en/call.json b/src/assets/i18n/en/call.json index 0967ef4..1b539f1 100644 --- a/src/assets/i18n/en/call.json +++ b/src/assets/i18n/en/call.json @@ -1 +1,5 @@ -{} +{ + "settings": { + "label": "Phone call" + } +} diff --git a/src/assets/i18n/en/chat.json b/src/assets/i18n/en/chat.json index 833dea1..5d84f26 100644 --- a/src/assets/i18n/en/chat.json +++ b/src/assets/i18n/en/chat.json @@ -3,18 +3,28 @@ "searchRoomByName": "Search by room name and user", "noRoomUser": "No chat users", "today": "Today", - "openRoom": "Open room", - "turnOnRoomAlert": "Turn on room alert", - "turnOffRoomAlert": "Turn off room alert", - "exitFromRoom": "Exit room" + "yesterday": "Yesterday", + "noSelectRoom": "No chat room selected." }, "label": { "chat": "Chat", "menu": "Menu", "search": "Search", - "notificationIsOn": "Notification is on", - "notificationIsOff": "Notification is off", + "favorite": "Favorite", + "turnOnRoomAlert": "Turn on room alert", + "turnOffRoomAlert": "Turn off room alert", + "data": "Data", + "image": "Image", + "video": "Video", + "file": "File", + "event": "Event", + "selectedRoom": "Selected rooms", "showRoomUsers": "Show room users", + "addRoomUsers": "Add room users", + "addGroup": "Add group", + "roomSetting": "Setting", + "openRoom": "Open room", + "exitFromRoom": "Exit room", "send": "Send", "attachFile": "Attach file", "attachImage": "Attach image", @@ -22,13 +32,36 @@ "imoticon": "Imoticon", "emailSend": "Send email for chat.", "translation": "Trnaslation", - "gams": "+GAMS" + "gams": "+GAMS", + "replayEvent": "Replay", + "copyChatText": "Copy chat", + "forwardEventTo": "Forward chat to ...", + "forwardEventToMe": "Forward chat to me", + "removeEvent": "Remove chat", + "recallEvent": "Recall chat", + "openViewer": "Open Viewer", + "inputChatMessage": "Please enter a message", + "translations": { + "translation": "Translation", + "targetLanguage": "Traget language", + "noTranslation": "No translation", + "simpleView": "Simple View", + "preview": "Preview" + }, + "emailSends": { + "sendAll": "Send All", + "sendMe": "Send Me" + }, + "fileSends": { + "fileSend": "File Send", + "dragHere": "Drag files to this area to upload them." + } }, "event": { - "inviteToRoomWith": "{{owner}} invited {{inviter}}.", - "exitFromRoomWith": "{{exitor}} has left.", + "inviteToRoomWith": "{{owner}} invited {{inviter}}.", + "exitFromRoomWith": "{{exitor}} has left.", "ejectedFromRoomWith": "{{requester}} has eject {{ejected}}.", - "renamedRoomWith": "{{requester}} has changed their chat room name to '{{roomName}}'.", + "renamedRoomWith": "{{requester}} has changed their chat room name to '{{roomName}}'.", "setTimerWith": "{{requester}} set a timer ({{timer}})", "iosCapture": "{{requester}} captured a conversation", "showMassTranslationOfOriginal": "Show original", @@ -42,32 +75,81 @@ "scheduleTypeDefault": "[Event] Processing..", "scheduleTypePrefix": "[Event] ", "scheduleTypeSurfixLeft": " left", + "showScheduleDetail": "Show detail", "showPreviousEvents": "Show previous", - "moreUnreadEventsWith": "There is unread messages({{countOfUnread}})" + "moreUnreadEventsWith": "There is unread messages({{countOfUnread}})", + "isRoomTypeSecret": "This room is secret type", + "noRecentChat": "No recent conversation" }, "errors": { "label": "Chat erros", "inputChatMessage": "Please enter a chat message", "maxLengthOfMassText": "If you include a sticker, you can't send more than {{maxLength}} characters.", - "maxCountOfRoomMemberWith": "you can't open room with more than {{maxCount}} peoples.", + "maxCountOfRoomMemberWith": "You cannot chat with more than {{maxCount}} people including me.", "emptyOpenRoomType": "Pleas select type of room", - "translateServerError": "Failed to translate" + "translateServerError": "Failed to translate", + "addBuddyForGroup": "No group name was specified, or no group was selected." }, "dialog": { "title": { - "exitFromRoom": "Exit room", - "newChatRoom": "Add new chat room" + "removeChat": "Remove chat", + "newChatRoom": "Add new chat room", + "forwardTo": "Forward chat to ...", + "ejectFromRoom": "Eject from room", + "detail": "Detail", + "roomNameGuide": "Guide to setting chat room name", + "roomTimerGuide": "Timer setting guide", + "fileDownloadCheck": "Downloaded users", + "subSelectRoomType": "Select room type", + "subSelectUser": "Select users" }, + "confirmRemoveChat": "Do you want to delete the chat?
      Deleted messages apply only to your chat room and are not deleted from their chat rooms.", + "confirmRecallEvent": "Do you want to recall the chat?
      It is also retrieved from the other party's chat window.", "confirmExitFromRoom": "Do you want to exit the chat room?
      Exiting will delete your chat history and chat room information.", + "confirmAddBuddyForNewGroup": "Do you want to add chat room members after creating '{{targetGroups}}' group?", + "confirmAddBuddyForGroup": "Would you like to add chat room members to the '{{targetGroups}}' group?", + "confirmEjectFromRoom": "Do you want to eject member[{{targetMember}}] from room?", + "confirmSendEventEmailAll": "Would you like to email the conversation to everyone?", + "confirmSendEventEmailMe": "Would you like to email the conversation to me?", "normalRoom": "Basic Room", "timerRoom": "Timer Room", "normalRoomDescription": "Up to {{maxCount}} peoples
      can join.", - "timerRoomDescription": "When setting the timer,
      the conversation is automatically deleted.", + "timerRoomDescription": "When setting the timer After the set time,
      the conversation is automatically deleted.", + "roomNameGuideDescription": "Try setting a chat room name.
      If you set a name in the chat room setup step, it applies equally to all members.", + "roomTimerGuideDescription": "We opened a secret chat room.
      The default timer is 24 hours and all messages are deleted after 24 hours.
      If you want to change the timer, please select the desired time below.", + "sendEventEmailSuccess": "The contents of the conversation were delivered by e-mail.", + "selectedUserList": "Selected users", + "roomName": "Room Name", + "roomNameChangeTarget": "Change target", + "me": "Me", + "all": "All", + "settingTimer": "Setting Timer", + "settingTimerHint": "※ If the set time is exceeded, the conversation is deleted.", + "group": "Group", + "roomList": "Room List", + "searchResult": "Search Result", "button": { + "save": "Save", "cancel": "Cancel", "previous": "Previous", "selectRoomUser": "Choice user", - "openRoom": "Open chat room" + "openRoom": "Open chat room", + "addUser": "Add Complate", + "settingSave": "Setting Complate", + "addUserChatRoom": "Invite room user", + "addGroupMember": "Add member for group", + "del": "Delete", + "changeFolder": "Change folder", + "openViewer": "Viewer", + "download": "Download", + "all": "All", + "receiveFiles": "Receive {{targetObject}}", + "sendFiles": "Send {{targetObject}}", + "downloaded": "Downloaded", + "downloadNotYet": "Not downloaded" } + }, + "settings": { + "label": "Chat" } } diff --git a/src/assets/i18n/en/common.json b/src/assets/i18n/en/common.json index 042b70e..7c9a4b3 100644 --- a/src/assets/i18n/en/common.json +++ b/src/assets/i18n/en/common.json @@ -1,31 +1,83 @@ { - "common": { - "messages": { - "no": "No", - "yes": "Yes", - "confirm": "Confirm" - }, - "units": { - "date": "Date", - "time": "Time", - "hour": "hour", - "hourFrom": "hour", - "minute": "minute", - "second": "second", - "persons": "person(s)", - "hourLaterWith": "(An) {{hour}} hour(s) later", - "tomorrowMorning": "Tomorrow morning", - "tomorrowAfternoon": "Tomorrow afternoon", - "weekLaterWith": "(A) {{week}} week(s) later", - "monthLaterWith": "(A) {{month}} month(s) later" - }, - "file": { - "errors": { - "failToUpload": "File upload failed.", - "notSupporedType": "File format is not supported.
      ({{supporedType}})", - "notAcceptableMime": "File type is invalid.
      ({{supporedType}})", - "oversize": "You cannot upload files larger than {{size}} megabytes." - } + "useSpecialCharactor": "Special characters can only use -,_", + "messages": { + "no": "No", + "yes": "Yes", + "confirm": "Confirm", + "select": "Select", + "selectAll": "Select all", + "unselect": "Unselect", + "searching": "Searching", + "cancel": "Cancel", + "complate": "Complate", + "close": "Close", + "modify": "Modify", + "remove": "Remove", + "apply": "Apply", + "minimizeWindow": "Minimize window", + "maxmizeWindow": "Maxmize window", + "restoreWindow": "Restore window", + "Close window": "Close window", + "zoomOut": "Zoom out", + "zoomIn": "Zoom in", + "zoomReset": "Zoom reset", + "sirWith": "{{sir}}", + "exit": "Exit" + }, + "units": { + "date": "Date", + "time": "Time", + "hour": "hour", + "hourFrom": "hour", + "minute": "minute", + "second": "second", + "persons": "person(s)", + "hourLaterWith": "(An) {{hour}} hour(s) later", + "tomorrowMorning": "Tomorrow morning", + "tomorrowAfternoon": "Tomorrow afternoon", + "weekLaterWith": "(A) {{week}} week(s) later", + "monthLaterWith": "(A) {{month}} month(s) later" + }, + "file": { + "fileOpen": "Open file", + "folderOpen": "Open folder", + "download": "Download", + "delete": "Delete", + "save": "Save", + "saveAs": "Save as", + "saveAll": "Save all", + "refresh": "Refresh", + "downloading": "Downloading...", + "errors": { + "failToUpload": "File upload failed.", + "noPreview": "This file does not support preview.", + "cantPlay": "This file does not support playing.", + "notSupporedType": "File format is not supported.
      ({{supporedType}})", + "notAcceptableMime": "File type is invalid.
      ({{supporedType}})", + "oversize": "You cannot upload files larger than {{size}} megabytes." } + }, + "player": { + "play": "Play", + "stop": "Stop" + }, + "notification": { + "titleChatEventArrivedByUser": "A Message of chat from {{userInfo}}.", + "titleChatEventArrived": "A message of chat has arrived.", + "titleMessageArrivedByUser": "A Message from {{userInfo}}.", + "titleMessageArrived": "A message has arrived." + }, + "tooltip": { + "group": "Group", + "chat": "Chat", + "organization": "Organization", + "message": "Message", + "call": "Call", + "videoConference": "Video Conference", + "mobile": "Call mobile", + "office": "Call office", + "exitForcing": "Exit Forcing", + "profile": "Profile", + "more": "More" } } diff --git a/src/assets/i18n/en/group.json b/src/assets/i18n/en/group.json index 348512d..32e9250 100644 --- a/src/assets/i18n/en/group.json +++ b/src/assets/i18n/en/group.json @@ -1,58 +1,80 @@ { - "label": { - "confirmRemoveBuddy": "Do you want to delete the member?
      Deleted member apply only to your group and are not deleted from their group." - }, "category": { "favorite": "Favorite", "default": "Default", "myDept": "My Dept" }, - "moreMenu": { - "show": { - "all": "View all", - "onlineBuddy": "View only connected buddy", - "onOff": "View online offline " - }, - "group": { - "addNew": "Add new group", - "expandMore": "Expand all groups", - "expandLess": "Collapse all groups", - "changeOrder": "Change order", - "startChatWithGroup": "Chat with group", - "sendMessageToGroup": "Send message to group", - "groupMemberManagement": "Group Member Management", - "changeGroupName": "Change Group Name", - "removeGroup": "Remove group" - }, - "profile": { - "open": "Open profile", - "favorite": "Favorite", - "nickname": "Nickname", - "moveBuddy": "Move Member", - "copyBuddy": "Copy Member", - "removeBuddy": "Remove Member" - }, - "error": { - "label": "Group errors", - "requireName": "Group name is required." - } + "label": { + "group": "Group", + "member": "Member", + "organization": "Organization", + "addNewGroup": "Add new group", + "existingGroup": "Assign existing group", + "searchResult": "Search Result", + "online": "Online", + "offline": "Offline" }, - "profile": { - "labels": { - "myProfile": "My profile", - "company": "Company", - "email": "Email", - "linePhoneNumber": "Office", - "mobilePhoneNumber": "Mobile", - "department": "Department", - "chat": "Chat", - "sms": "SMS", - "videoConference": "Conference", - "message": "Message" + "dialog": { + "title": { + "addBuddy": "Add a Buddy", + "removeBuddy": "Remove a buddy", + "removeGroup": "Remove a group", + "createGroup": "Create a group", + "subTitleGroupInfo": "Group information registration", + "subTitleSelectMember": "Member selection", + "copyGroup": "Copy Group", + "moveGroup": "Move Group", + "addMember": "Add a Member", + "managementGroup": "Group Member Management", + "messageGroup": "Send message to group" }, - "fields": { - "intro": "인트로" + "btn": { + "cancel": "Cancel", + "compleate": "Compleate", + "addGroupCompleate": "Add group completed", + "selectMemberAndComplete": "Select member and complete." }, - "errors": {} + "newGroupName": "Please enter a new group name", + "newNickname": "Please enter a new nickname", + "selectedMember": "Selected member", + "removeBuddyConfirm": " {{targetMember}} Are you sure you want to delete the selected member?
      The selected member is only deleted from this group.", + "removeGroupConfirm": "Do you want to remove {{target}} from {{targetGroup}} group?", + "removeBuddyFromMenu": "Do you want to remove {{target}} from {{targetGroup}} group?", + "removeBuddyFromProfile": "Do you want to remove {{target}} from group?
      Deleting it from your profile will remove it from all groups." + }, + "error": { + "title": { + "default": "Error Group" + }, + "useOnlyForSpecialCharacter": "Only {{specialCharacter}} can be used for special characters.", + "requireInput": "This is required.", + "requireGroupName": "Group name is required.", + "invalidGroupName": "Invalid group name.", + "notSelectedUser": "The selected user does not exist.", + "bannedWords": "Prohibited word. [{{bannedWords}}]", + "sameNameExist": "Group name already exists." + }, + "contextMenu": { + "all": "View all", + "onlineBuddy": "View only connected buddy", + "onOffBuddy": "View online offline", + "addNewGroup": "Add new group", + "expandMore": "Expand all groups", + "expandLess": "Collapse all groups", + "changeOrder": "Change order", + "startChatWithGroup": "Chat with group", + "sendMessageToGroup": "Send message to group", + "groupMemberManagement": "Group Member Management", + "changeGroupName": "Change Group Name", + "removeGroup": "Remove group", + "profileOpen": "Open profile", + "unfavorite": "Unfavorite", + "addFavorite": "Add Favorite", + "setNickname": "Set Nickname", + "copyGroupMember": "Copy Group", + "moveGroupMember": "Move Group", + "moveBuddy": "Move Member", + "copyBuddy": "Copy Member", + "removeBuddyFromGroup": "Remove Member" } } diff --git a/src/assets/i18n/en/locale.json b/src/assets/i18n/en/locale.json new file mode 100644 index 0000000..80060ff --- /dev/null +++ b/src/assets/i18n/en/locale.json @@ -0,0 +1,602 @@ +{ + "languages": { + "ko": "Korean", + "en": "English", + "cn": "China" + }, + "timezone": { + "Africa/Abidjan": "Africa/Abidjan", + "Africa/Accra": "Africa/Accra", + "Africa/Addis_Ababa": "Africa/Addis_Ababa", + "Africa/Algiers": "Africa/Algiers", + "Africa/Asmara": "Africa/Asmara", + "Africa/Asmera": "Africa/Asmera", + "Africa/Bamako": "Africa/Bamako", + "Africa/Bangui": "Africa/Bangui", + "Africa/Banjul": "Africa/Banjul", + "Africa/Bissau": "Africa/Bissau", + "Africa/Blantyre": "Africa/Blantyre", + "Africa/Brazzaville": "Africa/Brazzaville", + "Africa/Bujumbura": "Africa/Bujumbura", + "Africa/Cairo": "Africa/Cairo", + "Africa/Casablanca": "Africa/Casablanca", + "Africa/Ceuta": "Africa/Ceuta", + "Africa/Conakry": "Africa/Conakry", + "Africa/Dakar": "Africa/Dakar", + "Africa/Dar_es_Salaam": "Africa/Dar_es_Salaam", + "Africa/Djibouti": "Africa/Djibouti", + "Africa/Douala": "Africa/Douala", + "Africa/El_Aaiun": "Africa/El_Aaiun", + "Africa/Freetown": "Africa/Freetown", + "Africa/Gaborone": "Africa/Gaborone", + "Africa/Harare": "Africa/Harare", + "Africa/Johannesburg": "Africa/Johannesburg", + "Africa/Juba": "Africa/Juba", + "Africa/Kampala": "Africa/Kampala", + "Africa/Khartoum": "Africa/Khartoum", + "Africa/Kigali": "Africa/Kigali", + "Africa/Kinshasa": "Africa/Kinshasa", + "Africa/Lagos": "Africa/Lagos", + "Africa/Libreville": "Africa/Libreville", + "Africa/Lome": "Africa/Lome", + "Africa/Luanda": "Africa/Luanda", + "Africa/Lubumbashi": "Africa/Lubumbashi", + "Africa/Lusaka": "Africa/Lusaka", + "Africa/Malabo": "Africa/Malabo", + "Africa/Maputo": "Africa/Maputo", + "Africa/Maseru": "Africa/Maseru", + "Africa/Mbabane": "Africa/Mbabane", + "Africa/Mogadishu": "Africa/Mogadishu", + "Africa/Monrovia": "Africa/Monrovia", + "Africa/Nairobi": "Africa/Nairobi", + "Africa/Ndjamena": "Africa/Ndjamena", + "Africa/Niamey": "Africa/Niamey", + "Africa/Nouakchott": "Africa/Nouakchott", + "Africa/Ouagadougou": "Africa/Ouagadougou", + "Africa/Porto-Novo": "Africa/Porto-Novo", + "Africa/Sao_Tome": "Africa/Sao_Tome", + "Africa/Timbuktu": "Africa/Timbuktu", + "Africa/Tripoli": "Africa/Tripoli", + "Africa/Tunis": "Africa/Tunis", + "Africa/Windhoek": "Africa/Windhoek", + "America/Adak": "America/Adak", + "America/Anchorage": "America/Anchorage", + "America/Anguilla": "America/Anguilla", + "America/Antigua": "America/Antigua", + "America/Araguaina": "America/Araguaina", + "America/Argentina/Buenos_Aires": "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca": "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia": "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba": "America/Argentina/Cordoba", + "America/Argentina/Jujuy": "America/Argentina/Jujuy", + "America/Argentina/La_Rioja": "America/Argentina/La_Rioja", + "America/Argentina/Mendoza": "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos": "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta": "America/Argentina/Salta", + "America/Argentina/San_Juan": "America/Argentina/San_Juan", + "America/Argentina/San_Luis": "America/Argentina/San_Luis", + "America/Argentina/Tucuman": "America/Argentina/Tucuman", + "America/Argentina/Ushuaia": "America/Argentina/Ushuaia", + "America/Aruba": "America/Aruba", + "America/Asuncion": "America/Asuncion", + "America/Atikokan": "America/Atikokan", + "America/Atka": "America/Atka", + "America/Bahia": "America/Bahia", + "America/Bahia_Banderas": "America/Bahia_Banderas", + "America/Barbados": "America/Barbados", + "America/Belem": "America/Belem", + "America/Belize": "America/Belize", + "America/Blanc-Sablon": "America/Blanc-Sablon", + "America/Boa_Vista": "America/Boa_Vista", + "America/Bogota": "America/Bogota", + "America/Boise": "America/Boise", + "America/Buenos_Aires": "America/Buenos_Aires", + "America/Cambridge_Bay": "America/Cambridge_Bay", + "America/Campo_Grande": "America/Campo_Grande", + "America/Cancun": "America/Cancun", + "America/Caracas": "America/Caracas", + "America/Catamarca": "America/Catamarca", + "America/Cayenne": "America/Cayenne", + "America/Cayman": "America/Cayman", + "America/Chicago": "America/Chicago", + "America/Chihuahua": "America/Chihuahua", + "America/Coral_Harbour": "America/Coral_Harbour", + "America/Cordoba": "America/Cordoba", + "America/Costa_Rica": "America/Costa_Rica", + "America/Creston": "America/Creston", + "America/Cuiaba": "America/Cuiaba", + "America/Curacao": "America/Curacao", + "America/Danmarkshavn": "America/Danmarkshavn", + "America/Dawson": "America/Dawson", + "America/Dawson_Creek": "America/Dawson_Creek", + "America/Denver": "America/Denver", + "America/Detroit": "America/Detroit", + "America/Dominica": "America/Dominica", + "America/Edmonton": "America/Edmonton", + "America/Eirunepe": "America/Eirunepe", + "America/El_Salvador": "America/El_Salvador", + "America/Ensenada": "America/Ensenada", + "America/Fort_Nelson": "America/Fort_Nelson", + "America/Fort_Wayne": "America/Fort_Wayne", + "America/Fortaleza": "America/Fortaleza", + "America/Glace_Bay": "America/Glace_Bay", + "America/Godthab": "America/Godthab", + "America/Goose_Bay": "America/Goose_Bay", + "America/Grand_Turk": "America/Grand_Turk", + "America/Grenada": "America/Grenada", + "America/Guadeloupe": "America/Guadeloupe", + "America/Guatemala": "America/Guatemala", + "America/Guayaquil": "America/Guayaquil", + "America/Guyana": "America/Guyana", + "America/Halifax": "America/Halifax", + "America/Havana": "America/Havana", + "America/Hermosillo": "America/Hermosillo", + "America/Indiana/Indianapolis": "America/Indiana/Indianapolis", + "America/Indiana/Knox": "America/Indiana/Knox", + "America/Indiana/Marengo": "America/Indiana/Marengo", + "America/Indiana/Petersburg": "America/Indiana/Petersburg", + "America/Indiana/Tell_City": "America/Indiana/Tell_City", + "America/Indiana/Vevay": "America/Indiana/Vevay", + "America/Indiana/Vincennes": "America/Indiana/Vincennes", + "America/Indiana/Winamac": "America/Indiana/Winamac", + "America/Indianapolis": "America/Indianapolis", + "America/Inuvik": "America/Inuvik", + "America/Iqaluit": "America/Iqaluit", + "America/Jamaica": "America/Jamaica", + "America/Jujuy": "America/Jujuy", + "America/Juneau": "America/Juneau", + "America/Kentucky/Louisville": "America/Kentucky/Louisville", + "America/Kentucky/Monticello": "America/Kentucky/Monticello", + "America/Knox_IN": "America/Knox_IN", + "America/Kralendijk": "America/Kralendijk", + "America/La_Paz": "America/La_Paz", + "America/Lima": "America/Lima", + "America/Los_Angeles": "America/Los_Angeles", + "America/Louisville": "America/Louisville", + "America/Lower_Princes": "America/Lower_Princes", + "America/Maceio": "America/Maceio", + "America/Managua": "America/Managua", + "America/Manaus": "America/Manaus", + "America/Marigot": "America/Marigot", + "America/Martinique": "America/Martinique", + "America/Matamoros": "America/Matamoros", + "America/Mazatlan": "America/Mazatlan", + "America/Mendoza": "America/Mendoza", + "America/Menominee": "America/Menominee", + "America/Merida": "America/Merida", + "America/Metlakatla": "America/Metlakatla", + "America/Mexico_City": "America/Mexico_City", + "America/Miquelon": "America/Miquelon", + "America/Moncton": "America/Moncton", + "America/Monterrey": "America/Monterrey", + "America/Montevideo": "America/Montevideo", + "America/Montreal": "America/Montreal", + "America/Montserrat": "America/Montserrat", + "America/Nassau": "America/Nassau", + "America/New_York": "America/New_York", + "America/Nipigon": "America/Nipigon", + "America/Nome": "America/Nome", + "America/Noronha": "America/Noronha", + "America/North_Dakota/Beulah": "America/North_Dakota/Beulah", + "America/North_Dakota/Center": "America/North_Dakota/Center", + "America/North_Dakota/New_Salem": "America/North_Dakota/New_Salem", + "America/Ojinaga": "America/Ojinaga", + "America/Panama": "America/Panama", + "America/Pangnirtung": "America/Pangnirtung", + "America/Paramaribo": "America/Paramaribo", + "America/Phoenix": "America/Phoenix", + "America/Port-au-Prince": "America/Port-au-Prince", + "America/Port_of_Spain": "America/Port_of_Spain", + "America/Porto_Acre": "America/Porto_Acre", + "America/Porto_Velho": "America/Porto_Velho", + "America/Puerto_Rico": "America/Puerto_Rico", + "America/Punta_Arenas": "America/Punta_Arenas", + "America/Rainy_River": "America/Rainy_River", + "America/Rankin_Inlet": "America/Rankin_Inlet", + "America/Recife": "America/Recife", + "America/Regina": "America/Regina", + "America/Resolute": "America/Resolute", + "America/Rio_Branco": "America/Rio_Branco", + "America/Rosario": "America/Rosario", + "America/Santa_Isabel": "America/Santa_Isabel", + "America/Santarem": "America/Santarem", + "America/Santiago": "America/Santiago", + "America/Santo_Domingo": "America/Santo_Domingo", + "America/Sao_Paulo": "America/Sao_Paulo", + "America/Scoresbysund": "America/Scoresbysund", + "America/Shiprock": "America/Shiprock", + "America/Sitka": "America/Sitka", + "America/St_Barthelemy": "America/St_Barthelemy", + "America/St_Johns": "America/St_Johns", + "America/St_Kitts": "America/St_Kitts", + "America/St_Lucia": "America/St_Lucia", + "America/St_Thomas": "America/St_Thomas", + "America/St_Vincent": "America/St_Vincent", + "America/Swift_Current": "America/Swift_Current", + "America/Tegucigalpa": "America/Tegucigalpa", + "America/Thule": "America/Thule", + "America/Thunder_Bay": "America/Thunder_Bay", + "America/Tijuana": "America/Tijuana", + "America/Toronto": "America/Toronto", + "America/Tortola": "America/Tortola", + "America/Vancouver": "America/Vancouver", + "America/Virgin": "America/Virgin", + "America/Whitehorse": "America/Whitehorse", + "America/Winnipeg": "America/Winnipeg", + "America/Yakutat": "America/Yakutat", + "America/Yellowknife": "America/Yellowknife", + "Antarctica/Casey": "Antarctica/Casey", + "Antarctica/Davis": "Antarctica/Davis", + "Antarctica/DumontDUrville": "Antarctica/DumontDUrville", + "Antarctica/Macquarie": "Antarctica/Macquarie", + "Antarctica/Mawson": "Antarctica/Mawson", + "Antarctica/McMurdo": "Antarctica/McMurdo", + "Antarctica/Palmer": "Antarctica/Palmer", + "Antarctica/Rothera": "Antarctica/Rothera", + "Antarctica/South_Pole": "Antarctica/South_Pole", + "Antarctica/Syowa": "Antarctica/Syowa", + "Antarctica/Troll": "Antarctica/Troll", + "Antarctica/Vostok": "Antarctica/Vostok", + "Arctic/Longyearbyen": "Arctic/Longyearbyen", + "Asia/Aden": "Asia/Aden", + "Asia/Almaty": "Asia/Almaty", + "Asia/Amman": "Asia/Amman", + "Asia/Anadyr": "Asia/Anadyr", + "Asia/Aqtau": "Asia/Aqtau", + "Asia/Aqtobe": "Asia/Aqtobe", + "Asia/Ashgabat": "Asia/Ashgabat", + "Asia/Ashkhabad": "Asia/Ashkhabad", + "Asia/Atyrau": "Asia/Atyrau", + "Asia/Baghdad": "Asia/Baghdad", + "Asia/Bahrain": "Asia/Bahrain", + "Asia/Baku": "Asia/Baku", + "Asia/Bangkok": "Asia/Bangkok", + "Asia/Barnaul": "Asia/Barnaul", + "Asia/Beirut": "Asia/Beirut", + "Asia/Bishkek": "Asia/Bishkek", + "Asia/Brunei": "Asia/Brunei", + "Asia/Calcutta": "Asia/Calcutta", + "Asia/Chita": "Asia/Chita", + "Asia/Choibalsan": "Asia/Choibalsan", + "Asia/Chongqing": "Asia/Chongqing", + "Asia/Chungking": "Asia/Chungking", + "Asia/Colombo": "Asia/Colombo", + "Asia/Dacca": "Asia/Dacca", + "Asia/Damascus": "Asia/Damascus", + "Asia/Dhaka": "Asia/Dhaka", + "Asia/Dili": "Asia/Dili", + "Asia/Dubai": "Asia/Dubai", + "Asia/Dushanbe": "Asia/Dushanbe", + "Asia/Famagusta": "Asia/Famagusta", + "Asia/Gaza": "Asia/Gaza", + "Asia/Harbin": "Asia/Harbin", + "Asia/Hebron": "Asia/Hebron", + "Asia/Ho_Chi_Minh": "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong": "Asia/Hong_Kong", + "Asia/Hovd": "Asia/Hovd", + "Asia/Irkutsk": "Asia/Irkutsk", + "Asia/Istanbul": "Asia/Istanbul", + "Asia/Jakarta": "Asia/Jakarta", + "Asia/Jayapura": "Asia/Jayapura", + "Asia/Jerusalem": "Asia/Jerusalem", + "Asia/Kabul": "Asia/Kabul", + "Asia/Kamchatka": "Asia/Kamchatka", + "Asia/Karachi": "Asia/Karachi", + "Asia/Kashgar": "Asia/Kashgar", + "Asia/Kathmandu": "Asia/Kathmandu", + "Asia/Katmandu": "Asia/Katmandu", + "Asia/Khandyga": "Asia/Khandyga", + "Asia/Kolkata": "Asia/Kolkata", + "Asia/Krasnoyarsk": "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur": "Asia/Kuala_Lumpur", + "Asia/Kuching": "Asia/Kuching", + "Asia/Kuwait": "Asia/Kuwait", + "Asia/Macao": "Asia/Macao", + "Asia/Macau": "Asia/Macau", + "Asia/Magadan": "Asia/Magadan", + "Asia/Makassar": "Asia/Makassar", + "Asia/Manila": "Asia/Manila", + "Asia/Muscat": "Asia/Muscat", + "Asia/Nicosia": "Asia/Nicosia", + "Asia/Novokuznetsk": "Asia/Novokuznetsk", + "Asia/Novosibirsk": "Asia/Novosibirsk", + "Asia/Omsk": "Asia/Omsk", + "Asia/Oral": "Asia/Oral", + "Asia/Phnom_Penh": "Asia/Phnom_Penh", + "Asia/Pontianak": "Asia/Pontianak", + "Asia/Pyongyang": "Asia/Pyongyang", + "Asia/Qatar": "Asia/Qatar", + "Asia/Qostanay": "Asia/Qostanay", + "Asia/Qyzylorda": "Asia/Qyzylorda", + "Asia/Rangoon": "Asia/Rangoon", + "Asia/Riyadh": "Asia/Riyadh", + "Asia/Saigon": "Asia/Saigon", + "Asia/Sakhalin": "Asia/Sakhalin", + "Asia/Samarkand": "Asia/Samarkand", + "Asia/Seoul": "Asia/Seoul", + "Asia/Shanghai": "Asia/Shanghai", + "Asia/Singapore": "Asia/Singapore", + "Asia/Srednekolymsk": "Asia/Srednekolymsk", + "Asia/Taipei": "Asia/Taipei", + "Asia/Tashkent": "Asia/Tashkent", + "Asia/Tbilisi": "Asia/Tbilisi", + "Asia/Tehran": "Asia/Tehran", + "Asia/Tel_Aviv": "Asia/Tel_Aviv", + "Asia/Thimbu": "Asia/Thimbu", + "Asia/Thimphu": "Asia/Thimphu", + "Asia/Tokyo": "Asia/Tokyo", + "Asia/Tomsk": "Asia/Tomsk", + "Asia/Ujung_Pandang": "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar": "Asia/Ulaanbaatar", + "Asia/Ulan_Bator": "Asia/Ulan_Bator", + "Asia/Urumqi": "Asia/Urumqi", + "Asia/Ust-Nera": "Asia/Ust-Nera", + "Asia/Vientiane": "Asia/Vientiane", + "Asia/Vladivostok": "Asia/Vladivostok", + "Asia/Yakutsk": "Asia/Yakutsk", + "Asia/Yangon": "Asia/Yangon", + "Asia/Yekaterinburg": "Asia/Yekaterinburg", + "Asia/Yerevan": "Asia/Yerevan", + "Atlantic/Azores": "Atlantic/Azores", + "Atlantic/Bermuda": "Atlantic/Bermuda", + "Atlantic/Canary": "Atlantic/Canary", + "Atlantic/Cape_Verde": "Atlantic/Cape_Verde", + "Atlantic/Faeroe": "Atlantic/Faeroe", + "Atlantic/Faroe": "Atlantic/Faroe", + "Atlantic/Jan_Mayen": "Atlantic/Jan_Mayen", + "Atlantic/Madeira": "Atlantic/Madeira", + "Atlantic/Reykjavik": "Atlantic/Reykjavik", + "Atlantic/South_Georgia": "Atlantic/South_Georgia", + "Atlantic/St_Helena": "Atlantic/St_Helena", + "Atlantic/Stanley": "Atlantic/Stanley", + "Australia/ACT": "Australia/ACT", + "Australia/Adelaide": "Australia/Adelaide", + "Australia/Brisbane": "Australia/Brisbane", + "Australia/Broken_Hill": "Australia/Broken_Hill", + "Australia/Canberra": "Australia/Canberra", + "Australia/Currie": "Australia/Currie", + "Australia/Darwin": "Australia/Darwin", + "Australia/Eucla": "Australia/Eucla", + "Australia/Hobart": "Australia/Hobart", + "Australia/LHI": "Australia/LHI", + "Australia/Lindeman": "Australia/Lindeman", + "Australia/Lord_Howe": "Australia/Lord_Howe", + "Australia/Melbourne": "Australia/Melbourne", + "Australia/NSW": "Australia/NSW", + "Australia/North": "Australia/North", + "Australia/Perth": "Australia/Perth", + "Australia/Queensland": "Australia/Queensland", + "Australia/South": "Australia/South", + "Australia/Sydney": "Australia/Sydney", + "Australia/Tasmania": "Australia/Tasmania", + "Australia/Victoria": "Australia/Victoria", + "Australia/West": "Australia/West", + "Australia/Yancowinna": "Australia/Yancowinna", + "Brazil/Acre": "Brazil/Acre", + "Brazil/DeNoronha": "Brazil/DeNoronha", + "Brazil/East": "Brazil/East", + "Brazil/West": "Brazil/West", + "CET": "CET", + "CST6CDT": "CST6CDT", + "Canada/Atlantic": "Canada/Atlantic", + "Canada/Central": "Canada/Central", + "Canada/Eastern": "Canada/Eastern", + "Canada/Mountain": "Canada/Mountain", + "Canada/Newfoundland": "Canada/Newfoundland", + "Canada/Pacific": "Canada/Pacific", + "Canada/Saskatchewan": "Canada/Saskatchewan", + "Canada/Yukon": "Canada/Yukon", + "Chile/Continental": "Chile/Continental", + "Chile/EasterIsland": "Chile/EasterIsland", + "Cuba": "Cuba", + "EET": "EET", + "EST": "EST", + "EST5EDT": "EST5EDT", + "Egypt": "Egypt", + "Eire": "Eire", + "Etc/GMT": "Etc/GMT", + "Etc/GMT+0": "Etc/GMT+0", + "Etc/GMT+1": "Etc/GMT+1", + "Etc/GMT+10": "Etc/GMT+10", + "Etc/GMT+11": "Etc/GMT+11", + "Etc/GMT+12": "Etc/GMT+12", + "Etc/GMT+2": "Etc/GMT+2", + "Etc/GMT+3": "Etc/GMT+3", + "Etc/GMT+4": "Etc/GMT+4", + "Etc/GMT+5": "Etc/GMT+5", + "Etc/GMT+6": "Etc/GMT+6", + "Etc/GMT+7": "Etc/GMT+7", + "Etc/GMT+8": "Etc/GMT+8", + "Etc/GMT+9": "Etc/GMT+9", + "Etc/GMT-0": "Etc/GMT-0", + "Etc/GMT-1": "Etc/GMT-1", + "Etc/GMT-10": "Etc/GMT-10", + "Etc/GMT-11": "Etc/GMT-11", + "Etc/GMT-12": "Etc/GMT-12", + "Etc/GMT-13": "Etc/GMT-13", + "Etc/GMT-14": "Etc/GMT-14", + "Etc/GMT-2": "Etc/GMT-2", + "Etc/GMT-3": "Etc/GMT-3", + "Etc/GMT-4": "Etc/GMT-4", + "Etc/GMT-5": "Etc/GMT-5", + "Etc/GMT-6": "Etc/GMT-6", + "Etc/GMT-7": "Etc/GMT-7", + "Etc/GMT-8": "Etc/GMT-8", + "Etc/GMT-9": "Etc/GMT-9", + "Etc/GMT0": "Etc/GMT0", + "Etc/Greenwich": "Etc/Greenwich", + "Etc/UCT": "Etc/UCT", + "Etc/UTC": "Etc/UTC", + "Etc/Universal": "Etc/Universal", + "Etc/Zulu": "Etc/Zulu", + "Europe/Amsterdam": "Europe/Amsterdam", + "Europe/Andorra": "Europe/Andorra", + "Europe/Astrakhan": "Europe/Astrakhan", + "Europe/Athens": "Europe/Athens", + "Europe/Belfast": "Europe/Belfast", + "Europe/Belgrade": "Europe/Belgrade", + "Europe/Berlin": "Europe/Berlin", + "Europe/Bratislava": "Europe/Bratislava", + "Europe/Brussels": "Europe/Brussels", + "Europe/Bucharest": "Europe/Bucharest", + "Europe/Budapest": "Europe/Budapest", + "Europe/Busingen": "Europe/Busingen", + "Europe/Chisinau": "Europe/Chisinau", + "Europe/Copenhagen": "Europe/Copenhagen", + "Europe/Dublin": "Europe/Dublin", + "Europe/Gibraltar": "Europe/Gibraltar", + "Europe/Guernsey": "Europe/Guernsey", + "Europe/Helsinki": "Europe/Helsinki", + "Europe/Isle_of_Man": "Europe/Isle_of_Man", + "Europe/Istanbul": "Europe/Istanbul", + "Europe/Jersey": "Europe/Jersey", + "Europe/Kaliningrad": "Europe/Kaliningrad", + "Europe/Kiev": "Europe/Kiev", + "Europe/Kirov": "Europe/Kirov", + "Europe/Lisbon": "Europe/Lisbon", + "Europe/Ljubljana": "Europe/Ljubljana", + "Europe/London": "Europe/London", + "Europe/Luxembourg": "Europe/Luxembourg", + "Europe/Madrid": "Europe/Madrid", + "Europe/Malta": "Europe/Malta", + "Europe/Mariehamn": "Europe/Mariehamn", + "Europe/Minsk": "Europe/Minsk", + "Europe/Monaco": "Europe/Monaco", + "Europe/Moscow": "Europe/Moscow", + "Europe/Nicosia": "Europe/Nicosia", + "Europe/Oslo": "Europe/Oslo", + "Europe/Paris": "Europe/Paris", + "Europe/Podgorica": "Europe/Podgorica", + "Europe/Prague": "Europe/Prague", + "Europe/Riga": "Europe/Riga", + "Europe/Rome": "Europe/Rome", + "Europe/Samara": "Europe/Samara", + "Europe/San_Marino": "Europe/San_Marino", + "Europe/Sarajevo": "Europe/Sarajevo", + "Europe/Saratov": "Europe/Saratov", + "Europe/Simferopol": "Europe/Simferopol", + "Europe/Skopje": "Europe/Skopje", + "Europe/Sofia": "Europe/Sofia", + "Europe/Stockholm": "Europe/Stockholm", + "Europe/Tallinn": "Europe/Tallinn", + "Europe/Tirane": "Europe/Tirane", + "Europe/Tiraspol": "Europe/Tiraspol", + "Europe/Ulyanovsk": "Europe/Ulyanovsk", + "Europe/Uzhgorod": "Europe/Uzhgorod", + "Europe/Vaduz": "Europe/Vaduz", + "Europe/Vatican": "Europe/Vatican", + "Europe/Vienna": "Europe/Vienna", + "Europe/Vilnius": "Europe/Vilnius", + "Europe/Volgograd": "Europe/Volgograd", + "Europe/Warsaw": "Europe/Warsaw", + "Europe/Zagreb": "Europe/Zagreb", + "Europe/Zaporozhye": "Europe/Zaporozhye", + "Europe/Zurich": "Europe/Zurich", + "GB": "GB", + "GB-Eire": "GB-Eire", + "GMT": "GMT", + "GMT+0": "GMT+0", + "GMT-0": "GMT-0", + "GMT0": "GMT0", + "Greenwich": "Greenwich", + "HST": "HST", + "Hongkong": "Hongkong", + "Iceland": "Iceland", + "Indian/Antananarivo": "Indian/Antananarivo", + "Indian/Chagos": "Indian/Chagos", + "Indian/Christmas": "Indian/Christmas", + "Indian/Cocos": "Indian/Cocos", + "Indian/Comoro": "Indian/Comoro", + "Indian/Kerguelen": "Indian/Kerguelen", + "Indian/Mahe": "Indian/Mahe", + "Indian/Maldives": "Indian/Maldives", + "Indian/Mauritius": "Indian/Mauritius", + "Indian/Mayotte": "Indian/Mayotte", + "Indian/Reunion": "Indian/Reunion", + "Iran": "Iran", + "Israel": "Israel", + "Jamaica": "Jamaica", + "Japan": "Japan", + "Kwajalein": "Kwajalein", + "Libya": "Libya", + "MET": "MET", + "MST": "MST", + "MST7MDT": "MST7MDT", + "Mexico/BajaNorte": "Mexico/BajaNorte", + "Mexico/BajaSur": "Mexico/BajaSur", + "Mexico/General": "Mexico/General", + "NZ": "NZ", + "NZ-CHAT": "NZ-CHAT", + "Navajo": "Navajo", + "PRC": "PRC", + "PST8PDT": "PST8PDT", + "Pacific/Apia": "Pacific/Apia", + "Pacific/Auckland": "Pacific/Auckland", + "Pacific/Bougainville": "Pacific/Bougainville", + "Pacific/Chatham": "Pacific/Chatham", + "Pacific/Chuuk": "Pacific/Chuuk", + "Pacific/Easter": "Pacific/Easter", + "Pacific/Efate": "Pacific/Efate", + "Pacific/Enderbury": "Pacific/Enderbury", + "Pacific/Fakaofo": "Pacific/Fakaofo", + "Pacific/Fiji": "Pacific/Fiji", + "Pacific/Funafuti": "Pacific/Funafuti", + "Pacific/Galapagos": "Pacific/Galapagos", + "Pacific/Gambier": "Pacific/Gambier", + "Pacific/Guadalcanal": "Pacific/Guadalcanal", + "Pacific/Guam": "Pacific/Guam", + "Pacific/Honolulu": "Pacific/Honolulu", + "Pacific/Johnston": "Pacific/Johnston", + "Pacific/Kiritimati": "Pacific/Kiritimati", + "Pacific/Kosrae": "Pacific/Kosrae", + "Pacific/Kwajalein": "Pacific/Kwajalein", + "Pacific/Majuro": "Pacific/Majuro", + "Pacific/Marquesas": "Pacific/Marquesas", + "Pacific/Midway": "Pacific/Midway", + "Pacific/Nauru": "Pacific/Nauru", + "Pacific/Niue": "Pacific/Niue", + "Pacific/Norfolk": "Pacific/Norfolk", + "Pacific/Noumea": "Pacific/Noumea", + "Pacific/Pago_Pago": "Pacific/Pago_Pago", + "Pacific/Palau": "Pacific/Palau", + "Pacific/Pitcairn": "Pacific/Pitcairn", + "Pacific/Pohnpei": "Pacific/Pohnpei", + "Pacific/Ponape": "Pacific/Ponape", + "Pacific/Port_Moresby": "Pacific/Port_Moresby", + "Pacific/Rarotonga": "Pacific/Rarotonga", + "Pacific/Saipan": "Pacific/Saipan", + "Pacific/Samoa": "Pacific/Samoa", + "Pacific/Tahiti": "Pacific/Tahiti", + "Pacific/Tarawa": "Pacific/Tarawa", + "Pacific/Tongatapu": "Pacific/Tongatapu", + "Pacific/Truk": "Pacific/Truk", + "Pacific/Wake": "Pacific/Wake", + "Pacific/Wallis": "Pacific/Wallis", + "Pacific/Yap": "Pacific/Yap", + "Poland": "Poland", + "Portugal": "Portugal", + "ROC": "ROC", + "ROK": "ROK", + "Singapore": "Singapore", + "Turkey": "Turkey", + "UCT": "UCT", + "US/Alaska": "US/Alaska", + "US/Aleutian": "US/Aleutian", + "US/Arizona": "US/Arizona", + "US/Central": "US/Central", + "US/East-Indiana": "US/East-Indiana", + "US/Eastern": "US/Eastern", + "US/Hawaii": "US/Hawaii", + "US/Indiana-Starke": "US/Indiana-Starke", + "US/Michigan": "US/Michigan", + "US/Mountain": "US/Mountain", + "US/Pacific": "US/Pacific", + "US/Pacific-New": "US/Pacific-New", + "US/Samoa": "US/Samoa", + "UTC": "UTC", + "Universal": "Universal", + "W-SU": "W-SU", + "WET": "WET", + "Zulu": "Zulu" + } +} diff --git a/src/assets/i18n/en/organization.json b/src/assets/i18n/en/organization.json index f98d3fe..2028e9b 100644 --- a/src/assets/i18n/en/organization.json +++ b/src/assets/i18n/en/organization.json @@ -1,11 +1,14 @@ { "label": { + "organization": "Organization", "selectedUsers": "Selected Users", "addGroup": "Add Group", "chat": "Chat", "message": "Message", "call": "Call", - "videoConference": "Video Conference" + "videoConference": "Video Conference", + "searchResult": "Search Result", + "sortName": "Name" }, "presence": { "offline": "Offline", @@ -14,5 +17,65 @@ "statusMessage1": "Busy", "statusMessage2": "In conference", "statusMessage3": "In intensive work" + }, + "dialog": { + "title": { + "addGroup": "Add Group" + }, + "confirmAddBuddyForNewGroup": "Do you want to add members after creating '{{targetGroups}}' group?", + "confirmAddBuddyForGroup": "Would you like to add members to the '{{targetGroups}}' group?", + "errorAddBuddyForGroup": "No group name was specified, or no group was selected.", + "button": { + "addUser": "Add Complate" + } + }, + "profile": { + "me": "My profile", + "other": "Profile", + "company": "Company", + "email": "Email", + "lineNumber": "Office", + "mobileNumber": "Mobile", + "department": "Department", + "mytalk": "MyTalk", + "setting": "Setting", + "chat": "Chat", + "sms": "SMS", + "videoConference": "Conference", + "message": "Message", + "notSetNickname": "Not set nickname", + "chatWithUs": "Conversation with us.", + "unreadChat": "Unread conversation", + "notificationBot": "Notification Bot", + "noConversation": "There is no conversation.", + "placeholderForIntro": "Would you like to change the intro message?" + }, + "settings": { + "label": "Settings", + "sub": { + "general": "Genernal", + "notification": "Notification" + }, + "language": { + "messenger": "Language", + "hr": "HR language" + }, + "timezone": "Timezone", + "notification": { + "receival": "Get notified", + "receive": "Receive", + "notReceive": "Not receive", + "method": "Notification method", + "methodTypeSound": "Sound", + "methodTypeAlert": "Alert", + "methodTypeSoundAndAlert": "Sound + Alert", + "settingOfAlertWindow": "Alert | PC notification window exposure time", + "receiveForMobile": "Mobile notifications", + "receiveForMobileTypeAlways": "Always(When canceled, receive mobile notification only when PC version is absent)", + "descriptionReceiveForMobileTypeAlways": "Receive mobile notifications only when PC version is absent on release", + "message": "Message", + "receiveForMessage": "Message notifications", + "receiveForMessageTypePopup": "Alert view when receiving a message" + } } } diff --git a/src/assets/i18n/ko/authentication.json b/src/assets/i18n/ko/authentication.json index 5ef18c6..a3b7138 100644 --- a/src/assets/i18n/ko/authentication.json +++ b/src/assets/i18n/ko/authentication.json @@ -2,13 +2,16 @@ "login": { "labels": { "doLogin": "로그인", + "doLogout": "로그아웃", "rememberMe": "아이디 저장", "autoLogin": "자동 로그인", "instructionsOfLogin": "계정에 로그인 하세요.", "forgotPassword": "비밀번호 찾기", "resetPassword": "비밀번호 초기화", "notesOnUse": "이용시 주의 사항", - "selectCompany": "회사 선택" + "selectCompany": "회사 선택", + "changePassword": "비밀번호 변경", + "privacyPolicy": "개인정보 처리방침" }, "fields": { "company": "회사명", @@ -21,6 +24,53 @@ "requireLoginPw": "비밀번호를 입력해 주세요.", "failed": "로그인에 실패하였습니다.", "attemptsExceeded": "비밀번호 오류 횟수 초과입니다." + }, + "settings": { + "login": "로그인 설정", + "autoStartOnBoot": "Windows 실행 시 자동 실행", + "autoLogin": "실행 시 자동 로그인", + "autoHide": "실행 시 창 숨기기" + } + }, + "password": { + "labels": {}, + "fields": { + "changePassword": "비밀번호 변경", + "currentPassword": "현재 비밀번호", + "newPassword": "신규 비밀번호", + "newPasswordConfirm": "신규 비밀번호 확인" + }, + "placeholder": { + "currentPassword": "현재 비밀번호 입력", + "newPassword": "신규 비밀번호", + "newPasswordConfirm": "신규 비밀번호 확인" + }, + "errors": { + "requireCurrentPassword": "현재 비밀번호를 입력해 주세요", + "notSameWithCurrentPassword": "현재 비밀번호와 일치하지 않습니다", + "sameWithCurrentPassword": "현재 비밀번호와 동일합니다", + "requireNewPassword": "신규 비밀번호를 입력해 주세요", + "requireNewPasswordConfirm": "신규 비밀번호 확인을 입력해 주세요", + "notSameWithNewPassword": "신규 비밀번호와 신규 비밀번호 확인이 다릅니다", + "notContainSpacesForPassword": "비밀번호에는 공백을 입력할 수 없습니다", + "notContainUseridForPassword": "사용자 ID를 비밀번호에 포함할 수 없습니다", + "notContainPhonenumberForPassword": "사용자 휴대폰번호를 비밀번호에 포함할 수 없습니다", + "notAllowedAlphaNumOver3TimesForPassword": "숫자나 문자를 3번이상 반복적으로 사용할 수 없습니다", + "notAllowedConsecutiveAlphaNumOver3TimesForPassword": "연속되는 숫자나 문자를 3번이상 사용할 수 없습니다", + "notSatisfiedCombineForPassword": "문자, 숫자, 특수문자 중 2종류 이상 조합을 해야 합니다", + "minLengthCombineForPassword": "비밀번호는 {{countOfCombine}}가지가 조합된 경우 {{lengthOfPassword}}자를 넘어야 합니다", + "failToChange": "비밀번호 변경에 실패하였습니다." + }, + "notice": { + "condition": "비밀번호 조건", + "condition1": "최소 8자리 이상 : 영어 소문자, 숫자, 특수문자 중 3종류 조합으로 설정 가능", + "condition2": "최소 10자리 이상 : 영어 소문자, 숫자, 특수문자 중 2종류 조합으로 설정 가능", + "condition3": "반복적인 숫자 또는 문자 3자리 이상 포함 시 비밀번호 설정 불가", + "condition4": "연속적인 숫자 또는 문자 3자리 이상 포함 시 비밀번호 설정 불가", + "condition5": "사용자 ID와 휴대폰 번호 포함 시 비밀번호 설정 불가" + }, + "settings": { + "label": "비밀번호" } } } diff --git a/src/assets/i18n/ko/call.json b/src/assets/i18n/ko/call.json index 0967ef4..26d7d24 100644 --- a/src/assets/i18n/ko/call.json +++ b/src/assets/i18n/ko/call.json @@ -1 +1,5 @@ -{} +{ + "settings": { + "label": "통화" + } +} diff --git a/src/assets/i18n/ko/chat.json b/src/assets/i18n/ko/chat.json index f5288d2..96402b5 100644 --- a/src/assets/i18n/ko/chat.json +++ b/src/assets/i18n/ko/chat.json @@ -3,18 +3,28 @@ "searchRoomByName": "대화방명, 대화 참석자 검색", "noRoomUser": "대화상대 없음", "today": "오늘", - "openRoom": "대화방 열기", - "turnOnRoomAlert": "대화방 알람 켜기", - "turnOffRoomAlert": "대화방 알람 끄기", - "exitFromRoom": "대화방 나가기" + "yesterday": "어제", + "noSelectRoom": "선택된 대화방이 없습니다." }, "label": { "chat": "대화", "menu": "메뉴", "search": "검색", - "notificationIsOn": "알림 켜짐", - "notificationIsOff": "알림 꺼짐", - "showRoomUsers": "대화방 참여인원 보기", + "favorite": "즐겨찾기", + "turnOnRoomAlert": "대화방 알람 켜기", + "turnOffRoomAlert": "대화방 알람 끄기", + "data": "자료실", + "image": "이미지", + "video": "동영상", + "file": "파일", + "event": "이벤트", + "selectedRoom": "선택된 대화방", + "showRoomUsers": "대화방 멤버", + "addRoomUsers": "대화방 멤버 추가", + "addGroup": "그룹멤버로 추가", + "roomSetting": "대화방 설정", + "openRoom": "대화방 열기", + "exitFromRoom": "대화방 나가기", "send": "전송", "attachFile": "첨부파일", "attachImage": "첨부이미지", @@ -22,11 +32,34 @@ "imoticon": "이모티콘", "emailSend": "대화내용 메일전송", "translation": "대화내용 번역", - "gams": "+GAMS" + "gams": "+GAMS", + "replayEvent": "답장", + "copyChatText": "복사", + "forwardEventTo": "전달", + "forwardEventToMe": "나에게 전달", + "removeEvent": "삭제", + "recallEvent": "회수", + "openViewer": "뷰어로 열기", + "inputChatMessage": "메시지를 입력하세요", + "translations": { + "translation": "번역", + "targetLanguage": "대상언어", + "noTranslation": "번역없음", + "simpleView": "간략보기", + "preview": "미리보기" + }, + "emailSends": { + "sendAll": "모두에게 보내기", + "sendMe": "나에게 보내기" + }, + "fileSends": { + "fileSend": "파일전송", + "dragHere": "이 영역으로 파일을 드래그 하시면 업로드 됩니다." + } }, "event": { - "inviteToRoomWith": "{{owner}}님이 {{inviter}}님을 초대했습니다.", - "exitFromRoomWith": "{{exitor}}님이 퇴장하셨습니다.", + "inviteToRoomWith": "{{owner}}님이 {{inviter}}님을 초대했습니다.", + "exitFromRoomWith": "{{exitor}}님이 퇴장하셨습니다.", "ejectedFromRoomWith": "{{requester}}님이 {{ejected}}님을 퇴장 시키셨습니다.", "renamedRoomWith": "{{requester}}님이 대화방명을 '{{roomName}}'으로 변경하셨습니다.", "setTimerWith": "{{requester}}님이 타이머를 설정하였습니다. ({{timer}})", @@ -42,32 +75,81 @@ "scheduleTypeDefault": "[이벤트] 조회중..", "scheduleTypePrefix": "[이벤트] ", "scheduleTypeSurfixLeft": " 전 알림", + "showScheduleDetail": "상세 보기", "showPreviousEvents": "이전 대화 보기", - "moreUnreadEventsWith": "안읽은 메시지가 ({{countOfUnread}})개 더 있습니다." + "moreUnreadEventsWith": "안읽은 메시지가 ({{countOfUnread}})개 더 있습니다.", + "isRoomTypeSecret": "비밀 대화방입니다", + "noRecentChat": "최근 대화 없음" }, "errors": { "label": "대화 에러", "inputChatMessage": "대화 내용을 입력해 주세요.", "maxLengthOfMassText": "스티커를 포함할 경우 {{maxLength}}자 이상 보낼 수 없습니다.", - "maxCountOfRoomMemberWith": "{{maxCount}}명 이상 대화할 수 없습니다.", + "maxCountOfRoomMemberWith": "나를 포함하여 {{maxCount}}명 이상 대화할 수 없습니다.", "emptyOpenRoomType": "대화방 타입을 선택해 주세요.", - "translateServerError": "번역하지 못했습니다." + "translateServerError": "번역하지 못했습니다.", + "addBuddyForGroup": "그룹명을 지정하지 않았거나, 선택된 그룹이 없습니다." }, "dialog": { "title": { - "exitFromRoom": "대화방 나가기", - "newChatRoom": "새로운 대화방 추가" + "removeChat": "대화 삭제", + "newChatRoom": "새 대화방 추가", + "forwardTo": "대화 전달", + "ejectFromRoom": "강제 퇴장", + "detail": "전체보기", + "roomNameGuide": "대화방 이름 설정 안내", + "roomTimerGuide": "타이머 설정 안내", + "fileDownloadCheck": "파일 확인자", + "subSelectRoomType": "대화방 유형 선택", + "subSelectUser": "멤버 선택" }, + "confirmRemoveChat": "선택한 메시지를 삭제하시겠습니까?
      삭제된 메시지는 내 대화방에서만 적용되며 상대방의 대화방에서는 삭제되지 않습니다.", + "confirmRecallEvent": "해당 대화를 회수하시겠습니까?
      상대방 대화창에서도 회수됩니다.", "confirmExitFromRoom": "대화방을 나가시겠습니까?
      나가기를 하면 대화내용 및 대화방 정보가 삭제됩니다.", + "confirmAddBuddyForNewGroup": "대화방 멤버를 '{{targetGroups}}' 그룹을 생성 후 추가하시겠습니까?", + "confirmAddBuddyForGroup": "대화방 멤버를 '{{targetGroups}}' 그룹에 추가하시겠습니까?", + "confirmEjectFromRoom": "{{targetMember}} 님을 대화방에서 퇴장 시키겠습니까?", + "confirmSendEventEmailAll": "대화내용을 이메일로 모두에게 보내시겠습니까?", + "confirmSendEventEmailMe": "대화내용을 이메일로 나에게 보내시겠습니까?", "normalRoom": "일반 대화방", "timerRoom": "타이머 대화방", - "normalRoomDescription": "{{maxCount}}명 까지
      참여가 가능합니다.", - "timerRoomDescription": "타이머 설정시
      대화내용이 자동으로 삭제됩니다.", + "normalRoomDescription": "{{maxCount}}명까지
      참여가 가능합니다.", + "timerRoomDescription": "타이머 설정 시 설정한 시간이 지나면
      대화내용이 자동으로 삭제됩니다.", + "roomNameGuideDescription": "대화방 이름을 설정해 보세요.
      대화방 설정 단계에서 이름을 설정하시면 모든 멤버들에게 똑같이 적용됩니다.", + "roomTimerGuideDescription": "비밀 대화방을 개설하였습니다.
      기본 타이머는 24시간이며 24시간 후에 모든 메시지가 삭제됩니다.
      타이머 변경을 원하시면 아래에서 원하시는 시간을 선택하세요.", + "sendEventEmailSuccess": "대화내용을 메일로 전달하였습니다.", + "selectedUserList": "선택한 멤버", + "roomName": "대화방 이름", + "roomNameChangeTarget": "변경 적용 대상자", + "me": "나", + "all": "전체", + "settingTimer": "타이머 설정", + "settingTimerHint": "※ 설정시간이 초과되면 대화내용이 삭제됩니다.", + "group": "그룹", + "roomList": "대화방 리스트", + "searchResult": "검색결과", "button": { + "save": "완료", "cancel": "취소", "previous": "이전", - "selectRoomUser": "대화방 멤버 선택", - "openRoom": "대화방 생성" + "selectRoomUser": "멤버 선택", + "openRoom": "대화방 생성", + "addUser": "추가 완료", + "settingSave": "설정 완료", + "addUserChatRoom": "대화방 멤버 추가", + "addGroupMember": "그룹 멤버로 추가", + "del": "삭제", + "changeFolder": "폴더변경", + "openViewer": "뷰어보기", + "download": "다운로드", + "all": "전체", + "receiveFiles": "받은{{targetObject}}", + "sendFiles": "보낸{{targetObject}}", + "downloaded": "확인", + "downloadNotYet": "미확인" } + }, + "settings": { + "label": "대화" } } diff --git a/src/assets/i18n/ko/common.json b/src/assets/i18n/ko/common.json index e27b753..51d2eb8 100644 --- a/src/assets/i18n/ko/common.json +++ b/src/assets/i18n/ko/common.json @@ -1,31 +1,83 @@ { - "common": { - "messages": { - "no": "아니요", - "yes": "예", - "confirm": "확인" - }, - "units": { - "date": "날짜", - "time": "시간", - "hour": "시", - "hourFrom": "시간", - "minute": "분", - "second": "초", - "persons": "명", - "hourLaterWith": "{{hour}}시간 뒤", - "tomorrowMorning": "내일 아침", - "tomorrowAfternoon": "내일 오후", - "weekLaterWith": "{{week}}주일 뒤", - "monthLaterWith": "{{month}}달 뒤" - }, - "file": { - "errors": { - "failToUpload": "파일 업로드에 실패하였습니다.", - "notSupporedType": "지원하지 않는 파일형식입니다.
      ({{supporedType}})", - "notAcceptableMime": "유효하지 않은 파일 타입입니다.
      ({{supporedType}})", - "oversize": "{{maxSize}}MB 이상 파일을 업로드 할 수 없습니다." - } + "useSpecialCharactor": "특수문자는 -,_ 만 사용할 수 있습니다.", + "messages": { + "no": "아니요", + "yes": "예", + "confirm": "확인", + "select": "선택", + "selectAll": "전체 선택", + "unselect": "선택 해제", + "searching": "검색중", + "cancel": "취소", + "complate": "완료", + "close": "닫기", + "modify": "수정", + "remove": "삭제", + "apply": "적용", + "minimizeWindow": "창 최소화", + "maxmizeWindow": "창 최대화", + "restoreWindow": "창 이전 크기", + "closeWindow": "창 닫기", + "zoomOut": "축소", + "zoomIn": "확대", + "zoomReset": "원본 비율", + "sirWith": "{{sir}}님", + "exit": "종료" + }, + "units": { + "date": "날짜", + "time": "시간", + "hour": "시", + "hourFrom": "시간", + "minute": "분", + "second": "초", + "persons": "명", + "hourLaterWith": "{{hour}}시간 뒤", + "tomorrowMorning": "내일 아침", + "tomorrowAfternoon": "내일 오후", + "weekLaterWith": "{{week}}주일 뒤", + "monthLaterWith": "{{month}}달 뒤" + }, + "file": { + "fileOpen": "파일 열기", + "folderOpen": "폴더 열기", + "download": "파일 다운로드", + "delete": "파일 삭제", + "save": "저장", + "saveAs": "다른 이름으로 저장", + "saveAll": "파일 모두 저장", + "refresh": "새로고침", + "downloading": "다운로드중...", + "errors": { + "failToUpload": "파일 업로드에 실패하였습니다.", + "noPreview": "미리보기를 지원하지 않는 파일입니다.", + "cantPlay": "재생을 지원하지 않는 파일입니다.", + "notSupporedType": "지원하지 않는 파일형식입니다.
      ({{supporedType}})", + "notAcceptableMime": "유효하지 않은 파일 타입입니다.
      ({{supporedType}})", + "oversize": "{{maxSize}}MB 이상 파일을 업로드 할 수 없습니다." } + }, + "player": { + "play": "재생", + "stop": "멈춤" + }, + "notification": { + "titleChatEventArrivedByUser": "{{userInfo}} 님의 메세지.", + "titleChatEventArrived": "메세지가 도착했습니다.", + "titleMessageArrivedByUser": "{{userInfo}} 님의 쪽지.", + "titleMessageArrived": "쪽지가 도착했습니다." + }, + "tooltip": { + "group": "그룹", + "chat": "대화", + "organization": "조직도", + "message": "쪽지", + "call": "전화", + "videoConference": "화상회의", + "mobile": "모바일", + "office": "내선전화", + "exitForcing": "강제퇴장", + "profile": "프로필", + "more": "더보기" } } diff --git a/src/assets/i18n/ko/group.json b/src/assets/i18n/ko/group.json index 049495e..e2efd5f 100644 --- a/src/assets/i18n/ko/group.json +++ b/src/assets/i18n/ko/group.json @@ -1,62 +1,81 @@ { - "label": { - "confirmRemoveBuddy": "선택한 멤버를 삭제하시겠습니까?\n해당 그룹에서만 선택하신 멤버가 삭제됩니다." - }, "category": { "favorite": "즐겨찾기", "default": "기본", "myDept": "소속부서" }, - "moreMenu": { - "show": { - "all": "전체 보기", - "onlineBuddy": "접속한 동료만 보기", - "onOff": "온/오프라인 보기" - }, - "group": { - "addNew": "새 그룹 추가", - "expandMore": "그룹 전체 열기", - "expandLess": "그룹 전체 닫기", - "changeOrder": "그룹 순서 바꾸기", - "startChatWithGroup": "그룹 대화하기", - "sendMessageToGroup": "그룹 쪽지 보내기", - "groupMemberManagement": "그룹 멤버 관리", - "changeGroupName": "그룹 이름 바꾸기", - "removeGroup": "그룹 삭제" - }, - "profile": { - "open": "프로필 보기", - "favorite": "즐겨찾기 설정", - "nickname": "닉네임 설정", - "moveBuddy": "대화상대 이동", - "copyBuddy": "대화상대 복사", - "removeBuddy": "이 그룹에서 삭제" - }, - "confirm": { - "removeGroup": "그룹을 삭제하시겠습니까?
      그룹 멤버는 해당 그룹에서만 삭제됩니다." - }, - "error": { - "label": "그룹 에러", - "requireName": "그룹명은 필수입력입니다." - } + "label": { + "group": "그룹", + "member": "멤버", + "organization": "조직도", + "addNewGroup": "새 그룹 추가", + "existingGroup": "기존 그룹 지정", + "searchResult": "검색결과", + "addMember": "대화상대 추가", + "online": "온라인", + "offline": "오프라인" }, - - "profile": { - "labels": { - "myProfile": "내 프로필", - "company": "회사", - "email": "이메일", - "linePhoneNumber": "사무실", - "mobilePhoneNumber": "핸드폰", - "department": "부서", - "chat": "대화", - "sms": "SMS", - "videoConference": "화상회의", - "message": "쪽지" + "dialog": { + "title": { + "addBuddy": "동료추가", + "removeBuddy": "동료삭제", + "removeGroup": "그룹삭제", + "createGroup": "그룹생성", + "subTitleGroupInfo": "그룹정보 등록", + "subTitleSelectMember": "멤버 선택", + "copyGroup": "그룹 멤버 복사", + "moveGroup": "그룹 멤버 이동", + "managementGroup": "그룹 멤버 관리", + "messageGroup": "그룹쪽지" }, - "fields": { - "intro": "인트로" + "btn": { + "remove": "삭제", + "cancel": "취소", + "compleate": "완료", + "addGroupCompleate": "그룹 추가 완료", + "selectMemberAndComplete": "멤버 선택 후 완료" }, - "errors": {} + "newGroupName": "새로운 그룹명을 입력 해 주세요", + "newNickname": "닉네임을 설정하세요.", + "selectedMember": "선택한 멤버", + "removeBuddyConfirm": "{{targetMember}} 선택한 멤버를 삭제하시겠습니까?
      해당 그룹에서만 선택하신 멤버가 삭제됩니다.", + "removeGroupConfirm": "{{targetGroup}}을 삭제하시겠습니까?
      그룹 멤버는 해당 그룹에서만 삭제됩니다.", + "removeBuddyFromMenu": "{{target}}{{targetGroup}}그룹에서 삭제하시겠습니까?", + "removeBuddyFromProfile": "{{target}}를 그룹에서 삭제하시겠습니까?
      프로필에서 삭제하면 모든 그룹에서 삭제됩니다." + }, + "error": { + "title": { + "default": "에러" + }, + "useOnlyForSpecialCharacter": "특수문자는 {{specialCharacter}}만 사용할 수 있습니다.", + "requireInput": "필수 입력사항입니다.", + "requireGroupName": "그룹명은 필수입력입니다.", + "invalidGroupName": "유효하지 않은 그룹명입니다.", + "notSelectedUser": "선택된 유저가 존재하지 않습니다.", + "bannedWords": "금지단어 [{{bannedWords}}]", + "sameNameExist": "이미 존재하는 그룹명입니다." + }, + "contextMenu": { + "all": "전체 보기", + "onlineBuddy": "접속한 동료만 보기", + "onOffBuddy": "온/오프라인 보기", + "addNewGroup": "새 그룹 추가", + "expandMore": "그룹 전체 열기", + "expandLess": "그룹 전체 닫기", + "changeOrder": "그룹 순서 바꾸기", + "startChatWithGroup": "그룹 대화하기", + "sendMessageToGroup": "그룹 쪽지 보내기", + "groupMemberManagement": "그룹 멤버 관리", + "changeGroupName": "그룹 이름 바꾸기", + "removeGroup": "그룹 삭제", + "profileOpen": "프로필 보기", + "unfavorite": "즐겨찾기 해제", + "addFavorite": "즐겨찾기 등록", + "setNickname": "닉네임 설정", + "copyGroupMember": "그룹 복사", + "moveGroupMember": "그룹 이동", + "moveBuddy": "대화상대 이동", + "copyBuddy": "대화상대 복사", + "removeBuddyFromGroup": "이 그룹에서 삭제" } } diff --git a/src/assets/i18n/ko/locale.json b/src/assets/i18n/ko/locale.json new file mode 100644 index 0000000..66c4c41 --- /dev/null +++ b/src/assets/i18n/ko/locale.json @@ -0,0 +1,602 @@ +{ + "languages": { + "ko": "한국어", + "en": "영어", + "cn": "중국어" + }, + "timezone": { + "Africa/Abidjan": "아프리카/아비 장", + "Africa/Accra": "아프리카/아크라", + "Africa/Addis_Ababa": "아프리카/아디스 아바바", + "Africa/Algiers": "아프리카/알제", + "Africa/Asmara": "아프리카/아스 마라", + "Africa/Asmera": "아프리카/아스 메라", + "Africa/Bamako": "아프리카/바마코", + "Africa/Bangui": "아프리카/반 귀이", + "Africa/Banjul": "아프리카/반줄", + "Africa/Bissau": "아프리카/비사우", + "Africa/Blantyre": "아프리카/블랜 타이어", + "Africa/Brazzaville": "아프리카/브라자빌", + "Africa/Bujumbura": "아프리카/부줌 부라", + "Africa/Cairo": "아프리카/카이로", + "Africa/Casablanca": "아프리카/카사 블랑카", + "Africa/Ceuta": "아프리카/세 우타", + "Africa/Conakry": "아프리카/코나 크리", + "Africa/Dakar": "아프리카/다카르", + "Africa/Dar_es_Salaam": "아프리카/다르 에스 살람", + "Africa/Djibouti": "아프리카/지부티", + "Africa/Douala": "아프리카/두 알라", + "Africa/El_Aaiun": "아프리카/엘 아이 운", + "Africa/Freetown": "아프리카/프리 타운", + "Africa/Gaborone": "아프리카/가보 로네", + "Africa/Harare": "아프리카/해러", + "Africa/Johannesburg": "아프리카/요하네스 버그", + "Africa/Juba": "아프리카/유바", + "Africa/Kampala": "아프리카/캄팔라", + "Africa/Khartoum": "아프리카/하르툼", + "Africa/Kigali": "아프리카/키 갈리", + "Africa/Kinshasa": "아프리카/킨 샤사", + "Africa/Lagos": "아프리카/라고스", + "Africa/Libreville": "아프리카/리버빌", + "Africa/Lome": "아프리카/로마", + "Africa/Luanda": "아프리카/루안다", + "Africa/Lubumbashi": "아프리카/루 붐바시", + "Africa/Lusaka": "아프리카/루사카", + "Africa/Malabo": "아프리카/말라 보", + "Africa/Maputo": "아프리카/마푸토", + "Africa/Maseru": "아프리카/마세 루", + "Africa/Mbabane": "아프리카/음 바바 네", + "Africa/Mogadishu": "아프리카/모가디슈", + "Africa/Monrovia": "아프리카/몬로 비아", + "Africa/Nairobi": "아프리카/나이로비", + "Africa/Ndjamena": "아프리카/냐자 메나", + "Africa/Niamey": "아프리카/니암", + "Africa/Nouakchott": "아프리카/누악 쇼트", + "Africa/Ouagadougou": "아프리카/오아가 두구", + "Africa/Porto-Novo": "아프리카/포르토 노보", + "Africa/Sao_Tome": "아프리카/사 오토메", + "Africa/Timbuktu": "아프리카/팀북투", + "Africa/Tripoli": "아프리카/트리폴리", + "Africa/Tunis": "아프리카/튀니지", + "Africa/Windhoek": "아프리카/빈트 후크", + "America/Adak": "아메리카/아닥", + "America/Anchorage": "아메리카/앵커리지", + "America/Anguilla": "아메리카/앵귈라", + "America/Antigua": "아메리카/안티구아", + "America/Araguaina": "아메리카/아라구아나", + "America/Argentina/Buenos_Aires": "아메리카/아르헨티나/부에노스 아이레스", + "America/Argentina/Catamarca": "아메리카/아르헨티나/카타 마르카", + "America/Argentina/ComodRivadavia": "아메리카/아르헨티나/코모드 리바다비아", + "America/Argentina/Cordoba": "아메리카/아르헨티나/코르도바", + "America/Argentina/Jujuy": "아메리카/아르헨티나/주이", + "America/Argentina/La_Rioja": "아메리카/아르헨티나/라 리오하", + "America/Argentina/Mendoza": "아메리카/아르헨티나/멘도사", + "America/Argentina/Rio_Gallegos": "아메리카/아르헨티나/리오 갈레고스", + "America/Argentina/Salta": "아메리카/아르헨티나/살타", + "America/Argentina/San_Juan": "아메리카/아르헨티나/산후 안", + "America/Argentina/San_Luis": "아메리카/아르헨티나/산 루이스", + "America/Argentina/Tucuman": "아메리카/아르헨티나/투쿠 만", + "America/Argentina/Ushuaia": "아메리카/아르헨티나/우수아", + "America/Aruba": "아메리카/아루바", + "America/Asuncion": "아메리카/아순시온", + "America/Atikokan": "아메리카/아 티코 칸", + "America/Atka": "아메리카/아트카", + "America/Bahia": "아메리카/바이아", + "America/Bahia_Banderas": "아메리카/바이아 반데라스", + "America/Barbados": "아메리카/바베이도스", + "America/Belem": "아메리카/벨렘", + "America/Belize": "아메리카/벨리즈", + "America/Blanc-Sablon": "아메리카/블랑-사블 론", + "America/Boa_Vista": "아메리카/보아 비스타", + "America/Bogota": "아메리카/보고타", + "America/Boise": "아메리카/보이즈", + "America/Buenos_Aires": "아메리카/부에노스 아이레스", + "America/Cambridge_Bay": "아메리카/캠브리지 _ 베이", + "America/Campo_Grande": "아메리카/캄포 그란데", + "America/Cancun": "아메리카/칸쿤", + "America/Caracas": "아메리카/카라카스", + "America/Catamarca": "아메리카/카타 마르카", + "America/Cayenne": "아메리카/카이엔", + "America/Cayman": "아메리카/케이맨", + "America/Chicago": "아메리카/시카고", + "America/Chihuahua": "아메리카/치와와", + "America/Coral_Harbour": "아메리카/코럴 하버", + "America/Cordoba": "아메리카/코르도바", + "America/Costa_Rica": "아메리카/코스타리카", + "America/Creston": "아메리카/크레 스턴", + "America/Cuiaba": "아메리카/쿠이 아바", + "America/Curacao": "아메리카/쿠라 카오", + "America/Danmarkshavn": "아메리카/단마크하븐", + "America/Dawson": "아메리카/도슨", + "America/Dawson_Creek": "아메리카/도슨 크릭", + "America/Denver": "아메리카/덴버", + "America/Detroit": "아메리카/디트로이트", + "America/Dominica": "아메리카/도미니카", + "America/Edmonton": "아메리카/에드먼턴", + "America/Eirunepe": "아메리카/에루네페", + "America/El_Salvador": "아메리카/엘살바도르", + "America/Ensenada": "아메리카/엔 세나다", + "America/Fort_Nelson": "아메리카/포트 넬슨", + "America/Fort_Wayne": "아메리카/포트 웨인", + "America/Fortaleza": "아메리카/포르탈레자", + "America/Glace_Bay": "아메리카/그레이스 베이", + "America/Godthab": "아메리카/고트 하브", + "America/Goose_Bay": "아메리카/구스 베이", + "America/Grand_Turk": "아메리카/그랜드 터크", + "America/Grenada": "아메리카/그레나다", + "America/Guadeloupe": "아메리카/과들루프", + "America/Guatemala": "아메리카/과테말라", + "America/Guayaquil": "아메리카/과야퀼", + "America/Guyana": "아메리카/가이아나", + "America/Halifax": "아메리카/할리팩스", + "America/Havana": "아메리카/하바나", + "America/Hermosillo": "아메리카/헤르모실로", + "America/Indiana/Indianapolis": "아메리카/인디애나/인디애나폴리스", + "America/Indiana/Knox": "아메리카/인디애나/녹스", + "America/Indiana/Marengo": "아메리카/인디애나/마렝고", + "America/Indiana/Petersburg": "아메리카/인디애나/피터스버그", + "America/Indiana/Tell_City": "아메리카/인디애나/텔시티", + "America/Indiana/Vevay": "아메리카/인디애나/비베이", + "America/Indiana/Vincennes": "아메리카/인디애나/빈센테", + "America/Indiana/Winamac": "아메리카/인디애나/윈아멕", + "America/Indianapolis": "아메리카/인디애나폴리스", + "America/Inuvik": "아메리카/이누빅", + "America/Iqaluit": "아메리카/이칼루이트", + "America/Jamaica": "아메리카/자메이카", + "America/Jujuy": "아메리카/주이", + "America/Juneau": "아메리카/주노", + "America/Kentucky/Louisville": "아메리카/켄터키/루이스 빌", + "America/Kentucky/Monticello": "아메리카/켄터키/몬티 첼로", + "America/Knox_IN": "아메리카/녹스 IN", + "America/Kralendijk": "아메리카/크라랜디직", + "America/La_Paz": "아메리카/라 파즈", + "America/Lima": "아메리카/리마", + "America/Los_Angeles": "아메리카/로스 앤젤레스", + "America/Louisville": "아메리카/루이스 빌", + "America/Lower_Princes": "아메리카/하위 프린스", + "America/Maceio": "아메리카/마세 이오", + "America/Managua": "아메리카/마나과", + "America/Manaus": "아메리카/마나우스", + "America/Marigot": "아메리카/마리 고", + "America/Martinique": "아메리카/마르티니크", + "America/Matamoros": "아메리카/마타 모로", + "America/Mazatlan": "아메리카/마자 틀란", + "America/Mendoza": "아메리카/멘도사", + "America/Menominee": "아메리카/메노 민", + "America/Merida": "아메리카/메리다", + "America/Metlakatla": "아메리카/메틀 라카 틀라", + "America/Mexico_City": "아메리카/멕시코시티", + "America/Miquelon": "아메리카/미켈론", + "America/Moncton": "아메리카/몬크톤", + "America/Monterrey": "아메리카/몬테레이", + "America/Montevideo": "아메리카/몬테비데오", + "America/Montreal": "아메리카/몬트리올", + "America/Montserrat": "아메리카/몬체 라트", + "America/Nassau": "아메리카/나소", + "America/New_York": "아메리카/뉴욕", + "America/Nipigon": "아메리카/니피곤", + "America/Nome": "아메리카/노메", + "America/Noronha": "아메리카/노로냐", + "America/North_Dakota/Beulah": "아메리카/노스 다코타/부라", + "America/North_Dakota/Center": "아메리카/노스 다코타/센터", + "America/North_Dakota/New_Salem": "아메리카/노스 다코타/뉴 살렘", + "America/Ojinaga": "아메리카/오지나가", + "America/Panama": "아메리카/파나마", + "America/Pangnirtung": "아메리카/판니르퉁", + "America/Paramaribo": "아메리카/파라마리보", + "America/Phoenix": "아메리카/피닉스", + "America/Port-au-Prince": "아메리카/포트 오 프린스", + "America/Port_of_Spain": "아메리카/포트 오브 스페인", + "America/Porto_Acre": "아메리카/포르토 아크레", + "America/Porto_Velho": "아메리카/포르토 벨호", + "America/Puerto_Rico": "아메리카/푸에르토 리코", + "America/Punta_Arenas": "아메리카/푼타 아레나", + "America/Rainy_River": "아메리카/레이니 리버", + "America/Rankin_Inlet": "아메리카/랜킨 인렛", + "America/Recife": "아메리카/레시페", + "America/Regina": "아메리카/레지나", + "America/Resolute": "아메리카/리졸루트", + "America/Rio_Branco": "아메리카/리오 브랑코", + "America/Rosario": "아메리카/로자리오", + "America/Santa_Isabel": "아메리카/산타 이사벨", + "America/Santarem": "아메리카/산타렘", + "America/Santiago": "아메리카/산티아고", + "America/Santo_Domingo": "아메리카/산토 도밍고", + "America/Sao_Paulo": "아메리카/상파울루", + "America/Scoresbysund": "아메리카/스코어스비순드", + "America/Shiprock": "아메리카/쉽락", + "America/Sitka": "아메리카/싯카", + "America/St_Barthelemy": "아메리카/세인트 바델레미", + "America/St_Johns": "아메리카/세인트 존스", + "America/St_Kitts": "아메리카/세인트 키츠", + "America/St_Lucia": "아메리카/세인트 루시아", + "America/St_Thomas": "아메리카/세인트 토마스", + "America/St_Vincent": "아메리카/세인트 빈센트", + "America/Swift_Current": "아메리카/스위프트 커런트", + "America/Tegucigalpa": "아메리카/테구시갈파", + "America/Thule": "아메리카/툴레", + "America/Thunder_Bay": "아메리카/선더 베이", + "America/Tijuana": "아메리카/티후아나", + "America/Toronto": "아메리카/토론토", + "America/Tortola": "아메리카/토르톨라", + "America/Vancouver": "아메리카/밴쿠버", + "America/Virgin": "아메리카/버진", + "America/Whitehorse": "아메리카/화이트호스", + "America/Winnipeg": "아메리카/위니펙", + "America/Yakutat": "아메리카/야쿠타트", + "America/Yellowknife": "아메리카/옐로나이프", + "Antarctica/Casey": "남극/케이시", + "Antarctica/Davis": "남극/데이비스", + "Antarctica/DumontDUrville": "남극/듀몽듀르빌", + "Antarctica/Macquarie": "남극/맥쿼리", + "Antarctica/Mawson": "남극/모손", + "Antarctica/McMurdo": "남극 대륙/맥머도", + "Antarctica/Palmer": "남극/팔머", + "Antarctica/Rothera": "남극/로 데라", + "Antarctica/South_Pole": "남극/남극", + "Antarctica/Syowa": "남극/요와", + "Antarctica/Troll": "남극/트롤", + "Antarctica/Vostok": "남극/보스 토크", + "Arctic/Longyearbyen": "북극/롱 이어 비엔", + "Asia/Aden": "아시아/아덴", + "Asia/Almaty": "아시아/알마티", + "Asia/Amman": "아시아/암만", + "Asia/Anadyr": "아시아/아나 디르", + "Asia/Aqtau": "아시아/악 타우", + "Asia/Aqtobe": "아시아/악 토베", + "Asia/Ashgabat": "아시아/아시가 바트", + "Asia/Ashkhabad": "아시아/아쉬 카바 드", + "Asia/Atyrau": "아시아/아티 라우", + "Asia/Baghdad": "아시아/바그다드", + "Asia/Bahrain": "아시아/바레인", + "Asia/Baku": "아시아/바쿠", + "Asia/Bangkok": "아시아/방콕", + "Asia/Barnaul": "아시아/바르나울", + "Asia/Beirut": "아시아/베이루트", + "Asia/Bishkek": "아시아/비슈케크", + "Asia/Brunei": "아시아/브루나이", + "Asia/Calcutta": "아시아/캘커타", + "Asia/Chita": "아시아/치타", + "Asia/Choibalsan": "아시아/최발산", + "Asia/Chongqing": "아시아/충칭", + "Asia/Chungking": "아시아/청킹", + "Asia/Colombo": "아시아/콜롬보", + "Asia/Dacca": "아시아/다카", + "Asia/Damascus": "아시아/다마스커스", + "Asia/Dhaka": "아시아/다카", + "Asia/Dili": "아시아/힌디어", + "Asia/Dubai": "아시아/두바이", + "Asia/Dushanbe": "아시아/두샨베", + "Asia/Famagusta": "아시아/파 마구 스타", + "Asia/Gaza": "아시아/가자", + "Asia/Harbin": "아시아/하얼빈", + "Asia/Hebron": "아시아/헤브론", + "Asia/Ho_Chi_Minh": "아시아/호치민", + "Asia/Hong_Kong": "아시아/홍콩", + "Asia/Hovd": "아시아/호브드", + "Asia/Irkutsk": "아시아/이르쿠츠크", + "Asia/Istanbul": "아시아/이스탄불", + "Asia/Jakarta": "아시아/자카르타", + "Asia/Jayapura": "아시아/자야푸라", + "Asia/Jerusalem": "아시아/예루살렘", + "Asia/Kabul": "아시아/카불", + "Asia/Kamchatka": "아시아/캄차카", + "Asia/Karachi": "아시아/카라치", + "Asia/Kashgar": "아시아/카슈가르", + "Asia/Kathmandu": "아시아/카트만두", + "Asia/Katmandu": "아시아/카트만두", + "Asia/Khandyga": "아시아/칸디가", + "Asia/Kolkata": "아시아/콜카타", + "Asia/Krasnoyarsk": "아시아/크라스 노야 르 스크", + "Asia/Kuala_Lumpur": "아시아/쿠알라 룸푸르", + "Asia/Kuching": "아시아/쿠칭", + "Asia/Kuwait": "아시아/쿠웨이트", + "Asia/Macao": "아시아/마카오", + "Asia/Macau": "아시아/마카오", + "Asia/Magadan": "아시아/마가 단", + "Asia/Makassar": "아시아/마카 사르", + "Asia/Manila": "아시아/마닐라", + "Asia/Muscat": "아시아/무스카트", + "Asia/Nicosia": "아시아/니코 시아", + "Asia/Novokuznetsk": "아시아/노보 쿠즈네츠 크", + "Asia/Novosibirsk": "아시아/노보시비르스크", + "Asia/Omsk": "아시아/옴 스크", + "Asia/Oral": "아시아/오랄", + "Asia/Phnom_Penh": "아시아/프놈펜", + "Asia/Pontianak": "아시아/폰티아낙", + "Asia/Pyongyang": "아시아/평양", + "Asia/Qatar": "아시아/카타르", + "Asia/Qostanay": "아시아/쿠스타나이", + "Asia/Qyzylorda": "아시아/키질로르다", + "Asia/Rangoon": "아시아/랑군", + "Asia/Riyadh": "아시아/리야드", + "Asia/Saigon": "아시아/사이공", + "Asia/Sakhalin": "아시아/사할린", + "Asia/Samarkand": "아시아/사마르 칸트", + "Asia/Seoul": "아시아/서울", + "Asia/Shanghai": "아시아/상하이", + "Asia/Singapore": "아시아/싱가포르", + "Asia/Srednekolymsk": "아시아/스레 네 콜림 스크", + "Asia/Taipei": "아시아/타이페이", + "Asia/Tashkent": "아시아/타슈켄트", + "Asia/Tbilisi": "아시아/트빌리시", + "Asia/Tehran": "아시아/테헤란", + "Asia/Tel_Aviv": "아시아/텔아비브", + "Asia/Thimbu": "아시아/팀부", + "Asia/Thimphu": "아시아/팀푸", + "Asia/Tokyo": "아시아/도쿄", + "Asia/Tomsk": "아시아/톰스크", + "Asia/Ujung_Pandang": "아시아/엔드", + "Asia/Ulaanbaatar": "아시아/울란바토르", + "Asia/Ulan_Bator": "아시아/울란바토르", + "Asia/Urumqi": "아시아/우루무치", + "Asia/Ust-Nera": "아시아/우스트네라", + "Asia/Vientiane": "아시아/비엔티안", + "Asia/Vladivostok": "아시아/블라디보스토크", + "Asia/Yakutsk": "아시아/야쿠츠크", + "Asia/Yangon": "아시아/양곤", + "Asia/Yekaterinburg": "아시아/예카테린부르크", + "Asia/Yerevan": "아시아/예레반", + "Atlantic/Azores": "대서양/아조레스", + "Atlantic/Bermuda": "대서양/버뮤다", + "Atlantic/Canary": "대서양/카나리아", + "Atlantic/Cape_Verde": "대서양/카보 베르데", + "Atlantic/Faeroe": "대서양/파에로", + "Atlantic/Faroe": "대서양/파로", + "Atlantic/Jan_Mayen": "대서양/얀 마옌", + "Atlantic/Madeira": "대서양/마데이라", + "Atlantic/Reykjavik": "대서양/레이캬비크", + "Atlantic/South_Georgia": "대서양/사우스 조지아", + "Atlantic/St_Helena": "대서양/세인트 헬레나", + "Atlantic/Stanley": "대서양/스탠리", + "Australia/ACT": "오스트레일리아/ACT", + "Australia/Adelaide": "오스트레일리아/애들레이드", + "Australia/Brisbane": "오스트레일리아/브리즈번", + "Australia/Broken_Hill": "오스트레일리아/브로큰 힐", + "Australia/Canberra": "오스트레일리아/캔버라", + "Australia/Currie": "오스트레일리아/커리", + "Australia/Darwin": "오스트레일리아/다윈", + "Australia/Eucla": "오스트레일리아/유클라", + "Australia/Hobart": "오스트레일리아/호바트", + "Australia/LHI": "오스트레일리아/LHI", + "Australia/Lindeman": "오스트레일리아/린드만", + "Australia/Lord_Howe": "오스트레일리아/로드 호우", + "Australia/Melbourne": "오스트레일리아/멜버른", + "Australia/NSW": "오스트레일리아/NSW", + "Australia/North": "오스트레일리아/북부", + "Australia/Perth": "오스트레일리아/퍼스", + "Australia/Queensland": "오스트레일리아/퀸즐랜드", + "Australia/South": "오스트레일리아/남부", + "Australia/Sydney": "오스트레일리아/시드니", + "Australia/Tasmania": "오스트레일리아/태즈 매니아", + "Australia/Victoria": "오스트레일리아/빅토리아", + "Australia/West": "오스트레일리아/서부", + "Australia/Yancowinna": "오스트레일리아/얀 카우 나", + "Brazil/Acre": "브라질/에이커", + "Brazil/DeNoronha": "브라질/드노르온하", + "Brazil/East": "브라질/동부", + "Brazil/West": "브라질/서부", + "CET": "CET", + "CST6CDT": "CST6CDT", + "Canada/Atlantic": "캐나다/대서양", + "Canada/Central": "캐나다/중앙", + "Canada/Eastern": "캐나다/동부", + "Canada/Mountain": "캐나다/마운틴", + "Canada/Newfoundland": "캐나다/뉴펀들랜드", + "Canada/Pacific": "캐나다/태평양", + "Canada/Saskatchewan": "캐나다/서스캐처원", + "Canada/Yukon": "캐나다/유콘", + "Chile/Continental": "칠레/컨티넨탈", + "Chile/EasterIsland": "칠레/이스터섬", + "Cuba": "쿠바", + "EET": "EET", + "EST": "EST", + "EST5EDT": "EST5EDT", + "Egypt": "이집트", + "Eire": "에이레", + "Etc/GMT": "기타/GMT", + "Etc/GMT+0": "기타/GMT+0", + "Etc/GMT+1": "기타/GMT+1", + "Etc/GMT+10": "기타/GMT+10", + "Etc/GMT+11": "기타/GMT+11", + "Etc/GMT+12": "기타/GMT+12", + "Etc/GMT+2": "기타/GMT+2", + "Etc/GMT+3": "기타/GMT+3", + "Etc/GMT+4": "기타/GMT+4", + "Etc/GMT+5": "기타/GMT+5", + "Etc/GMT+6": "기타/GMT+6", + "Etc/GMT+7": "기타/GMT+7", + "Etc/GMT+8": "기타/GMT+8", + "Etc/GMT+9": "기타/GMT+9", + "Etc/GMT-0": "기타/GMT-0", + "Etc/GMT-1": "기타/GMT-1", + "Etc/GMT-10": "기타/GMT-10", + "Etc/GMT-11": "기타/GMT-11", + "Etc/GMT-12": "기타/GMT-12", + "Etc/GMT-13": "기타/GMT-13", + "Etc/GMT-14": "기타/GMT-14", + "Etc/GMT-2": "기타/GMT-2", + "Etc/GMT-3": "기타/GMT-3", + "Etc/GMT-4": "기타/GMT-4", + "Etc/GMT-5": "기타/GMT-5", + "Etc/GMT-6": "기타/GMT-6", + "Etc/GMT-7": "기타/GMT-7", + "Etc/GMT-8": "기타/GMT-8", + "Etc/GMT-9": "기타/GMT-9", + "Etc/GMT0": "기타/GMT0", + "Etc/Greenwich": "기타/그리니치", + "Etc/UCT": "기타/UCT", + "Etc/UTC": "기타/UTC", + "Etc/Universal": "기타/유니버설", + "Etc/Zulu": "기타/줄루", + "Europe/Amsterdam": "유럽/암스테르담", + "Europe/Andorra": "유럽/안도라", + "Europe/Astrakhan": "유럽/아스트라칸", + "Europe/Athens": "유럽/아테네", + "Europe/Belfast": "유럽/벨파스트", + "Europe/Belgrade": "유럽/베오그라드", + "Europe/Berlin": "유럽/베를린", + "Europe/Bratislava": "유럽/브라티슬라바", + "Europe/Brussels": "유럽/브뤼셀", + "Europe/Bucharest": "유럽/부쿠레슈티", + "Europe/Budapest": "유럽/부다페스트", + "Europe/Busingen": "유럽/빙고", + "Europe/Chisinau": "유럽/치사 나우", + "Europe/Copenhagen": "유럽/코펜하겐", + "Europe/Dublin": "유럽/더블린", + "Europe/Gibraltar": "유럽/지브롤터", + "Europe/Guernsey": "유럽/건지", + "Europe/Helsinki": "유럽/헬싱키", + "Europe/Isle_of_Man": "유럽/아일 오브 맨", + "Europe/Istanbul": "유럽/이스탄불", + "Europe/Jersey": "유럽/저지", + "Europe/Kaliningrad": "유럽/칼리닌그라드", + "Europe/Kiev": "유럽/키예프", + "Europe/Kirov": "유럽/키로프", + "Europe/Lisbon": "유럽/리스본", + "Europe/Ljubljana": "유럽/류블 랴나", + "Europe/London": "유럽/런던", + "Europe/Luxembourg": "유럽/룩셈부르크", + "Europe/Madrid": "유럽/마드리드", + "Europe/Malta": "유럽/몰타", + "Europe/Mariehamn": "유럽/마리에 함", + "Europe/Minsk": "유럽/민스크", + "Europe/Monaco": "유럽/모나코", + "Europe/Moscow": "유럽/모스크바", + "Europe/Nicosia": "유럽/니코 시아", + "Europe/Oslo": "유럽/오슬로", + "Europe/Paris": "유럽/파리", + "Europe/Podgorica": "유럽/포드로 리카", + "Europe/Prague": "유럽/프라하", + "Europe/Riga": "유럽/리가", + "Europe/Rome": "유럽/로마", + "Europe/Samara": "유럽/사마라", + "Europe/San_Marino": "유럽/산 마리노", + "Europe/Sarajevo": "유럽/사라예보", + "Europe/Saratov": "유럽/사라 토프", + "Europe/Simferopol": "유럽/심 페로 폴", + "Europe/Skopje": "유럽/스코 페", + "Europe/Sofia": "유럽/소피아", + "Europe/Stockholm": "유럽/스톡홀름", + "Europe/Tallinn": "유럽/탈린", + "Europe/Tirane": "유럽/티 라네", + "Europe/Tiraspol": "유럽/티라스 폴", + "Europe/Ulyanovsk": "유럽/울리 야놉 스크", + "Europe/Uzhgorod": "유럽/우즈 고로드", + "Europe/Vaduz": "유럽/파두 츠", + "Europe/Vatican": "유럽/바티칸", + "Europe/Vienna": "유럽/비엔나", + "Europe/Vilnius": "유럽/빌니우스", + "Europe/Volgograd": "유럽/볼고그라드", + "Europe/Warsaw": "유럽/바르샤바", + "Europe/Zagreb": "유럽/자그레브", + "Europe/Zaporozhye": "유럽/자포 로제", + "Europe/Zurich": "유럽/취리히", + "GB": "GB", + "GB-Eire": "GB-Eire", + "GMT": "GMT", + "GMT+0": "GMT+0", + "GMT-0": "GMT-0", + "GMT0": "GMT0", + "Greenwich": "그리니치", + "HST": "HST", + "Hongkong": "홍콩", + "Iceland": "아이슬란드", + "Indian/Antananarivo": "인도/안타나나리보", + "Indian/Chagos": "인도/차고 스", + "Indian/Christmas": "인도/크리스마스", + "Indian/Cocos": "인도/코코스", + "Indian/Comoro": "인도/코모로", + "Indian/Kerguelen": "인도/케르겔렌", + "Indian/Mahe": "인도/마헤", + "Indian/Maldives": "인도/몰디브", + "Indian/Mauritius": "인도/모리셔스", + "Indian/Mayotte": "인도/마 요트", + "Indian/Reunion": "인도/리유니언", + "Iran": "이란", + "Israel": "이스라엘", + "Jamaica": "자메이카", + "Japan": "일본", + "Kwajalein": "콰잘 레인", + "Libya": "리비아", + "MET": "MET", + "MST": "MST", + "MST7MDT": "MST7MDT", + "Mexico/BajaNorte": "멕시코/바하 노르 테", + "Mexico/BajaSur": "멕시코/바하 수르", + "Mexico/General": "멕시코/제너럴", + "NZ": "NZ", + "NZ-CHAT": "NZ-CHAT", + "Navajo": "나바호", + "PRC": "PRC", + "PST8PDT": "PST8PDT", + "Pacific/Apia": "태평양/아피아", + "Pacific/Auckland": "태평양/오클랜드", + "Pacific/Bougainville": "태평양/부 겐빌", + "Pacific/Chatham": "태평양/채텀", + "Pacific/Chuuk": "태평양/축", + "Pacific/Easter": "태평양/이스터", + "Pacific/Efate": "태평양/이파테", + "Pacific/Enderbury": "태평양/엔더버리", + "Pacific/Fakaofo": "태평양/파카오포", + "Pacific/Fiji": "태평양/피지", + "Pacific/Funafuti": "태평양/후나후티", + "Pacific/Galapagos": "태평양/갈라파고스", + "Pacific/Gambier": "태평양/겜비어", + "Pacific/Guadalcanal": "태평양/과달카날", + "Pacific/Guam": "태평양/괌", + "Pacific/Honolulu": "태평양/호놀룰루", + "Pacific/Johnston": "태평양/존스턴", + "Pacific/Kiritimati": "태평양/키리 티 마티", + "Pacific/Kosrae": "태평양/코스 라에", + "Pacific/Kwajalein": "태평양/콰자 레인", + "Pacific/Majuro": "태평양/마주로", + "Pacific/Marquesas": "태평양/마르크사", + "Pacific/Midway": "퍼시픽/미드웨이", + "Pacific/Nauru": "태평양/나우루", + "Pacific/Niue": "태평양/니우에", + "Pacific/Norfolk": "태평양/노퍽", + "Pacific/Noumea": "태평양/누메아", + "Pacific/Pago_Pago": "태평양/파고 파고", + "Pacific/Palau": "태평양/팔라우", + "Pacific/Pitcairn": "태평양/핏 케언", + "Pacific/Pohnpei": "태평양/퐁 페이", + "Pacific/Ponape": "태평양/포네이프", + "Pacific/Port_Moresby": "태평양/포트 모르즈비", + "Pacific/Rarotonga": "태평양/로로 통가", + "Pacific/Saipan": "태평양/사이판", + "Pacific/Samoa": "태평양/사모아", + "Pacific/Tahiti": "태평양/타히티", + "Pacific/Tarawa": "태평양/타라와", + "Pacific/Tongatapu": "태평양/통가 타푸", + "Pacific/Truk": "태평양/트럭", + "Pacific/Wake": "퍼시픽/웨이크", + "Pacific/Wallis": "태평양/왈리스", + "Pacific/Yap": "태평양/야프", + "Poland": "폴란드", + "Portugal": "포르투갈", + "ROC": "ROC", + "ROK": "ROK", + "Singapore": "싱가포르", + "Turkey": "터키", + "UCT": "UCT", + "US/Alaska": "미국/알래스카", + "US/Aleutian": "미국/알류 티안", + "US/Arizona": "미국/애리조나", + "US/Central": "미국/중앙", + "US/East-Indiana": "미국/동부 인디애나", + "US/Eastern": "미국/동부", + "US/Hawaii": "미국/하와이", + "US/Indiana-Starke": "미국/인디애나-스타크", + "US/Michigan": "미국/미시간", + "US/Mountain": "미국/마운틴", + "US/Pacific": "미국/태평양", + "US/Pacific-New": "미국/태평양 뉴", + "US/Samoa": "미국/사모아", + "UTC": "UTC", + "Universal": "유니버설", + "W-SU": "W-SU", + "WET": "WET", + "Zulu": "줄루" + } +} diff --git a/src/assets/i18n/ko/organization.json b/src/assets/i18n/ko/organization.json index 2a16749..f963948 100644 --- a/src/assets/i18n/ko/organization.json +++ b/src/assets/i18n/ko/organization.json @@ -1,11 +1,14 @@ { "label": { - "selectedUsers": "선택된 대화상대", + "organization": "조직도", + "selectedUsers": "선택한 대화상대", "addGroup": "그룹추가", "chat": "대화", "message": "쪽지", "call": "전화", - "videoConference": "화상" + "videoConference": "화상", + "searchResult": "검색결과", + "sortName": "이름" }, "presence": { "offline": "오프라인", @@ -14,5 +17,65 @@ "statusMessage1": "다른용무중", "statusMessage2": "회의중", "statusMessage3": "집중근무중" + }, + "dialog": { + "title": { + "addGroup": "그룹추가" + }, + "confirmAddBuddyForNewGroup": "멤버를 '{{targetGroups}}' 그룹을 생성 후 추가하시겠습니까?", + "confirmAddBuddyForGroup": "멤버를 '{{targetGroups}}' 그룹에 추가하시겠습니까?", + "errorAddBuddyForGroup": "그룹명을 지정하지 않았거나, 선택된 그룹이 없습니다.", + "button": { + "addUser": "추가 완료" + } + }, + "profile": { + "me": "내 프로필", + "other": "프로필", + "company": "회사", + "email": "이메일", + "lineNumber": "사무실", + "mobileNumber": "핸드폰", + "department": "부서", + "mytalk": "MyTalk", + "setting": "환경설정", + "chat": "대화", + "sms": "SMS", + "videoConference": "화상회의", + "message": "쪽지", + "notSetNickname": "닉네임 미설정", + "chatWithUs": "함께 참여한 대화", + "unreadChat": "읽지 않은 대화", + "notificationBot": "알림봇", + "noConversation": "대화 내용이 없습니다.", + "placeholderForIntro": "인트로 메시지를 바꿔보세요." + }, + "settings": { + "label": "환경설정", + "sub": { + "general": "기본설정", + "notification": "알림" + }, + "language": { + "messenger": "Messenger 언어설정", + "hr": "인사정보 언어 설정" + }, + "timezone": "시간대 설정", + "notification": { + "receival": "알림 받기", + "receive": "알림 받음", + "notReceive": "알림 받지 않음", + "method": "알림 방법", + "methodTypeSound": "소리", + "methodTypeAlert": "알림창", + "methodTypeSoundAndAlert": "소리 + 알림창", + "settingOfAlertWindow": "알림창 설정 | PC 알림창 노출시간(초)", + "receiveForMobile": "모바일 알림", + "receiveForMobileTypeAlways": "항상 수신(해제 시에는 PC 버전이 부재중인 경우에만 모바일 알림 수신)", + "message": "쪽지", + "receiveForMessage": "쪽지 알림", + "receiveForMessageTypePopup": "쪽지 수신 시 팝업보기", + "descriptionReceiveForMobileTypePopup": "해제 시 쪽지 알림만 받음" + } } } diff --git a/src/assets/images/bg/bg_group_add.png b/src/assets/images/bg/bg_group_add.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc7499d0c5438386c227f1c1efae4fd2c23b6bc GIT binary patch literal 45641 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/bg_login.png b/src/assets/images/bg_login.png deleted file mode 100644 index c7ac0f57b856a30f77a21668d3a4064d173f4ec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278524 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
      o!sN9(icHO{>SnK?BX{H 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