{"__symbolic":"module","version":4,"metadata":{"SelectLetterTargetsStudentParentTabComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"student-parent-tab","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":17,"character":18},"member":"OnPush"},"template":"<!-- toggle all btn -->\n<div class=\"nav-container\">\n  <ul class=\"scrollable nav nav-tabs\">\n    <li class=\"nav-item\">\n      <a class=\"nav-link position-relative d-flex align-items-center cursor-pointer active\"\n        [ngSwitch]=\"isCheckedAll\"\n      >\n        <span class=\"text-sm mr-2\" (click)=\"toggleAll()\">\n          <span *ngSwitchCase=\"0\" class=\"fa-stack\">\n            <i class=\"fa fa-square-o fa-stack-2x\"></i>\n            <!-- <i *ngIf=\"!isTogglable\" class=\"fa fa-square fa-stack-2x text-muted\"></i> -->\n          </span>\n          <span *ngSwitchCase=\"1\" class=\"fa-stack text-primary\">\n            <i class=\"text-primary fa fa-square fa-stack-2x\"></i>\n            <i class=\"fa fa-minus fa-stack-1x text-white\"></i>\n          </span>\n          <span *ngSwitchCase=\"2\" class=\"fa-stack text-primary\">\n            <i class=\"text-primary fa fa-square fa-stack-2x\"></i>\n            <i class=\"fa fa-check fa-stack-1x text-white\"></i>\n          </span>\n        </span>\n                \n        <span>{{group.currentGroup?.school_name || group.currentGroup?.name}}</span>\n      </a>\n    </li>\n  </ul>\n</div>\n\n\n<subgroup-tabs *ngIf=\"tree.root\" [group]=\"tree.root\" mode=\"select\"></subgroup-tabs>\n\n<div class=\"py-1\"></div>\n\n<app-table\n[table]=\"table\"\n[enableCancelSelectionOnOutsideClick]=\"false\"\n(selectionChange)=\"onSelectionChange($event);\"\n[tableTemplate]=\"tableTemplate\">\n</app-table> \n\n<ng-template let-table=\"table\" #tableTemplate> \n  <virtual-scroller \n  #scroll\n  [bufferAmount]=\"10\"\n  [items]=\"table.rows\" style=\"height: 60vh;\">\n    <table class=\"table table-bordered table-hover table-sm text-center mb-0\" style=\"table-layout: fixed;\">\n      <thead #header>\n        <tr class=\"table-secondary\">\n          <th scope=\"col\" (click)=\"toggleTable()\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':isTableSelected()}\" i18n>Num</th>\n          <th scope=\"col\" (click)=\"toggleTable()\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':isTableSelected()}\" i18n>Name</th>\n          <th scope=\"col\" width=\"27%\" (click)=\"toggleCol(2)\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':isColumnSelected(2)}\" i18n>Parent contact1</th>\n          <th scope=\"col\" width=\"27%\" (click)=\"toggleCol(3)\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':isColumnSelected(3)}\" i18n>Parent contact2</th>\n          <th scope=\"col\" width=\"27%\" (click)=\"toggleCol(4)\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':isColumnSelected(4)}\" i18n>Student contact</th>\n        </tr>\n      </thead>\n      <tbody #container>\n        <tr *ngIf=\"table.rows.length === 0\">\n          <td class=\"text-muted bg-light\" colspan=\"5\" i18n>No members</td>\n        </tr>\n        <tr *ngFor=\"let row of scroll.viewPortItems;trackBy:trackById\">\n            <td *ngIf=\"row.cells[0]\"\n            class=\"cursor-pointer\" [ngClass]=\"{'cell-selected strong':row.cells[0].selected}\"\n            (click)=\"toggleRow(row.y)\">\n              {{row.y + 1}}\n            </td>\n            <td *ngIf=\"row.cells[1]\"\n            class=\"cursor-pointer\" [ngClass]=\"{\n              'cell-selected':row.cells[1].selected\n            }\"    \n            (click)=\"toggleRow(row.y)\">\n              {{row.cells[1].val}}\n            </td>\n    \n            <td *ngIf=\"row.cells[2]\"\n            [ngClass]=\"{\n              'cell-selected':row.cells[2].selected,\n              'matched':row.cells[2].matched\n            }\"    \n            (click)=\"toggleCell(row.cells[2].x, row.y)\">\n              {{(row.cells[2].val | phoneNumber) || '-'}}\n              <member-status-badge class=\"px-2\" [member]=\"row.cells[2].get('member')\"></member-status-badge>\n            </td>\n            <td *ngIf=\"row.cells[3]\"\n            [ngClass]=\"{\n              'cell-selected':row.cells[3].selected,\n              'matched':row.cells[3].matched\n\n            }\"    \n            (click)=\"toggleCell(row.cells[3].x, row.y)\">\n              {{(row.cells[3].val | phoneNumber) || '-'}}\n              <member-status-badge class=\"px-2\" [member]=\"row.cells[3].get('member')\"></member-status-badge>\n            </td>\n            <td *ngIf=\"row.cells[4]\"\n            [ngClass]=\"{\n              'cell-selected':row.cells[4].selected,\n              'matched':row.cells[4].matched\n            }\"    \n            (click)=\"toggleCell(row.cells[4].x, row.y)\">\n              {{(row.cells[4].val | phoneNumber) || '-'}}\n              <member-status-badge class=\"px-2\" [member]=\"row.cells[4].get('member')\"></member-status-badge>\n            </td>\n        </tr>\n      </tbody> \n    </table>  \n  </virtual-scroller>  \n</ng-template>\n\n","styles":["@charset \"UTF-8\";td.matched{box-shadow:0 0 0 .2rem rgba(0,123,255,.25);z-index:1;position:relative}.cell-selected.strong,.table>tbody>tr>th.cell-selected,.table>tfoot>tr>th.cell-selecte,.table>thead>tr>th.cell-selected{background-color:#666!important;color:#fff}.cell-selected.strong:hover,.table>tbody>tr>th.cell-selected:hover,.table>tfoot>tr>th.cell-selecte:hover,.table>thead>tr>th.cell-selected:hover{background-color:#666!important}.nav.nav-tabs{border-width:2px;overflow-x:scroll;overflow-y:visible;flex-wrap:nowrap}:host ::ng-deep .nav-tabs .nav-link{border-width:2px;opacity:.75}:host ::ng-deep .nav-tabs .nav-link.active{border-width:2px;opacity:1}.nav-container{position:relative}.nav-container::after{content:'';position:absolute;background-color:#dee2e6;bottom:0;left:0;width:100%;height:2px}.nav-tabs{border-bottom:0}.nav-tabs .nav-item{margin-bottom:0!important}.nav-link{border-radius:0!important;border-width:0!important;border-bottom-color:transparent;white-space:nowrap;padding-top:.7rem;padding-bottom:.7rem;position:relative}.text-muted{opacity:.6}.nav-link.disabled{opacity:.65}.nav-link:hover{background-color:#f9f9f9}.nav-link.active{background-color:#f1f1f1;color:#343a40}.nav-link.active::after{content:'';position:absolute;bottom:0;left:0;width:100%;height:2px;background-color:#666;z-index:50}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.scrollable{scrollbar-face-color:rgba(222,222,222,.9);scrollbar-track-color:rgba(255,255,255,.9);scrollbar-arrow-color:none;scrollbar-highlight-color:rgba(222,222,222,.9);scrollbar-3dlight-color:none;scrollbar-shadow-color:rgba(222,222,222,.9);scrollbar-darkshadow-color:none}.nav-link{padding-bottom:1rem!important}}"]}]}],"members":{"scroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":20,"character":3},"arguments":["scroll"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group-to-group","name":"TreeService","line":33,"character":16},{"__symbolic":"reference","module":"@schoolbelle/api/group-member","name":"GroupMemberService","line":34,"character":19},{"__symbolic":"reference","module":"@schoolbelle/api/letter-target","name":"LetterTargetService","line":35,"character":25},{"__symbolic":"reference","name":"TableSearchService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":37,"character":18},{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":38,"character":17}]}],"ngOnInit":[{"__symbolic":"method"}],"goToMember":[{"__symbolic":"method"}],"onSelectionChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateTableContent":[{"__symbolic":"method"}],"updateTableCheckedArea":[{"__symbolic":"method"}],"updateTargetScopes":[{"__symbolic":"method"}],"convertLetterTargetScopesToTableArea":[{"__symbolic":"method"}],"convertTableAreaToLetterTargetScopes":[{"__symbolic":"method"}],"trackById":[{"__symbolic":"method"}],"toggleCol":[{"__symbolic":"method"}],"toggleTable":[{"__symbolic":"method"}],"isColumnSelected":[{"__symbolic":"method"}],"isTableSelected":[{"__symbolic":"method"}],"toggleAll":[{"__symbolic":"method"}],"toggleCell":[{"__symbolic":"method"}],"toggleRow":[{"__symbolic":"method"}],"toggleNumNameCols":[{"__symbolic":"method"}],"toggleNumNameCellsOfRow":[{"__symbolic":"method"}]}},"SelectLetterTargetsStudentParentTabModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"MemberStatusBadgeModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"SubgroupTabsModule","line":12,"character":4},{"__symbolic":"reference","module":"@schoolbelle/common/table","name":"TableModule","line":13,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@schoolbelle/common/phone-number","name":"PhoneNumberModule","line":14,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"ngx-virtual-scroller","name":"VirtualScrollerModule","line":15,"character":4},{"__symbolic":"reference","module":"@schoolbelle/common/table","name":"EventSpyModule","line":16,"character":4}],"declarations":[{"__symbolic":"reference","name":"SelectLetterTargetsStudentParentTabComponent"}],"exports":[{"__symbolic":"reference","name":"SelectLetterTargetsStudentParentTabComponent"}]}]}],"members":{}},"SelectLetterTargetsFacultyTabComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"faculty-tab","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":15,"character":18},"member":"OnPush"},"template":"<!-- <div class=\"px-3\"> -->\n  <app-table \n  [table]=\"table\"\n  [enableCancelSelectionOnOutsideClick]=\"false\"\n  (selectionChange)=\"onSelectionChange($event);\"\n  [tableTemplate]=\"tableTemplate\">\n  </app-table> \n<!-- </div> -->\n\n<ng-template let-table=\"table\" #tableTemplate> \n  <virtual-scroller \n  #scroll\n  [items]=\"rows\" style=\"height:70vh;\">\n    <table class=\"table table-bordered table-hover table-sm text-center\" style=\"table-layout: fixed;\">\n      <thead #header>\n        <tr class=\"table-secondary\">\n          <th scope=\"col\" width=\"10%\" (click)=\"toggleTable()\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':isTableSelected()}\" i18n>Num</th>\n          <th scope=\"col\" (click)=\"toggleTable()\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':isTableSelected()}\" i18n>Name</th>\n          <th scope=\"col\" (click)=\"table.toggleAreaByXY(2, undefined)\" class=\"cursor-pointer\" [ngClass]=\"{'cell-selected':table.hasInSelectedAreaByXY(2) === 2}\" i18n>Phone</th>\n        </tr>\n      </thead>\n      <tbody #container>\n        <tr *ngIf=\"table.rows.length === 0\">\n          <td class=\"text-muted bg-light\" colspan=\"3\"> 표시할 내용이 없습니다. </td>\n        </tr>\n        <tr *ngFor=\"let row of scroll.viewPortItems;trackBy:trackById\">\n            <td\n            class=\"cursor-pointer\" [ngClass]=\"{'cell-selected strong':row.cells[0].selected}\"\n            (click)=\"table.toggleAreaByXY(undefined, row.y)\">\n              {{row.cells[0].val}}\n            </td>\n            <td\n            class=\"cursor-pointer\" [ngClass]=\"{\n              'table-primary':row.cells[1].selected\n            }\"    \n            (click)=\"table.toggleAreaByXY(undefined, row.y)\">\n              {{row.cells[1].val}}\n            </td>\n            <td \n            [ngClass]=\"{\n              'table-primary':row.cells[2].selected,\n              'matched':row.cells[2].matched\n            }\"    \n            (click)=\"table.toggleAreaByXY(undefined, row.y)\">\n              {{(row.cells[2].val | phoneNumber) || '-'}}\n              <member-status-badge class=\"px-2\" [member]=\"row.cells[2].get('member')\"></member-status-badge>\n            </td>\n        </tr>\n      </tbody> \n    </table>  \n  </virtual-scroller>  \n</ng-template>\n","styles":["td.matched{box-shadow:0 0 0 .2rem rgba(0,123,255,.25);z-index:1;position:relative}.cell-selected.strong,.table>tbody>tr>th.cell-selected,.table>tfoot>tr>th.cell-selecte,.table>thead>tr>th.cell-selected{background-color:#666!important;color:#fff}.cell-selected.strong:hover,.table>tbody>tr>th.cell-selected:hover,.table>tfoot>tr>th.cell-selecte:hover,.table>thead>tr>th.cell-selected:hover{background-color:#666!important}"]}]}],"members":{"scroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":18,"character":3},"arguments":["scroll"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group-to-group","name":"TreeService","line":24,"character":17},{"__symbolic":"reference","module":"@schoolbelle/api/group-member","name":"GroupMemberService","line":25,"character":19},{"__symbolic":"reference","module":"@schoolbelle/api/letter-target","name":"LetterTargetService","line":26,"character":25},{"__symbolic":"reference","name":"TableSearchService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":28,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"onSelectionChange":[{"__symbolic":"method"}],"goToMember":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateTableContent":[{"__symbolic":"method"}],"updateTableCheckedArea":[{"__symbolic":"method"}],"updateTargetScopes":[{"__symbolic":"method"}],"convertLetterTargetScopesToTableArea":[{"__symbolic":"method"}],"convertTableAreaToLetterTargetScopes":[{"__symbolic":"method"}],"trackById":[{"__symbolic":"method"}],"toggleTable":[{"__symbolic":"method"}],"isColumnSelected":[{"__symbolic":"method"}],"isTableSelected":[{"__symbolic":"method"}],"toggleNumNameCols":[{"__symbolic":"method"}]}},"SelectLetterTargetsFacultyTabModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@schoolbelle/common/table","name":"TableModule","line":11,"character":4},{"__symbolic":"reference","module":"ngx-virtual-scroller","name":"VirtualScrollerModule","line":12,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@schoolbelle/common/phone-number","name":"PhoneNumberModule","line":13,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"MemberStatusBadgeModule","line":14,"character":4}],"declarations":[{"__symbolic":"reference","name":"SelectLetterTargetsFacultyTabComponent"}],"exports":[{"__symbolic":"reference","name":"SelectLetterTargetsFacultyTabComponent"}]}]}],"members":{}},"SelectLetterTargetsAdminOrAllComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"admin-or-all","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":18},"member":"OnPush"},"template":"<div class=\"btn-group btn-group-toggle w-100\">\n  <label class=\"btn\" [ngClass]=\"isChecked('admin') ? 'btn-secondary':'btn-outline-secondary'\" (click)=\"check('admin')\"> \n    <input type=\"radio\"> 관리자에게 \n  </label>  \n  <label class=\"btn\" [ngClass]=\"isChecked('all') ? 'btn-secondary':'btn-outline-secondary'\" (click)=\"check('all')\">\n    <input type=\"radio\"> 학급전체에게 \n  </label>\n</div>  \n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/board","name":"BoardService","line":20,"character":18},{"__symbolic":"reference","module":"@schoolbelle/api/letter-target","name":"LetterTargetService","line":21,"character":25}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"check":[{"__symbolic":"method"}],"isChecked":[{"__symbolic":"method"}]}},"SelectLetterTargetsAdminOrAllModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4}],"declarations":[{"__symbolic":"reference","name":"SelectLetterTargetsAdminOrAllComponent"}],"exports":[{"__symbolic":"reference","name":"SelectLetterTargetsAdminOrAllComponent"}]}]}],"members":{}},"TableSearchModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵa"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":10,"character":17},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"TypeaheadIeFixModule","line":11,"character":4},"member":"forRoot"}}],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"TableSearchService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ngInjectableDef":{}}},"SelectLetterTargetsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-select-letter-targets","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":11,"character":19},"member":"OnPush"},"template":"<student-parent-tab *ngIf=\"hasAccessToMemberlist && tab === 'studentparent'\"></student-parent-tab>\n<faculty-tab  *ngIf=\"hasAccessToMemberlist && tab === 'faculty'\"></faculty-tab>\n<div class=\"modal-body\"  *ngIf=\"!hasAccessToMemberlist\"><admin-or-all></admin-or-all></div>\n","styles":[""]}]}],"members":{"tab":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":19,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"goToMember":[{"__symbolic":"method"}]}},"SelectLetterTargetsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":19,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":21,"character":4},{"__symbolic":"reference","name":"SelectLetterTargetsStudentParentTabModule"},{"__symbolic":"reference","name":"SelectLetterTargetsFacultyTabModule"},{"__symbolic":"reference","name":"SelectLetterTargetsAdminOrAllModule"},{"__symbolic":"reference","module":"angular-file","name":"ngfModule","line":25,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":26,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":27,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/dropdown","name":"BsDropdownModule","line":28,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationModule","line":29,"character":4},"member":"forRoot"}},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"TableSearchModule"}],"providers":[{"__symbolic":"reference","name":"SelectLetterTargetsModalService"}],"declarations":[{"__symbolic":"reference","name":"SelectLetterTargetsComponent"},{"__symbolic":"reference","name":"ɵc"}],"entryComponents":[{"__symbolic":"reference","name":"ɵc"}]}]}],"members":{}},"SelectLetterTargetsModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":13,"character":27},{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":15,"character":26},{"__symbolic":"reference","module":"@schoolbelle/api/letter-target","name":"LetterTargetService","line":16,"character":20}]}],"prepare":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}]}},"SelectLetterTargetsGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/auth","name":"AuthService","line":13,"character":17},{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":14,"character":18},{"__symbolic":"reference","module":"@schoolbelle/api/letter-target","name":"LetterTargetService","line":15,"character":19}]}],"canActivate":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"PlaceOrderModalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵe"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":13,"character":4},"member":"forRoot"}},{"__symbolic":"reference","name":"PlaceOrderSchoolModule"},{"__symbolic":"reference","name":"PlaceOrderSmsModule"},{"__symbolic":"reference","name":"ɵf"}],"providers":[{"__symbolic":"reference","name":"PlaceOrderModalService"}],"entryComponents":[{"__symbolic":"reference","name":"ɵe"}]}]}],"members":{}},"PlaceOrderModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":19,"character":19},{"__symbolic":"reference","module":"@schoolbelle/api/purchase","name":"PurchaseService","line":20,"character":21},{"__symbolic":"reference","module":"@schoolbelle/api/ledger","name":"LedgerService","line":21,"character":19},{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":22,"character":18},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":23,"character":20}]}],"open":[{"__symbolic":"method"}],"fetchData":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"PlaceOrderSchoolComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"PlaceOrderComponent","line":21,"character":47},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"place-order-school","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":19,"character":18},"member":"OnPush"},"template":"<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <b i18n>Products</b>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>License</label>\n            <div class=\"col-sm-9\">\n                <app-select-license [form]=\"form\" required \n                [products]=\"extractProdcutParams('license')\"\n                (productsChange)=\"updateWithProductParams('license', $event)\"\n                ></app-select-license>\n            </div>\n        </div>      \n\n\n        <div class=\"see-more text-center text-muted\"><button class=\"btn btn-sm btn-link\" (click)=\"showOptionalProducts = !showOptionalProducts\">\n            <ng-container *ngIf=\"showOptionalProducts; else hideOptionalProducts\" i18n>Hide optional prodcuts.</ng-container>\n            <ng-template #hideOptionalProducts i18n>See optional products</ng-template>     \n          </button>\n        </div>\n      \n        <div class=\"mt-3\" *ngIf=\"showOptionalProducts\">\n            <div class=\"form-group row\">\n                <label class=\"col-sm-3 col-form-label\" i18n>Additional SMS points</label>\n                <div class=\"col-sm-9\">\n                    <app-select-sms [form]=\"form\" \n                    [products]=\"extractProdcutParams('sms')\"\n                    (productsChange)=\"updateWithProductParams('sms', $event)\"\n                    ></app-select-sms>\n                </div>\n            </div>      \n            <div class=\"form-group row\">\n                <label class=\"col-sm-3 col-form-label\" i18n>Board crawling</label>\n                <div class=\"col-sm-9\">\n                    <app-select-crawl [form]=\"form\" \n                    [products]=\"extractProdcutParams('crawl')\"\n                    (productsChange)=\"updateWithProductParams('crawl', $event)\"\n                    ></app-select-crawl>          \n                </div>\n            </div>    \n        </div>\n        <div class=\"row\" *ngIf=\"extractProdcutParams('crawl').length\"> \n            <div class=\"col-12\">\n                <p class=\"alert alert-danger\" i18n>\n                    Warning:\n                    <br/>\n                    <b>Untargeted letters</b> will make your audience <b>less responsive to new letters</b> over time, which will turn into <b>more work</b> for you.\n                    <br/>\n                    So we <b>disable push notifications</b> on crawled items by default.\n                    <br/>\n                    <!-- <a href=\"\">see more</a> -->\n                </p>\n\n                <p class=\"alert alert-primary\" i18n>Leave us <b>board's name</b> and <b>the url of the board and any additnal steps to get to it</b> to crawl in the comment below</p>\n            </div>\n        </div>\n\n    </div>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header d-flex justify-content-between align-items-center\">\n        <b i18n>Cost Info</b>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"form-group row mb-0\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Effective range</label>   \n            <div class=\"col-sm-9\">\n                <app-effective-range [form]=\"form\"\n                ></app-effective-range>\n            </div>\n        </div>        \n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Cost details</label>   \n            \n            <div class=\"col-sm-9 d-flex align-items-center\">\n                <app-cost-table [form]=\"form\"\n                ></app-cost-table>\n            </div>\n        </div>        \n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Payment method</label>   \n            <div class=\"col-sm-9\">\n                <app-payment-type [form]=\"form\"></app-payment-type>\n            </div>    \n        </div>        \n    </div>    \n</div>            \n\n<div class=\"card mb-4\" [ngClass]=\"{'border-danger':!form.pristine && accountant.invalid}\">\n    <div class=\"card-header\">\n        <b i18n>Accountant info</b>\n        <div class=\"float-right\" i18n>\n            We will send a link where you can download a <b>tax invoice</b> and accounting related docs at this address.\n        </div>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"row mb-0\">\n            <div class=\"col-6\">\n            </div>\n            <div class=\"col-6\">\n                <app-accountant-info [form]=\"form\"></app-accountant-info>\n            </div>\n        </div>\n    </div>\n</div>   \n\n<div class=\"card mb-4\" [ngClass]=\"{'border-danger':!form.pristine && personInCharge.invalid}\">\n    <div class=\"card-header\">\n    <b i18n>Person in charge info</b>\n    <div class=\"float-right\" i18n>\n        We will send <b>manuals and other helpful materials</b> at this address.\n    </div>\n    </div>\n\n    <div class=\"card-body\">\n    <div class=\"row mb-0\">\n        <div class=\"col-6\">\n        </div>\n        <div class=\"col-6\">\n\n        <app-user-info [form]=\"form\"></app-user-info>\n        </div>\n    </div>\n    </div>\n</div>  \n\n\n<div hidden id=\"place-order-confirm\"\n  i18n-translation-text\n  translation-text=\"Are you sure to continue with the email %s?\"></div>\n\n<div hidden id=\"place-order-ordered\"\n  i18n-translation-text\n  translation-text=\"Successfully ordered. Materials and documents will be sent within 1-2 business days. Thank you.\"></div>\n\n<div hidden id=\"place-order-ordering\"\n  i18n-translation-text\n  translation-text=\"Requesting an order...\"></div>\n\n<div hidden id=\"place-order-canceled\"\n  i18n-translation-text\n  translation-text=\"Canceled.\"></div>\n\n<div hidden id=\"place-order-ordered-with-confirm-email\"\n  i18n-translation-text\n  translation-text=\"Your confirmation email has been sent at %s. See the email first.\"></div>\n\n<div hidden id=\"place-order-429-error\"\n  i18n-translation-text\n  translation-text=\"You have already ordered recently.\"></div>\n  \n<div hidden id=\"place-order-unknown-error\"\n  i18n-translation-text\n  translation-text=\"Order has failed.\"></div>\n\n  \n  ","styles":[":host>>>.popover.danger{color:#fff;background-color:#dc3545}:host>>>.popover.danger .popover-body{color:#fff}:host>>>.popover.danger.top>.arrow:after{border-top-color:#dc3545}:host>>>.popover.danger.bottom>.arrow:after{border-bottom-color:#dc3545}:host>>>.bs-popover-left.danger>.arrow::after{border-left-color:#dc3545}:host>>>.bs-popover-right.danger>.arrow::after{border-right-color:#dc3545}.see-more{display:flex;flex-direction:row}.see-more:after,.see-more:before{content:\"\";flex:1 1;border-bottom:1px dashed #007bff;margin:auto}"]}]}],"members":{"onUpdated":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":30,"character":12}]}],null,null,null],"parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":25,"character":10},{"__symbolic":"reference","module":"@schoolbelle/api/ledger","name":"LedgerService","line":26,"character":11},{"__symbolic":"reference","module":"@schoolbelle/api/purchase","name":"PurchaseService","line":27,"character":13},{"__symbolic":"reference","module":"@schoolbelle/api/user-to-group","name":"UserToGroupService","line":28,"character":8},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":29,"character":10},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationService","line":33,"character":26},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":34,"character":22},{"__symbolic":"reference","module":"@schoolbelle/common/dialog","name":"DialogService","line":35,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"fillInBasicValues":[{"__symbolic":"method"}],"order":[{"__symbolic":"method"}]}},"PlaceOrderSchoolModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"PlaceOrderSchoolComponent"}],"imports":[{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"PlaceOrderModule","line":7,"character":4}],"exports":[{"__symbolic":"reference","name":"PlaceOrderSchoolComponent"}]}]}],"members":{}},"PlaceOrderSmsComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"PlaceOrderComponent","line":25,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"place-order-sms","template":"<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <b i18n>Products</b>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>SMS points</label>\n            <div class=\"col-sm-9\">\n            <app-select-sms [form]=\"form\" required\n            [products]=\"extractProdcutParams('sms')\"\n            (productsChange)=\"updateWithProductParams('sms', $event)\"\n            ></app-select-sms>\n            </div>\n        </div>      \n    </div>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header d-flex justify-content-between align-items-center\">\n        <b i18n>Cost Info</b>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Cost details</label>   \n            \n            <div class=\"col-sm-9 d-flex align-items-center\">\n                <app-cost-table [form]=\"form\"\n                ></app-cost-table>\n            </div>\n        </div>    \n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Payment method</label>   \n            <div class=\"col-sm-9\">\n                <app-payment-type [form]=\"form\"></app-payment-type>\n            </div>    \n        </div>        \n\n    </div>    \n</div>            \n\n<div class=\"card mb-4\" [ngClass]=\"{'border-danger':!form.pristine && accountant.invalid}\">\n    <div class=\"card-header\">\n        <b i18n>Accountant info</b>\n        <div class=\"float-right\" i18n>\n            We will send a link where you can download a <b>tax invoice</b> and accounting related docs at this address.\n        </div>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"row mb-0\">\n            <div class=\"col-6\">\n            </div>\n            <div class=\"col-6\">\n                <app-accountant-info [form]=\"form\"></app-accountant-info>\n            </div>\n        </div>\n    </div>\n</div>   \n<div hidden id=\"place-order-confirm\"\n  i18n-translation-text\n  translation-text=\"Are you sure to continue with the email %s?\"></div>\n\n<div hidden id=\"place-order-ordered\"\n  i18n-translation-text\n  translation-text=\"Successfully ordered. Materials and documents will be sent within 1-2 business days. Thank you.\"></div>\n\n<div hidden id=\"place-order-ordering\"\n  i18n-translation-text\n  translation-text=\"Requesting an order...\"></div>\n\n<div hidden id=\"place-order-canceled\"\n  i18n-translation-text\n  translation-text=\"Canceled.\"></div>\n\n<div hidden id=\"place-order-ordered-with-confirm-email\"\n  i18n-translation-text\n  translation-text=\"Your confirmation email has been sent at %s. See the email first.\"></div>\n\n<div hidden id=\"place-order-429-error\"\n  i18n-translation-text\n  translation-text=\"You have already ordered recently.\"></div>\n  \n<div hidden id=\"place-order-unknown-error\"\n  i18n-translation-text\n  translation-text=\"Order has failed.\"></div>\n\n  \n  ","styles":[""]}]}],"members":{"onUpdated":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":34,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":34,"character":12}]}],null,null,null],"parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":29,"character":11},{"__symbolic":"reference","module":"@schoolbelle/api/ledger","name":"LedgerService","line":30,"character":12},{"__symbolic":"reference","module":"@schoolbelle/api/purchase","name":"PurchaseService","line":31,"character":14},{"__symbolic":"reference","module":"@schoolbelle/api/user-to-group","name":"UserToGroupService","line":32,"character":9},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":11},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationService","line":35,"character":27},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":36,"character":23},{"__symbolic":"reference","module":"@schoolbelle/common/dialog","name":"DialogService","line":37,"character":23}]}],"ngOnInit":[{"__symbolic":"method"}],"fillInBasicValues":[{"__symbolic":"method"}],"order":[{"__symbolic":"method"}]}},"PlaceOrderSmsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"PlaceOrderSmsComponent"}],"imports":[{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"PlaceOrderModule","line":8,"character":4}],"exports":[{"__symbolic":"reference","name":"PlaceOrderSmsComponent"}]}]}],"members":{}},"RequestReceiptModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵh"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":13,"character":17},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@schoolbelle/common/phone-number","name":"PhoneNumberModule","line":14,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":15,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":16,"character":4},"member":"forRoot"}}],"providers":[{"__symbolic":"reference","name":"RequestReceiptModalService"}],"exports":[{"__symbolic":"reference","name":"ɵh"}],"entryComponents":[{"__symbolic":"reference","name":"ɵh"}]}]}],"members":{}},"RequestReceiptModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":15,"character":19},{"__symbolic":"reference","module":"@schoolbelle/api/purchase","name":"PurchaseService","line":16,"character":22},{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":17,"character":18}]}],"open":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FileUploadListModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":11,"character":20}]}],"open":[{"__symbolic":"method"}]}},"FileUploadListModalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FileUploadListModalComponent"},{"__symbolic":"reference","name":"FileUploadListComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":4},{"__symbolic":"reference","name":"FileUploadListFileRowModule"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":21,"character":4},"member":"forRoot"}}],"providers":[{"__symbolic":"reference","name":"FileUploadListModalService"}],"entryComponents":[{"__symbolic":"reference","name":"FileUploadListModalComponent"}]}]}],"members":{}},"FileUploadListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-file-upload-list","template":"\n\n\n<!-- <div class=\"table\"> -->\n    <app-file-row *ngFor=\"let pair of list;trackBy:trackByIndex; let i = index;\"\n    [index]=\"i\" \n    [file]=\"pair[0]\" \n    [options]=\"pair[1]\" \n    [access_token]=\"access_token\" \n    [showLog]=\"opts.showLog\" \n    (onUpload)=\"onUpload(pair, $event)\"\n    ></app-file-row>\n<!-- </div> -->\n\n","styles":[".table-row{margin:0;display:flex}.table-row:first-child .table-cell{border-top:1px solid #dee2e6}.table-row .table-cell:first-child{border-left:1px solid #dee2e6}.table-cell{border-bottom:1px solid #dee2e6;border-right:1px solid #dee2e6;padding:.3rem;flex-basis:0;max-width:100%;flex-grow:1;display:flex;justify-content:center;align-items:center}"]}]}],"members":{"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3},"arguments":["list"]}]}],"access_token":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3},"arguments":["access_token"]}]}],"opts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"trackByIndex":[{"__symbolic":"method"}],"onUpload":[{"__symbolic":"method"}]}},"FileUploadListModalComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"modal-file-upload-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":18},"member":"OnPush"},"template":"<div class=\"modal-header\">\n    <h5 class=\"modal-title\" i18n>File Upload</h5>\n</div>\n<div class=\"modal-body\">\n    <app-file-upload-list [list]=\"list\" [opts]=\"opts\" [access_token]=\"access_token\"></app-file-upload-list>\n</div>\n<!-- <div *ngIf=\"done === true && (error_cnt > 0 || opts?.autoCloseWhenSuccess === false)\" class=\"modal-footer\"> -->\n<div *ngIf=\"done === true\" class=\"modal-footer\">\n  <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"cancel()\" i18n>Cancel</button>\n  <button type=\"button\" class=\"btn btn-secondary\" (click)=\"ok(true)\" i18n>Continue</button>\n</div>\n","styles":[""]}]}],"members":{"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"access_token":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"opts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":24,"character":13},{"__symbolic":"reference","module":"@schoolbelle/api/file","name":"FileService","line":25,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":26,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ok":[{"__symbolic":"method"}]}},"FileUploadListFileRowModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FileUploadListFileRowComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@schoolbelle/api/file","name":"FileModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":17},{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"LetterWriteFileListFileNameTextModule","line":19,"character":4},{"__symbolic":"reference","name":"FileUploadListProgressBarModule"},{"__symbolic":"reference","name":"FileUploadListLogModule"}],"exports":[{"__symbolic":"reference","name":"FileUploadListFileRowComponent"}]}]}],"members":{}},"FileUploadListFileRowComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-file-row","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":18},"member":"OnPush"},"template":"<div class=\"row align-items-stretch mb-2\">\n  <div class=\"col d-flex align-items-center\" style=\"max-width:5%;\">{{ index + 1}}</div>\n  <div class=\"col d-flex align-items-center position-relative\">\n    <div class=\"d-flex flex-column w-100\" style=\"max-width:calc(100% - 1.5rem);\">\n      <app-file-name-text [file]=\"file\"></app-file-name-text>\n    </div>\n    <!-- \n    <div class=\"d-flex flex-column position-absolute w-100\" style=\"max-width:calc(100% - 1.5rem);\">\n      <app-file-name-text [file]=\"file\"></app-file-name-text>\n    </div>\n    -->\n  </div>\n  <div class=\"col d-flex align-items-center\">\n        <app-progress-bar class=\"w-100\" [upload_id]=\"options.upload_id\"></app-progress-bar>\n        <!-- <span *ngIf=\"showLog\">show log</span> -->\n        <button *ngIf=\"status === 'failure'\" class=\"btn btn-sm btn-light ml-1\" (click)=\"retry()\">\n          <i class=\"fa fa-repeat\" aria-hidden=\"true\"></i>\n        </button>\n  </div>\n  <div *ngIf=\"showLog\" class=\"mb-2 w-100 p-2\">\n      <app-log [id]=\"index\"></app-log>\n  </div>\n\n</div>\n","styles":[".table-row{margin:0;display:flex}.table-row:first-child .table-cell{border-top:1px solid #dee2e6}.table-row .table-cell:first-child{border-left:1px solid #dee2e6}.table-cell{border-bottom:1px solid #dee2e6;border-right:1px solid #dee2e6;padding:.3rem;flex-basis:0;max-width:100%;flex-grow:1;display:flex;justify-content:center;align-items:center}"]}]}],"members":{"index":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3},"arguments":["index"]}]}],"file":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"access_token":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"showLog":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"onUpload":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/file","name":"FileService","line":23,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":24,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"upload":[{"__symbolic":"method"}],"retry":[{"__symbolic":"method"}]}},"FileUploadListProgressBarModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FileUploadListProgressBarComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4}],"exports":[{"__symbolic":"reference","name":"FileUploadListProgressBarComponent"}]}]}],"members":{}},"FileUploadListProgressBarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-progress-bar","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":9,"character":18},"member":"OnPush"},"template":"<div class=\"progress\">\n    <div *ngIf=\"!error\" class=\"progress-bar\" role=\"progressbar\" [ngClass]=\"{\n        'bg-success':perc === 100,\n        'progress-bar-animated progress-bar-striped':perc !== 100\n    }\" [style.width]=\"perc + '%'\">{{ perc | number }}% </div>\n    <div *ngIf=\"error\" class=\"progress-bar bg-danger w-100\" role=\"progressbar\">{{error}}</div>\n</div>\n","styles":[""]}]}],"members":{"upload_id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3},"arguments":["upload_id"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/file","name":"FileService","line":16,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":17,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"FileUploadListLogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FileUploadListLogComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"ngx-virtual-scroller","name":"VirtualScrollerModule","line":12,"character":4}],"exports":[{"__symbolic":"reference","name":"FileUploadListLogComponent"}]}]}],"members":{}},"FileUploadListLogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-log","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":18},"member":"OnPush"},"template":"<div class=\"card text-left\">\n  <div class=\"card-body\">\n    <virtual-scroller #scroll\n    [items]=\"list\" style=\"height:300px;\">\n      <div *ngFor=\"let item of scroll.viewPortItems; trackBy:trackByIndex;\">\n        {{item.type}} | {{item.report}}\n      </div>\n    </virtual-scroller>\n  </div>\n</div>\n","styles":[""]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3},"arguments":["id"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/file","name":"FileService","line":16,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":17,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"trackByIndex":[{"__symbolic":"method"}]}},"AgreementAcceptComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"modal-agreement-accept","template":"\n<div class=\"modal-header\">\n    <h4 class=\"modal-title\" i18n>Terms of Use and Privacy Policy</h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel();\">\n        <span aria-hidden=\"true\">&times;</span>\n    </button>\n</div>\n\n<div class=\"modal-body\">\n    <div class=\"card mb-2\" [ngClass]=\"{'border-primary':isAcceptAll}\">\n        <div class=\"card-header p-3 d-flex cursor-pointer\" [ngClass]=\"{'text-primary':isAcceptAll}\" (click)=\"acceptAll()\">\n            <div class=\"align-self-center mr-2\">\n                <i *ngIf=\"!isAcceptAll\" class=\"fa fa-lg fa-square-o text-secondary align-self-center\" aria-hidden=\"true\"></i>\n                <i *ngIf=\"isAcceptAll\" class=\"fa fa-lg fa-check-square align-self-center\" aria-hidden=\"true\"></i>\n            </div>\n            <div class=\"align-self-center\" i18n>Accept all</div>\n        </div>\n    </div>\n\n\n\n    <div class=\"card mb-2\" [ngClass]=\"{'border-primary':agreedToTermsOfUse}\">\n        <div class=\"card-header p-3 d-flex cursor-pointer\" [ngClass]=\"{'text-primary':agreedToTermsOfUse}\" (click)=\"setAgreedToTermsOfUse()\">\n            <div class=\"align-self-center mr-2\">\n                <i *ngIf=\"!agreedToTermsOfUse\" class=\"fa fa-lg fa-square-o text-secondary align-self-center\" aria-hidden=\"true\"></i>\n                <i *ngIf=\"agreedToTermsOfUse\" class=\"fa fa-lg fa-check-square align-self-center\" aria-hidden=\"true\"></i>\n            </div>\n            <div class=\"align-self-center\" i18n>Accept Terms of Use</div>\n            <div class=\"align-self-center ml-auto\" (click)=\"$event.stopPropagation(); showAgreedToTermsOfUse = !showAgreedToTermsOfUse\">\n                <button class=\"btn btn-light btn-sm\">\n                    <span *ngIf=\"!showAgreedToTermsOfUse\"><i class=\"fa fa-angle-down\" aria-hidden=\"true\"></i></span>\n                    <span *ngIf=\"showAgreedToTermsOfUse\"><i class=\"fa fa-angle-up\" aria-hidden=\"true\"></i></span>\n                </button>\n            </div>\n        </div>\n        <div class=\"card-body\" *ngIf=\"showAgreedToTermsOfUse\">\n            <pre [innerHTML]=\"termsOfUse\"></pre>\n        </div>\n    </div>\n    <div class=\"card PrivacyPolicy mb-2\" [ngClass]=\"{'border-primary':agreedToPrivacyPolicy}\">\n        <div class=\"card-header p-3 d-flex cursor-pointer\" [ngClass]=\"{'text-primary':agreedToPrivacyPolicy}\" (click)=\"setAgreedToPrivacyPolicy()\">\n            <div class=\"align-self-center mr-2\">\n                <i *ngIf=\"!agreedToPrivacyPolicy\" class=\"fa fa-lg fa-square-o text-secondary align-self-center\" aria-hidden=\"true\"></i>\n                <i *ngIf=\"agreedToPrivacyPolicy\" class=\"fa fa-lg fa-check-square align-self-center\" aria-hidden=\"true\"></i>\n            </div>\n            <div class=\"align-self-center\" i18n>Accept Privacy Policy</div>\n            <div class=\"align-self-center ml-auto\" (click)=\"$event.stopPropagation(); showAgreedToPrivacyPolicy = !showAgreedToPrivacyPolicy\">\n                <button class=\"btn btn-light btn-sm\">\n                    <span *ngIf=\"!showAgreedToPrivacyPolicy\"><i class=\"fa fa-angle-down\" aria-hidden=\"true\"></i></span>\n                    <span *ngIf=\"showAgreedToPrivacyPolicy\"><i class=\"fa fa-angle-up\" aria-hidden=\"true\"></i></span>\n                </button>\n            </div>\n\n        </div>\n        <div class=\"card-body\" *ngIf=\"showAgreedToPrivacyPolicy\">\n            <pre [innerHTML]=\"privacyPolicy\"></pre>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer justify-content-center\" style=\"margin-top: -24px;\">\n    <div class=\"row w-100 justify-content-end\">\n        <div class=\"col-lg-3 col-3\">\n            <button type=\"button\" class=\"btn btn-block btn-outline-secondary\" (click)=\"cancel()\" i18n>Cancel</button>\n        </div>\n        \n        <div class=\"col-lg-3 col-3\">\n            <button type=\"button\" class=\"btn btn-block\" \n                [ngClass]=\"agreedToTermsOfUse && agreedToPrivacyPolicy ? 'btn-primary':'btn-secondary'\" \n                [disabled]=\"!agreedToTermsOfUse || !agreedToPrivacyPolicy\" (click)=\"ofAge = false; ok();\" i18n>I am under 14 years old.</button>\n        </div>\n\n        <div class=\"col-lg-3 col-3\">\n            <button type=\"button\" class=\"btn btn-block\"\n                [ngClass]=\"agreedToTermsOfUse && agreedToPrivacyPolicy ? 'btn-primary':'btn-secondary'\"\n                [disabled]=\"!agreedToTermsOfUse || !agreedToPrivacyPolicy\" (click)=\"ofAge = true; ok();\" i18n>I am 14 years old or older.</button>\n                \n        </div>\n    </div>\n</div>","styles":["pre{white-space:pre-wrap;word-wrap:break-word;overflow:scroll;height:23vh;padding:10px}.card-body{padding:0}.card-header:hover{background-color:rgba(0,0,0,.1)}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/schoolbelle","name":"SchoolbelleService","line":12,"character":18},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":13,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"fetchPrivacyPolicy":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ok":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"acceptAll":[{"__symbolic":"method"}],"setAgreedToTermsOfUse":[{"__symbolic":"method"}],"setAgreedToPrivacyPolicy":[{"__symbolic":"method"}],"checkIsAcceptAll":[{"__symbolic":"method"}]}},"AgreementAcceptModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":11,"character":19},{"__symbolic":"reference","name":"CheckParentModalService"}]}],"open":[{"__symbolic":"method"}]}},"AgreementAcceptModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":11,"character":4},"member":"forRoot"}},{"__symbolic":"reference","name":"CheckParentModule"}],"declarations":[{"__symbolic":"reference","name":"AgreementAcceptComponent"}],"providers":[{"__symbolic":"reference","name":"AgreementAcceptModalService"}],"entryComponents":[{"__symbolic":"reference","name":"AgreementAcceptComponent"}]}]}],"members":{}},"CheckParentComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"modal-check-parent","template":"\n<div class=\"modal-header\">\n    <h4 class=\"modal-title\" i18n>Parent Name Check</h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel();\">\n        <span aria-hidden=\"true\">&times;</span>\n    </button>\n</div>\n\n<div class=\"modal-body\">\n    <ul class=\"nav nav-tabs text-center\">\n        <li class=\"nav-item flex-fill\">\n            <a class=\"nav-link\" [class.active]=\"currentTab === 'local'\" (click)=\"currentTab = 'local'\" i18n>Local</a>\n        </li>\n        <li class=\"nav-item flex-fill\">\n            <a class=\"nav-link\" [class.active]=\"currentTab === 'foreigner'\" (click)=\"currentTab = 'foreigner'\" i18n>Foreigner</a>\n        </li>\n        <li class=\"nav-item flex-fill\">\n            <a class=\"nav-link\" [class.active]=\"currentTab === 'info'\" (click)=\"currentTab = 'info'\" i18n>Error guide</a>\n        </li>\n    </ul>\n</div>\n\n<div class=\"alert alert-primary\" i18n>\n    Under 14 years old's require parental consent.\n</div>\n\n<app-local *ngIf=\"currentTab === 'local'\" (onOk)=\"ok(true)\" (onCancel)=\"cancel()\"></app-local>\n<app-foreigner *ngIf=\"currentTab === 'foreigner'\" (onOk)=\"ok(true)\" (onCancel)=\"cancel()\"></app-foreigner>\n<app-info *ngIf=\"currentTab === 'info'\"></app-info>\n\n\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":12,"character":13}]}],"cancel":[{"__symbolic":"method"}]}},"CheckParentModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":10,"character":19}]}],"open":[{"__symbolic":"method"}]}},"CheckParentModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":14,"character":4},"member":"forRoot"}},{"__symbolic":"reference","name":"LocalModule"},{"__symbolic":"reference","name":"ForeignerModule"},{"__symbolic":"reference","name":"InfoModule"}],"declarations":[{"__symbolic":"reference","name":"CheckParentComponent"}],"providers":[{"__symbolic":"reference","name":"CheckParentModalService"}],"entryComponents":[{"__symbolic":"reference","name":"CheckParentComponent"}]}]}],"members":{}},"ForeignerComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LocalComponent"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-foreigner","template":"<div class=\"modal-body\">\n  <input class=\"form-control form-control-lg\"\n  [class.is-invalid]=\"name.errors && name.dirty\"\n  type=\"text\" [formControl]=\"name\" i18n-placeholder placeholder=\"Parent's Name\">\n\n  <br/>\n  <input class=\"form-control form-control-lg\"\n  [class.is-invalid]=\"registration_id.errors && registration_id.dirty\"\n  type=\"text\"\n  [formControl]=\"registration_id\"\n  i18n-placeholder\n  placeholder=\"Parent's Foreigner Registration Number\">\n  <div *ngIf=\"registration_id.errors && registration_id.dirty\" class=\"invalid-feedback d-block\">\n    <p *ngIf=\"registration_id.errors.minlength || registration_id.errors.maxlength\" i18n>Enter a 13-digit number</p>\n  </div>\n  <p class=\"text-muted\" i18n>Your foreigner registration number is not saved at this website.</p>\n  <br/>\n\n  <label class=\"custom-control custom-checkbox form-control-lg\">\n    <input type=\"checkbox\" class=\"custom-control-input\" [formControl]=\"personalInfo\">\n    <span class=\"custom-control-label\">개인정보 수집 및 이용 동의</span>\n    <button class=\"btn btn-link btn-sm pull-right\" (click)=\"showNiceLegalTextModal('personal-info'); $event.stopPropagation();\">보기</button>\n  </label>\n  <label class=\"custom-control custom-checkbox form-control-lg\">\n    <input type=\"checkbox\" class=\"custom-control-input\" [formControl]=\"thirdPartyInfo\">\n    <span class=\"custom-control-label\">제3자 정보제공 동의</span>\n    <button class=\"btn btn-link btn-sm pull-right\" (click)=\"showNiceLegalTextModal('third-party-info'); $event.stopPropagation();\">보기</button>\n  </label>\n  <label class=\"custom-control custom-checkbox form-control-lg\">\n    <input type=\"checkbox\" class=\"custom-control-input\" [formControl]=\"socialSecurityInfo\">\n    <span class=\"custom-control-label\">고유식별번호 처리 동의</span>\n    <button class=\"btn btn-link btn-sm pull-right\" (click)=\"showNiceLegalTextModal('social-security-info'); $event.stopPropagation();\">보기</button>\n  </label>\n</div>\n<div class=\"modal-footer\">\n  <span class=\"text-muted\" i18n>NICE평가정보(주) 실명확인서비스 (1600-1522)</span>\n  <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"cancel()\" i18n>Cancel</button>\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"check()\" [disabled]=\"form.invalid\" i18n>Accept</button>\n</div>\n\n\n\n<div hidden id=\"checkparent-foreigner-2-error\"\ni18n-translation-text=\"@@checkparentLocal2Error\"\ntranslation-text=\"Social security number is found but name is not matched. Go to http://www.namecheck.co.kr/per_callcenter.asp and update information. It may take some time to come in effect.\"></div>\n<div hidden id=\"checkparent-foreigner-3-error\"\ni18n-translation-text=\"@@checkparentLocal3Error\"\ntranslation-text=\"Social security number is not found in NICE평가정보. Go to http://www.namecheck.co.kr/per_callcenter.asp and update information. It may take some time to come in effect.\"></div>\n<div hidden id=\"checkparent-foreigner-4-error\"\ni18n-translation-text=\"@@checkparentLocal4Error\"\ntranslation-text=\"System error occurred.\"></div>\n<div hidden id=\"checkparent-foreigner-5-error\"\ni18n-translation-text=\"@@checkparentLocal5Error\"\ntranslation-text=\"Social security number error \"></div>\n<div hidden id=\"checkparent-foreigner-50-error\"\ni18n-translation-text=\"@@checkparentLocal50Error\"\ntranslation-text=\"Social security number has been locked by NICE지키미 정보도용 차단\"></div>\n<div hidden id=\"checkparent-foreigner-58-error\"\ni18n-translation-text=\"@@checkparentLocal58Error\"\ntranslation-text=\"Has failed to connect to Immigration office database.\"></div>\n","styles":[""]}]}],"members":{"createForm":[{"__symbolic":"method"}]}},"ForeignerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ForeignerComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":12,"character":17},{"__symbolic":"reference","name":"NiceLegalTextModule"}],"exports":[{"__symbolic":"reference","name":"ForeignerComponent"}]}]}],"members":{}},"InfoComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-info","template":"<div class=\"modal-body\">\n  <h5 i18n>1. When your birth date, sex, and name info is not found</h5>\n  <p class=\"text-muted\" i18n>\n  Go to NICE아이디(www.niceid.co.kr) and register your name online and come back.<br/>\n  Warned : It may not work properly on mobile.Please use a PC.\n  </p>\n\n  <br/>\n  <h5 i18n>2. Others</h5>\n  <p class=\"text-muted\" i18n>\n    System or network error can cause a problem. give it some time and try it again. It error doesn't resolve, call for help at 1600-1522.\n  </p>\n  <br/>\n</div>\n\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"InfoModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"InfoComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4}],"exports":[{"__symbolic":"reference","name":"InfoComponent"}]}]}],"members":{}},"LocalComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-local","template":"<div class=\"modal-body\">\n    <input class=\"form-control form-control-lg\"\n    [class.is-invalid]=\"name.errors && name.dirty\"\n    type=\"text\" [formControl]=\"name\" i18n-placeholder placeholder=\"Parent's name\">\n\n    <br/>\n    <input class=\"form-control form-control-lg\"\n    [class.is-invalid]=\"registration_id.errors && registration_id.dirty\"\n    type=\"text\"\n    [formControl]=\"registration_id\"\n    i18n-placeholder\n    placeholder=\"Parent's birthdate(ex:19900101)\">\n    <div *ngIf=\"registration_id.errors && registration_id.dirty\" class=\"invalid-feedback d-block\">\n      <p *ngIf=\"registration_id.errors.minlength || registration_id.errors.maxlength\" i18n>Enter 8-digit of parent's birthdate(ex>19900101).</p>\n    </div>\n\n    <br/>\n\n\n    <div class=\"row\">\n      <div class=\"col \">\n        <label class=\"custom-control custom-radio form-control-lg\">\n          <input type=\"radio\" name=\"customRadio\" class=\"custom-control-input\" value=\"1\" [formControl]=\"gender\">\n          <span class=\"custom-control-label\" i18n>male</span>\n        </label>\n      </div>\n      <div class=\"col\">\n        <label class=\"custom-control custom-radio form-control-lg\">\n          <input type=\"radio\" name=\"customRadio\" class=\"custom-control-input\" value=\"0\" [formControl]=\"gender\">\n          <span class=\"custom-control-label\" i18n>female</span>\n        </label>\n      </div>\n    </div>\n    <br/>\n    <label class=\"custom-control custom-checkbox form-control-lg\">\n      <input type=\"checkbox\" class=\"custom-control-input\" [formControl]=\"personalInfo\">\n      <span class=\"custom-control-label\" i18n>Collection and usage of personal information</span>\n      <button class=\"btn btn-link btn-sm pull-right\" (click)=\"showNiceLegalTextModal('personal-info'); $event.stopPropagation();\" i18n>see</button>\n    </label>\n</div>\n<div class=\"modal-footer\">\n  <span class=\"text-muted\" i18n>NICE평가정보(주) 실명확인서비스 (1600-1522)</span>\n  <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"cancel()\" i18n>Cancel</button>\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"check()\" [disabled]=\"form.invalid\" i18n>Ok</button>\n</div>\n\n\n\n\n<div hidden id=\"checkparent-local-3\"\ni18n-translation-text=\"@@checkparentLocal3\"\ntranslation-text=\"Social security number and name do not match or are not found.\"></div>\n<div hidden id=\"checkparent-local-4\"\ni18n-translation-text=\"@@checkparentLocal4\"\ntranslation-text=\"Network or firewall problem of the site server.\"></div>\n<div hidden id=\"checkparent-local-9\"\ni18n-translation-text=\"@@checkparentLocal9\"\ntranslation-text=\"Verification Request Data Error\"></div>\n<div hidden id=\"checkparent-local-10\"\ni18n-translation-text=\"@@checkparentLocal10\"\ntranslation-text=\"Site Code Error\"></div>\n<div hidden id=\"checkparent-local-11\"\ni18n-translation-text=\"@@checkparentLocal11\"\ntranslation-text=\"Stopped Site\"></div>\n<div hidden id=\"checkparent-local-12\"\ni18n-translation-text=\"@@checkparentLocal12\"\ntranslation-text=\"Site Password Error\"></div>\n<div hidden id=\"checkparent-local-13\"\ni18n-translation-text=\"@@checkparentLocal13\"\ntranslation-text=\"Site Certificate Related Error\"></div>\n<div hidden id=\"checkparent-local-15\"\ni18n-translation-text=\"@@checkparentLocal15\"\ntranslation-text=\"Description Related Data error\"></div>\n<div hidden id=\"checkparent-local-16\"\ni18n-translation-text=\"@@checkparentLocal16\"\ntranslation-text=\"Description Related System error\"></div>\n<div hidden id=\"checkparent-local-21\"\ni18n-translation-text=\"@@checkparentLocal21\"\ntranslation-text=\"Encryption Related Data error\"></div>\n<div hidden id=\"checkparent-local-31\"\ni18n-translation-text=\"@@checkparentLocal31\"\ntranslation-text=\"Connection Error\"></div>\n\n\n\n<div hidden id=\"checkparent-local-429-error\"\ni18n-translation-text=\"@@checkparentLocal429Error\"\ntranslation-text=\"Too many requests. Try again in 10 minutes.\"></div>\n\n<div hidden id=\"checkparent-local-checked\"\ni18n-translation-text\ntranslation-text=\"Successfully checked. continue on pleaze.\"></div>\n\n\n\n","styles":[""]}]}],"members":{"onOk":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":22,"character":3}}]}],"onCancel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":23,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"NiceLegalTextModalService"},{"__symbolic":"reference","module":"@schoolbelle/api/auth","name":"AuthService","line":26,"character":19},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":27,"character":22},{"__symbolic":"reference","module":"ngx-toastr","name":"ToastrService","line":28,"character":21},{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationService","line":29,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":25}]}],"ngOnInit":[{"__symbolic":"method"}],"createForm":[{"__symbolic":"method"}],"check":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"showNiceLegalTextModal":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}]}},"LocalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"LocalComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":12,"character":17},{"__symbolic":"reference","name":"NiceLegalTextModule"}],"exports":[{"__symbolic":"reference","name":"LocalComponent"}]}]}],"members":{}},"NiceLegalTextComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-nice-legal-text","template":"\n<div class=\"modal-body\" [ngSwitch]=\"type\" style=\"height:60vh;overflow-y:scroll;\">\n    <app-text-personal-info *ngSwitchCase=\"'personal-info'\"></app-text-personal-info>\n    <app-text-third-party-info *ngSwitchCase=\"'third-party-info'\"></app-text-third-party-info>\n    <app-text-social-security-info *ngSwitchCase=\"'social-security-info'\"></app-text-social-security-info>\n</div>\n<div class=\"modal-footer\">\n    <button class=\"btn btn-secondary\" (click)=\"cancel();\" i18n>Cancel</button>\n</div>\n\n\n","styles":[""]}]}],"members":{"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":12,"character":13}]}]}},"NiceLegalTextModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"NiceLegalTextComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":13,"character":4},"member":"forRoot"}},{"__symbolic":"reference","name":"TextPersonalInfoModule"},{"__symbolic":"reference","name":"TextSocialSecurityInfoModule"},{"__symbolic":"reference","name":"TextThirdPartyInfoModule"}],"providers":[{"__symbolic":"reference","name":"NiceLegalTextModalService"}],"entryComponents":[{"__symbolic":"reference","name":"NiceLegalTextComponent"}]}]}],"members":{}},"NiceLegalTextModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":10,"character":19}]}],"open":[{"__symbolic":"method"}]}},"TextPersonalInfoModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TextPersonalInfoComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":10,"character":17}],"exports":[{"__symbolic":"reference","name":"TextPersonalInfoComponent"}]}]}],"members":{}},"TextPersonalInfoComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-text-personal-info","template":"<h5 i18n>Collection and Use of Personal information</h5>\n<div class=\"text-muted\" i18n>\n  To provide a simple email verification service, NICE평가정보㈜ requires personal information and agreement from the person themselves for collection and use of the personal information.\n</div>\n<br/>\n\n<h5 i18n>1. Information to collect</h5>\n<div class=\"text-muted\" i18n>\n  Local: Name, Email address, birthdate, sex, being a local\n  <br/>\n  Foreigner: Name, Email address, birthdate, sex, being a foreigner or foreigner registration number (by foreigner registration number. we mean all types of identification number that is given to a non-local by a local goverment.)\n</div>\n<br/>\n\n<h5 i18n>2. Purpose of collection and usage</h5>\n<div class=\"text-muted\" i18n>\n  To verify your name and prevent ID theft\n  <br/>\n  User management by Companies using NICE평가정보(주)'s service\n  <br/>\n  For prevention of malusage and for investigation\n  <br/>\n  For other purposes from the Law\n</div>\n  <br/>\n  <h5 i18n>3. Personal Information Policy</h5>\n  <div class=\"text-muted\" i18n>\n    Upon the completion of the purposes aforementioned, the information will be destroyed without a delay except for the cases down below for a sepecified time.\n  <br/>\n  <br/>\n  1. By the need of the company and its system\n  <ul>\n    <li>\n      records of ID verification or failure of it, email, social security number, birthdate, sex, being a local or a foreginer, foreginer registration number\n    </li>\n    <li>\n      purpose : prevention of malusage or management of customer service\n    </li>\n    <li>\n      term : 5 years\n    </li>\n  </ul>\n  2. By the law\n  <ul>\n    <li>\n      records of complaints or disputes of users\n    </li>\n    <li>\n      purpose  : the law related to protection of consumers\n    </li>\n    <li>\n      term : 3 years\n    </li>\n  </ul>\n</div>\n<p class=\"text-muted\" i18n>※ the person have a right to deny agreement to the collection and usage information. But in that case, we are sorry to notice that they cannot use the service.</p>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"TextSocialSecurityInfoModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TextSocialSecurityInfoComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":10,"character":17}],"exports":[{"__symbolic":"reference","name":"TextSocialSecurityInfoComponent"}]}]}],"members":{}},"TextSocialSecurityInfoComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-text-social-security-info","template":"<h5 i18n>Collection and Usage of ID</h5>\n<p class=\"text-muted\" i18n>For NICE평가정보(주) (refer to it as 'the company') to use the collected ID info of its clients, the company needs an separate agreement from the owner of the infomation according to the law.</p>\n\n<h5 i18n>Number 1 [On collection of personal information]</h5>\n<p class=\"text-muted\" i18n>Foreigner registration number : a law binding ID, refers to all types of ID number the goverment has issued to non local peeple.</p>\n\n<h5 i18n>Number 2 [On usage of personal information]</h5>\n<div class=\"text-muted\" i18n>\"The company\" can use the foreigner registration numbers for these cases:\n  <ul>\n    <li>\n      can provide them to Korea Association for ICT Promotion(KAIT) or Immigration Office to match name and foreigner registration number.\n    </li>\n    <li>\n      can provide name, foreginer registration number, and birthdate, sex, being foreigner extracted from the number to another company using the service.\n    </li>\n  </ul>\n</div>\n\n<h5 i18n>Number 3 [ON time of keeping and using personal information]</h5>\n<div class=\"text-muted\" i18n>\n  Upon the completion of the purposes, \"The company\" will destroy the personal information of \"the client\" without a delay and not continue to hold on to it.\n  <br/>\n  I agree to the usages of perosonal info stated above. \n</div>\n<br/>\n<p class=\"text-muted\" i18n>※ the person have a right to deny agreement to the collection and usage information. But in that case, we are sorry to notice that they cannot use the service.</p>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"TextThirdPartyInfoModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TextThirdPartyInfoComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":10,"character":17}],"exports":[{"__symbolic":"reference","name":"TextThirdPartyInfoComponent"}]}]}],"members":{}},"TextThirdPartyInfoComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-text-third-party-info","template":"<h5 i18n>Disclosure to Third Parties</h5>\n<p class=\"text-muted\" i18n>\n  NICE평가정보(주) does not disclose the client's information more than we specify nor to the unrelated 3rd party entities.\n  accept with their consent or for the requirements of the law \n  Only with their consent, we provides their restricted items of information to the directly related company like below:\n</p>\n\n<table class=\"table table-bordered text-muted\" style=\"table-layout:fixed;\">\n  <thead>\n    <tr class=\"text-center\">\n      <th i18n>item</th>\n      <th i18n>recipient</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td i18n>name, email, birthdate, sex,<br/>being a local/foreigner or foreigner registrration number, IP address</td>\n      <td i18n>Registered company using our service</td>\n    </tr>\n    <tr>\n      <td i18n>name, foreigner registrration number</td>\n      <td i18n>Korea Association for ICT Promotion(KAIT)<br/> or Immigration Office</td>\n    </tr>\n  </tbody>\n</table>\n\n<p class=\"text-muted\" i18n>※ the person have a right to deny agreement to the collection and usage information. But in that case, we are sorry to notice that they cannot use the service.</p>\n\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"MediaBrowserModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":10,"character":20}]}],"open":[{"__symbolic":"method"}]}},"MediaBrowserModalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"MediaBrowserModule","line":9,"character":4}],"providers":[{"__symbolic":"reference","name":"MediaBrowserModalService"}],"declarations":[{"__symbolic":"reference","name":"ɵj"}],"entryComponents":[{"__symbolic":"reference","name":"ɵj"}]}]}],"members":{}},"DatetimePickerModalComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"modal-datetime-picker","template":"\n<div class=\"modal-header\">\n    <h4 class=\"modal-title\">{{title}}</h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel();\">\n        <span aria-hidden=\"true\">&times;</span>\n    </button>\n</div>\n\n<div class=\"modal-body d-flex justify-content-center\">\n    <app-datetime-picker\n    [ctrl]=\"datetimeCtrl\"\n    [maxDate]=\"maxDate\"\n    [minDate]=\"minDate\"\n    ></app-datetime-picker>\n</div>\n<div class=\"modal-footer\">\n    <button type=\"button\" class=\"btn btn-outline-secondary\" (click)=\"cancel()\" i18n>Cancel</button>\n    <button type=\"button\" class=\"btn\" [ngClass]=\"datetimeCtrl.invalid ? 'btn-secondary':'btn-primary'\" [disabled]=\"datetimeCtrl.invalid\" (click)=\"ok(datetimeCtrl.value.getTime());\" i18n>Ok</button>\n</div>\n\n","styles":["pre{white-space:pre-wrap;word-wrap:break-word;overflow:scroll;height:23vh;padding:10px}.card-body{padding:0}.card-header:hover{background-color:rgba(0,0,0,.1)}"]}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"default_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"min_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"max_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":21,"character":15}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}]}},"DatetimePickerModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":10,"character":19}]}],"open":[{"__symbolic":"method"}]}},"DatetimePickerModalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":12,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":13,"character":4},{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"DatetimePickerModule","line":14,"character":4}],"declarations":[{"__symbolic":"reference","name":"DatetimePickerModalComponent"}],"providers":[{"__symbolic":"reference","name":"DatetimePickerModalService"}],"entryComponents":[{"__symbolic":"reference","name":"DatetimePickerModalComponent"}]}]}],"members":{}},"ReadListModalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":4},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/dropdown","name":"BsDropdownModule","line":20,"character":4},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":21,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":22,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationModule","line":23,"character":4},"member":"forRoot"}},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","module":"@schoolbelle/shared/directives","name":"TrackFocusModule","line":27,"character":4}],"providers":[{"__symbolic":"reference","name":"ReadListModalService"}],"declarations":[{"__symbolic":"reference","name":"ReadListComponent"},{"__symbolic":"reference","name":"ɵx"}],"entryComponents":[{"__symbolic":"reference","name":"ReadListComponent"},{"__symbolic":"reference","name":"ɵx"}]}]}],"members":{}},"ReadListModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":15,"character":21},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":16,"character":23},{"__symbolic":"reference","module":"@schoolbelle/api/letter-read","name":"LetterReadTableService","line":17,"character":31}]}],"prepare":[{"__symbolic":"method"}],"show":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"MemberlistType":{"__symbolic":"interface"},"ReadListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"app-read-list","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":21,"character":18},"member":"OnPush"},"providers":[{"__symbolic":"reference","module":"@angular/common","name":"DatePipe","line":22,"character":13}],"template":"<app-charts-carousel\n[rows]=\"filteredAndQuried\" \n[letter]=\"letter\"\n[hasSurvey]=\"hasSurvey\" \n[target_cnt]=\"target_cnt\"\n[read_cnt]=\"read_cnt\"\n[reply_cnt]=\"reply_cnt\"    \n></app-charts-carousel>\n\n\n\n<div *ngIf=\"anonymous && !poll\" class=\"modal-body\">\n  <div class=\"d-flex mb-3\">\n      <span i18n><b>The admins or the author</b> can do this.</span>\n      <div class=\"input-group w-auto ml-auto\">\n        <select class=\"custom-select custom-select-sm\" [(ngModel)]=\"pushTo\" (ngModelChange)=\"refreshCnts();\">\n          <option [ngValue]=\"'unread'\" i18n>unread</option>\n          <option *ngIf=\"hasSurvey\" [ngValue]=\"'unanswered'\" i18n>unanswered</option>\n        </select>\n        <div class=\"input-group-append\">\n          <button class=\"btn btn-primary btn-sm\" \n          [disabled]=\"(!group.checkPermission('admin') && letter.created_by !== group.currentGroup.uid) || push_cnt === 0\" \n          [tooltip]=\"repushPopTemplate\" placement=\"left\"\n          (click)=\"push()\" i18n>\n            Repush({{push_cnt}})\n          </button>\n        </div>\n      </div>\n  </div>  \n\n  \n  <div class=\"alert alert-info mb-0\" i18n>\n    This letter has an anonymous survey attached. <b>To maintain anonymity</b>, <b>the read/answer list is not provided nor downloadable</b>.\n  </div>\n</div>\n\n<div class=\"read-table\" *ngIf=\"!anonymous || poll\">\n  <div class=\"row m-0\">\n    <div class=\"col dropdown position-relative d-flex\">\n      <div class=\"input-group input-group-sm w-auto ml-auto\" dropdown>\n        <div class=\"input-group-prepend\">\n          <button class=\"btn btn-light\" disabled>\n            <i class=\"fa fa-filter\" aria-hidden=\"true\"></i>\n          </button>\n        </div>        \n        <div class=\"input-group-append\" >\n          <button class=\"btn btn-light dropdown-toggle\" type=\"button\" dropdownToggle [ngSwitch]=\"translateFilterSettings\">\n            <span *ngSwitchCase=\"'all'\" i18n>All</span>\n            <span *ngSwitchCase=\"'partial'\" i18n>Partial</span>\n            <span *ngSwitchCase=\"'none'\" i18n>None</span>\n          </button>\n        </div>\n        <div *dropdownMenu class=\"dropdown-menu dropdown-menu-right\" placement=\"bottom right\" (click)=\"$event.stopPropagation()\">\n          <a class=\"dropdown-item\" *ngIf=\"hasSurvey\" (click)=\"toggle('answered', 1)\">\n            <i class=\"fa fa-check-circle-o mr-1\" [ngClass]=\"isChecked('answered', 1) ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>Answered</ng-container>\n          </a>\n          <a class=\"dropdown-item\" *ngIf=\"hasSurvey\" (click)=\"toggle('answered', 0)\">\n            <i class=\"fa fa-check-circle-o mr-1\" [ngClass]=\"isChecked('answered', 0) ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>Unanswered</ng-container>\n          </a>\n          <a class=\"dropdown-item\" (click)=\"toggle('read', 1)\">\n            <i class=\"fa fa-check-circle-o mr-1\" [ngClass]=\"isChecked('read', 1) ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>Read</ng-container>\n          </a>\n          <a class=\"dropdown-item\" (click)=\"toggle('read', 0)\">\n            <i class=\"fa fa-check-circle-o mr-1\" [ngClass]=\"isChecked('read', 0) ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>Unread</ng-container>\n          </a>\n        </div>\n\n      </div>  \n\n      <div class=\"input-group input-group-sm w-auto ml-2\">\n        <input type=\"text\" class=\"form-control\" \n        track-focus #trackFocus=\"trackFocus\" \n        [style.width]=\"trackFocus.isFocused ? '240px':'120px'\" \n        i18n-placeholder placeholder=\"Class or name\" \n        #queryInput (keyup.enter)=\"query=queryInput.value;refresh()\">\n        <div class=\"input-group-append\">\n          <button class=\"btn btn-secondary\" type=\"button\" (click)=\"query=queryInput.value;refresh()\">\n            <i class=\"fa fa-search\"></i>\n          </button>      \n        </div>\n      </div>\n\n      <div class=\"dropdown ml-2\" dropdown>\n        <button class=\"btn btn-sm btn-light\" dropdownToggle>\n          <i class=\"fa fa-ellipsis-v\"></i>\n        </button>  \n        <div *dropdownMenu class=\"dropdown-menu dropdown-menu-right\" placement=\"bottom right\" (click)=\"$event.stopPropagation()\" style=\"width:270px\">\n          <div *ngIf=\"letter.type !== 'facultynews'\" class=\"dropdown-header text-wrap user-select-none cursor-pointer\" (click)=\"showSimpleDetailsCheckOptions = !showSimpleDetailsCheckOptions\">\n            <ng-container i18n>Simple/details</ng-container>\n            <i class=\"fa fa-caret-down float-right\"></i>\n          </div>          \n\n          <a *ngIf=\"letter.type !== 'facultynews' && showSimpleDetailsCheckOptions\" class=\"dropdown-item cursor-pointer\" [class.active]=\"!showDetails\" (click)=\"showDetails = false\">\n            <i class=\"fa fa-check-circle-o mr-1\" [ngClass]=\"showDetails === false ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>Show simple</ng-container>\n          </a>\n          <a *ngIf=\"letter.type !== 'facultynews'  && showSimpleDetailsCheckOptions\" class=\"dropdown-item cursor-pointer\" [class.active]=\"showDetails\" (click)=\"showDetails = true\">\n            <i class=\"fa fa-check-circle-o mr-1\" [ngClass]=\"showDetails === true ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>Show details</ng-container>\n          </a>\n          <div *ngIf=\"letter.type !== 'facultynews'\" class=\"dropdown-divider\"></div>\n\n\n          <div class=\"dropdown-header text-wrap user-select-none cursor-pointer\" (click)=\"showMemberlistCheckOptions = !showMemberlistCheckOptions\">\n            <ng-container i18n>Member list</ng-container> \n            <i class=\"fa fa-caret-down float-right\"></i>\n          </div>          \n          <a *ngIf=\"showMemberlistCheckOptions\" class=\"dropdown-item cursor-pointer\" [class.active]=\"memberlist === 'issuance'\" (click)=\"updateMemberlist('issuance')\">\n            <i class=\"fa mr-1\" [ngClass]=\"memberlist === 'issuance' ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>At issuance</ng-container>\n          </a>\n          <a *ngIf=\"showMemberlistCheckOptions\" class=\"dropdown-item cursor-pointer\" [class.active]=\"memberlist === 'aWeekAfter'\" (click)=\"updateMemberlist('aWeekAfter')\">\n            <i class=\"fa mr-1\" [ngClass]=\"memberlist === 'aWeekAfter' ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>A week after issuance</ng-container>\n          </a>\n          <a *ngIf=\"showMemberlistCheckOptions\" class=\"dropdown-item cursor-pointer\" [class.active]=\"memberlist === 'deadline'\" (click)=\"updateMemberlist('deadline')\">\n            <i class=\"fa mr-1\" [ngClass]=\"memberlist === 'deadline' ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>At deadline</ng-container>\n          </a>\n          <a *ngIf=\"showMemberlistCheckOptions\" class=\"dropdown-item cursor-pointer\" [class.active]=\"memberlist === 'now'\" (click)=\"updateMemberlist('now')\">\n            <i class=\"fa mr-1\" [ngClass]=\"memberlist === 'now' ? 'fa-check-circle-o':'fa-circle-o'\" aria-hidden=\"true\"></i>\n            <ng-container i18n>Now</ng-container>\n          </a>\n          \n          <div class=\"dropdown-divider\" *ngIf=\"!anonymous || poll\"></div>\n          <button class=\"dropdown-item\" *ngIf=\"!anonymous || poll\"\n            (click)=\"downloadAsExcel(downloadFrom)\" i18n>\n            Download Table\n          </button>\n          \n          <!-- <button class=\"dropdown-item\" [disabled]=\"anonymous\"\n            (click)=\"downloadAsExcel(downloadFrom)\" i18n>\n            Download Table\n          </button> -->\n\n          <div class=\"dropdown-divider\"></div>\n          <div class=\"dropdown-header text-wrap\" i18n><b>The admins or the author</b> can do this.</div>\n          <div class=\"dropdown-item\">\n            <div class=\"input-group\">\n              <select class=\"custom-select custom-select-sm\" [(ngModel)]=\"pushTo\" (ngModelChange)=\"refreshCnts();\">\n                <option [ngValue]=\"'unread'\" i18n>unread</option>\n                <option *ngIf=\"hasSurvey\" [ngValue]=\"'unanswered'\" i18n>unanswered</option>\n              </select>\n              <div class=\"input-group-append\">\n                <button class=\"btn btn-primary btn-sm\" \n                [disabled]=\"(!group.checkPermission('admin') && letter.created_by !== group.currentGroup.uid) || push_cnt === 0\" \n                [tooltip]=\"repushPopTemplate\" placement=\"left\"\n                (click)=\"push()\" i18n>\n                  Repush({{push_cnt}})\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n  </div>  \n  <app-read-list-table [rows]=\"filteredAndQuried\" [showDetails]=\"showDetails\" [query]=\"query\"></app-read-list-table>\n</div>  \n<!-- <div class=\"row m-0 table-secondary\">\n  <div class=\"col d-flex justify-content-between align-items-center\">\n    <div class=\"text-left\" i18n>\n      <b>The chief admin or the author</b> can do this.\n      <br/>\n      You can repush <b>the joined members only.</b>\n    </div>\n    <div class=\"btn-toolbar\">\n      <div class=\"btn-group mr-2\">\n          <button class=\"btn btn-light btn-sm item-self-end\" \n          [disabled]=\"anonymous\"\n          (click)=\"downloadAsExcel(downloadFrom)\" i18n>\n            Download Table\n          </button>\n      </div>\n      <div class=\"btn-group\" dropdown dropup=\"true\">\n        <button class=\"btn btn-light btn-sm dropdown-toggle\" [ngSwitch]=\"pushTo\" dropdownToggle>\n          <b *ngSwitchCase=\"'unread'\" i18n>unread</b>\n          <b *ngSwitchCase=\"'unanswered'\" i18n>unanswered</b>\n        </button>\n        <div class=\"dropdown-menu\" *dropdownMenu>\n            <a class=\"dropdown-item\" [ngClass]=\"{active:pushTo === 'unread'}\" (click)=\"pushTo = 'unread'; refreshCnts();\" i18n>unread</a>\n            <a *ngIf=\"hasSurvey\" class=\"dropdown-item\" [ngClass]=\"{active:pushTo === 'unanswered'}\" (click)=\"pushTo = 'unanswered'; refreshCnts();\" i18n>unanswered</a>\n        </div>          \n        <button class=\"btn btn-light btn-sm\" \n        [disabled]=\"(!group.checkPermission('admin') && letter.created_by !== group.currentGroup.uid) || push_cnt === 0\" \n        [tooltip]=\"repushPopTemplate\" placement=\"left\"\n        (click)=\"push()\" i18n>\n          Repush({{push_cnt}})\n        </button>\n\n      </div>\n    </div>\n  </div>\n</div>    -->\n  \n\n\n<ng-template #repushPopTemplate i18n>\n  The number of repush is counted against the students. Among <b>{{target_cnt - (hasSurvey ? reply_cnt : read_cnt)}}</b> students, <b>{{push_cnt}}</b> people can be repushed. \n</ng-template>\n\n\n<div hidden id=\"read-list-repush-prefix\"\ni18n-translation-text\ntranslation-text=\"[Repush]\"></div>\n<div hidden id=\"read-list-repush-confirm\"\ni18n-translation-text\ntranslation-text=\"Are you sure to repush?\"></div>\n\n<div hidden id=\"read-list-repush-confirm-too-early\"\ni18n-translation-text\ntranslation-text=\"Repushing on a recent post may cause annoyance with duplicate push notifications. Are you sure to repush anyway?\"></div>\n\n<div hidden id=\"read-list-repushing\"\ni18n-translation-text\ntranslation-text=\"Requesting for repush...\"></div>\n\n<div hidden id=\"read-list-repush-success\"\ni18n-translation-text\ntranslation-text=\"Successfully sent repushes.\"></div>\n\n<div hidden id=\"read-list-downloading\"\ni18n-translation-text\ntranslation-text=\"Creating an excel file...\"></div>\n\n<div hidden id=\"read-list-repush-403-error\"\ni18n-translation-text\ntranslation-text=\"You do not seem to have permission.\"></div>\n\n<div hidden id=\"read-list-repush-409-error\"\ni18n-translation-text\ntranslation-text=\"You do not seem to have permission.\"></div>\n\n<div hidden id=\"read-list-repush-429-error\"\ni18n-translation-text\ntranslation-text=\"You cannot perform a repush before 6 hours pass from the last repush.\"></div>\n\n<div hidden id=\"read-list-fetching-memberlist\"\ni18n-translation-text\ntranslation-text=\"Fetching member list...\"></div>\n\n\n<div hidden id=\"read-list-class\"\ni18n-translation-text\ntranslation-text=\"Class\"></div>\n\n<div hidden id=\"read-list-number\"\ni18n-translation-text\ntranslation-text=\"Num\"></div>\n\n<div hidden id=\"read-list-name\"\ni18n-translation-text\ntranslation-text=\"Name\"></div>\n\n<div hidden id=\"read-list-parent1\"\ni18n-translation-text\ntranslation-text=\"Parent1\"></div>\n\n<div hidden id=\"read-list-parent2\"\ni18n-translation-text\ntranslation-text=\"Parent2\"></div>\n\n<div hidden id=\"read-list-student\"\ni18n-translation-text\ntranslation-text=\"Student\"></div>\n\n<div hidden id=\"read-list-school\"\ni18n-translation-text\ntranslation-text=\"School\"></div>\n\n<div hidden id=\"read-list-read\"\ni18n-translation-text\ntranslation-text=\"Read\"></div>\n\n<div hidden id=\"read-list-unread\"\ni18n-translation-text\ntranslation-text=\"Unread\"></div>\n\n<div hidden id=\"read-list-answered\"\ni18n-translation-text\ntranslation-text=\"Answered\"></div>\n\n<div hidden id=\"read-list-unanswered\"\ni18n-translation-text\ntranslation-text=\"Unanswered\"></div>\n\n","styles":[".read-table{margin-bottom:0}.read-table .row .col{border-bottom:1px solid #dee2e6!important;border-left:1px solid #dee2e6!important;padding-top:.7rem;padding-bottom:.7rem;text-align:center}.read-table .row:first-child .col{border-top:1px solid #dee2e6!important}.read-table .row .col:last-child{border-right:1px solid #dee2e6!important}a.dropdown-item:active{background:0 0}"]}]}],"members":{"letter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"rows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":43,"character":17},{"__symbolic":"reference","module":"@schoolbelle/common/dialog","name":"DialogService","line":44,"character":22},{"__symbolic":"reference","module":"@schoolbelle/api/letter-read","name":"LetterReadTableService","line":45,"character":31},{"__symbolic":"reference","module":"@schoolbelle/api/excel","name":"ExcelService","line":46,"character":20},{"__symbolic":"reference","module":"@schoolbelle/api/letter-target","name":"LetterTargetService","line":47,"character":21},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":48,"character":22},{"__symbolic":"reference","module":"ngx-toastr","name":"ToastrService","line":49,"character":21},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":50,"character":25},{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationService","line":51,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":52,"character":20},{"__symbolic":"reference","module":"@angular/common","name":"DatePipe","line":53,"character":23},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":55,"character":20}]}],"getFilteredRows":[{"__symbolic":"method"}],"getQueriedRows":[{"__symbolic":"method"}],"hasRead":[{"__symbolic":"method"}],"hasReplied":[{"__symbolic":"method"}],"refreshCnts":[{"__symbolic":"method"}],"updateMemberlist":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"getAtFromMemberlistType":[{"__symbolic":"method"}],"getMemberlistTypeFromAt":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"isChecked":[{"__symbolic":"method"}],"toggle":[{"__symbolic":"method"}],"push":[{"__symbolic":"method"}],"downloadAsExcel":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"axisFormat":[{"__symbolic":"method"}]}},"ModalsRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":21,"character":12},"member":"forChild"},"arguments":[[{"path":"modals","children":[{"path":"read-list","loadChildren":"./read-list/read-list.module#ReadListModalModule"},{"path":"select-targets","loadChildren":"./select-letter-targets/select-letter-targets.module#SelectLetterTargetsModule"}]}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":22,"character":12}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-table-search","providers":[{"__symbolic":"reference","module":"@schoolbelle/common/phone-number","name":"PhoneNumberPipe","line":14,"character":14}],"template":"<div class=\"input-group\">\n  <div class=\"input-group-prepend\">\n    <span class=\"input-group-text\">\n      <i class=\"fa fa-search\"></i>\n    </span>\n  </div>\n  <input type=\"text\" class=\"form-control\" \n  placeholder=\"Name or phone number\" i18n-placeholder style=\"width:150px;\"\n  #input \n  ngModel\n  #typeahead=\"bs-typeahead\"\n  [typeaheadIeFix]=\"getMatchedMemberList(input.value)\"\n  (typeaheadOnSelect)=\"select($event.item.member)\"\n  typeaheadOptionField=\"display\"  \n  >\n</div>          \n","styles":[""]}]}],"members":{"member_types":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"onSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group-member","name":"GroupMemberService","line":20,"character":19},{"__symbolic":"reference","module":"@schoolbelle/common/phone-number","name":"PhoneNumberPipe","line":21,"character":28},{"__symbolic":"reference","name":"TableSearchService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getMatchedMemberList":[{"__symbolic":"method"}],"select":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":11,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":12,"character":12}]}]}],"members":{}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":21,"character":1},"arguments":[{"selector":"modal-select-letter-targets","template":"<div class=\"modal-header d-flex align-items-center\">\n  <h5 class=\"modal-title\" i18n>\n    <i class=\"fa fa-sitemap\" aria-hidden=\"true\"></i> Select targets <i class=\"fa fa-question-circle\" i18n-tooltip tooltip=\"click cells, rows, columns, or class/grade tabs to select or deselect.\" placement=\"right\"></i>\n  </h5>\n\n  <app-table-search class=\"d-inline-block ml-auto\" *ngIf=\"hasAccessToMemberlist\" [member_types]=\"tab === 'faculty' ? 'faculty' : 'student,parent'\"></app-table-search>\n  \n  <span>\n    <button type=\"button\" class=\"btn btn-outline-secondary ml-2\" (click)=\"cancel()\" i18n>Cancel</button>\n    <button type=\"button\" class=\"btn btn-primary ml-2\" (click)=\"ok()\" i18n>Ok</button>\n\n    <span class=\"dropdown ml-1\" dropdown>\n      <button class=\"btn btn-secondary\" dropdownToggle>\n          <i class=\"fa fa-ellipsis-v\" aria-hidden=\"true\"></i>\n      </button>\n      <div class=\"dropdown-menu dropdown-menu-right\" *dropdownMenu (click)=\"$event.stopPropagation();\">\n        <a class=\"dropdown-item\" *ngIf=\"hasAccessToMemberlist && tab === 'studentparent'\" [href]=\"downloadStudentListExcelTpl()\" target=\"_blank\" download i18n><i class=\"fa fa-download\"></i> Download template</a>\n        <a class=\"dropdown-item\" *ngIf=\"hasAccessToMemberlist && tab === 'faculty'\"[href]=\"downloadStudentListExcelTpl()\" target=\"_blank\" download i18n><i class=\"fa fa-download\"></i> Download template</a>\n        <button class=\"dropdown-item\" *ngIf=\"hasAccessToMemberlist\" (click)=\"downloadAsExcel()\" i18n><i class=\"fa fa-download\"></i> Download selected target table</button>\n        <button class=\"dropdown-item\"\n        *ngIf=\"hasAccessToMemberlist\"\n        ngfSelect\n        (filesChange)=\"onExcelUpload($event[0])\"\n        accept=\".xlsx,.xls\"\n        multiple=\"1\" i18n>\n        <i class=\"fa fa-upload\"></i> Upload targets\n        </button>\n\n\n        <div class=\"dropdown-divider\"></div>\n        <div class=\"dropdown-header\" i18n>\n          If childern of one household don't share at least one phone number<br/>\n          (Ex> First child has father's phone number and the second has mother's),<br/>\n          This option cannot detect them as one household. You may need to double-check.\n        </div>\n        <div class=\"dropdown-header\" i18n>\n          Deselect non-regular grades before use this option.\n        </div>\n        <button class=\"dropdown-item\" *ngIf=\"tab === 'studentparent' && hasAccessToMemberlist\" (click)=\"selectPerHousehold()\" i18n>Select one per household</button>\n      </div>\n    </span>\n  </span>\n</div>\n\n\n\n<app-select-letter-targets [tab]=\"tab\" (ok)=\"ok($event)\" (cancel)=\"cancel()\" ></app-select-letter-targets>\n\n\n<div *ngIf=\"tab === 'studentparent' && hasAccessToMemberlist\" class=\"modal-footer\">\n  <label i18n>\n      Select by roles :\n  </label>\n  <label class=\"custom-control custom-checkbox d-flex\">\n    <input class=\"custom-control-input\" type=\"checkbox\" checked disabled>\n    <span class=\"custom-control-label\" i18n>Admin</span>\n  </label>\n\n  <label class=\"custom-control custom-checkbox d-flex\">\n    <input class=\"custom-control-input\" type=\"checkbox\" \n      [disabled]=\"!isAnyChecked()\"\n      [checked]=\"isParentChecked(1)\" (click)=\"toggleParent(1)\"\n    >\n    <span class=\"custom-control-label\" i18n>Parent1</span>\n  </label>\n\n  <label class=\"custom-control custom-checkbox d-flex\">\n    <input class=\"custom-control-input\" type=\"checkbox\" \n      [disabled]=\"!isAnyChecked()\"\n      [checked]=\"isParentChecked(2)\" (click)=\"toggleParent(2)\"\n    >\n    <span class=\"custom-control-label\" i18n>Parent2</span>\n  </label>\n\n  <label class=\"custom-control custom-checkbox d-flex\">\n    <input class=\"custom-control-input\" type=\"checkbox\" \n    [disabled]=\"!isAnyChecked()\"\n    [checked]=\"isStudentChecked()\" (click)=\"toggleStudent()\">\n    <span class=\"custom-control-label\" i18n>Student</span>\n  </label>\n</div>\n\n\n\n\n\n<div hidden id=\"select-letter-targets-modal-wrong-number\"\ni18n-translation-text\ntranslation-text=\"%s %s %s's number value(%s) is not a number.\"></div>\n\n\n<div hidden id=\"select-letter-targets-modal-group-not-found\"\ni18n-translation-text\ntranslation-text=\"%s is not found in the system.\"></div>\n\n<div hidden id=\"select-letter-targets-modal-member-not-found\"\ni18n-translation-text\ntranslation-text=\"%s %s %s is not found in the system.\"></div>\n\n\n<div hidden id=\"select-letter-targets-modal-continue\"\ni18n-translation-text\ntranslation-text=\"Are you sure to continue?\"></div>\n\n<div hidden id=\"select-letter-targets-modal-reading\"\ni18n-translation-text\ntranslation-text=\"Reading...\"></div>\n\n<div hidden id=\"select-letter-targets-modal-class\"\ni18n-translation-text\ntranslation-text=\"Class\"></div>\n<div hidden id=\"select-letter-targets-modal-number\"\ni18n-translation-text\ntranslation-text=\"Num\"></div>\n<div hidden id=\"select-letter-targets-modal-name\"\ni18n-translation-text\ntranslation-text=\"Name\"></div>\n<div hidden id=\"select-letter-targets-modal-parent1\"\ni18n-translation-text\ntranslation-text=\"Parent1\"></div>\n<div hidden id=\"select-letter-targets-modal-parent2\"\ni18n-translation-text\ntranslation-text=\"Parent2\"></div>\n<div hidden id=\"select-letter-targets-modal-student\"\ni18n-translation-text\ntranslation-text=\"Student\"></div>\n<div hidden id=\"select-letter-targets-modal-school\"\ni18n-translation-text\ntranslation-text=\"School\"></div>\n\n\n<div hidden id=\"select-letter-targets-modal-downloading\"\ni18n-translation-text\ntranslation-text=\"Downloading...\"></div>\n\n<div hidden id=\"select-letter-targets-modal-selecting-per-household\"\ni18n-translation-text\ntranslation-text=\"Computing...(it may take a few seconds depending on the number of members)\"></div>\n\n<div hidden id=\"alert-select-letter-targets-modal-selecting-per-household\"\ni18n-translation-text\ntranslation-text=\"No targets selected.\nPlease select targets before clicking ‘Select one per household’\"></div>\n","styles":[""]}]}],"members":{"ngfSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":27,"character":3},"arguments":[{"__symbolic":"reference","module":"angular-file","name":"ngfSelect","line":27,"character":13}]}]}],"tab":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":5}}],null,null,null,null,null,null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":65,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":65,"character":12}]}]],"parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":53,"character":32},{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":54,"character":17},{"__symbolic":"reference","module":"@schoolbelle/api/letter-target","name":"LetterTargetService","line":55,"character":18},{"__symbolic":"reference","module":"@schoolbelle/api/excel","name":"ExcelService","line":56,"character":18},{"__symbolic":"reference","module":"@schoolbelle/api/group-to-group","name":"TreeService","line":57,"character":17},{"__symbolic":"reference","module":"@schoolbelle/api/group-member","name":"GroupMemberService","line":58,"character":19},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":59,"character":20},{"__symbolic":"reference","module":"@schoolbelle/common/dialog","name":"DialogService","line":60,"character":20},{"__symbolic":"reference","module":"ngx-toastr","name":"ToastrService","line":61,"character":19},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":62,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":63,"character":23},{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationService","line":64,"character":24},{"__symbolic":"reference","name":"string"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onExcelUpload":[{"__symbolic":"method"}],"refreshFileInput":[{"__symbolic":"method"}],"downloadAsExcel":[{"__symbolic":"method"}],"isAnyChecked":[{"__symbolic":"method"}],"isStudentChecked":[{"__symbolic":"method"}],"isParentChecked":[{"__symbolic":"method"}],"toggleStudent":[{"__symbolic":"method"}],"toggleParent":[{"__symbolic":"method"}],"hasScopes":[{"__symbolic":"method"}],"addToScopes":[{"__symbolic":"method"}],"removeFromScopes":[{"__symbolic":"method"}],"selectPerHousehold":[{"__symbolic":"method"}],"_selectPerHousehold":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"downloadStudentListExcelTpl":[{"__symbolic":"method"}],"downloadFacultyListExcelTpl":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":7,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":7,"character":32}]}],"ngOnInit":[{"__symbolic":"method"}],"ok":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"modal-place-order","template":"<div class=\"modal-header\" [ngSwitch]=\"type\">\n    <h5 *ngSwitchCase=\"'school'\" class=\"modal-title\" i18n>Purchase license</h5>\n    <h5 *ngSwitchCase=\"'sms'\" class=\"modal-title\" i18n>Purchase SMS points</h5>\n    <h5 *ngSwitchCase=\"'crawl'\" class=\"modal-title\" i18n>Purchase crawling</h5>\n    <button type=\"button\" class=\"close\" (click)=\"cancel()\">\n      <span aria-hidden=\"true\">&times;</span>\n    </button>\n</div>\n<div class=\"modal-body\" [ngSwitch]=\"type\">\n  <place-order-school *ngSwitchCase=\"'school'\" \n  (onUpdated)=\"onUpdated($event)\"     \n  ></place-order-school>\n  <place-order-sms *ngSwitchCase=\"'sms'\"\n  (onUpdated)=\"onUpdated($event)\"     \n  ></place-order-sms>    \n  <place-order-crawl *ngSwitchCase=\"'crawl'\"\n  (onUpdated)=\"onUpdated($event)\"     \n  ></place-order-crawl>    \n        \n</div>\n\n<div class=\"modal-footer\">\n  <div class=\"row w-100 justify-content-end\">\n      <div class=\"col-lg-3 col-6\">\n          <button type=\"button\" class=\"btn btn-block btn-outline-secondary\" (click)=\"cancel();\" i18n>Cancel</button>\n      </div>\n      <div class=\"col-lg-3 col-6 pl-0\">\n          <button \n          (click)=\"ok();\" \n          class=\"btn btn-block\" \n          [disabled]=\"invalid\"\n          [ngClass]=\"{'btn-danger':invalid, 'btn-primary':!invalid}\" i18n>\n              Place order\n          </button>\n      </div>\n  </div>\n</div>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":21,"character":13},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":22,"character":18}]}],"ngOnInit":[{"__symbolic":"method"}],"onUpdated":[{"__symbolic":"method"}],"ok":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵg"}],"imports":[{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"PlaceOrderModule","line":7,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵg"}]}]}],"members":{}},"ɵg":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@schoolbelle/shared/components","name":"PlaceOrderComponent","line":21,"character":46},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"place-order-crawl","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":19,"character":18},"member":"OnPush"},"template":"<div class=\"card mb-4\">\n    <div class=\"card-header\">\n        <b i18n>Products</b>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Board crawling</label>\n            <div class=\"col-sm-9\">\n                <app-select-crawl [form]=\"form\" required\n                [products]=\"extractProdcutParams('crawl')\"\n                (productsChange)=\"updateWithProductParams('crawl', $event)\"\n                ></app-select-crawl>          \n            </div>\n        </div>      \n        <div class=\"row\"> \n            <div class=\"col-12\">\n                <p class=\"alert alert-danger\" i18n>\n                    Warning:\n                    <br/>\n                    <b>Untargeted letters</b> will make your audience <b>less responsive to new letters</b> over time, which will turn into <b>more work</b> for you.\n                    <br/>\n                    So we <b>disable push notifications</b> on crawled items by default.\n                    <br/>\n                    <!-- <a href=\"\">see more</a> -->\n                </p>\n\n                <p class=\"alert alert-primary\" i18n>Leave us <b>board's name</b> and <b>the url of the board and any additnal steps to get to it</b> to crawl in the comment below</p>\n            </div>\n\n        </div>\n\n    </div>\n</div>\n\n<div class=\"card mb-4\">\n    <div class=\"card-header d-flex justify-content-between align-items-center\">\n        <b i18n>Cost Info</b>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"form-group row mb-0\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Effective range</label>   \n            <div class=\"col-sm-9\">\n                <app-effective-range [form]=\"form\"\n                ></app-effective-range>\n            </div>\n        </div>        \n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Cost details</label>   \n            \n            <div class=\"col-sm-9 d-flex align-items-center\">\n                <app-cost-table [form]=\"form\"\n                ></app-cost-table>\n            </div>\n        </div>        \n        <div class=\"form-group row\">\n            <label class=\"col-sm-3 col-form-label\" i18n>Payment method</label>   \n            <div class=\"col-sm-9\">\n                <app-payment-type [form]=\"form\"></app-payment-type>\n            </div>    \n        </div>        \n    </div>    \n</div>            \n\n<div class=\"card mb-4\" [ngClass]=\"{'border-danger':!form.pristine && accountant.invalid}\">\n    <div class=\"card-header\">\n        <b i18n>Accountant info</b>\n        <div class=\"float-right\" i18n>\n            We will send a link where you can download a <b>tax invoice</b> and accounting related docs at this address.\n        </div>\n    </div>\n    <div class=\"card-body\">\n        <div class=\"row mb-0\">\n            <div class=\"col-6\">\n            </div>\n            <div class=\"col-6\">\n                <app-accountant-info [form]=\"form\"></app-accountant-info>\n            </div>\n        </div>\n    </div>\n</div>   \n<div class=\"card mb-4\" [ngClass]=\"{'border-danger':!form.pristine && message.invalid}\">\n    <div class=\"card-header\">\n        <b i18n>Comment(optional)</b>\n    </div>\n    <div class=\"card-body\">\n        <app-comment [form]=\"form\"></app-comment>\n    </div>\n</div>\n\n\n<div hidden id=\"place-order-confirm\"\n  i18n-translation-text\n  translation-text=\"Are you sure to continue with the email %s?\"></div>\n\n<div hidden id=\"place-order-ordered\"\n  i18n-translation-text\n  translation-text=\"Successfully ordered. Materials and documents will be sent within 1-2 business days. Thank you.\"></div>\n\n<div hidden id=\"place-order-ordering\"\n  i18n-translation-text\n  translation-text=\"Requesting an order...\"></div>\n\n<div hidden id=\"place-order-canceled\"\n  i18n-translation-text\n  translation-text=\"Canceled.\"></div>\n\n<div hidden id=\"place-order-ordered-with-confirm-email\"\n  i18n-translation-text\n  translation-text=\"Your confirmation email has been sent at %s. See the email first.\"></div>\n\n<div hidden id=\"place-order-429-error\"\n  i18n-translation-text\n  translation-text=\"You have already ordered recently.\"></div>\n  \n<div hidden id=\"place-order-unknown-error\"\n  i18n-translation-text\n  translation-text=\"Order has failed.\"></div>\n\n  \n  ","styles":[":host>>>.popover.danger{color:#fff;background-color:#dc3545}:host>>>.popover.danger .popover-body{color:#fff}:host>>>.popover.danger.top>.arrow:after{border-top-color:#dc3545}:host>>>.popover.danger.bottom>.arrow:after{border-bottom-color:#dc3545}:host>>>.bs-popover-left.danger>.arrow::after{border-left-color:#dc3545}:host>>>.bs-popover-right.danger>.arrow::after{border-right-color:#dc3545}"]}]}],"members":{"onUpdated":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":23,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":30,"character":12}]}],null,null,null],"parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":25,"character":10},{"__symbolic":"reference","module":"@schoolbelle/api/ledger","name":"LedgerService","line":26,"character":11},{"__symbolic":"reference","module":"@schoolbelle/api/purchase","name":"PurchaseService","line":27,"character":13},{"__symbolic":"reference","module":"@schoolbelle/api/user-to-group","name":"UserToGroupService","line":28,"character":8},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":29,"character":10},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@schoolbelle/common/translation","name":"TranslationService","line":33,"character":26},{"__symbolic":"reference","module":"@schoolbelle/common/loading","name":"LoadingService","line":34,"character":22},{"__symbolic":"reference","module":"@schoolbelle/common/dialog","name":"DialogService","line":35,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"fillInBasicValues":[{"__symbolic":"method"}],"order":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-request-receipt","template":"\n<form [formGroup]=\"form\" (ngSubmit)=\"ok(form.value)\">\n    <div class=\"modal-header pb-0\">\n        <h4 class=\"modal-title\" i18n>Request for tax invoice</h4>\n        <button type=\"button\" class=\"close pull-right\" (click)=\"cancel();\">\n            <span aria-hidden=\"true\">&times;</span>\n        </button>\n    </div>\n\n    <div class=\"modal-body\">\n        <div class=\"card mb-4\" [ngClass]=\"{'border-danger':CorpNum.invalid || CorpName.invalid}\">\n            <div class=\"card-header d-flex justify-content-between align-items-center\">\n                <b i18n>Institution Info</b>\n            </div>\n            <div class=\"card-body\">\n                <div class=\"form-group row\">\n                    <label class=\"col-sm-3 col-form-label\" i18n>Institution name</label>\n                    <div class=\"col-sm-9\">\n                        <input focused\n                        class=\"form-control\"\n                        i18n-placeholder\n                        placeholder=\"Enter your institution name.\"\n                        [ngClass]=\"{\n                            'is-invalid':CorpName.invalid && CorpName.dirty\n                        }\"\n                        formControlName=\"CorpName\">\n                        <div class=\"invalid-feedback d-block\" *ngIf=\"CorpName.errors && CorpName.dirty\">\n                            <p *ngIf=\"CorpName.errors.required\" i18n>Enter your institution name.</p>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"form-group row\">\n                    <label class=\"col-sm-3 col-form-label\" i18n>Business registration number</label>\n                    <div class=\"col-sm-9\">\n                        <input focused\n                        class=\"form-control\"\n                        i18n-placeholder\n                        placeholder=\"Enter your business registration number.\"\n                        [ngClass]=\"{\n                            'is-invalid':CorpNum.invalid && CorpNum.dirty\n                        }\"\n                        formControlName=\"CorpNum\">\n\n                        <div class=\"invalid-feedback d-block\" *ngIf=\"CorpNum.errors && CorpNum.dirty\">\n                            <p *ngIf=\"CorpNum.errors.required\" i18n>Enter your business registration number.</p>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"form-group row\">\n                    <label class=\"col-sm-3 col-form-label\" i18n>Name of the CEO</label>\n                    <div class=\"col-sm-9\">\n                        <input focused\n                        class=\"form-control\"\n                        placeholder=\"Enter the name of the CEO.\"\n                        [ngClass]=\"{\n                            'is-invalid':CEOName.invalid && CEOName.dirty\n                        }\"\n                        formControlName=\"CEOName\">\n                        <div class=\"invalid-feedback d-block\" *ngIf=\"CEOName.errors && CEOName.dirty\">\n                            <p *ngIf=\"CEOName.errors.required\" i18n>Enter the name of the CEO.</p>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"form-group row\">\n                    <label class=\"col-sm-3 col-form-label\" i18n>Addresss</label>\n                    <div class=\"col-sm-9\">\n                        <input focused\n                        class=\"form-control\"\n                        i18n-placeholder\n                        placeholder=\"Enter address.\"\n                        [ngClass]=\"{\n                            'is-invalid':Addr.invalid && Addr.dirty\n                        }\"\n                        formControlName=\"Addr\">\n                        <div class=\"invalid-feedback d-block\" *ngIf=\"Addr.errors && Addr.dirty\">\n                            <p *ngIf=\"Addr.errors.required\" i18n>Enter address.</p>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"card mb-4\" [ngClass]=\"{'border-danger':CorpNum.invalid || CorpName.invalid}\">\n            <div class=\"card-header d-flex justify-content-between align-items-center\">\n                <b i18n>Name on bank account and person in charge info</b>\n            </div>\n            <div class=\"card-body\">\n                <div class=\"form-group row\">\n                    <label class=\"col-sm-3 col-form-label\" i18n>Name on bank account</label>\n                    <div class=\"col-sm-9\">\n                        <input focused\n                        class=\"form-control\"\n                        i18n-placeholder\n                        placeholder=\"Enter correctly to match the bank transaction.\"\n                        [ngClass]=\"{\n                            'is-invalid':PayerName.invalid && PayerName.dirty\n                        }\"\n                        formControlName=\"PayerName\">\n                        <div class=\"invalid-feedback d-block\" *ngIf=\"PayerName.errors && PayerName.dirty\">\n                            <p *ngIf=\"PayerName.errors.required\" i18n>Enter the name on the bank account.</p>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"form-group row\">\n                    <label class=\"col-sm-3 col-form-label\" i18n>Person in change</label>\n                    <div class=\"col-sm-9\">\n                        <input focused\n                        class=\"form-control\"\n                        i18n-placeholder\n                        placeholder=\"Enter the name of person in charge.\"\n                        [ngClass]=\"{\n                            'is-invalid':ContactName.invalid && ContactName.dirty\n                        }\"\n                        formControlName=\"ContactName\">\n                        <div class=\"invalid-feedback d-block\" *ngIf=\"ContactName.errors && ContactName.dirty\">\n                            <p *ngIf=\"ContactName.errors.required\" i18n>Enter the name of person in charge.</p>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"form-group row \">\n                    <label class=\"col-sm-3 col-form-label\" i18n>Accountant Email</label>\n                    <div class=\"col-sm-9\">\n                        <input focused\n                        type=\"email\"\n                        class=\"form-control\"\n                        i18n-placeholder\n                        placeholder=\"Enter Accountant Email to receive the tax invoice.\"\n                        [ngClass]=\"{\n                            'is-invalid':Email.invalid && Email.dirty\n                        }\"\n                        formControlName=\"Email\">\n                        <p class=\"invalid-feedback d-block\" i18n>Enter Accountant Email to receive the tax invoice.</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"modal-footer\">\n        <div class=\"row w-100 justify-content-end\">\n            <div class=\"col-lg-3 col-6\">\n                <button type=\"button\" class=\"btn btn-block btn-outline-secondary\" (click)=\"cancel();\" i18n>Cancel</button>\n            </div>\n            <div class=\"col-lg-3 col-6 pl-0\">\n                <button\n                type=\"submit\"\n                role=\"button\"\n                [disabled]=\"form.invalid\"\n                [ngClass]=\"form.invalid ? 'btn-danger':'btn-primary btn-pulse'\"\n                class=\"btn btn-block\" i18n>\n                    Request\n                </button>\n            </div>\n        </div>\n    </div>\n</form>\n\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":32,"character":14}]}],"createFormControls":[{"__symbolic":"method"}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":9,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"FileUploadListComponent"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":10,"character":12}]}]}],"members":{}},"ɵj":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"modal-media-browser","template":"<app-media-browser [list]=\"list\" [index]=\"index\" [manageFaces]=\"true\"></app-media-browser>\n","styles":[":host ::ng-deep gallery gallery-item{cursor:initial}"]}]}],"members":{"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"index":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":14,"character":13}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":11,"character":12},"member":"forChild"},"arguments":[[{"path":":group_id/:board_type/:letter_id","canActivate":[{"__symbolic":"reference","name":"ɵl"}],"resolve":{"data":{"__symbolic":"reference","name":"ɵm"}},"component":{"__symbolic":"reference","name":"ReadListComponent"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":12,"character":12}]}]}],"members":{}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/auth","name":"AuthService","line":15,"character":17},{"__symbolic":"reference","module":"@schoolbelle/api/group","name":"GroupService","line":16,"character":18},{"__symbolic":"reference","module":"@schoolbelle/api/board","name":"BoardService","line":17,"character":18},{"__symbolic":"reference","module":"@schoolbelle/api/letter","name":"LetterService","line":18,"character":19},{"__symbolic":"reference","name":"ReadListModalService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":20,"character":19}]}],"canActivate":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/letter","name":"LetterService","line":14,"character":21},{"__symbolic":"reference","name":"ReadListModalService"},{"__symbolic":"reference","module":"@schoolbelle/api/letter-read","name":"LetterReadTableService","line":16,"character":31}]}],"resolve":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/carousel","name":"CarouselModule","line":13,"character":4},"member":"forRoot"}},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵs"}],"declarations":[{"__symbolic":"reference","name":"ɵu"}],"exports":[{"__symbolic":"reference","name":"ɵu"}]}]}],"members":{}},"ɵo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","module":"angular-svg-round-progressbar","name":"RoundProgressModule","line":9,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵp"}],"exports":[{"__symbolic":"reference","name":"ɵp"}]}]}],"members":{}},"ɵp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":1,"character":1},"arguments":[{"selector":"app-donut-chart","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":5,"character":18},"member":"OnPush"},"template":"<div class=\"py-3\">\n  <div class=\"row\">\n    <div class=\"col\">\n        <div class=\"progress-circle position-relative m-auto\" style=\"max-width:340px;\">\n            <div class=\"progress-circle-text text-center\">\n              <small i18n>Read Rate</small> <br/>\n              {{read_cnt}}/{{target_cnt}}\n            </div>            \n            <round-progress\n            [current]=\"read_cnt\"\n            [max]=\"target_cnt\"\n            [color]=\"'#F96E32'\"\n            [background]=\"'#eaeaea'\"\n            [radius]=\"125\"\n            [stroke]=\"20\"\n            [rounded]=\"true\"\n            [semicircle]=\"true\"            \n            [responsive]=\"true\"\n            [duration]=\"800\"\n            [animation]=\"'easeInOutQuart'\"\n            [animationDelay]=\"0\"></round-progress>\n        </div>\n    </div>\n    <div *ngIf=\"hasSurvey\" class=\"col\">\n      <div class=\"progress-circle position-relative m-auto\" style=\"max-width:340px;\" *ngIf=\"hasSurvey\">\n        <div class=\"progress-circle-text text-center\">\n          <small i18n>Answer rate</small><br/>\n          {{reply_cnt}}/{{target_cnt}}\n        </div>            \n        <round-progress\n        [current]=\"reply_cnt\"\n        [max]=\"target_cnt\"\n        [color]=\"'#32db64'\"\n        [background]=\"'#eaeaea'\"\n        [radius]=\"125\"\n        [stroke]=\"20\"\n        [rounded]=\"true\"\n        [semicircle]=\"true\"            \n        [responsive]=\"true\"\n        [duration]=\"800\"\n        [animation]=\"'easeInOutQuart'\"\n        [animationDelay]=\"0\"></round-progress>\n      </div>\n    </div>\n  </div>  \n</div>","styles":[".progress-circle .progress-circle-text{position:absolute;color:#bbb;font-weight:100;line-height:1;top:65%;bottom:auto;left:50%;transform:translateY(-50%) translateX(-50%);font-size:35.7143px}"]}]}],"members":{"hasSurvey":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3}}]}],"target_cnt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"read_cnt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"reply_cnt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","module":"@swimlane/ngx-charts","name":"NgxChartsModule","line":9,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵr"}],"exports":[{"__symbolic":"reference","name":"ɵr"}]}]}],"members":{}},"ɵr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-bar-chart-read","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":9,"character":18},"member":"OnPush"},"template":"<div style=\"height:200px;\" class=\"d-flex justify-content-center align-items-center px-5\">\n    <ngx-charts-bar-vertical\n    [view]=\"view\"\n    [scheme]=\"colorScheme\"\n    [results]=\"single\"\n    [gradient]=\"gradient\"\n    [xAxis]=\"showXAxis\"\n    [yAxis]=\"showYAxis\"\n    [legend]=\"showLegend\"\n    [showXAxisLabel]=\"showXAxisLabel\"\n    [showYAxisLabel]=\"showYAxisLabel\"\n    [yAxisTickFormatting]=\"axisFormat\">\n  </ngx-charts-bar-vertical>    \n</div>\n","styles":[""]}]}],"members":{"letter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"rows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/letter-read","name":"LetterReadTableService","line":24,"character":25},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":25,"character":20}]}],"getChartData":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"axisFormat":[{"__symbolic":"method"}]}},"ɵs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":4},{"__symbolic":"reference","module":"@swimlane/ngx-charts","name":"NgxChartsModule","line":9,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵt"}],"exports":[{"__symbolic":"reference","name":"ɵt"}]}]}],"members":{}},"ɵt":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵr"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-bar-chart-answered","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":7,"character":18},"member":"OnPush"},"template":"<div style=\"height:200px;\" class=\"d-flex justify-content-center align-items-center px-5\">\n    <ngx-charts-bar-vertical\n    [view]=\"view\"\n    [scheme]=\"colorScheme\"\n    [results]=\"single\"\n    [gradient]=\"gradient\"\n    [xAxis]=\"showXAxis\"\n    [yAxis]=\"showYAxis\"\n    [legend]=\"showLegend\"\n    [showXAxisLabel]=\"showXAxisLabel\"\n    [showYAxisLabel]=\"showYAxisLabel\"\n    [yAxisTickFormatting]=\"axisFormat\">\n  </ngx-charts-bar-vertical>    \n</div>\n","styles":[""]}]}],"members":{}},"ɵu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-charts-carousel","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":8,"character":18},"member":"OnPush"},"template":"<carousel \n[noPause]=\"false\"\n[showIndicators]=\"false\">\n  <slide class=\"px-5\">\n    <app-donut-chart \n    [hasSurvey]=\"hasSurvey\" \n    [target_cnt]=\"target_cnt\"\n    [read_cnt]=\"read_cnt\"\n    [reply_cnt]=\"reply_cnt\"></app-donut-chart>        \n  </slide>\n  <slide class=\"px-5\">\n    <app-bar-chart-read [rows]=\"rows\" [letter]=\"letter\"></app-bar-chart-read>\n  </slide>\n  <slide *ngIf=\"hasSurvey\" class=\"px-5\">\n    <app-bar-chart-answered [rows]=\"rows\" [letter]=\"letter\"></app-bar-chart-answered>  \n  </slide>\n</carousel>\n\n","styles":[":host ::ng-deep a.carousel-control{cursor:pointer}:host ::ng-deep a.carousel-control-prev{background:linear-gradient(90deg,rgba(0,0,0,.4) 0,rgba(255,255,255,.4) 100%)}:host ::ng-deep a.carousel-control-next{background:linear-gradient(270deg,rgba(0,0,0,.4) 0,rgba(255,255,255,.4) 100%)}"]}]}],"members":{"letter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"rows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"hasSurvey":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"target_cnt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"read_cnt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"reply_cnt":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"ngx-virtual-scroller","name":"VirtualScrollerModule","line":12,"character":4},{"__symbolic":"reference","module":"@schoolbelle/shared/pipes","name":"HighlightPipeModule","line":13,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/popover","name":"PopoverModule","line":13,"character":25},"member":"forRoot"}},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":13,"character":50},"member":"forRoot"}}],"declarations":[{"__symbolic":"reference","name":"ɵw"}],"exports":[{"__symbolic":"reference","name":"ɵw"}]}]}],"members":{}},"ɵw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-read-list-table","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":12,"character":18},"member":"OnPush"},"template":"  <virtual-scroller #scroll\n  [items]=\"rows\" style=\"max-height:40vh; min-height:20vh;\">\n    <div class=\"row m-0\">\n        <div class=\"col\" i18n>Member</div>\n        <div *ngIf=\"!showDetails\" class=\"col\" i18n>Status</div>\n        <div *ngIf=\"showDetails\" class=\"col\" i18n>Parent1</div>\n        <div *ngIf=\"showDetails\" class=\"col\" i18n>Parent2</div>\n        <div *ngIf=\"showDetails\" class=\"col\" i18n>Student</div>\n    </div>\n    <div *ngIf=\"rows.length === 0\" class=\"text-muted text-center p-3 bg-light\" i18n>\n        No matches\n    </div>\n    <div #container>\n      <div *ngFor=\"let row of scroll.viewPortItems\" class=\"row m-0\">\n        <div class=\"col\">\n          <span class=\"mr-1\" [innerHTML]=\"row[0] | highlight : query\"></span>\n          <span class=\"mr-1\">\n            <ng-container i18n>No.</ng-container>\n            <span [innerHTML]=\"row[1] | highlight : query\"></span>        \n          </span>\n          <span class=\"mr-1 text-nowrap\" [innerHTML]=\"row[2] | highlight : query\"></span>        \n        </div>  \n        <div *ngIf=\"!showDetails\" class=\"col\" [ngSwitch]=\"letterRead.reduceMultipleReadStatuses([row[3], row[4], row[5]])\">\n          <!-- use popover -->\n          <span *ngSwitchCase=\"'answered'\">\n            <span class=\"badge badge-primary\" *ngIf=\"letterRead.getTimestampFromMultipleReadStatuses([row[3], row[4], row[5]], 'read', 'min').length\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[3], row[4], row[5]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n            <span class=\"badge badge-success ml-1\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[3], row[4], row[5]], 'answered') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>answered</span>\n          </span>\n          <span class=\"badge badge-primary\" *ngSwitchCase=\"'read'\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[3], row[4], row[5]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n          <span class=\"badge badge-secondary\" *ngSwitchCase=\"'not_read'\" i18n>unread</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_joined'\" tooltip=\"This member has not joined the group.\" i18n-tooltip>-</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_registered'\" tooltip=\"This member has not registered for our service.\" i18n-tooltip>-</span>\n          <span *ngSwitchDefault>-</span>\n        </div>  \n        <div *ngIf=\"showDetails\" class=\"col\" [ngSwitch]=\"letterRead.reduceMultipleReadStatuses([row[4]])\">\n          <span *ngSwitchCase=\"'answered'\">\n            <span class=\"badge badge-primary\" *ngIf=\"letterRead.getTimestampFromMultipleReadStatuses([row[4]], 'read', 'min').length\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[4]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n            <span class=\"badge badge-success ml-1\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[4]], 'answered') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>answered</span>\n          </span>\n          <span class=\"badge badge-primary\" *ngSwitchCase=\"'read'\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[4]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n          <span class=\"badge badge-secondary\" *ngSwitchCase=\"'not_read'\" i18n>unread</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_joined'\" tooltip=\"This member has not joined the group.\" i18n-tooltip>-</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_registered'\" tooltip=\"This member has not registered for our service.\" i18n-tooltip>-</span>\n          <span *ngSwitchDefault>-</span>\n        </div>  \n        <div *ngIf=\"showDetails\" class=\"col\" [ngSwitch]=\"letterRead.reduceMultipleReadStatuses([row[5]])\">\n          <span *ngSwitchCase=\"'answered'\">\n            <span class=\"badge badge-primary\" *ngIf=\"letterRead.getTimestampFromMultipleReadStatuses([row[5]], 'read', 'min').length\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[5]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n            <span class=\"badge badge-success ml-1\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[5]], 'answered') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>answered</span>\n          </span>\n          <span class=\"badge badge-primary\" *ngSwitchCase=\"'read'\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[5]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n          <span class=\"badge badge-secondary\" *ngSwitchCase=\"'not_read'\" i18n>unread</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_joined'\" tooltip=\"This member has not joined the group.\" i18n-tooltip>-</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_registered'\" tooltip=\"This member has not registered for our service.\" i18n-tooltip>-</span>\n          <span *ngSwitchDefault>-</span>\n        </div>  \n        <div *ngIf=\"showDetails\" class=\"col\" [ngSwitch]=\"letterRead.reduceMultipleReadStatuses([row[3]])\">\n          <span *ngSwitchCase=\"'answered'\">\n            <span class=\"badge badge-primary\" *ngIf=\"letterRead.getTimestampFromMultipleReadStatuses([row[3]], 'read', 'min').length\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[3]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n            <span class=\"badge badge-success ml-1\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[3]], 'answered') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>answered</span>\n          </span>\n          <span class=\"badge badge-primary\" *ngSwitchCase=\"'read'\" [popoverContext]=\"{ list: letterRead.getTimestampFromMultipleReadStatuses([row[3]], 'read', 'min') }\" [popover]=\"tooltipTmpl\" triggers=\"mouseenter:mouseleave\" i18n>read</span>\n          <span class=\"badge badge-secondary\" *ngSwitchCase=\"'not_read'\" i18n>unread</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_joined'\" tooltip=\"This member has not joined the group.\" i18n-tooltip>-</span>\n          <span class=\"cursor-pointer\" *ngSwitchCase=\"'not_registered'\" tooltip=\"This member has not registered for our service.\" i18n-tooltip>-</span>\n          <span *ngSwitchDefault>-</span>\n        </div>  \n\n      </div>\n      <ng-template #tooltipTmpl let-list=\"list\">\n        <div *ngFor=\"let ts of list; let last = last;\">\n          {{ts | date : 'medium'}}\n        </div>\n      </ng-template>      \n    </div>\n  </virtual-scroller>\n    ","styles":[".row .col{border-bottom:1px solid #dee2e6!important;border-left:1px solid #dee2e6!important;padding-top:.7rem;padding-bottom:.7rem;text-align:center}.row:first-child .col{border-top:1px solid #dee2e6!important}.row .col:last-child{border-right:1px solid #dee2e6!important}"]}]}],"members":{"rows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"showDetails":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"query":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@schoolbelle/api/letter-read","name":"LetterReadTableService","line":19,"character":23}]}],"ngOnInit":[{"__symbolic":"method"}],"getReadStatus":[{"__symbolic":"method"}],"reduceMultipleReadStatuses":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵd"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"modal-read-list","template":"<div class=\"modal-header\">\n    <h5 class=\"modal-title\" i18n>Read and answer list</h5>\n    <button type=\"button\" class=\"close\" (click)=\"cancel()\">\n      <span aria-hidden=\"true\">&times;</span>\n    </button>\n</div>\n\n<app-read-list \n[rows]=\"rows\"\n[letter]=\"letter\"\n></app-read-list>","styles":[""]}]}],"members":{"rows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"letter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":18,"character":13}]}],"ngOnInit":[{"__symbolic":"method"}]}}},"origins":{"SelectLetterTargetsStudentParentTabComponent":"./lib/select-letter-targets/components/student-parent-tab/student-parent-tab.component","SelectLetterTargetsStudentParentTabModule":"./lib/select-letter-targets/components/student-parent-tab/student-parent-tab.module","SelectLetterTargetsFacultyTabComponent":"./lib/select-letter-targets/components/faculty-tab/faculty-tab.component","SelectLetterTargetsFacultyTabModule":"./lib/select-letter-targets/components/faculty-tab/faculty-tab.module","SelectLetterTargetsAdminOrAllComponent":"./lib/select-letter-targets/components/admin-or-all/admin-or-all.component","SelectLetterTargetsAdminOrAllModule":"./lib/select-letter-targets/components/admin-or-all/admin-or-all.module","TableSearchModule":"./lib/select-letter-targets/components/table-search/table-search.module","TableSearchService":"./lib/select-letter-targets/components/table-search/table-search.service","SelectLetterTargetsComponent":"./lib/select-letter-targets/select-letter-targets.component","SelectLetterTargetsModule":"./lib/select-letter-targets/select-letter-targets.module","SelectLetterTargetsModalService":"./lib/select-letter-targets/select-letter-targets.service","SelectLetterTargetsGuard":"./lib/select-letter-targets/select-letter-targets.guard","PlaceOrderModalModule":"./lib/place-order/place-order-modal.module","PlaceOrderModalService":"./lib/place-order/place-order-modal.service","PlaceOrderSchoolComponent":"./lib/place-order/school/school.component","PlaceOrderSchoolModule":"./lib/place-order/school/school.module","PlaceOrderSmsComponent":"./lib/place-order/sms/sms.component","PlaceOrderSmsModule":"./lib/place-order/sms/sms.module","RequestReceiptModule":"./lib/request-receipt/request-receipt.module","RequestReceiptModalService":"./lib/request-receipt/request-receipt.service","FileUploadListModalService":"./lib/file-upload-list/file-upload-list.service","FileUploadListModalModule":"./lib/file-upload-list/file-upload-list.module","FileUploadListComponent":"./lib/file-upload-list/file-upload-list.component","FileUploadListModalComponent":"./lib/file-upload-list/file-upload-list-modal.component","FileUploadListFileRowModule":"./lib/file-upload-list/file-row/file-row.module","FileUploadListFileRowComponent":"./lib/file-upload-list/file-row/file-row.component","FileUploadListProgressBarModule":"./lib/file-upload-list/progress-bar/progress-bar.module","FileUploadListProgressBarComponent":"./lib/file-upload-list/progress-bar/progress-bar.component","FileUploadListLogModule":"./lib/file-upload-list/log/log.module","FileUploadListLogComponent":"./lib/file-upload-list/log/log.component","AgreementAcceptComponent":"./lib/agreement-accept/agreement-accept.component","AgreementAcceptModalService":"./lib/agreement-accept/agreement-accept.service","AgreementAcceptModule":"./lib/agreement-accept/agreement-accept.module","CheckParentComponent":"./lib/check-parent/check-parent.component","CheckParentModalService":"./lib/check-parent/check-parent.service","CheckParentModule":"./lib/check-parent/check-parent.module","ForeignerComponent":"./lib/check-parent/foreigner/foreigner.component","ForeignerModule":"./lib/check-parent/foreigner/foreigner.module","InfoComponent":"./lib/check-parent/info/info.component","InfoModule":"./lib/check-parent/info/info.module","LocalComponent":"./lib/check-parent/local/local.component","LocalModule":"./lib/check-parent/local/local.module","NiceLegalTextComponent":"./lib/nice-legal-text/nice-legal-text.component","NiceLegalTextModule":"./lib/nice-legal-text/nice-legal-text.module","NiceLegalTextModalService":"./lib/nice-legal-text/nice-legal-text.service","TextPersonalInfoModule":"./lib/nice-legal-text/text-personal-info/text-personal-info.module","TextPersonalInfoComponent":"./lib/nice-legal-text/text-personal-info/text-personal-info.component","TextSocialSecurityInfoModule":"./lib/nice-legal-text/text-social-security-info/text-social-security-info.module","TextSocialSecurityInfoComponent":"./lib/nice-legal-text/text-social-security-info/text-social-security-info.component","TextThirdPartyInfoModule":"./lib/nice-legal-text/text-third-party-info/text-third-party-info.module","TextThirdPartyInfoComponent":"./lib/nice-legal-text/text-third-party-info/text-third-party-info.component","MediaBrowserModalService":"./lib/media-browser/media-browser.service","MediaBrowserModalModule":"./lib/media-browser/media-browser.module","DatetimePickerModalComponent":"./lib/datetime-picker/datetime-picker.component","DatetimePickerModalService":"./lib/datetime-picker/datetime-picker.service","DatetimePickerModalModule":"./lib/datetime-picker/datetime-picker.module","ReadListModalModule":"./lib/read-list/read-list.module","ReadListModalService":"./lib/read-list/read-list.service","MemberlistType":"./lib/read-list/read-list.component","ReadListComponent":"./lib/read-list/read-list.component","ModalsRoutingModule":"./lib/modals-routing.module","ɵa":"./lib/select-letter-targets/components/table-search/table-search.component","ɵb":"./lib/select-letter-targets/select-letter-targets-routing.module","ɵc":"./lib/select-letter-targets/select-letter-targets-modal.component","ɵd":"./lib/modals.component","ɵe":"./lib/place-order/place-order-modal.component","ɵf":"./lib/place-order/crawl/crawl.module","ɵg":"./lib/place-order/crawl/crawl.component","ɵh":"./lib/request-receipt/request-receipt.component","ɵi":"./lib/file-upload-list/file-upload-list-routing.module","ɵj":"./lib/media-browser/media-browser-modal.component","ɵk":"./lib/read-list/read-list-routing.module","ɵl":"./lib/read-list/read-list.guard","ɵm":"./lib/read-list/read-list.resolve","ɵn":"./lib/read-list/charts/carousel/charts-carousel.module","ɵo":"./lib/read-list/charts/donut-chart/donut-chart.module","ɵp":"./lib/read-list/charts/donut-chart/donut-chart.component","ɵq":"./lib/read-list/charts/bar-chart-read/bar-chart-read.module","ɵr":"./lib/read-list/charts/bar-chart-read/bar-chart-read.component","ɵs":"./lib/read-list/charts/bar-chart-answered/bar-chart-answered.module","ɵt":"./lib/read-list/charts/bar-chart-answered/bar-chart-answered.component","ɵu":"./lib/read-list/charts/carousel/charts-carousel.component","ɵv":"./lib/read-list/charts/read-list-table/read-list-table.module","ɵw":"./lib/read-list/charts/read-list-table/read-list-table.component","ɵx":"./lib/read-list/read-list-modal.component"},"importAs":"@schoolbelle/shared/modals"}