{"version":3,"file":"main.js","mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC,OAAO,6KAA6K,MAAM,UAAU,WAAW,WAAW,MAAM,MAAM,WAAW,OAAO,KAAK,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,MAAM,KAAK,WAAW,UAAU,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,WAAW,WAAW,MAAM,KAAK,WAAW,WAAW,WAAW,UAAU,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,UAAU,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,UAAU,WAAW,MAAM,KAAK,WAAW,WAAW,UAAU,MAAM,KAAK,WAAW,WAAW,UAAU,MAAM,KAAK,WAAW,UAAU,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ACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,OAAO,2JAA2J,MAAM,UAAU,WAAW,MAAM,KAAK,WAAW,OAAO,KAAK,WAAW,MAAM,KAAK,UAAU,UAAU,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,MAAM,KAAK,UAAU,MAAM,KAAK,WAAW,MAAM,KAAK,WAAW,WAAW,UAAU,MAAM,KAAK,WAAW,WAAW,UAA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AAiB,GAAG,cAAc,yBAAyB,GAAG,OAAO,uBAAuB,qBAAqB,YAAY,wBAAwB,GAAG,sEAAsE,gCAAgC,GAAG,mHAAmH,0BAA0B,GAAG,sBAAsB,uBAAuB,2BAA2B,4BAA4B,GAAG,kBAAkB,gCAAgC,GAAG,WAAW,iBAAiB,GAAG,iBAAiB,mBAAmB,GAAG,gBAAgB,qBAAqB,iCAAiC,kDAAkD,yBAAyB,GAAG,4BAA4B,gCAAgC,GAAG,mBAAmB;AACl2E;AACA;;;;;;;;;;;AC1GA;AACA,4CAA4C,mBAAO,CAAC,wEAA6D;AACjH,kCAAkC,mBAAO,CAAC,iEAAsD;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;A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","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/auth/auth.guard.ts","./src/app/auth/auth.service.ts","./src/app/card/card.component.ts","./src/app/common-confirm-dialog/common-confirm-dialog.component.ts","./src/app/common-confirm-dialog/forbidden-characters.directive.ts","./src/app/company-add-edit-dialog/company-add-edit-dialog.component.ts","./src/app/company-delete-dialog/company-delete-dialog.component.ts","./src/app/company-management/company-management.component.ts","./src/app/confirm-alert-dialog/confirm-alert-dialog.component.ts","./src/app/const/const.ts","./src/app/entity/compare-dialog-data.ts","./src/app/entity/correct-dialog-data.ts","./src/app/entity/csv-site-info.ts","./src/app/entity/csv-user-info.ts","./src/app/entity/existing-tenant.ts","./src/app/entity/floor-confirm-dialog-info.ts","./src/app/entity/get-floors-response.ts","./src/app/entity/get-in-site-value-detections-response.ts","./src/app/entity/get-login-user-response.ts","./src/app/entity/get-meter-info.ts","./src/app/entity/get-meter-type.ts","./src/app/entity/get-partitions-response.ts","./src/app/entity/get-site-info.ts","./src/app/entity/get-user-with-sites-links-info.ts","./src/app/entity/id-name.ts","./src/app/entity/last-month-value-confirmation.ts","./src/app/entity/login-user-site-company.ts","./src/app/entity/login-user-site.ts","./src/app/entity/login-user.ts","./src/app/entity/message-info.ts","./src/app/entity/meter-confirm-dialog-info.ts","./src/app/entity/meter.ts","./src/app/entity/partition-confirm-dialog-info.ts","./src/app/entity/report-card.ts","./src/app/entity/report-list-info.ts","./src/app/entity/report-row.ts","./src/app/entity/selected-partition.ts","./src/app/entity/site-confirm-dialog-info.ts","./src/app/entity/tenant-confirm-dialog-info.ts","./src/app/entity/tenant-row.ts","./src/app/entity/to-tenant-make-object.ts","./src/app/entity/unit.ts","./src/app/entity/user-confirm-dialog-info.ts","./src/app/entity/value-confirmation.ts","./src/app/entity/value-detection.ts","./src/app/floor-add-dialog/floor-add-dialog.component.ts","./src/app/floor-delete-dialog/floor-delete-dialog.component.ts","./src/app/floor-edit-dialog/floor-edit-dialog.component.ts","./src/app/floor-management-list/floor-management-list.component.ts","./src/app/footer-numbering-confirm-dialog/footer-numbering-confirm-dialog.component.ts","./src/app/footer-numbering-explain-dialog/footer-numbering-explain-dialog.component.ts","./src/app/footer/footer.component.ts","./src/app/log-out-button/log-out-button.component.ts","./src/app/login/login.component.ts","./src/app/master-edit/master-edit.component.ts","./src/app/message-dialog/message-dialog.component.ts","./src/app/meter-add-dialog/meter-add-dialog.component.ts","./src/app/meter-card-list/meter-card-list.component.ts","./src/app/meter-card-list/services/meter-card-list-common.service.ts","./src/app/meter-card-list/services/meter-card-list-confirmed.sevice.ts","./src/app/meter-card-list/services/meter-card-list-pending.service.ts","./src/app/meter-confirm-dialog/meter-confirm-dialog.component.ts","./src/app/meter-csv-batch-dialog/meter-csv-batch-dialog.component.ts","./src/app/meter-delete-dialog/meter-delete-dialog.component.ts","./src/app/meter-detail-dialog/meter-detail-dialog.component.ts","./src/app/meter-edit-dialog/meter-edit-dialog.component.ts","./src/app/meter-expiration-navigate/meter-expiration-navigate.component.ts","./src/app/meter-expiration-warning-dialog/meter-expiration-warning-dialog.component.ts","./src/app/meter-management-list/meter-management-list.component.ts","./src/app/meter-qrcode-dialog/meter-qrcode-dialog.component.ts","./src/app/meter-qrcode-dialog/print-styles.ts","./src/app/meter-replace-dialog/meter-replace-dialog.component.ts","./src/app/meter-report/meter-report.component.ts","./src/app/meter-type-add-dialog/meter-type-add-dialog.component.ts","./src/app/meter-type-edit-dialog/meter-type-edit-dialog.component.ts","./src/app/meter-type-management-list/meter-type-management-list.component.ts","./src/app/meter-unit-add-dialog/meter-unit-add-dialog.component.ts","./src/app/meter-unit-edit-dialog/meter-unit-edit-dialog.component.ts","./src/app/meter-unit/meter-unit.component.ts","./src/app/partition-management-list/partition-management-list.component.ts","./src/app/partittion-add-dialog/partition-add-dialog.component.ts","./src/app/partittion-delete-dialog/partition-delete-dialog.component.ts","./src/app/partittion-detail-dialog/partition-detail-dialog.component.ts","./src/app/partittion-edit-dialog/partition-edit-dialog.component.ts","./src/app/report-confirm-dialog/report-confirm-dialog.component.ts","./src/app/report-list-dialog/report-list-dialog.component.ts","./src/app/services/meter-type.service.ts","./src/app/side-nav/side-nav.component.ts","./src/app/site-add-edit-dialog/site-add-edit-dialog.component.ts","./src/app/site-complete-dialog/site-complete-dialog.component.ts","./src/app/site-delete-dialog/site-delete-dialog.component.ts","./src/app/site-management/site-management.component.ts","./src/app/site-select/site-select.component.ts","./src/app/site-user-selection-dialog/site-user-selection-dialog.component.ts","./src/app/tenant-confirm-dialog/tenant-confirm-dialog.component.ts","./src/app/tenant-delete-dialog/tenant-delete-dialog.component.ts","./src/app/tenant-edit-dialog/tenant-edit-dialog.component.ts","./src/app/tenant-make-dialog/tenant-make-dialog.component.ts","./src/app/user-add-dialog/user-add-dialog.component.ts","./src/app/user-change-password-dialog/user-change-password-dialog.component.ts","./src/app/user-complete-dialog/user-complete-dialog.component.ts","./src/app/user-confirm-dialog/user-confirm-dialog.component.ts","./src/app/user-delete-dialog/user-delete-dialog.component.ts","./src/app/user-detail-dialog/user-detail-dialog.component.ts","./src/app/user-edit-dialog/user-edit-dialog.component.ts","./src/app/user-management/user-management.component.ts","./src/app/user-site-links-dialog/user-site-links-dialog.component.ts","./src/app/user-site-links-select-dialog/user-site-links-select-dialog.component.ts","./src/app/value-compare-dialog/value-compare-dialog.component.ts","./src/app/value-correct-dialog/value-correct-dialog.component.ts","./src/constants/messages/alert-message.ts","./src/environments/environment.prod.ts","./src/main.ts","./src/app/app.component.scss","./src/app/card/card.component.scss","./src/app/common-confirm-dialog/common-confirm-dialog.component.scss","./src/app/company-add-edit-dialog/company-add-edit-dialog.component.scss","./src/app/company-delete-dialog/company-delete-dialog.component.scss","./src/app/company-management/company-management.component.scss","./src/app/confirm-alert-dialog/confirm-alert-dialog.component.scss","./src/app/floor-add-dialog/floor-add-dialog.component.scss","./src/app/floor-delete-dialog/floor-delete-dialog.component.scss","./src/app/floor-edit-dialog/floor-edit-dialog.component.scss","./src/app/floor-management-list/floor-management-list.component.scss","./src/app/footer-numbering-confirm-dialog/footer-numbering-confirm-dialog.component.scss","./src/app/footer-numbering-explain-dialog/footer-numbering-explain-dialog.component.scss","./src/app/footer/footer.component.scss","./src/app/log-out-button/log-out-button.component.scss","./src/app/login/login.component.scss","./src/app/master-edit/master-edit.component.scss","./src/app/message-dialog/message-dialog.component.scss","./src/app/meter-add-dialog/meter-add-dialog.component.scss","./src/app/meter-card-list/meter-card-list.component.scss","./src/app/meter-confirm-dialog/meter-confirm-dialog.component.scss","./src/app/meter-csv-batch-dialog/meter-csv-batch-dialog.component.scss","./src/app/meter-delete-dialog/meter-delete-dialog.component.scss","./src/app/meter-detail-dialog/meter-detail-dialog.component.scss","./src/app/meter-edit-dialog/meter-edit-dialog.component.scss","./src/app/meter-expiration-navigate/meter-expiration-navigate.component.scss","./src/app/meter-expiration-warning-dialog/meter-expiration-warning-dialog.component.scss","./src/app/meter-management-list/meter-management-list.component.scss","./src/app/meter-qrcode-dialog/meter-qrcode-dialog.component.scss","./src/app/meter-replace-dialog/meter-replace-dialog.component.scss","./src/app/meter-report/meter-report.component.scss","./src/app/meter-type-add-dialog/meter-type-add-dialog.component.scss","./src/app/meter-type-edit-dialog/meter-type-edit-dialog.component.scss","./src/app/meter-type-management-list/meter-type-management-list.component.scss","./src/app/meter-unit-add-dialog/meter-unit-add-dialog.component.scss","./src/app/meter-unit-edit-dialog/meter-unit-edit-dialog.component.scss","./src/app/meter-unit/meter-unit.component.scss","./src/app/partition-management-list/partition-management-list.component.scss","./src/app/partittion-add-dialog/partition-add-dialog.component.scss","./src/app/partittion-delete-dialog/partition-delete-dialog.component.scss","./src/app/partittion-detail-dialog/partition-detail-dialog.component.scss","./src/app/partittion-edit-dialog/partition-edit-dialog.component.scss","./src/app/report-confirm-dialog/report-confirm-dialog.component.scss","./src/app/report-list-dialog/report-list-dialog.component.scss","./src/app/side-nav/side-nav.component.scss","./src/app/site-add-edit-dialog/site-add-edit-dialog.component.scss","./src/app/site-complete-dialog/site-complete-dialog.component.scss","./src/app/site-delete-dialog/site-delete-dialog.component.scss","./src/app/site-management/site-management.component.scss","./src/app/site-select/site-select.component.scss","./src/app/site-user-selection-dialog/site-user-selection-dialog.component.scss","./src/app/tenant-confirm-dialog/tenant-confirm-dialog.component.scss","./src/app/tenant-delete-dialog/tenant-delete-dialog.component.scss","./src/app/tenant-edit-dialog/tenant-edit-dialog.component.scss","./src/app/tenant-make-dialog/tenant-make-dialog.component.scss","./src/app/user-add-dialog/user-add-dialog.component.scss","./src/app/user-change-password-dialog/user-change-password-dialog.component.scss","./src/app/user-complete-dialog/user-complete-dialog.component.scss","./src/app/user-confirm-dialog/user-confirm-dialog.component.scss","./src/app/user-delete-dialog/user-delete-dialog.component.scss","./src/app/user-detail-dialog/user-detail-dialog.component.scss","./src/app/user-edit-dialog/user-edit-dialog.component.scss","./src/app/user-management/user-management.component.scss","./src/app/user-site-links-dialog/user-site-links-dialog.component.scss","./src/app/user-site-links-select-dialog/user-site-links-select-dialog.component.scss","./src/app/value-compare-dialog/value-compare-dialog.component.scss","./src/app/value-correct-dialog/value-correct-dialog.component.scss","ignored|/codebuild/output/src2629968761/src/mjit-rakusugi-web/node_modules/amazon-cognito-identity-js/es/utils|crypto"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthGuard } from './auth/auth.guard';\nimport { CompanyManagementComponent } from './company-management/company-management.component';\nimport { FloorManagementListComponent } from \"./floor-management-list/floor-management-list.component\";\nimport { LoginComponent } from './login/login.component';\nimport { MasterEditComponent } from './master-edit/master-edit.component';\nimport { MeterCardListComponent } from './meter-card-list/meter-card-list.component';\nimport { MeterManagementListComponent } from \"./meter-management-list/meter-management-list.component\";\nimport { MeterReportComponent } from './meter-report/meter-report.component';\nimport { MeterTypeManagementListComponent } from \"./meter-type-management-list/meter-type-management-list.component\";\nimport { MeterUnitComponent } from \"./meter-unit/meter-unit.component\";\nimport { PartitionManagementListComponent } from \"./partition-management-list/partition-management-list.component\";\nimport { SiteManagementComponent } from \"./site-management/site-management.component\";\nimport { SiteSelectComponent } from './site-select/site-select.component';\nimport { UserManagementComponent } from \"./user-management/user-management.component\";\n\nconst routes: Routes = [\n { path: '', redirectTo: 'login', pathMatch: 'full' },\n { path: 'login', component: LoginComponent },\n { path: 'site-select', component: SiteSelectComponent, canActivate: [AuthGuard] },\n { path: 'meter-card-list', component: MeterCardListComponent, canActivate: [AuthGuard] },\n { path: 'meter-report', component: MeterReportComponent, canActivate: [AuthGuard] },\n { path: 'meter-report-2', component: MeterReportComponent, canActivate: [AuthGuard] },\n { path: 'floor-management',component: FloorManagementListComponent,canActivate: [AuthGuard] },\n { path: 'meter-management',component: MeterManagementListComponent,canActivate: [AuthGuard]},\n { path: 'meter-type', component: MeterTypeManagementListComponent,canActivate:[AuthGuard] },\n { path: 'meter-unit', component: MeterUnitComponent,canActivate:[AuthGuard] },\n { path: 'master-edit', component: MasterEditComponent, canActivate: [AuthGuard] },\n { path: 'user-management', component: UserManagementComponent, canActivate: [AuthGuard] },\n { path: 'partition-management',component: PartitionManagementListComponent,canActivate: [AuthGuard] },\n { path: 'site-management', component: SiteManagementComponent, canActivate: [AuthGuard] },\n { path: 'company-management', component: CompanyManagementComponent, canActivate: [AuthGuard] },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forRoot(routes)],\n exports: [RouterModule],\n declarations: []\n})\n\nexport class AppRoutingModule { }\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs/Subscription';\nimport { AuthService } from './auth/auth.service';\nimport { Const } from './const/const';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent implements OnInit, OnDestroy {\n subscription: Subscription;\n public loggedIn: boolean;\n\n constructor(\n public auth: AuthService\n ) { }\n\n ngOnInit() {\n this.subscription = this.auth.isAuthenticated()\n .subscribe(result => {\n this.loggedIn = result;\n });\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCardModule } from \"@angular/material/card\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MatNativeDateModule } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\nimport { MatRadioModule } from \"@angular/material/radio\";\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport { AppComponent } from \"./app.component\";\nimport { LoginComponent } from \"./login/login.component\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { FlexLayoutModule } from \"@angular/flex-layout\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatDialogModule } from \"@angular/material/dialog\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatListModule } from \"@angular/material/list\";\nimport { MatSpinner } from \"@angular/material/progress-spinner\";\nimport { MatSelectModule } from \"@angular/material/select\";\nimport { MatSidenavModule } from \"@angular/material/sidenav\";\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatTabsModule } from \"@angular/material/tabs\";\nimport { MatToolbarModule } from \"@angular/material/toolbar\";\nimport { QRCodeModule } from \"angularx-qrcode\";\nimport { NgxPrintModule } from \"ngx-print\";\nimport { AppRoutingModule } from \"./app-routing.module\";\nimport { AuthGuard } from \"./auth/auth.guard\";\nimport { AuthService } from \"./auth/auth.service\";\nimport { CardComponent } from \"./card/card.component\";\nimport { CommonConfirmDialogComponent } from \"./common-confirm-dialog/common-confirm-dialog.component\";\nimport { CompanyAddEditDialogComponent } from \"./company-add-edit-dialog/company-add-edit-dialog.component\";\nimport { CompanyDeleteDialogComponent } from \"./company-delete-dialog/company-delete-dialog.component\";\nimport { CompanyManagementComponent } from \"./company-management/company-management.component\";\nimport { ConfirmAlertDialogComponent } from \"./confirm-alert-dialog/confirm-alert-dialog.component\";\nimport { FloorAddDialogComponent } from \"./floor-add-dialog/floor-add-dialog.component\";\nimport { FloorDeleteDialogComponent } from \"./floor-delete-dialog/floor-delete-dialog.component\";\nimport { FloorEditDialogComponent } from \"./floor-edit-dialog/floor-edit-dialog.component\";\nimport { FloorManagementListComponent } from \"./floor-management-list/floor-management-list.component\";\nimport { FooterConfirmDialogComponent } from \"./footer-numbering-confirm-dialog/footer-numbering-confirm-dialog.component\";\nimport { FooterNumberingExplainDialogComponent } from \"./footer-numbering-explain-dialog/footer-numbering-explain-dialog.component\";\nimport { FooterComponent } from \"./footer/footer.component\";\nimport { LogOutButtonComponent } from \"./log-out-button/log-out-button.component\";\nimport { MasterEditComponent } from \"./master-edit/master-edit.component\";\nimport { MessageDialogComponent } from \"./message-dialog/message-dialog.component\";\nimport { MeterAddDialogComponent } from \"./meter-add-dialog/meter-add-dialog.component\";\nimport { MeterCardListComponent } from \"./meter-card-list/meter-card-list.component\";\nimport { MeterConfirmDialogComponent } from \"./meter-confirm-dialog/meter-confirm-dialog.component\";\nimport { MeterCsvBatchDialogComponent } from \"./meter-csv-batch-dialog/meter-csv-batch-dialog.component\";\nimport { MeterDeleteDialogComponent } from \"./meter-delete-dialog/meter-delete-dialog.component\";\nimport { MeterDetailDialogComponent } from \"./meter-detail-dialog/meter-detail-dialog.component\";\nimport { MeterEditDialogComponent } from \"./meter-edit-dialog/meter-edit-dialog.component\";\nimport { MeterExprationNavigate } from \"./meter-expiration-navigate/meter-expiration-navigate.component\";\nimport { MeterExpirationWarningDialogComponent } from \"./meter-expiration-warning-dialog/meter-expiration-warning-dialog.component\";\nimport { MeterManagementListComponent } from \"./meter-management-list/meter-management-list.component\";\nimport { MeterQrcodeDialogComponent } from \"./meter-qrcode-dialog/meter-qrcode-dialog.component\";\nimport { MeterReplaceDialogComponent } from \"./meter-replace-dialog/meter-replace-dialog.component\";\nimport { MeterReportComponent } from \"./meter-report/meter-report.component\";\nimport { MeterTypeAddDialogComponent } from \"./meter-type-add-dialog/meter-type-add-dialog.component\";\nimport { MeterTypeEditDialogComponent } from \"./meter-type-edit-dialog/meter-type-edit-dialog.component\";\nimport { MeterTypeManagementListComponent } from \"./meter-type-management-list/meter-type-management-list.component\";\nimport { MeterUnitAddDialogComponent } from \"./meter-unit-add-dialog/meter-unit-add-dialog.component\";\nimport { MeterUnitEditDialogComponent } from \"./meter-unit-edit-dialog/meter-unit-edit-dialog.component\";\nimport { MeterUnitComponent } from \"./meter-unit/meter-unit.component\";\nimport { PartitionManagementListComponent } from \"./partition-management-list/partition-management-list.component\";\nimport { PartitionAddDialogComponent } from \"./partittion-add-dialog/partition-add-dialog.component\";\nimport { PartitionDeleteDialogComponent } from \"./partittion-delete-dialog/partition-delete-dialog.component\";\nimport { PartitionDetailDialogComponent } from \"./partittion-detail-dialog/partition-detail-dialog.component\";\nimport { PartitionEditDialogComponent } from \"./partittion-edit-dialog/partition-edit-dialog.component\";\nimport { ReportConfirmDialogComponent } from \"./report-confirm-dialog/report-confirm-dialog.component\";\nimport { ReportListDialogComponent } from \"./report-list-dialog/report-list-dialog.component\";\nimport { SideNavComponent } from \"./side-nav/side-nav.component\";\nimport { SiteAddOrEditDialogComponent } from \"./site-add-edit-dialog/site-add-edit-dialog.component\";\nimport { SiteCompleteDialogComponent } from \"./site-complete-dialog/site-complete-dialog.component\";\nimport { SiteDeleteDialogComponent } from \"./site-delete-dialog/site-delete-dialog.component\";\nimport { SiteManagementComponent } from \"./site-management/site-management.component\";\nimport { SiteSelectComponent } from \"./site-select/site-select.component\";\nimport { SiteUserSelectionDialogComponent } from \"./site-user-selection-dialog/site-user-selection-dialog.component\";\nimport { TenantConfirmDialogComponent } from \"./tenant-confirm-dialog/tenant-confirm-dialog.component\";\nimport { TenantDeleteDialogComponent } from \"./tenant-delete-dialog/tenant-delete-dialog.component\";\nimport { TenantEditDialogComponent } from \"./tenant-edit-dialog/tenant-edit-dialog.component\";\nimport { TenantMakeDialogComponent } from \"./tenant-make-dialog/tenant-make-dialog.component\";\nimport { UserAddDialogComponent } from \"./user-add-dialog/user-add-dialog.component\";\nimport { UserChangePasswordDialogComponent } from \"./user-change-password-dialog/user-change-password-dialog.component\";\nimport { UserCompleteDialogComponent } from \"./user-complete-dialog/user-complete-dialog.component\";\nimport { UserConfirmDialogComponent } from \"./user-confirm-dialog/user-confirm-dialog.component\";\nimport { UserDeleteDialogComponent } from \"./user-delete-dialog/user-delete-dialog.component\";\nimport { UserDetailDialogComponent } from \"./user-detail-dialog/user-detail-dialog.component\";\nimport { UserEditDialogComponent } from \"./user-edit-dialog/user-edit-dialog.component\";\nimport { UserManagementComponent } from \"./user-management/user-management.component\";\nimport { UserSiteLinksDialogComponent } from \"./user-site-links-dialog/user-site-links-dialog.component\";\nimport { UserSiteLinksSelectDialogComponent } from \"./user-site-links-select-dialog/user-site-links-select-dialog.component\";\nimport { ValueCompareDialogComponent } from \"./value-compare-dialog/value-compare-dialog.component\";\nimport { ValueCorrectDialogComponent } from \"./value-correct-dialog/value-correct-dialog.component\";\n\nimport { ForbiddenCharactersDirective } from \"./common-confirm-dialog/forbidden-characters.directive\";\n\n@NgModule({\n declarations: [\n AppComponent,\n ForbiddenCharactersDirective,\n LoginComponent,\n MeterCardListComponent,\n CardComponent,\n MeterReportComponent,\n FooterComponent,\n ValueCompareDialogComponent,\n ValueCorrectDialogComponent,\n MasterEditComponent,\n MessageDialogComponent,\n SideNavComponent,\n LogOutButtonComponent,\n ReportListDialogComponent,\n ReportConfirmDialogComponent,\n TenantEditDialogComponent,\n TenantDeleteDialogComponent,\n TenantMakeDialogComponent,\n TenantConfirmDialogComponent,\n ConfirmAlertDialogComponent,\n FloorManagementListComponent,\n FloorAddDialogComponent,\n FloorEditDialogComponent,\n FloorDeleteDialogComponent,\n MeterManagementListComponent,\n MeterConfirmDialogComponent,\n MeterTypeManagementListComponent,\n MeterUnitComponent,\n MeterAddDialogComponent,\n MeterEditDialogComponent,\n MeterDeleteDialogComponent,\n MeterQrcodeDialogComponent,\n CommonConfirmDialogComponent,\n MeterTypeAddDialogComponent,\n MeterTypeEditDialogComponent,\n MeterUnitEditDialogComponent,\n MeterUnitAddDialogComponent,\n UserManagementComponent,\n UserAddDialogComponent,\n UserEditDialogComponent,\n UserDeleteDialogComponent,\n UserDetailDialogComponent,\n UserConfirmDialogComponent,\n UserCompleteDialogComponent,\n UserSiteLinksDialogComponent,\n UserSiteLinksSelectDialogComponent,\n UserChangePasswordDialogComponent,\n MeterCsvBatchDialogComponent,\n PartitionManagementListComponent,\n PartitionDetailDialogComponent,\n PartitionAddDialogComponent,\n PartitionEditDialogComponent,\n PartitionDeleteDialogComponent,\n SiteManagementComponent,\n SiteAddOrEditDialogComponent,\n SiteDeleteDialogComponent,\n SiteUserSelectionDialogComponent,\n SiteCompleteDialogComponent,\n CompanyManagementComponent,\n CompanyAddEditDialogComponent,\n CompanyDeleteDialogComponent,\n FooterNumberingExplainDialogComponent,\n FooterConfirmDialogComponent,\n SiteSelectComponent,\n MeterExpirationWarningDialogComponent,\n MeterExprationNavigate,\n MeterDetailDialogComponent,\n MeterReplaceDialogComponent,\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatInputModule,\n MatRadioModule,\n MatCardModule,\n FlexLayoutModule,\n MatSidenavModule,\n MatListModule,\n MatToolbarModule,\n MatIconModule,\n MatSelectModule,\n MatTabsModule,\n MatTableModule,\n MatDialogModule,\n MatProgressSpinnerModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n AppRoutingModule,\n MatSlideToggleModule,\n QRCodeModule,\n NgxPrintModule,\n OverlayModule,\n ],\n providers: [\n //UserAddDialogComponent,\n AuthService,\n AuthGuard,\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { AuthService } from './auth.service';\n\n@Injectable()\nexport class AuthGuard {\n constructor(\n private router: Router,\n private auth: AuthService\n ) { }\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable {\n return this.auth.isAuthenticated()\n .pipe(\n tap(loggedIn => {\n if (!loggedIn) {\n this.router.navigate(['/login']);\n }\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable } from 'rxjs/Observable';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { fromPromise } from 'rxjs/observable/fromPromise';\nimport { map, tap, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs/observable/of';\nimport { Amplify, Auth } from 'aws-amplify';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { environment } from './../../environments/environment';\nimport { GetInSiteMeterResponse } from '../entity/get-in-site-meters-response';\n\n// 参考 https://qiita.com/daikiojm/items/18f718df07c28965b7b3#authservice\n@Injectable()\nexport class AuthService {\n public loggedIn: BehaviorSubject;\n private login_id: string;\n\n // ここにidトークン持たせるのではなく、認証処理だけ別で切りだしたサービス(loginはそこを呼び出す)を定義\n // そこに持たせつ(Ingectable)\n\n constructor(\n private router: Router,\n private httpClient: HttpClient,\n ) {\n Amplify.configure(environment.amplify.Auth);\n this.loggedIn = new BehaviorSubject(false);\n }\n\n // ログイン\n public signIn(login_id: string, password: string): Observable {\n this.login_id = login_id;\n return fromPromise(Auth.signIn(login_id, password))\n .pipe(\n tap(() => this.loggedIn.next(true))\n );\n }\n\n // ログイン状態の確認\n public isAuthenticated(): Observable {\n return fromPromise(Auth.currentAuthenticatedUser())\n .pipe(\n map(result => {\n this.loggedIn.next(true);\n return true;\n }),\n catchError(error => {\n this.loggedIn.next(false);\n return of(false);\n })\n );\n }\n\n // idトークンの取得\n public getIdToken(): Observable {\n return fromPromise(Auth.currentSession())\n .pipe(\n map(result => {\n const idToken = result.getIdToken().getJwtToken();\n return idToken;\n }\n ),\n catchError(error => {\n return null;\n })\n );\n }\n \n // ログアウト\n public signOut() {\n this.loginLogging('0');\n fromPromise(Auth.signOut())\n .subscribe(\n result => {\n localStorage.clear()\n this.loggedIn.next(false);\n this.router.navigate(['/login']);\n localStorage.clear();\n }\n );\n }\n // ログイン・ログアウト時ログを残す\n public loginLogging(login_type: string) {\n const apiURL = `${environment.apiUrl}/login/${this.login_id}/${login_type}`;\n this.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.httpClient.get(apiURL,\n {\n headers: new HttpHeaders({\n Authorization: result\n })\n }\n ).subscribe((response: GetInSiteMeterResponse) => {\n });\n }\n }\n )\n }\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from \"@angular/animations\";\nimport { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport {\n Component,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnInit,\n Output,\n} from \"@angular/core\";\nimport {\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from \"@angular/forms\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { Const } from \"../const/const\";\nimport { GetInSiteMeterResponse } from \"../entity/get-in-site-meters-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { Meter } from \"../entity/meter\";\nimport { PostMeterValueConfirmationResponse } from \"../entity/post-meter-value-confirmation-response\";\nimport { PostValueConfirmationWithValueDetectionResponse } from \"../entity/post-value-confirmation-with-value-detection-response\";\nimport { ValueConfirmation } from \"../entity/value-confirmation\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { debug } from \"console\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { MeterQrcodeDialogComponent } from \"../meter-qrcode-dialog/meter-qrcode-dialog.component\";\nimport { userInfo } from \"os\";\nimport { ValueDetection } from \"../entity/value-detection\";\nimport { LastMonthValueConfirmation } from \"../entity/last-month-value-confirmation\";\nimport { BigNumber } from \"bignumber.js\";\n\nexport interface Detect {\n img_b64: string;\n}\n\n@Component({\n selector: \"app-card\",\n templateUrl: \"./card.component.html\",\n styleUrls: [\"./card.component.scss\"],\n animations: [\n // Each unique animation requires its own trigger. The first argument of the trigger function is the name\n trigger(\"rotatedState\", [\n state(\"default\", style({ transform: \"rotate(0)\" })),\n state(\"rotated\", style({ transform: \"rotate(-360deg)\" })),\n transition(\"rotated => default\", animate(\"2000ms ease-out\")),\n transition(\"default => rotated\", animate(\"2000ms ease-in\")),\n ]),\n ],\n})\nexport class CardComponent implements OnInit {\n @Output() dialogClose: EventEmitter = new EventEmitter();\n @Input() meterData: Meter;\n @Input() loginUser: LoginUser;\n @Input() canEdit: boolean;\n @Input() usingPlace: string;\n @Input() selectedMonth: string;\n @Input() tenantId: string;\n @Input() label: string;\n @Input() confirmedReportFlg: boolean;\n\n //debug\n @Input() tenantName: string;\n @Input() partName: string;\n //debug\n\n keepValue: LastMonthValueConfirmation;\n keepLabel: string;\n\n postValueConfirmationUrl: string;\n postValueConfirmationNoImageUrl: string;\n getOneMeterDataUrl: string;\n formControl: UntypedFormGroup;\n messageInfo: MessageInfo;\n idToken: string;\n get detected_value() {\n return this.formControl.get(\"detected_value\");\n }\n\n get flagImgUrl() {\n return this.meterData.is_reviewed\n ? \"../assets/bookmark_check_blue.png\"\n : \"../assets/bookmark_emp_blue.png\";\n }\n\n state: string = \"default\";\n //debug\n public myAngularxQrCode: string = null;\n qrcodeTitle: string;\n //debug\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private httpClient: HttpClient,\n public dialog: MatDialog,\n public auth: AuthService\n ) {}\n\n ngOnInit() {\n if (this.meterData !== undefined) {\n this.formControl = new UntypedFormGroup({\n detected_value: new UntypedFormControl(\"\", [\n Validators.required,\n kenshinValueCheck,\n ]),\n });\n this.keepValue = this.meterData.last_month_value_confirmation;\n this.keepLabel = this.meterData.label;\n }\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n }\n\n //指定した小数点まで切り捨てる\n confirmedValueFormat(val: string, point: number) {\n let formatedNum = \"\";\n\n let ten = new BigNumber(Math.pow(10, point));\n let tmpNum = new BigNumber(val);\n let result = tmpNum.times(ten);\n result = new BigNumber(Math.floor(Number(result)));\n let endRes = result.dividedBy(ten);\n formatedNum = endRes.toString();\n\n return formatedNum;\n }\n\n // DB⇨画面表示で日付のフォーマットを変更する\n changeDateFormat(date: string) {\n const changedDate = new Date(date + \"Z\").toLocaleString();\n return changedDate;\n }\n\n // 「yyyy-mm-dd hh:mm:ss」形式に変換する かつ +9時間(日本時間にする)\n changeLocaleDateFormat(date: string) {\n\n // 空文字で来たらそのまま返す\n if (date === \"\") {\n return \"\";\n }\n\n // 変換できなければ空文字\n let newD: Date;\n try {\n newD = new Date(new Date(date).setHours(new Date(date).getHours() + 9));\n } catch(error) {\n return \"\";\n }\n\n const yyyy = String(newD.getFullYear());\n const mm = String(newD.getMonth() + 1).padStart(2, \"0\");\n const dd = String(newD.getDate()).padStart(2, \"0\");\n const hh = String(newD.getHours()).padStart(2, \"0\");\n const ms = String(newD.getMinutes()).padStart(2, \"0\");\n const s = String(newD.getSeconds()).padStart(2, \"0\");\n\n return `${yyyy}-${mm}-${dd} ${hh}:${ms}:${s}`;\n }\n\n onConfirmBtn(val: string) {\n const dateData = new Date();\n const thisMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n this.doPostAction(val);\n }\n\n onFlagBtn(meter_id: string, flag: boolean) {\n let params = new HttpParams();\n params = params.set(\"is_reviewed\", Number(!flag).toString());\n this.postValueConfirmationUrl = `${environment.apiUrl}/meters/${meter_id}/is_reviewed`;\n this.httpClient\n .patch(this.postValueConfirmationUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: PostMeterValueConfirmationResponse) => {\n this.doGetOneMeterData(this.meterData.id, this.selectedMonth);\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"見直しフラグの変更に失敗しました\");\n }\n }\n );\n }\n\n // TODO: hiddenなので辿り着かない\n onAnalysisImageBtn() {\n if (this.meterData.value_detections[0]) {\n this.state = this.state === \"default\" ? \"rotated\" : \"default\";\n const apiUrl = \"https://ai-analytics-api.rakusugikenshin.com/detect\";\n const imgUrl = this.meterData.value_detections[0].picture_url;\n fetch(imgUrl, {\n mode: \"cors\",\n headers: {\n \"Cache-Control\": \"no-cache\",\n Pragma: \"no-cache\",\n Expires: \"Sat, 01 Jan 2000 00:00:00 GMT\",\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\":\n \"Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key\",\n \"Access-Control-Allow-Methods\": \"GET,OPTIONS\",\n },\n })\n .then((response) => {\n return response.blob();\n })\n .then((blob) => new File([blob], \"meter.jpeg\"))\n .then((file) => {\n const reader = new FileReader();\n let base64Output;\n reader.readAsDataURL(file);\n reader.onload = () => {\n const dataURI = String(reader.result);\n base64Output = dataURI.replace(\n /data:application\\/octet-stream;base64,/,\n \"\"\n );\n const body: Detect = {\n img_b64: base64Output,\n };\n this.httpClient\n .post(apiUrl, body, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const value = String(\n Number(res[\"result\"]) /\n Math.pow(\n 10.0,\n Number(this.meterData.decimal_point_position)\n )\n );\n this.doPostAction(value);\n // this.meterData.value_detections[0].value_confirmation.confirmed_value = value\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"検針値の確定に失敗しました。\");\n }\n }\n );\n };\n });\n } else {\n alert(\"写真なしではアップロードできません\");\n }\n }\n\n onConfirmBtnNoImage(\n val: string,\n decimal: string,\n valueDetections: ValueDetection[]\n ) {\n const dateData = new Date();\n const thisMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n this.messageInfo = new MessageInfo(\n \"この確定操作は行えません。楽杉けんしん保守窓口サポート担当までご連絡ください。\",\n \"\"\n );\n\n // 操作年月チェック\n // レポート年月より後に確定しようとしたらアラートで止める\n if (Number(this.selectedMonth) < Number(thisMonth)) {\n const dialogRef = this.dialog.open(MessageDialogComponent, {\n width: \"800px\",\n data: this.messageInfo,\n });\n } else {\n this.doPostActionNoImage(val, Number(decimal), valueDetections);\n }\n }\n\n doPostAction(confirmedVal: string) {\n // Postする際のパラメータをセットする\n let params = new HttpParams();\n params = params.set(\n \"value_detection_id\",\n this.meterData.value_detections[0].id\n );\n params = params.set(\"confirmed_value\", confirmedVal);\n params = params.set(\"confirmation_channel\", \"1\");\n params = params.set(\"user_id\", this.loginUser.id);\n this.postValueConfirmationUrl = `${environment.apiUrl}/value_confirmations`;\n this.formControl.setValue({ confirmed_value: null });\n this.httpClient\n .post(this.postValueConfirmationUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: PostMeterValueConfirmationResponse) => {\n if (\n this.meterData.value_detections[0].value_confirmation === undefined\n ) {\n const newValueConfirmation = new ValueConfirmation(\n response.result.value_confirmation.confirmed_value,\n response.result.value_confirmation.created_at\n );\n this.meterData.value_detections[0].value_confirmation =\n newValueConfirmation;\n } else {\n this.meterData.value_detections[0].value_confirmation.confirmed_value =\n response.result.value_confirmation.confirmed_value;\n this.meterData.value_detections[0].value_confirmation.created_at =\n response.result.value_confirmation.created_at;\n }\n // レポート画面からの呼び出しの時だけ「検針値を変更しました」ダイアログを表示\n if (this.usingPlace === \"report\") {\n this.messageInfo = new MessageInfo(\n \"検針値を変更しました。\",\n \"report\"\n );\n const dialogRef = this.dialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: this.messageInfo,\n });\n // message-dialogが閉じられたのを検知してクローズ通知を飛ばす\n dialogRef.afterClosed().subscribe((result) => {\n if (result === \"close\") {\n this.dialogClose.emit();\n }\n });\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"検針値の確定に失敗しました。\");\n }\n }\n );\n }\n\n doPostActionNoImage(\n detectedVal: string,\n decimal: number,\n valueDetections: ValueDetection[]\n ) {\n let params = new HttpParams();\n\n let confirmedVal = this.confirmedValueFormat(detectedVal, decimal);\n\n params = params.set(\"meter_id\", this.meterData.id);\n params = params.set(\"detected_value\", detectedVal);\n params = params.set(\"confirmed_value\", confirmedVal);\n params = params.set(\"confirmation_channel\", \"1\");\n params = params.set(\"tenant_id\", this.tenantId);\n\n let pictureURL = \"no_image\";\n let pictureDate = \"no_date\";\n if (valueDetections.length > 0) {\n pictureURL = valueDetections[0].picture_url;\n pictureDate = valueDetections[0].picture_date;\n }\n params = params.set(\"picture_url\", pictureURL);\n params = params.set(\"picture_date\", pictureDate);\n this.postValueConfirmationNoImageUrl = `${environment.apiUrl}/value_detections/value_confirmations`;\n this.formControl.setValue({ detected_value: null });\n\n this.httpClient\n .post(this.postValueConfirmationNoImageUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: PostValueConfirmationWithValueDetectionResponse) => {\n this.keepValue = this.meterData.last_month_value_confirmation;\n this.keepLabel = this.meterData.label;\n this.doGetOneMeterData(this.meterData.id, this.selectedMonth);\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"検針値の確定に失敗しました。\");\n }\n }\n );\n }\n\n checkLimit(val: string) {\n let formatedNum = \"\";\n if (val.indexOf(\".\") > -1) {\n let temp = val.split(\".\")[1].length;\n if (temp > 2) {\n let ten = Math.pow(10, 3);\n let tmpNum = Math.floor(Number(val) * ten) / ten;\n\n const fixedNum = tmpNum.toFixed(3);\n const result = parseFloat(fixedNum);\n\n formatedNum = String(result);\n if (formatedNum !== \"NaN\") {\n this.formControl.setValue({ detected_value: formatedNum });\n } else {\n this.formControl.setValue({ detected_value: \"\" });\n }\n }\n }\n }\n\n doGetOneMeterData(meterId: string, checkedMonth: string) {\n this.getOneMeterDataUrl = `${environment.apiUrl}/meters/${meterId}/tenants/${this.tenantId}/${checkedMonth}/value_detections`;\n this.httpClient\n .get(this.getOneMeterDataUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetInSiteMeterResponse) => {\n this.meterData = response.result.meter;\n this.meterData.last_month_value_confirmation = this.keepValue;\n this.meterData.label = this.keepLabel;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"メーター情報が取得できませんでした。\");\n }\n }\n );\n }\n\n // debug\n onClickMeterQrcode(\n meter: Meter,\n partName: string,\n tenantName: string,\n label: string\n ) {\n // if (!this.isPartitionTenantReady) {\n // alert(\"テナントデータが取得できませんでした。\")\n // return\n // }\n let meterinfo = new MeterInfo();\n meterinfo.id = meter.id;\n meterinfo.name = meter.name;\n meterinfo.label = meter.label; //メーター番号 meter-management-list参照\n meterinfo.partName = partName;\n meterinfo.tenantName = tenantName;\n\n if (meterinfo.label == undefined || meterinfo.label == null) {\n meterinfo.label = label;\n }\n\n meterinfo.is_reviewed = meter.is_reviewed;\n\n const dialogRef = this.dialog.open(MeterQrcodeDialogComponent, {\n width: \"800px\",\n data: meterinfo,\n });\n\n dialogRef.afterClosed().subscribe((makeResult) => {\n if (makeResult === \"close\") {\n }\n });\n }\n // debug\n}\n\n// 検針入力値のバリデーション定義\nfunction kenshinValueCheck(c: UntypedFormControl) {\n const REGPATTERN = /^([0-9]+)(\\.[0-9]{1,7})?$/;\n if (REGPATTERN.test(c.value)) {\n return null;\n } else {\n return { kenshinValueCheck: { valid: false } };\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\n\n@Component({\n selector: 'app-common-confirm-dialog',\n templateUrl: './common-confirm-dialog.component.html',\n styleUrls: ['./common-confirm-dialog.component.scss']\n})\n\nexport class CommonConfirmDialogComponent implements OnInit {\n\n constructor(public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public dialogInfo: MeterConfirmDialogInfo\n ) {\n\n }\n\n ngOnInit() {\n\n }\n\n onClickYes() {\n this.dialogRef.close('Yes');\n }\n\n onClickNo() {\n this.dialogRef.close('No');\n }\n\n}\n","import { Directive, ElementRef, HostListener, Renderer2 } from \"@angular/core\";\n\n@Directive({\n selector: \"[appForbiddenCharacters]\",\n})\nexport class ForbiddenCharactersDirective {\n private forbiddenChars = [\"\\\\\", \",\", '\"', \"“\"];\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener(\"input\", [\"$event\"]) onInput(event: Event): void {\n //let inputValue: string = this.el.nativeElement.value;\n //画面から項目の値を取得\n const input = event.target as HTMLInputElement;\n let inputValue: string = input.value;\n const initialLength = inputValue.length;\n // Remove forbidden characters\n this.forbiddenChars.forEach((char) => {\n inputValue = inputValue.split(char).join(\"\");\n });\n\n // If any forbidden characters were removed, update the input value\n if (inputValue.length !== initialLength) {\n //this.renderer.setProperty(this.el.nativeElement, \"value\", inputValue);\n input.value = inputValue;\n input.dispatchEvent(new Event(\"input\"));\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { CompanyModel } from '../site-management/site-management.component';\n\n@Component({\n selector: 'app-company-add-edit-dialog',\n templateUrl: './company-add-edit-dialog.component.html',\n styleUrls: ['./company-add-edit-dialog.component.scss']\n})\n\nexport class CompanyAddEditDialogComponent implements OnInit {\n idToken: string;\n companyName: string;\n\n @Input() public company: CompanyModel;\n constructor(\n private httpClient: HttpClient,\n public dialogRef: MatDialogRef,\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n @Inject(MAT_DIALOG_DATA) public isEditMode: boolean = false) {\n }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n this.onClickLogout()\n alert('セッションが切れています。再度ログインしてください。');\n }\n }\n );\n\n if(this.isEditMode){\n this.companyName = this.company.name\n }\n }\n\n onClickConfirm(){\n if(!navigator.onLine){\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n\n if(this.isEditMode){\n this.updateCompany()\n }else{\n this.addCompany()\n }\n }\n\n addCompany(){\n const messageInfo = new MeterConfirmDialogInfo('新規登録確認', '会社を新規登録します。よろしいですか。');\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n // 会社の登録処理\n const postSiteUrl = `${environment.apiUrl}/company/company_info`;\n let params = new HttpParams();\n params = params.set('name', this.companyName);\n this.httpClient.post(postSiteUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('会社情報の登録に失敗しました。');\n }\n });\n }\n });\n }\n\n updateCompany(){\n const messageInfo = new MeterConfirmDialogInfo('会社更新確認', '会社を更新します。よろしいですか。');\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n // 会社更新処理\n const url = `${environment.apiUrl}/company/company_info/1/${this.company.id}`;\n let params = new HttpParams();\n params = params.set('name', this.companyName);\n this.httpClient.patch(url, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n \"content-type\": \"application/x-www-form-urlencoded\"\n })\n }\n )\n .subscribe((response) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('会社情報の更新に失敗しました。');\n }\n });\n }\n });\n }\n\n checkIfFormDirty(){\n return this.companyName != this.company.name\n }\n \n checkIfFormReady(){\n return this.companyName != \"\" && this.companyName != null && this.companyName != undefined\n }\n\n comfirmButtonDisable(){\n if(this.isEditMode){\n return this.checkIfFormReady() && this.checkIfFormDirty()\n }\n return this.checkIfFormReady()\n }\n\n // ログアウト\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { CompanyModel } from '../site-management/site-management.component';\n\n@Component({\n selector: 'app-company-delete-dialog',\n templateUrl: './company-delete-dialog.component.html',\n styleUrls: ['./company-delete-dialog.component.scss']\n})\nexport class CompanyDeleteDialogComponent implements OnInit {\n\n idToken: string;\n\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public company: CompanyModel,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n public auth: AuthService,\n ) { }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n alert('セッションが切れています。再度ログインしてください。');\n this.onClickLogout()\n }\n }\n );\n }\n\n // 会社削除\n onClickConfirm() {\n\n if(!navigator.onLine){\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n const messageInfo = new MeterConfirmDialogInfo('会社削除', '会社削除します。よろしいですか。');\n const meterConfirmDialogRef = this.confirmDialog.open(CommonConfirmDialogComponent, {\n width: '650px',\n data: messageInfo\n });\n\n meterConfirmDialogRef.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n \n let params = new HttpParams();\n params.set(\"name\",\"\")\n const url = `${environment.apiUrl}/company/company_info/0/${this.company.id}`;\n this.httpClient.patch(url, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n \"content-type\": \"application/x-www-form-urlencoded\"\n })\n }\n ) .subscribe((response: any) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('会社削除に失敗しました。');\n }\n }\n );\n }\n });\n\n }\n\n // ログアウト\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CompanyAddEditDialogComponent } from '../company-add-edit-dialog/company-add-edit-dialog.component';\nimport { CompanyDeleteDialogComponent } from '../company-delete-dialog/company-delete-dialog.component';\nimport { Const } from '../const/const';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { SiteInfo } from '../entity/get-site-info';\nimport { LoginUser } from '../entity/login-user';\nimport { LoginUserSite } from '../entity/login-user-site';\nimport { LoginUserSiteCompany } from '../entity/login-user-site-company';\nimport { CompanyModel } from '../site-management/site-management.component';\n\n@Component({\n selector: 'app-company-management',\n templateUrl: './company-management.component.html',\n styleUrls: ['./company-management.component.scss']\n})\nexport class CompanyManagementComponent implements OnInit {\n loginUser: LoginUser;\n idToken: string;\n getLoginUserUrl: string;\n\n // テーブル生成用\n displayedColumns: string[];\n companyData: CompanyModel[];\n filterdCompanyData: CompanyModel[];\n\n searchKeyString: string=\"\";\n searchKeyChanged: Subject = new Subject();\n\n // フラグ類\n getCompanyDataFinished: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n\n constructor(\n private router: Router,\n private httpClient: HttpClient,\n public auth: AuthService,\n private route: ActivatedRoute,\n public dialog: MatDialog,\n ) {\n localStorage.setItem(\"path\", router.url)\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser()\n this.companyData = []\n this.searchKeyChanged\n .debounceTime(300) // wait 300ms after the last event before emitting last event\n .subscribe(str => {this.searchKeyString = str; this.filterResult()});\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n\n if (Const.loginUser === null) {\n this.doGetLoginUser()\n }\n\n this.loginUser = Const.loginUser\n this.mjitUserFlag = Const.mjitUser\n this.adminUserFlag = Const.adminUser\n this.getCompanyData()\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.onClickLogout()\n }\n }\n );\n }\n\n getCompanyData(){\n this.getCompanyDataFinished = false\n this.filterdCompanyData = []\n const url = `${environment.apiUrl}/company/all`\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res =>{\n let jsonStr = JSON.stringify(res)\n let jsonObj = JSON.parse(jsonStr)\n this.companyData = jsonObj.result.companies\n this.filterdCompanyData = this.companyData\n this.displayedColumns = [\"companyName\",\"createdBy\",\"createdAt\",\"updatedBy\",\"updatedAt\",\"editButton\",\"deleteButton\"]\n this.getCompanyDataFinished = true\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }else{\n alert(\"会社情報が取得できませんでした。\")\n }\n })\n }\n \n onClickAddCompany() {\n const dialogRef = this.dialog.open(CompanyAddEditDialogComponent, {\n width: '650px',\n data: false\n });\n dialogRef.afterClosed().subscribe(dialogResult => {\n if (dialogResult === 'close') {\n this.getCompanyData()\n }\n });\n }\n\n onClickCompanyEdit(company: CompanyModel) {\n const dialogRef = this.dialog.open(CompanyAddEditDialogComponent, {\n width: '650px',\n data: true\n });\n dialogRef.componentInstance.company = company\n dialogRef.afterClosed().subscribe(dialogResult => {\n if (dialogResult === 'close') {\n this.getCompanyData()\n }\n });\n }\n\n onClickCompanyDelete(company: CompanyModel) {\n const dialogRef = this.dialog.open(CompanyDeleteDialogComponent, {\n width: '650px',\n data: company\n });\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n this.getCompanyData()\n this.getAllSiteData()\n }\n });\n }\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n }else{\n alert('施設情報が取得できませんでした。');\n }\n });\n }\n\n filterResult(){\n if(this.searchKeyString === \"\"){\n this.filterdCompanyData = this.companyData\n return\n }\n this.filterdCompanyData = this.companyData.filter(item => item.name.includes(this.searchKeyString))\n }\n\n search(text: string){\n this.searchKeyChanged.next(text);\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0\n Const.adminUser = Number(Const.loginUser.user_type) === 1\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\")\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id\n }\n }\n }\n\n if (Const.site_id === null) {\n alert('前回選択した施設が見つかりませんでした。');\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.loginUser = Const.loginUser\n this.mjitUserFlag = Const.mjitUser\n this.adminUserFlag = Const.adminUser\n this.getCompanyData()\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n }else{\n alert('ログイン情報が取得できませんでした。再度ログインしてください。');\n }\n this.onClickLogout();\n });\n }\n\n // ログアウト\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { TenantConfirmDialogInfo } from '../entity/tenant-confirm-dialog-info';\n\n@Component({\n selector: 'app-confirm-alert-dialog',\n templateUrl: './confirm-alert-dialog.component.html',\n styleUrls: ['./confirm-alert-dialog.component.scss']\n})\nexport class ConfirmAlertDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public dialogInfo: TenantConfirmDialogInfo\n ) { }\n\n ngOnInit() {\n }\n\n onClickYes() {\n this.dialogRef.close('Yes');\n }\n\n onClickNo() {\n this.dialogRef.close('No');\n }\n\n}\n","import { SiteInfo } from \"../entity/get-site-info\"\n\nexport const Const = {\n site_id: null,\n loginUser: null,\n mjitUser: false,\n adminUser: false,\n siteInfo : [],\n release() {\n this.site_id = ''\n this.loginUser = null\n this.mjitUser = false\n this.adminUser = false\n this.siteInfo = []\n }\n}\n","export class CompareDialogData {\n constructor(\n partition: string,\n tenantName: string,\n info: string,\n decimal: number,\n meterType: string,\n thisMonthUsed: string,\n lastMonthUsed: string,\n rateOfChange: string,\n alertFlag: number\n ) {\n this.partition = partition;\n this.tenantName = tenantName;\n this.info = info;\n this.decimal = decimal;\n this.meterType = meterType;\n this.thisMonthUsed = thisMonthUsed;\n this.lastMonthUsed = lastMonthUsed;\n this.rateOfChange = rateOfChange;\n this.alertFlag = alertFlag;\n }\n partition: string;\n tenantName: string;\n info: string;\n decimal: number;\n meterType: string;\n thisMonthUsed: string;\n lastMonthUsed: string;\n rateOfChange: string;\n alertFlag: number;\n}\n","import { LoginUser } from \"./login-user\";\nimport { Meter } from \"./meter\";\n\nexport class CorrectDialogData {\n constructor(\n partition: string,\n tenantName: string,\n meter: Meter,\n loginUser: LoginUser,\n canEdit: boolean,\n usingPlace: string,\n tenantId: string,\n checkedMonth: string,\n label: string\n ) {\n this.partition = partition;\n this.tenantName = tenantName;\n this.meter = meter;\n this.loginUser = loginUser;\n this.canEdit = canEdit;\n this.usingPlace = usingPlace;\n this.tenantId = tenantId;\n this.checkedMonth = checkedMonth;\n this.label = label;\n }\n partition: string;\n tenantName: string;\n meter: Meter;\n loginUser: LoginUser;\n canEdit: boolean;\n usingPlace: string;\n tenantId: string;\n checkedMonth: string;\n label: string;\n}\n","import { SiteWithUserInfo } from '../site-management/site-management.component';\n\nexport class CsvSiteInfo {\n siteId: string;\n siteName: string;\n siteAddress: string;\n companyId: string;\n companyName: string;\n userIdList: string[];\n dbSiteData: SiteWithUserInfo;\n}\n","import { GetUserWithSitesLinksInfo } from './get-user-with-sites-links-info';\n\nexport class CsvUserInfo {\n userId: string;\n loginId: string;\n password: string;\n userName: string;\n companyId: string;\n userType: number;\n siteIdList: string[];\n dbuserData: GetUserWithSitesLinksInfo;\n}\n","export class ExistingTenant {\n constructor(tenantId: string, tenantName: string) {\n this.tenantId = tenantId;\n this.tenantName = tenantName;\n }\n tenantId: string;\n tenantName: string;\n}\n","export class FloorConfirmDialogInfo {\n constructor(title: string, message: string) {\n this.title = title;\n this.message = message;\n }\n title: string;\n message: string;\n}\n","import { GetFloorsResult } from './get-floors-result';\n\nexport class GetFloorsResponse {\n status: string;\n message: string;\n result: GetFloorsResult;\n}\n","import { GetInSiteValueDetectionsResult } from './get-in-site-value-detections-result';\n\nexport class GetInSiteValueDetectionsResponse {\n status: string;\n message: string;\n result: GetInSiteValueDetectionsResult[];\n}\n","import { GetLoginUserResult } from './get-login-user-result';\n\nexport class GetLoginUserResponse {\n status: string;\n message: string;\n result: GetLoginUserResult;\n}\n","import { idName } from \"./id-name\";\nimport { Tenant } from \"./tenant\";\n\nexport class MeterInfo {\n id: string;\n name: string;\n label: string;\n site_id: string;\n partName: string;\n partition_id: string;\n floor_id: string;\n floor_name: string;\n meter_type_id: string;\n unit_id: string;\n\n created_at: string;\n updated_at: string;\n cancelled_at: string;\n tenantName: string;\n\n tenants: Tenant[];\n no: number = 0;\n\n analysis_flg: boolean;\n is_card_display: boolean;\n is_reviewed: boolean;\n is_reread: boolean;\n expiration_date: string;\n isExpireMeterFlag: boolean = false;\n\n number_of_digits: number = 0;\n decimal_point_position: number = 0;\n max_value: number = 0;\n min_value: number = 0;\n max_angle: number = 0;\n min_angle: number = 0;\n\n initial_value: number = 0;\n closed_value: number = 0;\n\n // -1:unkonwn\n // 0 : for update\n // 1 : for add new\n // 2 : error meter\n state: number = -1;\n errMsg: string = \"\";\n\n statusCode: number;\n responseMsg: string;\n\n createdBy: idName;\n updatedBy: idName;\n}\n","import { idName } from \"./id-name\";\n\nexport class MeterType{\n id: string\n name: string;\n created_at: string;\n updated_at: string; \n created_by: idName;\n updated_by: idName;\n}","import { GetPartitionsResult } from './get-partitions-result';\n\nexport class GetPartitionsResponse {\n status: number;\n message: string;\n result: GetPartitionsResult;\n}\n","import { idName } from \"./id-name\";\n\nexport class SiteInfo {\n id: string;\n name: string;\n address: string;\n company_id: string;\n created_at: string;\n updated_at: string;\n created_by: idName;\n updated_by: idName;\n company_name:string;\n}","import { idName } from \"./id-name\";\n\nexport class GetUserWithSitesLinksInfo {\n id: string;\n loginId: string;\n passward: string;\n name: string;\n companyId: string;\n companyName: string;\n userType: number;\n userTypeName: string;\n sites: UserSite[];\n createdAt: string;\n updatedAt: string;\n created_by: idName;\n updated_by: idName;\n\n lockStatus: boolean = false\n}\n\nexport class UserSite {\n siteId: string;\n siteName: string;\n siteAddress: string;\n companyName: string;\n}\n","export class idName {\n id: string;\n name: string;\n }","import { LastMonthValueConfirmationUser } from './last-month-value-confirmation-user';\n\nexport class LastMonthValueConfirmation {\n constructor(\n id: string, confirmed_value: string, confirmation_channel: string, created_at: string) {\n this.id = id;\n this.confirmed_value = confirmed_value;\n this.confirmation_channel = confirmation_channel;\n this.created_at = created_at;\n // this.user = user;\n }\n id: string;\n confirmed_value: string;\n confirmation_channel: string;\n created_at: string;\n // user: LastMonthValueConfirmationUser;\n}\n","export class LoginUserSiteCompany {\n id: string;\n name: string;\n created_at: string;\n updated_at: string;\n}\n","import { LoginUserSiteCompany } from './login-user-site-company';\n\nexport class LoginUserSite {\n id: string;\n name: string;\n address: string;\n created_at: string;\n updated_at: string;\n company: LoginUserSiteCompany;\n}\n","import { LoginUserCompany } from './login-user-company';\nimport { LoginUserSite } from './login-user-site';\n\nexport class LoginUser {\n id: string;\n name: string;\n user_type: string;\n created_at: string;\n updated_at: string;\n company: LoginUserCompany;\n sites: LoginUserSite[];\n}\n","export class MessageInfo {\n constructor(message: string, place: string) {\n this.message = message;\n this.place = place;\n }\n message: string;\n place: string;\n}\n","export class MeterConfirmDialogInfo {\n constructor(title: string, message: string) {\n this.title = title;\n this.message = message;\n }\n title: string;\n message: string;\n}\n","import { LastMonthValueConfirmation } from './last-month-value-confirmation';\nimport { Unit } from './unit';\nimport { ValueDetection } from './value-detection';\n\n\nexport class Meter {\n constructor(\n id: string, name: string, label: string, number_of_digits: string,\n decimal_point_position: string, closed_value: string, is_reviewed: boolean, created_at: string, updated_at: string,\n unit: Unit,last_month_value_confirmation: LastMonthValueConfirmation, value_detections: ValueDetection[]\n ) {\n this.id = id;\n this.name = name;\n this.label = label;\n this.number_of_digits = number_of_digits;\n this.decimal_point_position = decimal_point_position;\n this.closed_value = closed_value;\n this.is_reviewed = is_reviewed;\n this.created_at = created_at;\n this.updated_at = updated_at;\n this.unit = unit;\n this.last_month_value_confirmation = last_month_value_confirmation;\n this.value_detections = value_detections;\n }\n id: string;\n name: string;\n label: string;\n number_of_digits: string;\n decimal_point_position: string;\n closed_value: string;\n created_at: string;\n updated_at: string;\n is_reviewed: boolean;\n unit: Unit;\n last_month_value_confirmation: LastMonthValueConfirmation;\n value_detections: ValueDetection[];\n}\n","export class PartitionConfirmDialogInfo {\n constructor(title: string, message: string) {\n this.title = title;\n this.message = message;\n }\n title: string;\n message: string;\n}\n","import { Meter } from \"./meter\";\n\n/**\n * カード表示レポート用データクラス\n */\nexport class ReportCard {\n partition_id: string;\n partition_name: string;\n tenant_id: string;\n tenant_name: string;\n meters: Meter[];\n}","\n\nexport class ReportListInfo {\n constructor(month: number, fixedTime: string, lastUpdate: string, confirmedReportUser: string) {\n this.month = month;\n this.fixedTime = fixedTime;\n this.lastUpdate = lastUpdate;\n this.confirmedReportUser = confirmedReportUser;\n }\n month: number;\n fixedTime: string;\n lastUpdate: string;\n confirmedReportUser: string;\n isConfirmedAll = true;\n}\n","export class ReportRow {\n partition = \"*\";\n name = \"*\";\n tenantId: string;\n info: string; // 基本空文字だが、新旧メーターいる場合のみ記入される\n type: string;\n label: string;\n id: string;\n lastMonth = \"*\";\n thisMonth = \"*\";\n used = \"*\";\n lastUsed: string;\n alert = 0;\n maxVal: string;\n decimal = 0;\n}\n","export class SelectedPartition {\n constructor(partitionId: string, partitionName: string, meterLabels: string[]) {\n this.partitionId = partitionId;\n this.partitionName = partitionName;\n this.meterLabels = meterLabels;\n }\n partitionId: string;\n partitionName: string;\n meterLabels: string[];\n}\n","export class SiteConfirmDialogInfo {\n constructor(title: string, message: string) {\n this.title = title;\n this.message = message;\n }\n title: string;\n message: string;\n}\n","export class TenantConfirmDialogInfo {\n constructor(title: string, message: string) {\n this.title = title;\n this.message = message;\n }\n title: string;\n message: string;\n}\n","import { idName } from \"./id-name\";\n\nexport class TenantRow {\n tenantId: string;\n partition: string;\n partitionId: string;\n name: string;\n note: string;\n initialValue: string;\n closedValue: string;\n isCardDisplay: number;\n contractedAt: string;\n cancelledAt: string;\n created_by: idName;\n updated_by: idName;\n updatedAt: string;\n}\n","import { GetAllTenantsTenant } from '../entity/get-all-tenants-tenant';\nimport { TenantRow } from '../entity/tenant-row';\n\nexport class ToTenantMakeObject {\n constructor(allTenantList: GetAllTenantsTenant[], tenantData: TenantRow[]) {\n this.allTenantList = allTenantList;\n this.tenantData = tenantData;\n }\n allTenantList: GetAllTenantsTenant[];\n tenantData: TenantRow[];\n}\n","import { idName } from \"./id-name\";\n\nexport class Unit {\n id: string;\n type: string;\n created_at: string;\n updated_at: string;\n created_by: idName;\n updated_by: idName;\n}","export class UserConfirmDialogInfo {\n constructor(title: string, message: string) {\n this.title = title;\n this.message = message;\n }\n title: string;\n message: string;\n}\n","import { ValueConfirmationUser } from './value-confirmation-user';\n\nexport class ValueConfirmation {\n // 検針値入力の処理から後付けで作成\n constructor(confirmed_value: string, created_at: string) {\n this.confirmed_value = confirmed_value;\n this.created_at = created_at;\n }\n id: string;\n confirmed_value: string;\n confirmation_channel: string;\n created_at: string;\n}\n","import { ValueDetectionUser } from './value-detection-user';\nimport { ValueConfirmation } from './value-confirmation';\n\nexport class ValueDetection {\n constructor(\n id: string, detected_value: string, picture_url: string, picture_date: string, tenant_id: string,\n created_at: string, value_confirmation: ValueConfirmation\n ) {\n this.id = id;\n this.detected_value = detected_value;\n this.picture_url = picture_url;\n this.picture_date = picture_date; \n this.tenant_id = tenant_id;\n this.created_at = created_at;\n this.value_confirmation = value_confirmation;\n }\n\n id: string;\n detected_value: string;\n picture_url: string;\n picture_date: string;\n tenant_id: string;\n created_at: string;\n value_confirmation: ValueConfirmation;\n}\n","import { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, OnInit, Inject, Input } from \"@angular/core\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { FloorConfirmDialogInfo } from \"../entity/floor-confirm-dialog-info\";\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from \"@angular/material/dialog\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { environment } from \"src/environments/environment\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { Router } from \"@angular/router\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { Const } from \"../const/const\";\n\n@Component({\n selector: \"app-floor-add-dialog\",\n templateUrl: \"./floor-add-dialog.component.html\",\n styleUrls: [\"./floor-add-dialog.component.scss\"],\n})\nexport class FloorAddDialogComponent implements OnInit {\n idToken: string;\n floorName: string;\n floorNumber: number;\n\n loginUser: LoginUser;\n site: LoginUserSite;\n floorsInfo: FloorInfo[];\n errorFloorNameMsg: string;\n errorFloorNumberMsg: string;\n\n constructor(\n public floorConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n private router: Router,\n public auth: AuthService,\n private httpClient: HttpClient,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.site = this.data.site;\n this.floorsInfo = this.data.floorsInfo;\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n if (this.site == undefined) {\n alert(\"施設情報の取得に失敗しました。\");\n return;\n }\n\n const messageInfo = new FloorConfirmDialogInfo(\n \"登録確認\",\n \"フロアを新規登録します。よろしいですか。\"\n );\n const confirmDialog = this.floorConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n // APIコールして登録処理\n const postFloorUrl = `${environment.apiUrl}/floors/floor_info`;\n let params = new HttpParams();\n params = params.set(\"name\", this.floorName);\n params = params.set(\"no\", this.floorNumber.toString());\n params = params.set(\"site_id\", this.site.id);\n this.httpClient\n .post(postFloorUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"フロア情報の登録に失敗しました。\");\n }\n }\n );\n }\n });\n }\n\n checkIfFormDirty() {\n let hasNameChanged = false;\n\n if (\n this.floorName == undefined ||\n this.floorName == null ||\n this.floorName == \"\" ||\n this.floorName == \"未登録\" ||\n this.floorNumber == undefined ||\n this.floorNumber == null\n ) {\n return true;\n }\n\n for (var i = 0; i < this.floorsInfo.length; i++) {\n if (\n this.floorName == this.floorsInfo[i].name ||\n this.floorNumber.toString() == this.floorsInfo[i].no\n ) {\n hasNameChanged = true;\n break;\n }\n }\n\n return hasNameChanged;\n }\n\n changeValue() {\n this.errorFloorNameMsg = \"\";\n this.errorFloorNumberMsg = \"\";\n\n if (\n this.floorName == undefined ||\n this.floorName == null ||\n this.floorName == \"\" ||\n this.floorNumber === undefined ||\n this.floorNumber == null\n ) {\n this.errorFloorNameMsg = \"フロア名と表示順を入力してください\";\n } else if (this.floorName == \"未登録\") {\n this.errorFloorNameMsg = \"フロア名が「未登録」のフロアは登録できません\";\n } else {\n for (var i = 0; i < this.floorsInfo.length; i++) {\n if (this.floorName == this.floorsInfo[i].name) {\n this.errorFloorNameMsg = \"入力したフロア名はすでに存在します\";\n }\n\n if (this.floorNumber.toString() == this.floorsInfo[i].no) {\n this.errorFloorNumberMsg = \"入力した表示順はすでに存在します\";\n }\n\n if (this.errorFloorNameMsg != \"\" && this.errorFloorNumberMsg != \"\") {\n break;\n }\n }\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, OnInit } from \"@angular/core\";\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { FloorConfirmDialogInfo } from \"../entity/floor-confirm-dialog-info\";\nimport { Router } from \"@angular/router\";\nimport { Const } from \"../const/const\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-floor-delete-dialog\",\n templateUrl: \"./floor-delete-dialog.component.html\",\n styleUrls: [\"./floor-delete-dialog.component.scss\"],\n})\nexport class FloorDeleteDialogComponent implements OnInit {\n idToken: string;\n site: LoginUserSite;\n floorInfo: FloorInfo;\n floorsInfo: FloorInfo[];\n\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n //@Inject(MAT_DIALOG_DATA) public floor: FloorInfo,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n public auth: AuthService,\n private router: Router,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.site = this.data.site;\n this.floorsInfo = this.data.floorsInfo;\n this.floorInfo = this.data.floorInfo;\n this.floorsInfo = [];\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n\n // メーター管理削除\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n const messageInfo = new FloorConfirmDialogInfo(\n \"フロア削除\",\n \"フロア情報を削除します。よろしいですか?\"\n );\n const floorConfirmDialogRef = this.confirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"650px\",\n data: messageInfo,\n }\n );\n\n floorConfirmDialogRef.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n const postTenantUrl = `${environment.apiUrl}/floors/floor_info/0/${this.floorInfo.id}`;\n const params = new HttpParams();\n this.httpClient\n .patch(postTenantUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: any) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"フロア削除に失敗しました。\");\n }\n }\n );\n }\n });\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, OnInit, Inject, Input } from \"@angular/core\";\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from \"@angular/material/dialog\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { environment } from \"src/environments/environment\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { Router } from \"@angular/router\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { FloorConfirmDialogInfo } from \"../entity/floor-confirm-dialog-info\";\nimport { Const } from \"../const/const\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-floor-edit-dialog\",\n templateUrl: \"./floor-edit-dialog.component.html\",\n styleUrls: [\"./floor-edit-dialog.component.scss\"],\n})\nexport class FloorEditDialogComponent implements OnInit {\n idToken: string;\n loginUser: LoginUser;\n floorName: string;\n floorNumber: number;\n floorInfo: FloorInfo;\n floorsInfo: FloorInfo[];\n errorFloorNameMsg: string;\n errorFloorNumberMsg: string;\n site: LoginUserSite;\n constructor(\n private router: Router,\n private httpClient: HttpClient,\n public auth: AuthService,\n public dialog: MatDialog,\n public floorConfirmDialog: MatDialog,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.site = this.data.site;\n this.floorInfo = this.data.floorInfo;\n this.floorsInfo = [];\n for (var i = 0; i < this.data.floorsInfo.length; i++) {\n if (this.data.floorsInfo[i].id != this.floorInfo.id) {\n this.floorsInfo.push(this.data.floorsInfo[i]);\n }\n }\n this.floorName = this.floorInfo.name;\n this.floorNumber = Number(this.floorInfo.no);\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n\n const messageInfo = new FloorConfirmDialogInfo(\n \"変更確認\",\n \"情報の変更を反映します。よろしいですか。\"\n );\n const confirmDialog = this.floorConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n // APIコールして登録処理\n const patchFloorUrl = `${environment.apiUrl}/floors/floor_info/1/${this.floorInfo.id}`;\n let params = new HttpParams();\n params = params.set(\"name\", this.floorName);\n params = params.set(\"no\", this.floorNumber.toString());\n params = params.set(\"site_id\", this.floorInfo.site_id);\n this.httpClient\n .patch(patchFloorUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"フロア情報の更新に失敗しました。\");\n }\n }\n );\n }\n });\n }\n\n checkIfFormDirty() {\n let hasNameChanged = false;\n\n if (\n this.floorName == undefined ||\n this.floorName == null ||\n this.floorName == \"\" ||\n this.floorName == \"未登録\" ||\n this.floorNumber == undefined ||\n this.floorNumber == null ||\n (this.floorName == this.floorInfo.name &&\n this.floorNumber.toString() == this.floorInfo.no)\n ) {\n return (hasNameChanged = true);\n }\n\n for (var i = 0; i < this.floorsInfo.length; i++) {\n if (\n this.floorName == this.floorsInfo[i].name ||\n this.floorNumber.toString() == this.floorsInfo[i].no\n ) {\n hasNameChanged = true;\n break;\n }\n }\n\n return hasNameChanged;\n }\n\n changeValue() {\n this.errorFloorNameMsg = \"\";\n this.errorFloorNumberMsg = \"\";\n\n if (\n this.floorName == undefined ||\n this.floorName == null ||\n this.floorName == \"\" ||\n this.floorNumber === undefined ||\n this.floorNumber == null\n ) {\n this.errorFloorNameMsg = \"フロア名と表示順を入力してください\";\n } else if (this.floorName == \"未登録\") {\n this.errorFloorNameMsg = \"フロア名が「未登録」のフロアは登録できません\";\n } else {\n for (var i = 0; i < this.floorsInfo.length; i++) {\n if (this.floorName == this.floorsInfo[i].name) {\n this.errorFloorNameMsg = \"入力したフロア名はすでに存在します\";\n }\n\n if (this.floorNumber.toString() == this.floorsInfo[i].no) {\n this.errorFloorNumberMsg = \"入力した表示順はすでに存在します\";\n }\n\n if (this.errorFloorNameMsg != \"\" && this.errorFloorNumberMsg != \"\") {\n break;\n }\n }\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, LOCALE_ID, OnInit } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { Const } from \"../const/const\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { GetFloorsResponse } from \"../entity/get-floors-response\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { LoginUserSiteCompany } from \"../entity/login-user-site-company\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { FloorAddDialogComponent } from \"../floor-add-dialog/floor-add-dialog.component\";\nimport { FloorDeleteDialogComponent } from \"../floor-delete-dialog/floor-delete-dialog.component\";\nimport { FloorEditDialogComponent } from \"../floor-edit-dialog/floor-edit-dialog.component\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\n\n@Component({\n selector: \"app-floor-management-list\",\n templateUrl: \"./floor-management-list.component.html\",\n styleUrls: [\"./floor-management-list.component.scss\"],\n})\nexport class FloorManagementListComponent implements OnInit {\n selectedSite = new UntypedFormControl();\n loginUser: LoginUser;\n siteArray: LoginUserSite[];\n idToken: string;\n site = new LoginUserSite();\n\n // テーブル生成用\n displayedColumns: string[];\n floorsInfo: FloorInfo[];\n\n // APIのURL\n getLoginUserUrl: string;\n getFloorsUrl: string;\n\n // APIのレスポンス\n getFloorsResponse: GetFloorsResponse;\n\n // フラグ類\n getUserFinished: boolean;\n getFloorFinished: boolean;\n NumberingFlag: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private httpClient: HttpClient,\n private router: Router,\n private route: ActivatedRoute,\n public auth: AuthService,\n public floorDialog: MatDialog\n ) {\n localStorage.setItem(\"path\", router.url);\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser();\n this.siteArray = [];\n\n this.getFloorsResponse = new GetFloorsResponse();\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser();\n } else {\n this.doSetValue();\n }\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n }\n });\n }\n\n doSetValue() {\n this.loginUser = Const.loginUser;\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n if (Const.siteInfo.length > 0) {\n this.siteArray = Const.siteInfo;\n } else {\n this.getAllSiteData();\n }\n } else {\n for (const site of this.loginUser.sites) {\n if (site.id === Const.site_id) {\n this.site = site;\n }\n this.siteArray.push(site);\n }\n }\n this.selectedSite = new UntypedFormControl(Const.site_id);\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.getFloorsUrl = `${environment.apiUrl}/sites/${this.selectedSite.value}/floors`;\n this.doGetFloors();\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n if (site.id === Const.site_id) {\n this.site = siteItem;\n }\n Const.siteInfo.push(siteItem);\n }\n this.siteArray = Const.siteInfo;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"施設情報が取得できませんでした。\");\n }\n }\n );\n }\n\n doGetFloors() {\n this.getFloorFinished = false;\n this.selectedSite.disable();\n this.NumberingFlag = false;\n\n this.httpClient\n .get(this.getFloorsUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetFloorsResponse) => {\n this.floorsInfo = response.result.floors;\n\n this.displayedColumns = [\n \"floorName\",\n \"floorNumber\",\n \"createdBy\",\n \"createdAt\",\n \"updatedBy\",\n \"updatedAt\",\n \"editButton\",\n \"deleteButton\",\n ];\n this.getFloorFinished = true;\n this.selectedSite.enable();\n this.NumberingFlag = true;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"フロア情報が存在しません。\");\n this.floorsInfo = [];\n this.getFloorFinished = true;\n this.selectedSite.enable();\n }\n }\n );\n }\n\n doChangeSite() {\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n\n this.getFloorsUrl = `${environment.apiUrl}/sites/${Const.site_id}/floors`;\n this.doGetFloors();\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0;\n Const.adminUser = Number(Const.loginUser.user_type) === 1;\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\");\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id;\n }\n }\n }\n\n if (Const.site_id === null) {\n alert(\"前回選択した施設が見つかりませんでした。\");\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.doSetValue();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n this.onClickLogout();\n }\n }\n );\n }\n\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n onClickAddFloor() {\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.floorDialog.open(FloorAddDialogComponent, {\n width: \"650px\",\n data: {\n site: this.site,\n floorsInfo: this.floorsInfo,\n },\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // TODO: 最小限の更新になるように要改良\n this.doGetFloors();\n }\n });\n }\n\n onClickFloorEdit(floorInfo: FloorInfo) {\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.floorDialog.open(FloorEditDialogComponent, {\n width: \"650px\",\n data: {\n floorInfo: floorInfo,\n floorsInfo: this.floorsInfo,\n site: this.site,\n },\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // TODO: 最小限の更新になるように要改良\n this.doGetFloors();\n }\n });\n }\n\n onClickFloorDelete(floorInfo: FloorInfo) {\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.floorDialog.open(FloorDeleteDialogComponent, {\n width: \"650px\",\n data: {\n floorInfo: floorInfo,\n floorsInfo: this.floorsInfo,\n site: this.site,\n },\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // TODO: 最小限の更新になるように要改良\n this.doGetFloors();\n }\n });\n }\n\n onNumbering() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n this.getFloorFinished = false;\n this.selectedSite.disable();\n this.NumberingFlag = false;\n // APIコールして登録処理\n const patchNumberingFloorUrl = `${environment.apiUrl}/sites/${this.selectedSite.value}/floors/no`;\n const params = new HttpParams();\n this.httpClient\n .patch(patchNumberingFloorUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n const successMessageInfo = new MessageInfo(\n \"自動採番を行いました\",\n \"\"\n );\n const dialogRef = this.floorDialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: successMessageInfo,\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n this.doGetFloors();\n }\n });\n },\n (err) => {\n this.getFloorFinished = true;\n this.selectedSite.enable();\n this.NumberingFlag = true;\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"自動採番に失敗しました\");\n this.doGetFloors();\n }\n }\n );\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-footer-numbering-confirm-dialog',\n templateUrl: './footer-numbering-confirm-dialog.component.html',\n styleUrls: ['./footer-numbering-confirm-dialog.component.scss']\n})\nexport class FooterConfirmDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public dialogInfo: FooterConfirmDialogComponent\n ) { }\n\n ngOnInit() {\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer-numbering-explain-dialog',\n templateUrl: './footer-numbering-explain-dialog.component.html',\n styleUrls: ['./footer-numbering-explain-dialog.component.scss']\n})\n\nexport class FooterNumberingExplainDialogComponent implements OnInit {\n\n constructor() {}\n\n ngOnInit() {}\n}","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FooterNumberingExplainDialogComponent } from '../footer-numbering-explain-dialog/footer-numbering-explain-dialog.component';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\n\nexport class FooterComponent implements OnInit, OnChanges {\n componentName: string;\n @Input() displayFlag: boolean\n @Output() numberingEvent = new EventEmitter();\n show = false\n\n constructor(\n public explainDialog: MatDialog,\n ) {\n }\n\n ngOnInit() {}\n\n onNumberingEventClick() {\n this.numberingEvent.emit()\n }\n\n ngOnChanges() {\n if (this.show != this.displayFlag) {\n this.show = this.displayFlag\n }\n }\n\n onExplain() {\n const dialogRef = this.explainDialog.open(FooterNumberingExplainDialogComponent, {\n width: '650px',\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AuthService } from '../auth/auth.service';\nimport { Const } from '../const/const'\n\n@Component({\n selector: 'app-log-out-button',\n templateUrl: './log-out-button.component.html',\n styleUrls: ['./log-out-button.component.scss']\n})\nexport class LogOutButtonComponent implements OnInit {\n\n constructor(\n public auth: AuthService\n ) { }\n\n ngOnInit() {\n }\n\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n\n}\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport {\n UntypedFormBuilder,\n UntypedFormControl,\n Validators,\n UntypedFormGroup,\n} from \"@angular/forms\";\nimport { AuthService } from \"./../auth/auth.service\";\nimport { Const } from \"../const/const\";\nimport { environment } from \"src/environments/environment\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { LoginUserSiteCompany } from \"../entity/login-user-site-company\";\nimport { GetAppConstResponse } from \"../entity/get-app-const-response\";\nimport { catchError } from \"rxjs/operators\";\nimport { of } from \"rxjs\";\nimport { AlertMessage } from \"src/constants/messages/alert-message\";\n\n@Component({\n selector: \"app-login\",\n templateUrl: \"./login.component.html\",\n styleUrls: [\"./login.component.scss\"],\n})\nexport class LoginComponent implements OnInit {\n loginForm: UntypedFormGroup;\n getLoginUserUrl: string;\n getAppConstUrl: string;\n idToken: string;\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n infoMessage: string;\n isLoaded = false;\n\n private readonly API_APP_CONSTS_URI =\n \"https://common-api.rakusugikenshin.com/getrakusugiappconstants?env=\";\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private router: Router,\n private auth: AuthService,\n private httpClient: HttpClient\n ) {\n if (localStorage.getItem(\"path\") != null) {\n this.router.navigate([localStorage.getItem(\"path\")]);\n }\n }\n\n ngOnInit() {\n this.loginForm = this.formBuilder.group({\n userId: [\"\", [Validators.required, checkUserId]],\n password: [\"\", [Validators.required]],\n });\n\n // お知らせ取得\n this.setInfoMessage();\n }\n\n onSubmitLogin() {\n if (!navigator.onLine) {\n alert(AlertMessage.NET_ERROR_MESSAGE);\n return;\n }\n this.auth\n .signIn(this.loginForm.value.userId, this.loginForm.value.password)\n .subscribe(\n (response) => {\n this.doGetToken();\n this.auth.loginLogging(\"1\"); // ログイン情報のログを残す\n },\n (error) => {\n if (error.code == \"NotAuthorizedException\") {\n this.updateUserLockStatus(false);\n } else if (error.code == \"UserNotFoundException\") {\n alert(AlertMessage.LOGIN_FAILED_MESSAGE);\n } else {\n console.error(error);\n alert(AlertMessage.UNEXPECTED_ERROR_MESSAGE);\n }\n }\n );\n }\n\n // ユーザーのLockStatus 更新\n updateUserLockStatus(reset: boolean = false) {\n const userID = this.loginForm.value.userId;\n try {\n const url = `${environment.apiUrl}/account_lock/${userID}/${\n reset ? 0 : 1\n }`;\n this.httpClient\n .patch(url, \"\", {\n headers: new HttpHeaders({\n \"x-api-key\": environment.apiKey,\n \"Content-Type\": \"application/json\",\n }),\n })\n .subscribe(\n (response) => {\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n\n const isLocked = jsonObj.result.account_lock.lock_status;\n\n if (isLocked == 1) {\n alert(AlertMessage.ACCOUNT_LOCKED_MESSAGE);\n } else {\n if (!reset) {\n alert(AlertMessage.LOGIN_FAILED_MESSAGE);\n }\n }\n },\n (error) => {\n if (error.status === 404) {\n alert(AlertMessage.LOGIN_FAILED_MESSAGE);\n return;\n } else {\n alert(AlertMessage.LOGIN_ERROR_MESSAGE);\n }\n }\n );\n } catch (error) {\n alert(AlertMessage.LOGIN_ERROR_MESSAGE);\n }\n }\n\n doGetToken() {\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.doAppConst();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(AlertMessage.SESSION_BREAK_MESSAGE);\n this.onClickLogout();\n }\n });\n }\n\n get userId() {\n return this.loginForm.get(\"userId\");\n }\n\n doAppConst() {\n this.getAppConstUrl = `${this.API_APP_CONSTS_URI}${environment.apiEnv}`;\n\n this.httpClient\n .get(this.getAppConstUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetAppConstResponse) => {\n let maintenanceCheck = response.isMaintenance;\n let maintenanceText = response.maintenanceMessage;\n if (maintenanceCheck) {\n alert(maintenanceText);\n this.onClickLogout();\n return;\n } else {\n this.doGetLoginUser();\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(AlertMessage.ACCOUNT_LOCKED_MESSAGE);\n } else {\n alert(AlertMessage.NOTFOUND_ACCOUNT_INFO_MESSAGE);\n }\n }\n );\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.site_id = response.result.login_user.sites[0].id;\n Const.mjitUser = Number(response.result.login_user.user_type) === 0;\n if (Const.mjitUser) {\n this.getAllSiteData();\n }\n Const.adminUser = Number(response.result.login_user.user_type) === 1;\n\n this.updateUserLockStatus(true);\n\n switch (Number(Const.loginUser.user_type)) {\n case this.userTypeSysAdmin:\n localStorage.setItem(\"siteId\", Const.site_id);\n this.router.navigate([\"company-management\"]);\n break;\n case this.userTypeAdmin:\n this.router.navigate([\"site-select\"]);\n break;\n case this.userTypeUser:\n this.router.navigate([\"site-select\"]);\n break;\n default:\n alert(AlertMessage.NOTFOUND_ACCOUNT_INFO_MESSAGE);\n this.onClickLogout();\n break;\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(AlertMessage.ACCOUNT_LOCKED_MESSAGE);\n } else {\n alert(AlertMessage.NOTFOUND_ACCOUNT_INFO_MESSAGE);\n }\n }\n );\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n },\n () => {\n alert(AlertMessage.NOTFOUND_SITE_INFO_MESSAGE);\n }\n );\n }\n\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n /**\n * S3からログイン画面用のお知らせを取得し、設定する\n */\n setInfoMessage() {\n try {\n const url = `${environment.apiUrl}/before_login/json`;\n\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n \"x-api-key\": environment.apiKey,\n \"Content-Type\": \"application/json\",\n }),\n })\n .pipe(\n catchError((error) => {\n console.log(\"ログイン画面メッセージが取得できませんでした。\");\n console.log(error);\n this.isLoaded = true;\n return of(error);\n })\n )\n .subscribe((response) => {\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n this.infoMessage = jsonObj[\"result\"][\"json\"][\"infoMessage\"];\n this.isLoaded = true;\n });\n } catch (error) {\n console.log(\"ログイン画面メッセージが取得できませんでした。\");\n console.log(error);\n this.infoMessage = \"\";\n this.isLoaded = true;\n }\n }\n}\n\n// 半角英数字,+,_,-,@でなければfalseを返すバリデーションチェック\nfunction checkUserId(formControl: UntypedFormControl) {\n const val = formControl.value;\n const REGPATTERN = /^[a-zA-Z0-9.\\+_\\-\\@]+?$/;\n const count = val.split(\"@\").length - 1;\n if (REGPATTERN.test(val) && count <= 1) {\n return null;\n } else {\n return { checkUserId: { valid: false } };\n }\n}\n","import { Component, OnInit, Inject, LOCALE_ID } from \"@angular/core\";\nimport { formatDate } from \"@angular/common\";\nimport { ActivatedRoute, Router, ParamMap } from \"@angular/router\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { environment } from \"src/environments/environment\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { TenantRow } from \"../entity/tenant-row\";\nimport { GetTenantsResponse } from \"../entity/get-tenants-response\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { TenantEditDialogComponent } from \"../tenant-edit-dialog/tenant-edit-dialog.component\";\nimport { TenantDeleteDialogComponent } from \"../tenant-delete-dialog/tenant-delete-dialog.component\";\nimport { TenantMakeDialogComponent } from \"../tenant-make-dialog/tenant-make-dialog.component\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { GetAllTenantsTenant } from \"../entity/get-all-tenants-tenant\";\nimport { GetAllTenantsResponse } from \"../entity/get-all-tenants-response\";\nimport { ToTenantMakeObject } from \"../entity/to-tenant-make-object\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { Const } from \"../const/const\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { LoginUserSiteCompany } from \"../entity/login-user-site-company\";\n\n@Component({\n selector: \"app-master-edit\",\n templateUrl: \"./master-edit.component.html\",\n styleUrls: [\"./master-edit.component.scss\"],\n})\nexport class MasterEditComponent implements OnInit {\n selectedSite = new UntypedFormControl();\n selectedMonth = new UntypedFormControl(\n formatDate(new Date(), \"yyyyMM\", this.locale)\n );\n loginUser: LoginUser;\n getLoginUserUrl: string;\n getLoginUserResponse: GetLoginUserResponse;\n getTenantDataUrl: string;\n monthArray: string[];\n siteArray: LoginUserSite[];\n idToken: string;\n site = new LoginUserSite();\n\n allTenantsList: GetAllTenantsTenant[];\n getAllTenantsUrl: string;\n\n // テーブル生成用\n displayedColumns: string[];\n reportPartitions: GetTenantsPartition[];\n tenantData: TenantRow[];\n\n // フラグ類\n getUserFinished: boolean;\n getTenantFinished: boolean;\n showMakeButtonFlag: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n\n constructor(\n private router: Router,\n private httpClient: HttpClient,\n public auth: AuthService,\n public tenantEditDialog: MatDialog,\n private route: ActivatedRoute,\n @Inject(LOCALE_ID) private locale: string\n ) {\n localStorage.setItem(\"path\", router.url);\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser();\n this.siteArray = [];\n this.tenantData = [];\n this.allTenantsList = [];\n this.getTenantFinished = false;\n this.selectedMonth.disable();\n this.selectedSite.disable();\n this.monthArray = [];\n this.showMakeButtonFlag = false;\n this.makeMonthArray();\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser();\n } else {\n this.doSetValue();\n }\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n\n doSetValue() {\n this.loginUser = Const.loginUser;\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n if (Const.siteInfo.length > 0) {\n this.siteArray = Const.siteInfo;\n } else {\n this.getAllSiteData();\n }\n } else {\n for (const site of this.loginUser.sites) {\n this.siteArray.push(site);\n }\n }\n this.selectedSite = new UntypedFormControl(Const.site_id);\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.doGetAllTenantList();\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n this.siteArray = Const.siteInfo;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"施設情報が取得できませんでした。\");\n }\n }\n );\n }\n\n // 今月の値から2019年9月までの月情報を「yyyymm」形式の文字列の配列にする処理\n makeMonthArray() {\n const dateData = new Date();\n const thisMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n this.monthArray.push(thisMonth);\n const endMonth = new Date(2019, 9, 1);\n for (let a: number; endMonth <= dateData; a++) {\n dateData.setMonth(dateData.getMonth() - 1);\n const formatedMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n this.monthArray.push(formatedMonth);\n }\n }\n\n // 「yyyymm」形式の月情報を受け取って「yyyy年mm月」形式に変換する処理\n monthStringFormat(yearMonth: number) {\n const formatedMonth =\n String(yearMonth).substr(0, 4) +\n \"年\" +\n String(yearMonth).substr(4) +\n \"月\";\n return formatedMonth;\n }\n\n doChangeMonth() {\n this.ngOnInit();\n }\n\n doGetAllTenantList() {\n this.doGetTenantData();\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0;\n Const.adminUser = Number(Const.loginUser.user_type) === 1;\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\");\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id;\n }\n }\n }\n\n if (Const.site_id === null) {\n alert(\"前回選択した施設が見つかりませんでした。\");\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.doSetValue();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.onClickLogout();\n }\n );\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n onClickTenantEdit(tenantRow: TenantRow) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.tenantEditDialog.open(TenantEditDialogComponent, {\n width: \"650px\",\n data: { tenantRow, site: this.site },\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // 最小限の更新になるように要改良\n this.ngOnInit();\n }\n });\n console.log(tenantRow);\n }\n\n // 施設選択\n doChangeSite() {\n this.getTenantFinished = false;\n this.selectedMonth.disable();\n this.selectedSite.disable();\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n this.showMakeButtonFlag = false;\n this.doGetAllTenantList();\n this.allTenantsList = [];\n }\n\n onClickTenantDelete(tenantRow: TenantRow) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.tenantEditDialog.open(TenantDeleteDialogComponent, {\n width: \"650px\",\n data: { tenantRow, site: this.site },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result === \"close\") {\n // 最小限の更新になるように要改良\n this.ngOnInit();\n }\n });\n }\n\n onClickTenantMake(tenantData: TenantRow[]) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const allTenantObject = new ToTenantMakeObject(\n this.allTenantsList,\n tenantData\n );\n const dialogRef = this.tenantEditDialog.open(TenantMakeDialogComponent, {\n width: \"800px\",\n data: { allTenantObject, site: this.site },\n });\n dialogRef.afterClosed().subscribe((makeResult) => {\n if (makeResult === \"close\") {\n // 最小限の更新になるように要改良\n this.ngOnInit();\n }\n });\n }\n\n doGetTenantData() {\n this.getTenantDataUrl = `${environment.apiUrl}/sites/${Const.site_id}/partitions/tenants/${this.selectedMonth.value}`;\n this.httpClient\n .get(this.getTenantDataUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetTenantsResponse) => {\n this.reportPartitions = response.result.site.partitions;\n this.makeRowData(this.reportPartitions);\n for (const partition of this.reportPartitions) {\n for (const partitionsTenants of partition.partitions_tenants) {\n if (partitionsTenants.tenant_log) {\n const tenantLog = partitionsTenants.tenant_log;\n const tenant: GetAllTenantsTenant = {\n id: tenantLog.tenant_id,\n name: tenantLog.name,\n note: tenantLog.note,\n created_at: tenantLog.tenant_created_at,\n updated_at: tenantLog.tenant_updated_at,\n updated_by: null,\n };\n this.allTenantsList.push(tenant);\n }\n }\n }\n this.allTenantsList = this.removeDuplicates(\n this.allTenantsList,\n \"id\"\n );\n this.displayedColumns = [\n \"partition\",\n \"name\",\n \"isCardDisplay\",\n \"contractedAt\",\n \"note\",\n \"cancelledAt\",\n \"updatedBy\",\n \"updatedAt\",\n \"editButton\",\n \"deleteButton\",\n ];\n this.getTenantFinished = true;\n this.selectedMonth.enable();\n this.selectedSite.enable();\n },\n () => {\n this.getTenantFinished = true;\n this.selectedMonth.enable();\n this.selectedSite.enable();\n alert(\"テナントデータが取得できませんでした。\");\n }\n );\n }\n removeDuplicates(list: T[], prop: keyof T): T[] {\n const seen = new Set();\n return list.filter((obj) => {\n const value = obj[prop];\n if (seen.has(value)) {\n return false;\n }\n seen.add(value);\n return true;\n });\n }\n makeRowData(partitionArray: GetTenantsPartition[]) {\n this.tenantData.splice(0);\n if (partitionArray.length === 0) {\n this.showMakeButtonFlag = false;\n alert(\"区画情報が存在しません。\\n区画を登録してください\");\n return;\n } else {\n this.showMakeButtonFlag = true;\n }\n for (const partition of partitionArray) {\n partition.partitions_tenants.reverse();\n // テナント未契約の区画はelseに\n if (partition.partitions_tenants.length > 0) {\n for (const partitionsTenant of partition.partitions_tenants) {\n if (partitionsTenant.tenant_log) {\n const tenantRow = new TenantRow();\n // tenantRow.tenantId = partitionsTenant.tenant.id;\n tenantRow.tenantId = partitionsTenant.tenant_log.tenant_id;\n if (partition.name) {\n tenantRow.partition = partition.name;\n }\n // if (partitionsTenant.tenant.name) {\n if (partitionsTenant.tenant_log.name) {\n // tenantRow.name = partitionsTenant.tenant.name;\n tenantRow.name = partitionsTenant.tenant_log.name;\n }\n // if (partitionsTenant.tenant.note) {\n if (partitionsTenant.tenant_log.note) {\n // tenantRow.note = partitionsTenant.tenant.note;\n tenantRow.note = partitionsTenant.tenant_log.note;\n }\n if (partitionsTenant.tenant.initial_value) {\n tenantRow.initialValue = partitionsTenant.tenant.initial_value;\n }\n if (partitionsTenant.tenant.closed_value) {\n tenantRow.closedValue = partitionsTenant.tenant.closed_value;\n }\n if (partitionsTenant.contracted_at) {\n tenantRow.contractedAt = this.changeDateFormat(\n partitionsTenant.contracted_at\n );\n }\n if (partitionsTenant.cancelled_at) {\n tenantRow.cancelledAt = partitionsTenant.cancelled_at;\n }\n if (partition.is_card_display) {\n tenantRow.isCardDisplay = partition.is_card_display;\n }\n if (partition.id) {\n tenantRow.partitionId = partition.id;\n }\n if (partitionsTenant.updated_by) {\n tenantRow.updated_by = partitionsTenant.updated_by;\n }\n if (partitionsTenant.tenant.updated_at) {\n tenantRow.updatedAt = partitionsTenant.tenant.updated_at;\n }\n if (\n Number(\n formatDate(tenantRow.contractedAt, \"yyyyMM\", this.locale)\n ) <= Number(this.selectedMonth.value)\n ) {\n if (!tenantRow.cancelledAt) {\n this.tenantData.push(tenantRow);\n } else {\n if (\n Number(\n formatDate(tenantRow.cancelledAt, \"yyyyMM\", this.locale)\n ) >= Number(this.selectedMonth.value)\n ) {\n this.tenantData.push(tenantRow);\n }\n }\n }\n }\n }\n }\n }\n }\n\n changeDateFormat(date: string) {\n const changedDate = new Date(date + \"Z\").toLocaleString();\n return changedDate;\n }\n\n // 「yyyy-mm-dd hh:mm:ss」形式に変換する かつ +9時間(日本時間にする)\n timeStringFormat(time: number) {\n let newD = new Date(new Date(time).setHours(new Date(time).getHours() + 9));\n\n const yyyy = String(newD.getFullYear());\n const mm = String(newD.getMonth() + 1).padStart(2, \"0\");\n const dd = String(newD.getDate()).padStart(2, \"0\");\n const hh = String(newD.getHours()).padStart(2, \"0\");\n const ms = String(newD.getMinutes()).padStart(2, \"0\");\n const s = String(newD.getSeconds()).padStart(2, \"0\");\n\n return `${yyyy}-${mm}-${dd} ${hh}:${ms}:${s}`;\n }\n}\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MessageInfo } from '../entity/message-info';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-message-dialog',\n templateUrl: './message-dialog.component.html',\n styleUrls: ['./message-dialog.component.scss']\n})\nexport class MessageDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n private router: Router,\n @Inject(MAT_DIALOG_DATA) public data: MessageInfo\n ) { }\n\n ngOnInit() {\n }\n\n onClickClose(): void {\n this.dialogRef.close('close');\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialog,\n} from \"@angular/material/dialog\";\nimport { Component, Inject, Input, LOCALE_ID, OnInit } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { ExistingTenant } from \"../entity/existing-tenant\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { MeterType } from \"../entity/get-meter-type\";\nimport { GetPartitionsResponse } from \"../entity/get-partitions-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { SelectedPartition } from \"../entity/selected-partition\";\nimport { Unit } from \"../entity/unit\";\nimport { MeterConfirmDialogInfo } from \"../entity/meter-confirm-dialog-info\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { Const } from \"../const/const\";\nimport { DateAdapter, NativeDateAdapter } from \"@angular/material/core\";\nimport { formatDate } from \"@angular/common\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-meter-add-dialog\",\n templateUrl: \"./meter-add-dialog.component.html\",\n styleUrls: [\"./meter-add-dialog.component.scss\"],\n})\nexport class MeterAddDialogComponent implements OnInit {\n idToken: string;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n getPartitionsListUrl: string;\n getPartitionsResponse: GetPartitionsResponse;\n site: LoginUserSite;\n\n partitionList: GetTenantsPartition[] = [];\n currentPartition: GetTenantsPartition;\n selectedTenantName: string = \"\";\n\n selectedPartition = new UntypedFormControl();\n\n tenantList: ExistingTenant[];\n selectedTenant = new UntypedFormControl();\n\n meterTypeList: MeterType[];\n selectedType = new UntypedFormControl();\n\n meterUnitList: Unit[];\n isUseAngle: boolean = false;\n\n meterList: MeterInfo[];\n\n meterName: string;\n meterNumber: number;\n meterLabel: string;\n meterInitialValue: number;\n maxValue: number; // 小数点あり\n maxValueDisplay: number; // 小数点ない\n minValue: number; // 小数点あり\n minValueDisplay: number; // 小数点ない\n numberOfDigit: number;\n decimalPointPosition: number;\n isShowActualValue: boolean = false;\n\n meterIsReViewFlag: boolean;\n meterAIReadFlag: boolean;\n meterExpirationDate: string;\n\n isMakingNewMeterInfo = true;\n errorMessage: string;\n hasError: boolean = false;\n isFormReady: boolean = false;\n\n selectedMeterName = new UntypedFormControl();\n meterNameList: string[];\n mainMeterName: string;\n subMeterName: string;\n\n minDate: Date;\n\n meterValueInterval: number = 1;\n\n isExistNumber: boolean = false;\n isValidNumber: boolean = false;\n meterLabelList: string[];\n\n constructor(\n private httpClient: HttpClient,\n public dialogRef: MatDialogRef,\n public meterConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n\n @Inject(MAT_DIALOG_DATA) public data,\n dateAdapter: DateAdapter,\n @Inject(LOCALE_ID) private locale: string\n ) {\n dateAdapter.setLocale(\"ja\");\n }\n\n ngOnInit() {\n this.site = this.data.site;\n this.tenantList = [];\n this.meterTypeList = [];\n this.meterUnitList = [];\n this.partitionList = this.data.partitionTenants;\n this.meterList = this.data.metersInfo;\n this.meterLabelList = [];\n\n this.meterLabelList = this.meterList.map((meter) => {\n return meter.label;\n });\n\n this.meterIsReViewFlag = false;\n this.meterAIReadFlag = false;\n\n this.hasError = false;\n this.errorMessage = \"\";\n this.minDate = new Date();\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n this.setMeterNameList();\n }\n\n loadMeterTypes() {\n const url = `${environment.apiUrl}/meter_types/meter_types_info_all`;\n this.meterTypeList = [];\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.metertypes;\n\n this.meterTypeList = data;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"メータータイプが取得できませんでした。\");\n }\n }\n );\n }\n\n loadMeterUnit() {\n this.meterUnitList = [];\n const url = `${environment.apiUrl}/units/units_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.units;\n this.meterUnitList = data;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"単位情報が取得できませんでした。\");\n }\n }\n );\n }\n\n // ログインユーザーの取得処理(区画一覧の取得に施設IDが必要)\n // リファクタで呼び出し元(レポート画面)から施設IDは連携してくるようにする\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n this.loadMeterTypes();\n this.loadMeterUnit();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\n \"ログイン名が取得できませんでした。再度ログインしてください。\"\n );\n this.dialogRef.close(\"failed\");\n }\n this.onClickLogout();\n }\n );\n }\n\n onChangePartition() {\n this.currentPartition = this.partitionList.filter(\n (item) => item.id == this.selectedPartition.value\n )[0];\n this.setMeterNameList();\n let tenants = this.currentPartition.partitions_tenants;\n if (tenants.length > 0) {\n this.selectedTenantName = tenants[0].tenant_log.name;\n } else {\n this.selectedTenantName = \"未登録\";\n }\n }\n\n onChangeMeterType() {\n let useAngleTypeId = this.meterTypeList.filter(\n (type) => type.name === \"アナログ(針)\"\n )[0].id;\n this.isUseAngle = this.selectedType.value == useAngleTypeId;\n this.minValue = 0;\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 || this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n this.isShowActualValue = false;\n if (this.isUseAngle) {\n this.decimalPointPosition = 0;\n this.numberOfDigit = 0;\n } else {\n this.isShowActualValue =\n this.decimalPointPosition !== undefined &&\n this.numberOfDigit !== undefined;\n if (this.decimalPointPosition != undefined) {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** this.decimalPointPosition;\n }\n }\n }\n\n onChangeMeterLabel() {\n this.errorMessage = \"\";\n if (this.meterLabel == undefined || this.meterLabel == null) {\n return;\n }\n\n if (this.meterLabel.indexOf(\" \") != -1) {\n this.meterLabel = String(this.meterLabel).trim();\n } else if (this.meterLabel.indexOf(\" \") != -1) {\n this.meterLabel = String(this.meterLabel).trim();\n }\n\n this.isExistNumber = false;\n if (this.meterLabelList.indexOf(this.meterLabel) > -1) {\n this.isExistNumber = true;\n }\n this.isValidNumber = false;\n if (\n this.meterLabel === undefined ||\n this.meterLabel === null ||\n this.meterLabel === \"\"\n ) {\n this.isValidNumber = true;\n }\n }\n\n onChangeSubMeterName() {\n this.errorMessage = \"\";\n if (this.subMeterName == undefined || this.subMeterName == null) {\n return;\n }\n\n if (this.subMeterName.indexOf(\" \") != -1) {\n this.subMeterName = String(this.subMeterName).trim();\n } else if (this.subMeterName.indexOf(\" \") != -1) {\n this.subMeterName = String(this.subMeterName).trim();\n }\n\n if (this.subMeterName.indexOf(\"_\") != -1) {\n this.subMeterName = this.subMeterName.replace(/_/g, \"\");\n }\n\n this.changeMeterName();\n }\n\n changeMeterName() {\n this.errorMessage = \"\";\n if (!this.meterNameList.includes(this.selectedMeterName.value)) {\n this.selectedMeterName = new UntypedFormControl();\n this.meterName = null;\n this.hasError = true;\n this.errorMessage =\n \"メーター名称のメーター種類が無効な値です。再度入力してください\";\n return;\n }\n\n if (\n this.selectedMeterName.value != undefined ||\n this.selectedMeterName.value != null\n ) {\n this.hasError = false;\n if (\n this.subMeterName == undefined ||\n this.subMeterName == \"\" ||\n this.subMeterName == null\n ) {\n this.meterName = this.selectedMeterName.value;\n } else {\n this.meterName = this.subMeterName + \"_\" + this.selectedMeterName.value;\n }\n } else {\n this.hasError = true;\n this.errorMessage = \"メーター名称のメーター種類を入力してください\";\n }\n }\n\n setMeterNameList() {\n this.errorMessage = \"\";\n this.meterNameList = [\"電灯\", \"動力\", \"水道\", \"ガス\"];\n\n if (this.meterName != undefined) {\n this.changeMeterName();\n }\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n // メーター管理登録\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n // 入力チェック\n const errorMessage = this.checkValue();\n\n if (errorMessage.length !== 0) {\n // エラーメッセージを表示して終了\n const errorMessageInfo = new MessageInfo(errorMessage, \"\");\n const dialogRef = this.dialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: errorMessageInfo,\n });\n } else {\n const messageInfo = new MeterConfirmDialogInfo(\n \"新規登録確認\",\n \"メーターを新規登録します。よろしいですか。\"\n );\n const confirmDialog = this.meterConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n // APIコールして登録処理\n const postTenantUrl = `${environment.apiUrl}/meters/meters_info`;\n let params = new HttpParams();\n params = params.set(\"no\", this.meterNumber.toString());\n params = params.set(\"name\", this.meterName);\n params = params.set(\"label\", this.meterLabel);\n params = params.set(\"partition_id\", this.selectedPartition.value);\n params = params.set(\"meter_type_id\", this.selectedType.value);\n params = params.set(\"analysis_flg\", \"1\");\n let tmp = \"\";\n if (\n this.selectedMeterName.value === \"水道\" ||\n this.selectedMeterName.value === \"ガス\"\n ) {\n for (let unit of this.meterUnitList) {\n if (unit.type === \"㎥\") {\n tmp = unit.id;\n break;\n }\n }\n } else {\n for (let unit of this.meterUnitList) {\n if (unit.type === \"kWh\") {\n tmp = unit.id;\n break;\n }\n }\n }\n params = params.set(\"unit_id\", tmp);\n console.log(tmp);\n if (this.isUseAngle) {\n params = params.set(\"max_angle\", \"0\");\n params = params.set(\"min_angle\", \"0\");\n params = params.set(\"number_of_digits\", \"0\");\n params = params.set(\"decimal_point_position\", \"0\");\n params = params.set(\"min_value\", \"0\");\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n params = params.set(\"max_value\", tmp1.toString());\n } else {\n params = params.set(\"max_angle\", \"0\");\n params = params.set(\"min_angle\", \"0\");\n params = params.set(\n \"number_of_digits\",\n this.numberOfDigit.toString()\n );\n params = params.set(\n \"decimal_point_position\",\n this.decimalPointPosition.toString()\n );\n params = params.set(\"min_value\", \"0\");\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n params = params.set(\n \"max_value\",\n (tmp1 / 10 ** this.decimalPointPosition).toString()\n );\n }\n params = params.set(\n \"initial_value\",\n this.meterInitialValue.toString()\n );\n\n params = params.set(\"is_card_display\", \"1\");\n params = params.set(\n \"is_reviewed\",\n `${this.meterIsReViewFlag ? 1 : 0}`\n );\n params = params.set(\"is_reread\", `${this.meterAIReadFlag ? 1 : 0}`);\n params = params.set(\n \"expiration_date\",\n formatDate(this.meterExpirationDate, \"yyyyMMdd\", this.locale)\n );\n this.httpClient\n .post(postTenantUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"メーター情報の登録に失敗しました。\");\n }\n }\n );\n }\n });\n }\n }\n\n // 未入力項目有無チェック\n checkValue(): string {\n let errorMessage = \"を入力してください。\";\n if (this.selectedPartition.value === null) {\n errorMessage = \"区画\" + errorMessage;\n return errorMessage;\n }\n if (\n this.selectedMeterName.value === undefined ||\n this.selectedMeterName.value === null\n ) {\n errorMessage = \"メーター名称のメーター種類\" + errorMessage;\n return errorMessage;\n }\n if (this.selectedType.value === null) {\n errorMessage = \"メータータイプ名\" + errorMessage;\n return errorMessage;\n }\n if (!this.isUseAngle) {\n if (this.numberOfDigit === undefined || this.numberOfDigit == null) {\n errorMessage = \"整数部分の桁数\" + errorMessage;\n return errorMessage;\n }\n if (\n this.decimalPointPosition === undefined ||\n this.decimalPointPosition == null\n ) {\n errorMessage = \"小数点以下の桁数\" + errorMessage;\n return errorMessage;\n }\n }\n\n if (this.meterInitialValue === undefined) {\n errorMessage = \"初期値\" + errorMessage;\n return errorMessage;\n }\n if (\n this.meterExpirationDate === undefined ||\n this.meterExpirationDate == null\n ) {\n errorMessage = \"有効期限\" + errorMessage;\n return errorMessage;\n }\n\n return \"\";\n }\n\n numberOfDigitchange(value: number) {\n this.isShowActualValue = false;\n if (this.decimalPointPosition == undefined) {\n let tmp1 = 0;\n if (value > 0 && this.decimalPointPosition > 0) {\n let tmp = value + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (value > 0 && this.decimalPointPosition == undefined) {\n let tmp = value;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n } else {\n let tmp1 = 0;\n if (value > 0 && this.decimalPointPosition > 0) {\n let tmp = Number(value) + Number(this.decimalPointPosition);\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (value > 0 && this.decimalPointPosition == 0) {\n let tmp = value;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** this.decimalPointPosition;\n if (this.numberOfDigit != undefined) {\n this.isShowActualValue = true;\n }\n\n this.setDecimalInterval();\n }\n }\n\n decimalPointPositionchange(value: number) {\n this.isShowActualValue = false;\n if (this.decimalPointPosition == undefined) {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n this.decimalPointPosition == undefined\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n this.minValue = 0;\n } else {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (this.numberOfDigit > 0 && this.decimalPointPosition == 0) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** value;\n\n if (this.numberOfDigit != undefined) {\n this.isShowActualValue = true;\n }\n\n this.setDecimalInterval();\n }\n }\n\n checkNumber(value: number) {\n this.hasError = false;\n this.errorMessage = \"\";\n\n if (this.meterNumber === undefined || this.meterNumber == null) {\n this.hasError = true;\n this.errorMessage = \"表示順を入力してください。\";\n return;\n }\n\n for (var i = 0; i < this.meterList.length; i++) {\n if (value == this.meterList[i].no) {\n this.hasError = true;\n this.errorMessage = \"入力した表示順はすでに存在します\";\n break;\n }\n }\n }\n minDateCheck(value: string) {\n this.hasError = false;\n this.errorMessage = \"\";\n\n if (value === null || value === \"\") {\n this.hasError = true;\n this.errorMessage = \"有効期限を入力してください\";\n return;\n }\n\n const today = new Date();\n const strToday = today\n .toISOString()\n .split(\"T\")[0]\n .replace(\"-\", \"\")\n .replace(\"-\", \"\");\n if (formatDate(value, \"yyyyMMdd\", this.locale) < strToday) {\n this.hasError = true;\n this.errorMessage = \"有効期限には本日以降の日付を入力してください\";\n return;\n }\n }\n\n /**\n * @param {number} value 初期値\n */\n initialValuechange(value: number) {\n this.hasError = false;\n this.errorMessage = \"\";\n if (this.maxValue < value) {\n this.hasError = true;\n this.errorMessage = \"初期値は最大検針値を超えることはできません\";\n }\n if (value < this.minValue) {\n this.hasError = true;\n this.errorMessage = \"初期値は最小検針値を下回ることはできません\";\n }\n\n if (this.decimalPointPosition != undefined) {\n const diff =\n value - parseFloat(Number(value).toFixed(this.decimalPointPosition));\n\n if (diff != 0) {\n this.hasError = true;\n this.errorMessage = \"初期値の小数点を正しく入力してください\";\n }\n }\n }\n\n /**\n *\n */\n setDecimalInterval() {\n const interval: number = 0.1;\n\n if (\n this.decimalPointPosition != undefined ||\n this.decimalPointPosition != null\n ) {\n this.meterValueInterval = interval ** this.decimalPointPosition;\n }\n\n if (this.meterInitialValue != undefined) {\n this.initialValuechange(this.meterInitialValue);\n }\n }\n\n checkIfReadyToGo() {\n this.isFormReady =\n this.selectedMeterName.value != undefined &&\n this.selectedMeterName.value != null &&\n this.meterName != undefined &&\n this.meterName != null &&\n this.meterLabel != undefined &&\n this.meterLabel != \"\" &&\n this.meterLabel != null &&\n this.selectedPartition.value != undefined &&\n this.selectedType.valid != undefined &&\n this.meterInitialValue != undefined &&\n this.meterInitialValue != null &&\n this.meterExpirationDate != null;\n\n if (!this.isUseAngle) {\n this.isFormReady =\n this.isFormReady &&\n this.numberOfDigit != undefined &&\n this.decimalPointPosition != undefined &&\n this.numberOfDigit != null &&\n this.decimalPointPosition != null;\n }\n\n return !this.hasError && this.isFormReady && !this.isExistNumber;\n }\n}\n","import { Component, OnInit, Inject, LOCALE_ID } from \"@angular/core\";\nimport { formatDate } from \"@angular/common\";\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { environment } from \"src/environments/environment\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { GetFloorsResponse } from \"../entity/get-floors-response\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { Const } from \"../const/const\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { LoginUserSiteCompany } from \"../entity/login-user-site-company\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { GetTenantsResponse } from \"../entity/get-tenants-response\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { GetReportListResponse } from \"../entity/get-report-list-response\";\nimport { ReportListInfo } from \"../entity/report-list-info\";\nimport { GetReportConfirmedDataResponse } from \"../entity/get-confirmed-report-data-response\";\nimport { MeterCardListConfirmedSevice } from \"./services/meter-card-list-confirmed.sevice\";\nimport { ReportCard } from \"../entity/report-card\";\nimport { MeterCardListPendingService } from \"./services/meter-card-list-pending.service\";\nimport { MeterCardListCommonService } from \"./services/meter-card-list-common.service\";\n\n@Component({\n selector: \"app-meter-card-list\",\n templateUrl: \"./meter-card-list.component.html\",\n styleUrls: [\"./meter-card-list.component.scss\"],\n providers:[MeterCardListConfirmedSevice, MeterCardListPendingService, MeterCardListCommonService] // サービスクラスへのDI\n})\nexport class MeterCardListComponent implements OnInit {\n selectedSite = new UntypedFormControl();\n selectedMonth = new UntypedFormControl(\n formatDate(new Date(), \"yyyyMM\", this.locale)\n );\n\n monthArray: string[];\n siteArray: LoginUserSite[];\n\n // カード表示用のデータ\n reportCards: ReportCard[];\n\n loginUser: LoginUser;\n formControl: UntypedFormGroup;\n nowFloorId: string;\n floorsInfo: FloorInfo[];\n currentFloorName = \"\";\n // タブクリック時に連携されるフロア名とAPI叩く用のフロアIDを紐付ける\n floorsNameIdMap = new Map();\n idToken: string;\n //debug\n isReviewed: Array<{ key: string; value: boolean }>;\n reviewed: boolean;\n\n // レポートリスト表示用\n reportList: ReportListInfo[];\n\n // APIのレスポンス\n private getReportConfirmedDataResponse: GetReportConfirmedDataResponse\n\n // フラグ類\n getUserFinished: boolean;\n getValueDetectionFinished: boolean;\n canEdit: boolean;\n bookMarkFlag: boolean; //ByChen\n mjitUserFlag = false;\n adminUserFlag = false;\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n // 有効切れメーターリスト\n expMeterData: MeterInfo[] = [];\n partitionTenants: GetTenantsPartition[];\n\n //レポートが確定されたかどうか判別できるフラグ\n confirmedReportFlg = false;\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private httpClient: HttpClient,\n private router: Router,\n private route: ActivatedRoute,\n public auth: AuthService,\n // サービスクラス\n private meterCardListConfirmedSevice: MeterCardListConfirmedSevice,\n private meterCardListPendingService: MeterCardListPendingService,\n private meterCardListCommonService: MeterCardListCommonService\n ) {\n localStorage.setItem(\"path\", router.url);\n }\n //Working\n handleisReviewedChanged(\n data: Array<{ key: string; value: boolean }>,\n meter_id: string\n ) {\n const result = data.find((item) => item.key === meter_id);\n this.reviewed = result ? result.value : null;\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser();\n this.siteArray = [];\n this.reportList = [];\n this.floorsNameIdMap = new Map();\n this.floorsInfo = [];\n this.monthArray = [];\n this.getUserFinished = false;\n this.getValueDetectionFinished = false;\n this.selectedMonth.disable();\n this.selectedSite.disable();\n this.canEdit = false;\n this.bookMarkFlag = false;\n this.makeMonthArray();\n this.expMeterData = [];\n this.confirmedReportFlg = false;\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser();\n } else {\n this.doSetValue();\n }\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n }\n });\n }\n\n doSetValue() {\n this.loginUser = Const.loginUser;\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n if (Const.siteInfo.length > 0) {\n this.siteArray = Const.siteInfo;\n } else {\n this.getAllSiteData();\n }\n } else {\n for (const site of Const.loginUser.sites) {\n this.siteArray.push(site);\n }\n }\n this.selectedSite = new UntypedFormControl(Const.site_id);\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.loadMeterData();\n this.doGetFloors();\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n this.siteArray = Const.siteInfo;\n },\n () => {\n alert(\"施設情報が取得できませんでした。\");\n }\n );\n }\n\n // 今月の値から2019年9月までの月情報を「yyyymm」形式の文字列の配列にする処理\n makeMonthArray() {\n const dateData = new Date();\n const thisMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n this.monthArray.push(thisMonth);\n const endMonth = new Date(2019, 9, 1);\n for (let a: number; endMonth <= dateData; a++) {\n dateData.setMonth(dateData.getMonth() - 1);\n const formatedMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n this.monthArray.push(formatedMonth);\n }\n }\n\n // 「yyyymm」形式の月情報を受け取って「yyyy年mm月」形式に変換する処理\n monthStringFormat(yearMonth: number) {\n const formatedMonth =\n String(yearMonth).substr(0, 4) +\n \"年\" +\n String(yearMonth).substr(4) +\n \"月\";\n return formatedMonth;\n }\n\n // 月変更された時の処理\n doChangeMonth() {\n this.createCardDataJob();\n }\n\n // 施設選択\n async doChangeSite() {\n // ローディング表示\n this.getValueDetectionFinished = false;\n this.selectedMonth.disable();\n this.selectedSite.disable();\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n this.loadMeterData();\n // フロア情報取得\n this.doGetFloors();\n this.doGetReportList();\n }\n\n // idトークンとsite_idの情報からフロア情報の取得を行う\n doGetFloors() {\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/floors`;\n this.floorsInfo = [];\n this.currentFloorName = \"\";\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetFloorsResponse) => {\n this.floorsInfo = response.result.floors;\n this.nowFloorId = this.floorsInfo[0].id;\n for (const floor of this.floorsInfo) {\n this.floorsNameIdMap.set(floor.name, floor.id);\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n this.getValueDetectionFinished = true;\n this.selectedMonth.enable();\n this.selectedSite.enable();\n\n // 初期化\n this.reportCards = [];\n alert(\"フロア情報が取得できませんでした。\");\n }\n }\n );\n }\n\n /**\n * カードデータ作成の一連処理\n */\n async createCardDataJob() {\n this.getValueDetectionFinished = false;\n this.selectedMonth.disable();\n this.selectedSite.disable();\n\n try {\n // 初期化\n this.reportCards = [];\n\n // レポートリストの取得\n const reportList = await this.meterCardListCommonService.getReportList(\n this.idToken,\n this.selectedSite.value\n );\n\n // 前月のレポート確定日を特定\n const lastMonthConfirmDate =\n this.meterCardListCommonService.getLastMonthConfirmDate(\n reportList,\n this.selectedMonth.value\n );\n\n if (await this.judgeGetReportData(lastMonthConfirmDate)){\n // レポートデータから作成\n this.reportCards = this.meterCardListConfirmedSevice.createPartitionsArrayForReportData(\n this.getReportConfirmedDataResponse,\n this.nowFloorId\n )\n this.confirmedReportFlg = true;\n } else {\n // 未確定データから作成\n this.reportCards = await this.meterCardListPendingService.createPartitionsArrayForReportData(\n this.idToken,\n this.nowFloorId,\n this.selectedSite.value,\n this.selectedMonth.value,\n lastMonthConfirmDate\n );\n this.confirmedReportFlg = false;\n }\n } catch (error) {\n console.error(error);\n if (error.status == \"404\") {\n alert(\"データが見つかりませんでした。\");\n } else if (error.status == \"401\") {\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n } else {\n alert(\"データが取得できませんでした。\");\n }\n } finally {\n this.getValueDetectionFinished = true;\n this.selectedMonth.enable();\n this.selectedSite.enable();\n }\n }\n\n /**\n * 確定レポートデータから取得するか、未確定データからの取得をするか判定する\n * @param lastMonthConfirmDate(string): 選択した年月の前月確定日\n * @returns レポート取得かどうかの結果: Promise\n * - true:確定レポートデータから取得/false:未確定\n */\n async judgeGetReportData(lastMonthConfirmDate: string): Promise {\n\n // レポートの年月がシステム日付で今月の場合は未確定\n const today = new Date();\n if (this.selectedMonth.value == formatDate(today, \"yyyyMM\", this.locale)) {\n return false;\n }\n\n const url = `${environment.apiUrl}/report_histories/${this.selectedSite.value}/${this.selectedMonth.value}/report_details/${lastMonthConfirmDate}`;\n\n try {\n this.getReportConfirmedDataResponse = await this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .toPromise();\n return true;\n } catch (error) {\n console.error(error);\n\n // 404エラー(確定レポートが見つからない)場合はfalseを返却、それ以外はthrow\n if (error.status == \"404\"){\n return false;\n } else {\n throw error;\n }\n }\n }\n\n // タブがクリックされた時の処理\n // 引数からフロア名取得⇨MapでIDに変換⇨検針値取得API叩く\n doClickTab(MatTagChangevent: any) {\n this.currentFloorName = MatTagChangevent.tab.textLabel;\n const newFloorId = this.floorsNameIdMap.get(MatTagChangevent.tab.textLabel);\n this.nowFloorId = newFloorId;\n\n this.createCardDataJob();\n }\n\n doGetReportList() {\n const url = `${environment.apiUrl}/report_list/${this.selectedSite.value}`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetReportListResponse) => {\n this.reportList = [];\n const reportListData = response.result.report_list;\n for (const oneReportData of reportListData) {\n const reportMonth = Number(oneReportData.report_month);\n let fixedAt = null;\n if (oneReportData.confirmed_report_created_at) {\n fixedAt = String(\n formatDate(\n oneReportData.confirmed_report_created_at,\n \"yyyyMM\",\n this.locale\n )\n );\n }\n const reportInfo = new ReportListInfo(reportMonth, fixedAt, \"\", \"\");\n this.reportList.push(reportInfo);\n }\n this.confirmedReportFlg = false;\n for (const report of this.reportList) {\n if (\n String(report.month) === String(this.selectedMonth.value) &&\n report.fixedTime\n ) {\n this.confirmedReportFlg = true;\n break;\n }\n }\n },\n (err) => {\n console.error(err);\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n // 初期化\n this.reportCards = [];\n alert(\"レポート一覧が取得できませんでした。\");\n }\n }\n );\n }\n\n doGetLoginUser() {\n const url = `${environment.apiUrl}/login_user`;\n\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0;\n Const.adminUser = Number(Const.loginUser.user_type) === 1;\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\");\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id;\n }\n }\n }\n\n if (Const.site_id === null) {\n alert(\"前回選択した施設が見つかりませんでした。\");\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.doSetValue();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.onClickLogout();\n }\n );\n }\n\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n get flagImgUrl() {\n return this.bookMarkFlag\n ? \"../assets/filter_bookmark_on.png\"\n : \"../assets/filter_bookmark_off.png\";\n }\n\n // レポート画面遷移処理\n onClickReport() {\n this.router.navigate([\"meter-report\"]);\n }\n onClickReport_bookmark() {\n this.bookMarkFlag = !this.bookMarkFlag;\n this.doSetValue();\n }\n\n onClickMasterEdit() {\n this.router.navigate([\"master-edit\"]);\n }\n\n onClickCardList() {\n this.router.navigate([\"meter-card-list\"]);\n }\n\n loadMeterData() {\n this.expMeterData = [];\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/meters_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonObj = JSON.parse(JSON.stringify(res));\n if (jsonObj.status == 200) {\n let jsonFloors = jsonObj.result.site.floors;\n let site_id = jsonObj.result.site.id;\n this.getPartitionTenantData();\n for (let index = 0; index < jsonFloors.length; index++) {\n const floor = jsonFloors[index];\n const partitions = floor.partitions;\n for (let index = 0; index < partitions.length; index++) {\n const partition = partitions[index];\n for (let index = 0; index < partition.meters.length; index++) {\n const meterObj = partition.meters[index];\n let meterModel = meterObj as MeterInfo;\n meterModel.partName = partition.name;\n if (\n partition.partitions_tenants !== undefined &&\n partition.partitions_tenants.length > 0\n ) {\n meterModel.tenantName =\n partition.partitions_tenants[0].tenant_log.name;\n meterModel.site_id = site_id;\n meterModel.floor_id = floor.id;\n meterModel.floor_name = floor.name;\n }\n if (\n Number(this.loginUser.user_type) !== this.userTypeSysAdmin\n ) {\n if (\n meterModel.expiration_date !== null &&\n meterModel.expiration_date !== undefined &&\n meterModel.expiration_date !== \"\"\n ) {\n var day = new Date();\n day.setMonth(day.getMonth() + 24);\n const dayOfNextYear = formatDate(\n day,\n \"yyyyMMdd\",\n this.locale\n );\n const expiration = formatDate(\n meterModel.expiration_date,\n \"yyyyMMdd\",\n this.locale\n );\n if (expiration < dayOfNextYear) {\n meterModel.isExpireMeterFlag = true;\n\n let expMeterModel = meterObj as MeterInfo;\n expMeterModel = meterModel;\n this.expMeterData.push(expMeterModel);\n }\n }\n }\n }\n }\n }\n // ソート\n if (this.expMeterData.length > 0) {\n this.expMeterData.sort((n1, n2) => {\n if (n1.expiration_date > n2.expiration_date) {\n return 1;\n }\n if (n1.expiration_date < n2.expiration_date) {\n return -1;\n }\n return 0;\n });\n }\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n }\n }\n );\n }\n\n getPartitionTenantData() {\n const dateData = new Date();\n const thisMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/partitions/tenants/${thisMonth}`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetTenantsResponse) => {\n this.partitionTenants = response.result.site.partitions;\n this.partitionTenants = this.partitionTenants.filter(\n (item) => item.partitions_tenants.length != 0\n );\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n }\n }\n );\n }\n}\n","import { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { Inject, Injectable, LOCALE_ID } from \"@angular/core\";\nimport { GetReportListReportList } from \"src/app/entity/get-report-list-report-list\";\nimport { GetReportListResponse } from \"src/app/entity/get-report-list-response\";\nimport { ReportMeters } from \"src/app/entity/report-meters\";\nimport { ReportPartitions } from \"src/app/entity/report-partitions\";\nimport { ValueDetection } from \"src/app/entity/value-detection\";\nimport { environment } from \"src/environments/environment\";\n\n/**\n * サービスクラスの共通処理\n */\n@Injectable()\nexport class MeterCardListCommonService {\n constructor(\n private httpClient: HttpClient,\n @Inject(LOCALE_ID) private locale: string\n ){\n\n }\n\n /**\n * カード表示用データの対象かどうかのチェック\n * @param partition(ReportPartitions): API結果のpartitions以下\n * @returns 対象かどうかの結果: boolean\n */\n shouldCreateCardData(partition: ReportPartitions): boolean {\n // メーター情報が1つでもあれば対象\n return partition.meters.length > 0;\n }\n\n /**\n * レポートリストを取得\n * @param apiToken(string): APIトークン\n * @param siteId(string): 現在のSiteID\n */\n async getReportList(apiToken: string, siteId: string): Promise {\n const url = `${environment.apiUrl}/report_list/${siteId}`;\n\n try {\n const response = await this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: apiToken,\n }),\n })\n .toPromise();\n\n return response.result.report_list;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * レポートリストから前月の確定日を取得\n * @param reportList(GetReportListReportList[]): レポートリスト\n * @param selectedMonth(string): 現在の年月(yyyyMM)\n * @returns 前月の確定日: string(yyyyMMdd)\n */\n getLastMonthConfirmDate(\n reportList: GetReportListReportList[],\n selectedMonth: string\n ): string {\n // 選択した年月の前月の日付型変数を用意\n // JSやTSのDateのMonth部分は月ではなく、月に該当するIndex(0始まり)なので−1した後に−1をsetする\n let lastMonthDate = new Date(Number(selectedMonth.substring(0, 4)), Number(selectedMonth.substring(4)) - 1, 1);\n lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);\n\n // 返却値、初期値は選択した年月の前月月初にする\n let result = formatDate(lastMonthDate, \"yyyyMMdd\", this.locale);\n\n //前の月の確定日を抽出\n if (reportList.length > 0) {\n const lastMonthReportInfo = reportList.find(\n (element) => element.report_month == formatDate(lastMonthDate, \"yyyyMM\", this.locale)\n );\n\n if (lastMonthReportInfo) {\n result =\n lastMonthReportInfo.confirmed_report_created_at == null ||\n lastMonthReportInfo.confirmed_report_created_at == undefined\n ? result\n : formatDate(lastMonthReportInfo.confirmed_report_created_at, \"yyyyMMdd\", this.locale);\n }\n }\n return result;\n }\n\n /**\n * 今月確定値のオブジェクトを作成する\n * @param tenantId(string): テナントID\n * @param meter(ReportMeters): メーター\n * @returns 今月確定値: ValueDetection[]\n * - カード表示側では先頭しか表示しないので、1つしか作らなくてOK\n */\n getValueDetections(tenantId: string, meter: ReportMeters): ValueDetection[] {\n let result: ValueDetection[] = [];\n\n // value_detectionsが無ければ空のリストを返却\n if (meter.value_detections.length == 0){\n return [];\n }\n\n // 確定値は降順でソート\n const valueDetections = meter.value_detections;\n valueDetections.sort((a, b) => Number(new Date(b.created_at)) - Number(new Date(a.created_at)));\n\n valueDetections.some(detection => {\n if (detection.tenant_id == tenantId && detection.value_confirmation){\n result.push( new ValueDetection(\n detection.id,\n detection.detected_value,\n detection.picture_url,\n detection.picture_date,\n detection.tenant_id,\n detection.created_at,\n detection.value_confirmation\n ));\n return true;\n } else {\n return false;\n }\n });\n\n return result;\n }\n\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { GetReportConfirmedDataResponse } from \"src/app/entity/get-confirmed-report-data-response\";\nimport { ReportCard } from \"src/app/entity/report-card\";\nimport { MeterCardListCommonService } from \"./meter-card-list-common.service\";\nimport { Meter } from \"src/app/entity/meter\";\nimport { ReportMeters } from \"src/app/entity/report-meters\";\nimport { ReportPartitionsTenant } from \"src/app/entity/report-partitions-tenant\";\nimport { LastMonthValueConfirmation } from \"src/app/entity/last-month-value-confirmation\";\n\n/**\n * 確定レポートからのデータ取得\n */\n@Injectable()\nexport class MeterCardListConfirmedSevice {\n constructor(private meterCardListCommonService: MeterCardListCommonService) {}\n\n /**\n * レポートデータからカードリストのデータを生成する\n * @param apiResponse(GetReportConfirmedDataResponse): APIの結果レスポンス\n * @param floorId(string): 現在のフロアID\n * @returns 作成した区画リスト: ReportCard[]\n */\n createPartitionsArrayForReportData(\n apiResponse: GetReportConfirmedDataResponse,\n floorId: string\n ): ReportCard[] {\n let result: ReportCard[] = [];\n\n const floors = apiResponse.result.confirmed_report.floors;\n\n // 今のフロア情報を取得\n const currentFloor = floors.find((value) => value.id == floorId);\n\n currentFloor.partitions.forEach((partition) => {\n // 対象でなければスキップ\n if (!this.meterCardListCommonService.shouldCreateCardData(partition)) {\n return; // continueする\n }\n\n partition.partitions_tenants.forEach((partitionsTenants) => {\n // テナント情報がなければスキップ\n if (!partitionsTenants.tenant) {\n return;\n }\n\n // 1行分を作成\n const meters = this.createReportCardRow(\n partitionsTenants.tenant.id,\n partition.meters,\n partition.partitions_tenants\n );\n\n const row = new ReportCard();\n row.partition_id = partition.id;\n row.partition_name = partition.name;\n row.tenant_id = partitionsTenants.tenant.id;\n // テナント名はtenant_logsから取得する\n if (partitionsTenants.tenant_log) {\n row.tenant_name = partitionsTenants.tenant_log.name;\n } else {\n row.tenant_name = partitionsTenants.tenant.name;\n }\n row.meters = meters;\n\n result.push(row);\n });\n });\n return result;\n }\n\n /**\n * カード表示用データのメーター部分を作成する\n * @param tenantId(string): テナントID\n * @param meters(ReportMeters[]): メーターリスト\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n * @returns カード表示用データのメーター部分: Meter[]\n */\n private createReportCardRow(\n tenantId: string,\n meters: ReportMeters[],\n partitionsTenants: ReportPartitionsTenant[]\n ): Meter[] {\n let result: Meter[] = [];\n\n meters.forEach((meter) => {\n // 前月確定値\n const lastMonthValueConfirmation = this.getLastMonthValueConfirmation(\n tenantId,\n meter\n );\n\n // 今月確定値\n const valueDetections =\n this.meterCardListCommonService.getValueDetections(tenantId, meter);\n\n result.push(\n new Meter(\n meter.id,\n meter.name,\n meter.label,\n meter.number_of_digits,\n meter.decimal_point_position.toString(),\n \"\", // 確定レポートの場合、解約値は関係なくデータがあるかないかになる。\n meter.is_reviewed == \"1\",\n meter.created_at,\n meter.updated_at,\n meter.unit,\n lastMonthValueConfirmation,\n valueDetections\n )\n );\n });\n\n return result;\n }\n\n /**\n * 前月確定値のデータ作成\n * @param tenantId(string): 対象のテナントID\n * @param meter(ReportMeters): 対象のメーター\n * @retrun 前回確定値: LastMonthValueConfirmation\n */\n private getLastMonthValueConfirmation(\n tenantId: string,\n meter: ReportMeters\n ): LastMonthValueConfirmation {\n let result: LastMonthValueConfirmation;\n\n // 前月確定値は降順でソート\n const lastMonthValueDetections = meter.last_month_value_detections;\n lastMonthValueDetections.sort(\n (a, b) => Number(new Date(b.created_at)) - Number(new Date(a.created_at))\n );\n\n lastMonthValueDetections.some((detection) => {\n if (detection.tenant_id == tenantId && detection.value_confirmation) {\n result = new LastMonthValueConfirmation(\n detection.value_confirmation.id,\n detection.value_confirmation.confirmed_value,\n detection.value_confirmation.confirmation_channel,\n detection.value_confirmation.created_at\n );\n return true;\n } else {\n return false;\n }\n });\n\n return result;\n }\n}\n","import { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { Inject, Injectable, LOCALE_ID } from \"@angular/core\";\nimport { GetReportDataResponse } from \"src/app/entity/get-report-data-response\";\nimport { ReportCard } from \"src/app/entity/report-card\";\nimport { ReportSite } from \"src/app/entity/report-site\";\nimport { environment } from \"src/environments/environment\";\nimport { MeterCardListCommonService } from \"./meter-card-list-common.service\";\nimport { ReportPartitionsTenant } from \"src/app/entity/report-partitions-tenant\";\nimport { ReportTenant } from \"src/app/entity/report-tenant\";\nimport { Meter } from \"src/app/entity/meter\";\nimport { ReportMeters } from \"src/app/entity/report-meters\";\nimport { LastMonthValueConfirmation } from \"src/app/entity/last-month-value-confirmation\";\n\n/**\n * レポート未確定時のデータ取得クラス\n */\n@Injectable()\nexport class MeterCardListPendingService {\n constructor(\n private httpClient: HttpClient,\n private meterCardListCommonService: MeterCardListCommonService,\n @Inject(LOCALE_ID) private locale: string\n ) {}\n\n /**\n * 新規レポートデータからカード表示データを作成する\n * @param apiToken(string): APIトークン\n * @param floorId(string): 現在のフロアID\n * @param siteId(string): 現在のSiteID\n * @param selectedMonth(string): 現在の年月(yyyyMM)\n * @param lastMonthConfirmDate(string): 前月のレポート確定日\n * @returns 作成した区画リスト: Promise\n */\n async createPartitionsArrayForReportData(\n apiToken: string,\n floorId: string,\n siteId: string,\n selectedMonth: string,\n lastMonthConfirmDate: string\n ): Promise {\n let result: ReportCard[] = [];\n\n try {\n // APIのコール\n const reportSite = await this.getReportData(\n apiToken,\n siteId,\n selectedMonth,\n lastMonthConfirmDate\n );\n\n // 現在のフロア情報を取得\n const currentFloor = reportSite.floors.find(\n (value) => value.id == floorId\n );\n\n currentFloor.partitions.forEach((partition) => {\n // 対象でなければスキップ\n if (!this.meterCardListCommonService.shouldCreateCardData(partition)) {\n return; // continueする\n }\n\n partition.partitions_tenants.forEach((partitionsTenants) => {\n // 1行分を作成\n const meters = this.createReportCardRow(\n partitionsTenants.tenant.id,\n partition.meters,\n partition.partitions_tenants\n );\n\n const row = new ReportCard();\n row.partition_id = partition.id;\n row.partition_name = partition.name;\n row.tenant_id = partitionsTenants.tenant.id;\n row.tenant_name = partitionsTenants.tenant.name;\n row.meters = meters;\n\n result.push(row);\n });\n });\n } catch (error) {\n throw error;\n }\n return result;\n }\n\n /**\n * APIからデータを取得する\n * @param apiToken(string): APIトークン\n * @param siteId(string): 現在のSiteID\n * @param selectedMonth(string): 現在の年月(yyyyMM)\n * @param lastMonthConfirmDate(string): 前月のレポート確定日(yyyyMMdd)\n * @returns APIの結果のSite以下: Promise\n */\n private async getReportData(\n apiToken: string,\n siteId: string,\n selectedMonth: string,\n lastMonthConfirmDate: string\n ): Promise {\n const url = `${environment.apiUrl}/sites/${siteId}/partitions/meters/${selectedMonth}/value_confirmations/${lastMonthConfirmDate}`;\n\n try {\n const response = await this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: apiToken,\n }),\n })\n .toPromise();\n\n return response.result.site;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * カード表示用データのメーター部分を作成する\n * @param tenantId(string): テナントID\n * @param meters(ReportMeters[]): メーターリスト\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n * @returns カード表示用データのメーター部分: Meter[]\n */\n private createReportCardRow(\n tenantId: string,\n meters: ReportMeters[],\n partitionsTenants: ReportPartitionsTenant[]\n ): Meter[] {\n // metersの型変換\n let result: Meter[] = [];\n\n meters.forEach((meter) => {\n // 先月確定値の作成\n const lastMonthValueConfirmation = this.getLastMonthValueConfirmation(\n meter,\n tenantId,\n partitionsTenants\n );\n\n // 今月確定値の作成\n const valueDetections =\n this.meterCardListCommonService.getValueDetections(tenantId, meter);\n\n // 終了値\n const closedValue = this.judgeClosedValue(\n tenantId,\n meter,\n partitionsTenants\n );\n\n result.push(\n new Meter(\n meter.id,\n meter.name,\n meter.label,\n meter.number_of_digits,\n meter.decimal_point_position.toString(),\n closedValue,\n meter.is_reviewed == \"1\",\n meter.created_at,\n meter.updated_at,\n meter.unit,\n lastMonthValueConfirmation,\n closedValue == \"\" ? valueDetections : [] // 当月確定値は終了値が存在する場合表示させない\n )\n );\n });\n return result;\n }\n\n /**\n * 自分が旧テナントかどうかの判定\n * @param currentTenantId(string): 確認対象のテナントID\n * @param partitionsTenants(ReportPartitionsTenant[]): 元データのpartitions_tenants\n * @returns 旧テナントかどうか: boolean\n */\n private isOldTenant(\n currentTenantId: string,\n partitionsTenants: ReportPartitionsTenant[]\n ): boolean {\n // テナントが1つしかない場合\n if (partitionsTenants.length == 0) {\n return false;\n }\n\n // 作成日時の昇順でソート\n // tenantsの作成日時だと、区画拡張の時に狂うので、partitions_tenantsでソートする\n partitionsTenants.sort(\n (a, b) => Number(new Date(a.contracted_at)) - Number(new Date(b.contracted_at))\n );\n\n // tenantだけを抽出\n let tenants: ReportTenant[] = [];\n partitionsTenants.forEach((partitionsTenant) => {\n tenants.push(partitionsTenant.tenant);\n });\n\n // 現在のテナントIDのインデックスを特定\n const currentTenantIndex = tenants.findIndex(\n (tenant) => tenant.id == currentTenantId\n );\n\n // テナントの数−1であれば(インデックスが最大であれば)false、それ以外はtrue\n return currentTenantIndex != tenants.length - 1;\n }\n\n /**\n * 自分が旧テナントを持っているか\n * @param currentTenantId(string): 確認対象のテナントID\n * @param partitionsTenants(ReportPartitionsTenant[]): 元データのpartitions_tenants\n * @returns 旧テナントを持っているか: boolean\n */\n private hasOldTenant(\n currentTenantId: string,\n partitionsTenants: ReportPartitionsTenant[]\n ): boolean {\n // テナントが1つしかない場合\n if (partitionsTenants.length == 0) {\n return false;\n }\n\n // 作成日時の昇順でソート\n // tenantsの作成日時だと、区画拡張の時に狂うので、partitions_tenantsでソートする\n partitionsTenants.sort(\n (a, b) => Number(new Date(a.contracted_at)) - Number(new Date(b.contracted_at))\n );\n\n // tenantだけを抽出\n let tenants: ReportTenant[] = [];\n partitionsTenants.forEach((partitionsTenant) => {\n tenants.push(partitionsTenant.tenant);\n });\n\n // 現在のテナントIDのインデックスを特定\n const currentTenantIndex = tenants.findIndex(\n (tenant) => tenant.id == currentTenantId\n );\n\n // インデックスが0(一番古いデータ)でなければtrue\n return currentTenantIndex != 0;\n }\n\n /**\n * 旧テナントIDを特定する\n * @param currentTenantId(string): 確認対象のテナントID\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n * @returns 旧テナントID: string\n * - 旧テナントがない、自分が旧テナントな場合などは空文字\n */\n private getOldTenantId(\n currentTenantId: string,\n partitionsTenants: ReportPartitionsTenant[]\n ): string {\n // テナントが1つしかない場合\n if (partitionsTenants.length == 0) {\n return \"\";\n }\n\n // 作成日時の昇順でソート\n // tenantsの作成日時だと、区画拡張の時に狂うので、partitions_tenantsでソートする\n partitionsTenants.sort(\n (a, b) => Number(new Date(a.contracted_at)) - Number(new Date(b.contracted_at))\n );\n\n // 自分が旧テナントの場合\n if (this.isOldTenant(currentTenantId, partitionsTenants)) {\n return \"\";\n }\n\n // tenantだけを抽出\n let tenants: ReportTenant[] = [];\n partitionsTenants.forEach((partitionsTenant) => {\n tenants.push(partitionsTenant.tenant);\n });\n\n // 現在のテナントIDのインデックスを特定\n const currentTenantIndex = tenants.findIndex(\n (tenant) => tenant.id == currentTenantId\n );\n\n // 現在のテナントIDのインデックス-1のテナントIDを返す\n if (currentTenantIndex == 0) {\n return \"\";\n } else {\n return tenants[currentTenantIndex - 1].id;\n }\n }\n\n /**\n * テナント登録時のメーター初期値を取得\n * @param tenantId(string): テナントID\n * @param meters(ReportMeters): メーター\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n * @returns 取得した初期値: string\n * - メーターに適した値があれば取得、なければ空欄\n */\n private getMeterValueAtTenantRegistration(\n tenantId: string,\n meter: ReportMeters,\n partitionsTenants: ReportPartitionsTenant[]\n ): string {\n let result = \"\";\n\n partitionsTenants.some((partitionsTenant) => {\n if (\n partitionsTenant.tenant &&\n partitionsTenant.tenant.initial_value &&\n tenantId == partitionsTenant.tenant.id\n ) {\n // JSONにパース\n const initialValues = JSON.parse(partitionsTenant.tenant.initial_value);\n const initialTenantMeterInfo = initialValues.find(\n (value) => value.meterLabel == meter.label\n );\n\n // 上記で見つかったらそのメーター値を返却値とする\n if (initialTenantMeterInfo) {\n result = initialTenantMeterInfo.meterValue;\n return true;\n } else {\n return false;\n }\n }\n });\n\n return result;\n }\n\n /**\n * 前月確定値のオブジェクトを作成する\n * 1. 自分が旧テナントでない(isOldTenant=false)&旧テナントを持っている(hasOldTenant=true):*テナント登録時の初期値*\n * 2. 1の条件に当てはまるが、テナント初期値がない(テナントの区画拡張):*旧テナントの当月確定値(=旧テナントの解約時の値)*\n * 3. 上記以外:*前回確定値*\n * 4. 前回確定値がない場合:*メーターの初期値*\n *\n * @param meter(ReportMeters): 対象のメーター\n * @param tenantId(string): 対象のテナントID\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n *\n * @returns 前月確定値情報: LastMonthValueConfirmation\n */\n private getLastMonthValueConfirmation(\n meter: ReportMeters,\n tenantId: string,\n partitionsTenants: ReportPartitionsTenant[]\n ): LastMonthValueConfirmation {\n // 前月確定値は降順でソート\n const lastMonthValueDetections = meter.last_month_value_detections;\n lastMonthValueDetections.sort(\n (a, b) => Number(new Date(b.created_at)) - Number(new Date(a.created_at))\n );\n\n // フラグ設定\n const isOldTenant = this.isOldTenant(tenantId, partitionsTenants);\n const hasOldTenant = this.hasOldTenant(tenantId, partitionsTenants);\n\n // テナント登録時のメーター値\n const tenantInitialValue = this.getMeterValueAtTenantRegistration(\n tenantId,\n meter,\n partitionsTenants\n );\n\n // 返却値\n // 初期値(No.4該当)はメーター初期値 or テナント登録時の初期値で設定(他はダミー)\n let result: LastMonthValueConfirmation;\n if (!isOldTenant && hasOldTenant && tenantInitialValue !== \"\") {\n result = new LastMonthValueConfirmation(\"\", tenantInitialValue, \"\", \"\");\n } else {\n result = new LastMonthValueConfirmation(\"\", meter.initial_value, \"\", \"\");\n }\n\n // 今のテナントIDに合う先月確定値のオブジェクトを作成\n lastMonthValueDetections.some((detection) => {\n // 通常の前回確定値\n if (detection.tenant_id == tenantId && detection.value_confirmation) {\n result = new LastMonthValueConfirmation(\n detection.value_confirmation.id,\n detection.value_confirmation.confirmed_value,\n detection.value_confirmation.confirmation_channel,\n detection.value_confirmation.created_at\n );\n }\n });\n\n // No.1,2に該当する場合は確定値を上書きする\n const oldTenantId = this.getOldTenantId(tenantId, partitionsTenants);\n\n // 自分が旧テナントでない、かつ、旧テナントを持っている\n if (!isOldTenant && hasOldTenant) {\n\n // テナントの初期値が存在する\n if (tenantInitialValue != \"\") {\n // No.1該当\n result = new LastMonthValueConfirmation(\n result.id,\n tenantInitialValue,\n result.confirmation_channel,\n result.created_at\n );\n } else {\n // No.2該当\n // 旧テナントの当月確定値を取得\n const oldTenantValue = this.judgeClosedValue(\n oldTenantId,\n meter,\n partitionsTenants\n );\n result = new LastMonthValueConfirmation(\n result.id,\n oldTenantValue,\n result.confirmation_channel,\n result.created_at\n );\n }\n }\n\n return result;\n }\n\n /**\n * 解約時の検針値を決定する\n * 1. メーターの解約値があればそちらを優先\n * 2. 上記がなければ、該当するテナントの解約時の値を取得\n *\n * @param tenantId(string): テナントID\n * @param meters(ReportMeters): メーター\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n * @returns 判定後の解約時の検針値: string\n * - 解約がなければ空文字\n */\n private judgeClosedValue(\n tenantId: string,\n meter: ReportMeters,\n partitionsTenants: ReportPartitionsTenant[]\n ): string {\n let result = \"\";\n\n // メーター情報にclosed_valueがあればそちらを優先\n if (meter.closed_value) {\n return meter.closed_value;\n }\n\n // 上記でなければ、テナントのclosed_valueを検索\n partitionsTenants.some((partitionsTenant) => {\n if (\n partitionsTenant.tenant &&\n partitionsTenant.tenant.closed_value &&\n tenantId == partitionsTenant.tenant.id\n ) {\n // JSONにパース\n const closedValues = JSON.parse(partitionsTenant.tenant.closed_value);\n const closedTenantMeterInfo = closedValues.find(\n (value) => value.meterLabel == meter.label\n );\n\n // 上記で見つかったらそのメーター値をclosed_valueとする\n if (closedTenantMeterInfo) {\n result = closedTenantMeterInfo.meterValue;\n return true;\n } else {\n return false;\n }\n }\n });\n\n return result;\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\n\n@Component({\n selector: 'app-meter-confirm-dialog',\n templateUrl: './meter-confirm-dialog.component.html',\n styleUrls: ['./meter-confirm-dialog.component.scss']\n})\nexport class MeterConfirmDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public dialogInfo: MeterConfirmDialogInfo\n ) { }\n\n ngOnInit() {\n }\n\n onClickYes() {\n this.dialogRef.close('Yes');\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-meter-csv-batch-dialog',\n templateUrl: './meter-csv-batch-dialog.component.html',\n styleUrls: ['./meter-csv-batch-dialog.component.scss']\n})\n\nexport class MeterCsvBatchDialogComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public importResult: string) { }\n\n ngOnInit() {}\n \n}","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, OnInit } from \"@angular/core\";\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { Const } from \"../const/const\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { MeterConfirmDialogInfo } from \"../entity/meter-confirm-dialog-info\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-meter-delete-dialog\",\n templateUrl: \"./meter-delete-dialog.component.html\",\n styleUrls: [\"./meter-delete-dialog.component.scss\"],\n})\nexport class MeterDeleteDialogComponent implements OnInit {\n idToken: string;\n site: LoginUserSite;\n meter: MeterInfo;\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n //@Inject(MAT_DIALOG_DATA) public meter: MeterInfo,\n //public meter: MeterInfo,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n public auth: AuthService,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.site = this.data.site;\n this.meter = this.data.meter;\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n }\n\n // メーター管理削除\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n const messageInfo = new MeterConfirmDialogInfo(\n \"メーター削除\",\n \"メーター情報を削除します。よろしいですか。\"\n );\n const meterConfirmDialogRef = this.confirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"650px\",\n data: messageInfo,\n }\n );\n\n meterConfirmDialogRef.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n const postTenantUrl = `${environment.apiUrl}/meters/${this.meter.id}/0/meters_info`;\n const params = new HttpParams();\n this.httpClient\n .patch(postTenantUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: any) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"メーター削除に失敗しました。\");\n }\n }\n );\n }\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { AuthService } from '../auth/auth.service';\nimport { MeterInfo } from '../entity/get-meter-info';\n\n@Component({\n selector: 'app-meter-detail-dialog',\n templateUrl: './meter-detail-dialog.component.html',\n styleUrls: ['./meter-detail-dialog.component.scss']\n})\nexport class MeterDetailDialogComponent implements OnInit {\n\n idToken: string;\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public meter: MeterInfo,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n private router: Router,\n public auth: AuthService,\n ) { }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n}\n","import { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, Input, LOCALE_ID, OnInit } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { DateAdapter, NativeDateAdapter } from \"@angular/material/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { Const } from \"../const/const\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { MeterType } from \"../entity/get-meter-type\";\nimport { GetPartitionsResponse } from \"../entity/get-partitions-response\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { MeterConfirmDialogInfo } from \"../entity/meter-confirm-dialog-info\";\nimport { Unit } from \"../entity/unit\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-meter-edit-dialog\",\n templateUrl: \"./meter-edit-dialog.component.html\",\n styleUrls: [\"./meter-edit-dialog.component.scss\"],\n})\nexport class MeterEditDialogComponent implements OnInit {\n site: LoginUserSite;\n idToken: string;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n getPartitionsListUrl: string;\n getPartitionsResponse: GetPartitionsResponse;\n\n partitionTenantList: GetTenantsPartition[];\n currentPartition: GetTenantsPartition;\n selectedPartition = new UntypedFormControl();\n selectedTenantName: string = \"\";\n\n meterTypeList: MeterType[];\n selectedType = new UntypedFormControl();\n\n meterUnitList: Unit[];\n meter: MeterInfo;\n meterList: MeterInfo[];\n\n meterId: string;\n meterNumber: number;\n meterName: string;\n meterLabel: string;\n maxValue: number; // 小数点あり\n maxValueDisplay: number; // 小数点ない\n minValue: number; // 小数点あり\n minValueDisplay: number; // 小数点ない\n numberOfDigit: number;\n decimalPointPosition: number;\n isShowActualValue: boolean = false;\n\n meterIsReViewFlag: boolean;\n meterAIReadFlag: boolean;\n\n meterExpirationDate: string;\n\n hasAnyUpdate: boolean = false;\n errorMessage: string;\n hasError: boolean = false;\n isFormReady: boolean = false;\n isUseAngle: boolean = false;\n\n selectedMeterName = new UntypedFormControl();\n meterNameList: string[];\n subMeterName: string;\n minDate: Date;\n\n meterInitialValue: number;\n\n isExistNumber: boolean = false;\n isValidNumber: boolean = false;\n meterLabelList: string[];\n\n @Input() public partitionTenant: GetTenantsPartition[];\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data,\n private httpClient: HttpClient,\n public dialogRef: MatDialogRef,\n public meterConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n dateAdapter: DateAdapter,\n @Inject(LOCALE_ID) private locale: string\n ) {\n dateAdapter.setLocale(\"ja\");\n }\n\n ngOnInit() {\n this.site = this.data.site;\n this.partitionTenantList = [];\n this.meterTypeList = [];\n this.meterUnitList = [];\n this.meterList = [];\n this.meterLabelList = [];\n\n this.partitionTenantList = this.partitionTenant;\n this.meter = this.data.meter;\n for (var i = 0; i < this.data.metersInfo.length; i++) {\n if (this.meter.id != this.data.metersInfo[i].id) {\n this.meterList.push(this.data.metersInfo[i]);\n }\n }\n\n this.meterLabelList = this.meterList.map((meter) => {\n return meter.label;\n });\n\n this.meterIsReViewFlag = this.meter.is_reviewed;\n this.meterAIReadFlag = this.meter.is_reread;\n this.meterExpirationDate = this.meter.expiration_date;\n\n this.meterNumber = this.meter.no;\n this.meterName = this.meter.name;\n if (this.meter.name.indexOf(\"_\") !== -1) {\n this.selectedMeterName.setValue(\n this.meter.name.substr(this.meter.name.indexOf(\"_\") + 1, 2)\n );\n this.subMeterName = this.meter.name.substr(\n 0,\n this.meter.name.indexOf(\"_\")\n );\n } else {\n this.selectedMeterName.setValue(this.meter.name);\n }\n this.meterLabel = this.meter.label;\n this.maxValue = this.meter.max_value;\n this.minValue = this.meter.min_value;\n this.numberOfDigit = this.meter.number_of_digits;\n this.decimalPointPosition = this.meter.decimal_point_position;\n this.isShowActualValue = this.isUseAngle;\n this.meterInitialValue = this.meter.initial_value;\n\n this.maxValueDisplay = Math.round(\n this.maxValue * 10 ** this.decimalPointPosition\n );\n this.minValueDisplay = Math.round(\n this.minValue * 10 ** this.decimalPointPosition\n );\n\n this.selectedPartition = new UntypedFormControl(\n this.partitionTenantList[0]\n );\n this.selectedPartition.setValue(this.meter.partition_id);\n if (this.meter.cancelled_at) {\n this.selectedTenantName = \"(解約済みテナント)\";\n } else {\n this.selectedTenantName = this.meter.tenantName;\n }\n\n this.currentPartition = this.partitionTenantList.filter(\n (item) => item.id == this.selectedPartition.value\n )[0];\n this.setMeterNameList();\n\n this.minDate = new Date();\n\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n }\n\n // ログインユーザーの取得処理(区画一覧の取得に施設IDが必要)\n // リファクタで呼び出し元(レポート画面)から施設IDは連携してくるようにする\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n\n this.loadMeterTypes();\n this.loadMeterUnit();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\n \"ログイン名が取得できませんでした。再度ログインしてください。\"\n );\n this.dialogRef.close(\"failed\");\n }\n this.onClickLogout();\n }\n );\n }\n\n loadMeterTypes() {\n const url = `${environment.apiUrl}/meter_types/meter_types_info_all`;\n this.meterTypeList = [];\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.metertypes;\n\n this.meterTypeList = data;\n this.selectedType.setValue(this.meter.meter_type_id);\n this.onChangeMeterType();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n this.onClickLogout();\n } else {\n alert(\"メータータイプが取得できませんでした。\");\n }\n }\n );\n }\n\n loadMeterUnit() {\n this.meterUnitList = [];\n const url = `${environment.apiUrl}/units/units_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.units;\n this.meterUnitList = data;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"単位情報が取得できませんでした。\");\n }\n }\n );\n }\n\n onChangePartition() {\n this.currentPartition = this.partitionTenantList.filter(\n (item) => item.id == this.selectedPartition.value\n )[0];\n this.setMeterNameList();\n let tenants = this.currentPartition.partitions_tenants;\n if (tenants.length > 0) {\n this.selectedTenantName = tenants[0].tenant_log.name;\n } else {\n this.selectedTenantName = \"未登録\";\n }\n }\n onChangeMeterType() {\n let useAngleTypeId = this.meterTypeList.filter(\n (type) => type.name === \"アナログ(針)\"\n )[0].id;\n this.isUseAngle = this.selectedType.value == useAngleTypeId;\n this.minValue = 0;\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 || this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n this.isShowActualValue = false;\n if (this.isUseAngle) {\n this.decimalPointPosition = 0;\n this.numberOfDigit = 0;\n } else {\n this.isShowActualValue =\n this.decimalPointPosition !== undefined &&\n this.numberOfDigit !== undefined;\n if (this.decimalPointPosition != undefined) {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** this.decimalPointPosition;\n }\n }\n }\n\n onChangeSubMeterName() {\n this.errorMessage = \"\";\n if (this.subMeterName == undefined || this.subMeterName == null) {\n return;\n }\n\n if (this.subMeterName.indexOf(\" \") != -1) {\n this.subMeterName = String(this.subMeterName).trim();\n } else if (this.subMeterName.indexOf(\" \") != -1) {\n this.subMeterName = String(this.subMeterName).trim();\n }\n\n if (this.subMeterName.indexOf(\"_\") != -1) {\n this.subMeterName = this.subMeterName.replace(/_/g, \"\");\n }\n\n this.changeMeterName();\n }\n\n changeMeterName() {\n this.hasError = false;\n if (!this.meterNameList.includes(this.selectedMeterName.value)) {\n this.selectedMeterName = new UntypedFormControl();\n this.meterName = null;\n this.hasError = true;\n this.errorMessage =\n \"メーター名称のメーター種類が無効な値です。再度入力してください\";\n return;\n }\n\n if (\n this.selectedMeterName.value != undefined ||\n this.selectedMeterName.value != null\n ) {\n this.hasError = false;\n if (\n this.subMeterName == undefined ||\n this.subMeterName == \"\" ||\n this.subMeterName == null\n ) {\n this.meterName = this.selectedMeterName.value;\n } else {\n this.meterName = this.subMeterName + \"_\" + this.selectedMeterName.value;\n }\n } else {\n this.hasError = true;\n this.errorMessage = \"メーター名称のメーター種類を入力してください\";\n }\n }\n\n onChangeMeterLabel() {\n this.errorMessage = \"\";\n if (this.meterLabel == undefined || this.meterLabel == null) {\n return;\n }\n\n if (this.meterLabel.indexOf(\" \") != -1) {\n this.meterLabel = String(this.meterLabel).trim();\n } else if (this.meterLabel.indexOf(\" \") != -1) {\n this.meterLabel = String(this.meterLabel).trim();\n }\n\n this.isExistNumber = false;\n if (this.meterLabelList.indexOf(this.meterLabel) > -1) {\n this.isExistNumber = true;\n }\n this.isValidNumber = false;\n\n if (this.meterLabel == \"\") {\n this.meterLabel = undefined;\n }\n\n if (this.meterLabel == undefined || this.meterLabel == null) {\n this.isValidNumber = true;\n }\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n // メーター管理更新\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n\n // 入力チェック\n const errorMessage = this.checkValue();\n if (errorMessage.length !== 0) {\n // エラーメッセージを表示して終了\n const errorMessageInfo = new MessageInfo(errorMessage, \"\");\n const dialogRef = this.dialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: errorMessageInfo,\n });\n } else {\n const messageInfo = new MeterConfirmDialogInfo(\n \"変更確認\",\n \"情報の変更を反映します。よろしいですか。\"\n );\n const confirmDialog = this.meterConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n /*\n no:200\n name:updated test\n partition_id:09a68f60-9d92-4a9c-8adc-f57afc3f102b\n meter_type_id:9cd589c0-088f-4245-8644-adf1b650ba47\n analysis_flg:1\n unit_id:42731a4b-a2f4-45b7-b218-5084549c0882\n max_value:1000\n min_value:0\n max_angle:90\n min_angle:0\n number_of_digits:2\n decimal_point_position:2\n is_card_display:1\n is_reviewed:1\n is_reread:1\n */\n // APIコールして登録処理\n const url = `${environment.apiUrl}/meters/${this.meter.id}/1/meters_info`;\n let params = new HttpParams();\n params = params.set(\"no\", this.meterNumber.toString());\n params = params.set(\"name\", this.meterName);\n params = params.set(\"label\", this.meterLabel);\n params = params.set(\"partition_id\", this.selectedPartition.value);\n params = params.set(\"meter_type_id\", this.selectedType.value);\n params = params.set(\"analysis_flg\", \"1\");\n let tmp = \"\";\n if (\n this.selectedMeterName.value === \"水道\" ||\n this.selectedMeterName.value === \"ガス\"\n ) {\n for (let unit of this.meterUnitList) {\n if (unit.type === \"㎥\") {\n tmp = unit.id;\n break;\n }\n }\n } else {\n for (let unit of this.meterUnitList) {\n if (unit.type === \"kWh\") {\n tmp = unit.id;\n break;\n }\n }\n }\n params = params.set(\"unit_id\", tmp);\n console.log(tmp);\n if (this.isUseAngle) {\n params = params.set(\"max_angle\", \"0\");\n params = params.set(\"min_angle\", \"0\");\n params = params.set(\"number_of_digits\", \"0\");\n params = params.set(\"decimal_point_position\", \"0\");\n params = params.set(\"min_value\", \"0\");\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n params = params.set(\"max_value\", tmp1.toString());\n } else {\n params = params.set(\"max_angle\", \"0\");\n params = params.set(\"min_angle\", \"0\");\n params = params.set(\n \"number_of_digits\",\n this.numberOfDigit.toString()\n );\n params = params.set(\n \"decimal_point_position\",\n this.decimalPointPosition.toString()\n );\n params = params.set(\"min_value\", \"0\");\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n params = params.set(\n \"max_value\",\n (tmp1 / 10 ** this.decimalPointPosition).toString()\n );\n }\n\n params = params.set(\"is_card_display\", \"1\");\n params = params.set(\n \"is_reviewed\",\n `${this.meterIsReViewFlag ? 1 : 0}`\n );\n params = params.set(\"is_reread\", `${this.meterAIReadFlag ? 1 : 0}`);\n params = params.set(\n \"expiration_date\",\n formatDate(this.meterExpirationDate, \"yyyyMMdd\", this.locale)\n );\n this.httpClient\n .patch(url, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"メーター情報の更新に失敗しました。\");\n }\n }\n );\n }\n });\n }\n }\n\n // 未入力項目有無チェック\n checkValue(): string {\n let errorMessage = \"を入力してください。\";\n if (this.selectedPartition.value === null) {\n errorMessage = \"区画\" + errorMessage;\n return errorMessage;\n }\n if (\n this.selectedMeterName.value === undefined ||\n this.selectedMeterName.value === null\n ) {\n errorMessage = \"メーター名称のメーター種類\" + errorMessage;\n return errorMessage;\n }\n if (this.selectedType.value === null) {\n errorMessage = \"メータータイプ名\" + errorMessage;\n return errorMessage;\n }\n if (this.meterLabel === null) {\n errorMessage = \"メーター番号\" + errorMessage;\n return errorMessage;\n }\n\n if (!this.isUseAngle) {\n if (this.numberOfDigit === undefined || this.numberOfDigit == null) {\n errorMessage = \"整数部分の桁数\" + errorMessage;\n return errorMessage;\n }\n if (\n this.decimalPointPosition === undefined ||\n this.decimalPointPosition == null\n ) {\n errorMessage = \"小数点以下の桁数\" + errorMessage;\n return errorMessage;\n }\n if (\n this.meterExpirationDate === undefined ||\n this.meterExpirationDate == null\n ) {\n errorMessage = \"有効期限\" + errorMessage;\n return errorMessage;\n }\n }\n return \"\";\n }\n\n numberOfDigitchange(value: number) {\n this.isShowActualValue = false;\n if (this.decimalPointPosition == undefined) {\n let tmp1 = 0;\n if (value > 0 && this.decimalPointPosition > 0) {\n let tmp = value + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (value > 0 && this.decimalPointPosition == undefined) {\n let tmp = value;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n } else {\n let tmp1 = 0;\n if (value > 0 && this.decimalPointPosition > 0) {\n let tmp = Number(value) + Number(this.decimalPointPosition);\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (value > 0 && this.decimalPointPosition == 0) {\n let tmp = value;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** this.decimalPointPosition;\n if (this.numberOfDigit != undefined) {\n this.isShowActualValue = true;\n }\n }\n }\n\n decimalPointPositionchange(value: number) {\n this.isShowActualValue = false;\n if (this.decimalPointPosition == undefined) {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n this.decimalPointPosition == undefined\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n this.minValue = 0;\n } else {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (this.numberOfDigit > 0 && this.decimalPointPosition == 0) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** value;\n\n if (this.numberOfDigit != undefined) {\n this.isShowActualValue = true;\n }\n }\n }\n\n checkNumber(value: number) {\n this.hasError = false;\n this.errorMessage = \"\";\n\n if (this.meterNumber === undefined || this.meterNumber == null) {\n this.hasError = true;\n this.errorMessage = \"表示順を入力してください\";\n return;\n }\n\n for (var i = 0; i < this.meterList.length; i++) {\n if (value == this.meterList[i].no) {\n this.hasError = true;\n this.errorMessage = \"入力した表示順はすでに存在します\";\n break;\n }\n }\n }\n minDateCheck(value: string) {\n this.hasError = false;\n this.errorMessage = \"\";\n\n if (value === null || value === \"\") {\n this.hasError = true;\n this.errorMessage = \"有効期限を入力してください\";\n return;\n }\n\n const today = new Date();\n const strToday = today\n .toISOString()\n .split(\"T\")[0]\n .replace(\"-\", \"\")\n .replace(\"-\", \"\");\n if (formatDate(value, \"yyyyMMdd\", this.locale) < strToday) {\n this.hasError = true;\n this.errorMessage = \"有効期限には本日以降の日付を入力してください\";\n return;\n }\n }\n\n setMeterNameList() {\n this.errorMessage = \"\";\n this.meterNameList = [\"電灯\", \"動力\", \"水道\", \"ガス\"];\n this.changeMeterName();\n }\n\n checkIfFormDirty() {\n let hasNameChanged = this.meterName != this.meter.name;\n let hasLabelChanged = this.meterLabel != this.meter.label;\n let hasNumberChanged = this.meterNumber != this.meter.no;\n let hasPartionChanged =\n this.selectedPartition.value != this.meter.partition_id;\n let hasMeterTypeChanged =\n this.selectedType.value != this.meter.meter_type_id;\n\n let hasDigitNoChanged = this.numberOfDigit != this.meter.number_of_digits;\n let hasDecimalPointPositionChanged =\n this.decimalPointPosition != this.meter.decimal_point_position;\n\n let hasReViewChanged = this.meterIsReViewFlag != this.meter.is_reviewed;\n let hasAIReadChanged = this.meterAIReadFlag != this.meter.is_reread;\n let hasExpirationDateChanged =\n this.meterExpirationDate != this.meter.expiration_date;\n\n var hasAnyChanged =\n hasNameChanged ||\n hasLabelChanged ||\n hasNumberChanged ||\n hasPartionChanged ||\n hasMeterTypeChanged ||\n hasReViewChanged ||\n hasAIReadChanged ||\n hasExpirationDateChanged;\n\n if (!this.isUseAngle) {\n hasAnyChanged =\n hasAnyChanged || hasDigitNoChanged || hasDecimalPointPositionChanged;\n }\n this.isFormReady =\n this.selectedMeterName.value != undefined &&\n this.selectedMeterName.value != null &&\n this.meterName != undefined &&\n this.meterName != null &&\n this.meterLabel != undefined &&\n this.meterLabel != null &&\n this.meterLabel != \"\" &&\n this.selectedPartition.value != undefined &&\n this.selectedType.valid != undefined &&\n this.meterExpirationDate != undefined &&\n this.meterExpirationDate != null;\n\n if (!this.isUseAngle) {\n this.isFormReady =\n this.isFormReady &&\n this.numberOfDigit != undefined &&\n this.decimalPointPosition != undefined &&\n this.numberOfDigit != null &&\n this.decimalPointPosition != null;\n }\n\n return (\n hasAnyChanged && !this.hasError && this.isFormReady && !this.isExistNumber\n );\n }\n}\n","import { Component, OnInit, Input, LOCALE_ID, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthService } from '../auth/auth.service';\nimport { MeterInfo } from '../entity/get-meter-info';\nimport { MeterExpirationWarningDialogComponent } from '../meter-expiration-warning-dialog/meter-expiration-warning-dialog.component'\nimport { Const } from '../const/const'\n\n@Component({\n selector: 'app-meter-expiration-navigate',\n templateUrl: './meter-expiration-navigate.component.html',\n styleUrls: ['./meter-expiration-navigate.component.scss']\n})\n\nexport class MeterExprationNavigate implements OnInit {\n componentName: string;\n idToken: string;\n allMeterData: MeterInfo[];\n displayFlag: boolean;\n @Input() expMetersInfo: MeterInfo[];\n\n constructor(\n public dialog: MatDialog,\n public auth: AuthService,\n private httpClient: HttpClient,\n @Inject(LOCALE_ID) private locale: string,\n ) {\n }\n\n ngOnInit() {\n \n this.allMeterData = this.expMetersInfo\n if(this.allMeterData.length > 0) {\n this.displayFlag = true\n }\n this.getToken()\n }\n\n getToken() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.onClickLogout()\n }\n }\n )\n }\n\n ngAfterContentChecked() {\n this.displayFlag = false\n this.allMeterData = this.expMetersInfo\n if(this.allMeterData.length > 0) {\n this.displayFlag = true\n }\n }\n\n onClickMeterExpirationWarning() {\n const dialogRef = this.dialog.open(MeterExpirationWarningDialogComponent, {\n width: '1000px',\n data:{metersInfo: this.allMeterData}\n });\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {}\n });\n }\n\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { AuthService } from '../auth/auth.service';\nimport { MeterInfo } from \"../entity/get-meter-info\";\n\n@Component({\n selector: 'app-meter-expiration-warning-dialog',\n templateUrl: './meter-expiration-warning-dialog.component.html',\n styleUrls: ['./meter-expiration-warning-dialog.component.scss']\n})\nexport class MeterExpirationWarningDialogComponent implements OnInit {\n idToken: string;\n allMeterData: MeterInfo[]\n displayedColumns: string[]\n meters: MeterInfo[]\n\n constructor(\n private httpClient: HttpClient,\n public dialogRef: MatDialogRef,\n public meterConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n @Inject(MAT_DIALOG_DATA) public data,){}\n\n ngOnInit() {\n this.allMeterData = this.data.metersInfo\n this.displayedColumns = ['floorName', 'partitionName', 'tenantName', 'meterName', 'meterLabel', 'expiry'];\n this.getToken()\n }\n\n getToken() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n }\n }\n )\n }\n}\n","import { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, LOCALE_ID, OnInit } from \"@angular/core\";\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport { Router, ActivatedRoute, ParamMap } from \"@angular/router\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { GetFloorsResponse } from \"../entity/get-floors-response\";\nimport { GetInSiteValueDetectionsResponse } from \"../entity/get-in-site-value-detections-response\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { Partition } from \"../entity/partition\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { MeterAddDialogComponent } from \"../meter-add-dialog/meter-add-dialog.component\";\nimport { MeterQrcodeDialogComponent } from \"../meter-qrcode-dialog/meter-qrcode-dialog.component\";\nimport { MeterEditDialogComponent } from \"../meter-edit-dialog/meter-edit-dialog.component\";\nimport { MeterDeleteDialogComponent } from \"../meter-delete-dialog/meter-delete-dialog.component\";\nimport \"rxjs/add/operator/debounceTime\";\nimport { Subject } from \"rxjs\";\nimport { MeterType } from \"../entity/get-meter-type\";\nimport { Unit } from \"../entity/unit\";\nimport { MeterCsvBatchDialogComponent } from \"../meter-csv-batch-dialog/meter-csv-batch-dialog.component\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { GetTenantsResponse } from \"../entity/get-tenants-response\";\nimport { Overlay } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { MatSpinner } from \"@angular/material/progress-spinner\";\nimport { MeterConfirmDialogInfo } from \"../entity/meter-confirm-dialog-info\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { Const } from \"../const/const\";\nimport Encoding from \"encoding-japanese\";\nimport Papa from \"papaparse\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { LoginUserSiteCompany } from \"../entity/login-user-site-company\";\nimport { MeterDetailDialogComponent } from \"../meter-detail-dialog/meter-detail-dialog.component\";\nimport { MeterReplaceDialogComponent } from \"../meter-replace-dialog/meter-replace-dialog.component\";\n\n@Component({\n selector: \"app-meter-management-list\",\n templateUrl: \"./meter-management-list.component.html\",\n styleUrls: [\"./meter-management-list.component.scss\"],\n})\nexport class MeterManagementListComponent implements OnInit {\n selectedSite = new UntypedFormControl();\n\n monthArray: string[];\n siteArray: LoginUserSite[];\n\n partitionsArray: Partition[];\n partitionTenants: GetTenantsPartition[];\n\n loginUser: LoginUser;\n formControl: UntypedFormGroup;\n siteId: string;\n\n floorsNameIdMap = new Map();\n nowFloorId: string;\n floorsInfo: FloorInfo[];\n currentFloorName: string = \"\";\n\n allMeterData: MeterInfo[] = [];\n expMeterData: MeterInfo[] = [];\n currentFloorMeterData: MeterInfo[];\n filtredMeterData: MeterInfo[];\n\n meterTypeData: MeterType[];\n unitData: Unit[];\n site = new LoginUserSite();\n\n // テーブル生成用\n displayedColumns: string[];\n\n idToken: string;\n selectedIndex: number;\n\n // APIのURL\n getLoginUserUrl: string;\n getValueDetectionsUrl: string;\n getFloorsUrl: string;\n postValueConfirmationUrl: string;\n // APIのレスポンス\n getLoginUserResponse: GetLoginUserResponse;\n getValueDetectionsResponse: GetInSiteValueDetectionsResponse;\n getFloorsResponse: GetFloorsResponse;\n\n // フラグ類\n getUserFinished: boolean;\n isLoadingData: boolean;\n isMeterTypeReady: boolean = false;\n isMeterUnitReady: boolean = false;\n isPartitionTenantReady: boolean = false;\n isCreateMeterReady: boolean = false;\n isMeterDataExsit: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n\n searchOptionKey: string = \"\";\n searchOptionsArray: string[] = [\"区画\", \"テナント名称\", \"メーター名称\"];\n\n searchKeyString: string = \"\";\n searchKeyChanged: Subject = new Subject();\n\n //for csv import\n csvMeterData: MeterInfo[] = [];\n csvAddMeterData: MeterInfo[] = [];\n csvUpdateMeterData: MeterInfo[] = [];\n csvErrorMeterData: MeterInfo[] = [];\n csvDeleteMeterData: MeterInfo[] = [];\n tsvFlg = false;\n csvImportAccountLockError = false;\n csvImportUnexpectedError = false;\n\n //loading overlay\n overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n });\n\n constructor(\n private httpClient: HttpClient,\n private router: Router,\n private route: ActivatedRoute,\n public auth: AuthService,\n public dialog: MatDialog,\n @Inject(LOCALE_ID) private locale: string,\n private overlay: Overlay\n ) {\n localStorage.setItem(\"path\", router.url);\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser();\n this.selectedSite.disable();\n this.partitionsArray = [];\n this.partitionTenants = [];\n this.selectedIndex = 0;\n this.expMeterData = [];\n\n this.siteArray = [];\n\n this.getLoginUserResponse = new GetLoginUserResponse();\n this.getFloorsResponse = new GetFloorsResponse();\n this.getValueDetectionsResponse = new GetInSiteValueDetectionsResponse();\n\n this.floorsInfo = [];\n this.getUserFinished = false;\n\n this.searchOptionKey = this.searchOptionsArray[0];\n this.searchKeyChanged\n .debounceTime(300) // wait 300ms after the last event before emitting last event\n .subscribe((str) => {\n this.searchKeyString = str;\n this.filterResult();\n });\n\n this.getToken();\n }\n\n getToken() {\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser();\n } else {\n this.doSetValue();\n }\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n }\n });\n }\n\n doSetValue() {\n this.loginUser = Const.loginUser;\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n if (Const.siteInfo.length > 0) {\n this.siteArray = Const.siteInfo;\n } else {\n this.getAllSiteData();\n }\n } else {\n for (const site of this.loginUser.sites) {\n this.siteArray.push(site);\n }\n }\n this.selectedSite = new UntypedFormControl(Const.site_id);\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.getFloorsUrl = `${environment.apiUrl}/sites/${this.selectedSite.value}/floors`;\n this.doGetFloors();\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n this.siteArray = Const.siteInfo;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"施設情報が取得できませんでした。\");\n }\n }\n );\n }\n\n // idトークンとsite_idの情報からフロア情報の取得を行う\n doGetFloors() {\n this.expMeterData = [];\n this.floorsInfo = [];\n this.currentFloorName = \"\";\n this.isCreateMeterReady = false;\n this.isMeterDataExsit = false;\n this.isPartitionTenantReady = false;\n this.httpClient\n .get(this.getFloorsUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetFloorsResponse) => {\n this.floorsInfo = response.result.floors;\n\n this.nowFloorId = this.floorsInfo[this.selectedIndex].id;\n this.currentFloorName = this.floorsInfo[this.selectedIndex].name;\n\n for (const floor of this.floorsInfo) {\n this.floorsNameIdMap.set(floor.name, floor.id);\n }\n\n this.loadMeterData();\n },\n (err) => {\n this.isLoadingData = true;\n this.selectedSite.enable();\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"フロア情報が取得できませんでした。\");\n }\n }\n );\n }\n\n loadMeterData() {\n this.expMeterData = [];\n this.allMeterData = [];\n this.currentFloorMeterData = [];\n this.isLoadingData = false;\n this.selectedSite.disable();\n this.isMeterDataExsit = false;\n this.isCreateMeterReady = false;\n this.isPartitionTenantReady = false;\n\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/meters_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonObj = JSON.parse(JSON.stringify(res));\n if (jsonObj.status == 200) {\n let jsonFloors = jsonObj.result.site.floors;\n let site_id = jsonObj.result.site.id;\n let countOfPartitions = 0;\n for (let index = 0; index < jsonFloors.length; index++) {\n const floor = jsonFloors[index];\n countOfPartitions = countOfPartitions + floor.partitions.length;\n }\n if (countOfPartitions < 1) {\n alert(\"区画情報が取得できませんでした。\");\n this.isLoadingData = true;\n this.selectedSite.enable();\n return;\n }\n this.getPartitionTenantData();\n for (let index = 0; index < jsonFloors.length; index++) {\n const floor = jsonFloors[index];\n const partitions = floor.partitions;\n for (let index = 0; index < partitions.length; index++) {\n const partition = partitions[index];\n for (let index = 0; index < partition.meters.length; index++) {\n const meterObj = partition.meters[index];\n let meterModel = meterObj as MeterInfo;\n\n meterModel.partName = partition.name;\n if (\n partition.partitions_tenants !== undefined &&\n partition.partitions_tenants.length > 0\n ) {\n meterModel.tenantName =\n partition.partitions_tenants[0].tenant_log.name;\n meterModel.cancelled_at =\n partition.partitions_tenants[0].cancelled_at;\n meterModel.site_id = site_id;\n meterModel.floor_id = floor.id;\n meterModel.floor_name = floor.name;\n if (\n meterModel.closed_value !== undefined &&\n meterModel.closed_value !== null\n ) {\n continue;\n }\n this.allMeterData.push(meterModel);\n }\n if (\n Number(this.loginUser.user_type) !== this.userTypeSysAdmin\n ) {\n if (\n meterModel.expiration_date !== null &&\n meterModel.expiration_date !== undefined &&\n meterModel.expiration_date !== \"\"\n ) {\n var day = new Date();\n day.setMonth(day.getMonth() + 24);\n const dayOfNextYear = formatDate(\n day,\n \"yyyyMMdd\",\n this.locale\n );\n const expiration = formatDate(\n meterModel.expiration_date,\n \"yyyyMMdd\",\n this.locale\n );\n if (expiration < dayOfNextYear) {\n meterModel.isExpireMeterFlag = true;\n\n let expMeterModel = meterObj as MeterInfo;\n expMeterModel = meterModel;\n this.expMeterData.push(expMeterModel);\n }\n }\n }\n }\n }\n }\n // ソート\n if (this.expMeterData.length > 0) {\n this.expMeterData.sort((n1, n2) => {\n if (n1.expiration_date > n2.expiration_date) {\n return 1;\n }\n if (n1.expiration_date < n2.expiration_date) {\n return -1;\n }\n return 0;\n });\n }\n\n this.currentFloorMeterData = this.allMeterData.filter(\n (item) => item.floor_id == this.nowFloorId\n );\n this.filtredMeterData = this.currentFloorMeterData;\n\n this.displayedColumns = [\n \"detailButton\",\n \"partition\",\n \"tenantName\",\n \"meterName\",\n \"meterType\",\n \"meterLabel\",\n \"qrcodeButton\",\n \"editButton\",\n \"meterReplace\",\n \"deleteButton\",\n ];\n this.isLoadingData = true;\n this.selectedSite.enable();\n this.isMeterDataExsit = this.allMeterData.length > 0;\n }\n },\n (err) => {\n this.isLoadingData = true;\n this.selectedSite.enable();\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"メーター情報が取得できませんでした。\");\n }\n }\n );\n }\n\n loadMeterTypes() {\n const url = `${environment.apiUrl}/meter_types/meter_types_info_all`;\n this.meterTypeData = [];\n this.isMeterTypeReady = false;\n\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.metertypes;\n\n this.meterTypeData = data;\n this.isMeterTypeReady = true;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"メータータイプが取得できませんでした。\");\n }\n }\n );\n }\n\n loadMeterUnit() {\n this.unitData = [];\n this.isMeterUnitReady = false;\n const url = `${environment.apiUrl}/units/units_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.units;\n this.unitData = data;\n this.isMeterUnitReady = true;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"単位情報が取得できませんでした。\");\n }\n }\n );\n }\n\n getPartitionTenantData() {\n this.isPartitionTenantReady = false;\n const dateData = new Date();\n const thisMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/partitions/tenants/${thisMonth}`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetTenantsResponse) => {\n this.partitionTenants = response.result.site.partitions;\n\n // テナント未登録の場合、メーターの作成が不可にする対応\n this.partitionTenants = this.partitionTenants.filter(\n (item) => item.partitions_tenants.length != 0\n );\n this.isCreateMeterReady = this.partitionTenants.length > 0;\n this.isPartitionTenantReady = true;\n if (!this.isCreateMeterReady) {\n alert(\"テナント情報が取得できませんでした。\");\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n }\n }\n );\n }\n\n doClickTab(MatTagChangevent: any) {\n this.nowFloorId = this.floorsNameIdMap.get(MatTagChangevent.tab.textLabel);\n this.currentFloorName = MatTagChangevent.tab.textLabel;\n this.selectedIndex = MatTagChangevent.index;\n\n this.currentFloorMeterData = this.allMeterData.filter(\n (item) => item.floor_id == this.nowFloorId\n );\n this.filtredMeterData = this.currentFloorMeterData;\n }\n\n onClickAddMeter() {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.dialog.open(MeterAddDialogComponent, {\n width: \"800px\",\n data: {\n partitionTenants: this.partitionTenants,\n metersInfo: this.allMeterData,\n site: this.site,\n },\n });\n dialogRef.afterClosed().subscribe((makeResult) => {\n if (makeResult === \"close\") {\n this.loadMeterData();\n }\n });\n }\n\n onClickMeterQrcode(meter: MeterInfo) {\n if (!this.isPartitionTenantReady) {\n alert(\"テナントデータが取得できませんでした。\");\n return;\n }\n\n const dialogRef = this.dialog.open(MeterQrcodeDialogComponent, {\n width: \"800px\",\n data: meter,\n });\n dialogRef.afterClosed().subscribe((makeResult) => {\n if (makeResult === \"close\") {\n }\n });\n }\n\n onClickMeterEdit(meter: MeterInfo) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n if (!this.isPartitionTenantReady) {\n alert(\"テナントデータが取得できませんでした。\");\n return;\n }\n\n const dialogRef = this.dialog.open(MeterEditDialogComponent, {\n width: \"800px\",\n data: { meter: meter, metersInfo: this.allMeterData, site: this.site },\n });\n dialogRef.componentInstance.partitionTenant = this.partitionTenants;\n\n dialogRef.afterClosed().subscribe((makeResult) => {\n if (makeResult === \"close\") {\n // 最小限の更新になるように要改良\n this.loadMeterData();\n }\n });\n }\n\n onClickMeterReplace(meter: MeterInfo) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n if (!this.isPartitionTenantReady) {\n alert(\"テナントデータが取得できませんでした。\");\n return;\n }\n const dialogRef = this.dialog.open(MeterReplaceDialogComponent, {\n width: \"800px\",\n data: { meter: meter, metersInfo: this.allMeterData, site: this.site },\n });\n dialogRef.componentInstance.partitionTenant = this.partitionTenants;\n\n dialogRef.afterClosed().subscribe((makeResult) => {\n if (makeResult === \"close\") {\n // 最小限の更新になるように要改良\n this.loadMeterData();\n }\n });\n }\n\n onClickMeterDelete(meter: MeterInfo) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.dialog.open(MeterDeleteDialogComponent, {\n width: \"650px\",\n data: { meter: meter, site: this.site },\n });\n dialogRef.afterClosed().subscribe((makeResult) => {\n if (makeResult === \"close\") {\n this.loadMeterData();\n }\n });\n }\n\n // 詳細表示\n onClickDetailMeter(meter: MeterInfo) {\n this.dialog.open(MeterDetailDialogComponent, {\n width: \"600px\",\n data: meter,\n });\n }\n\n onClickExportMeterCSV() {\n const companyID = this.loginUser.company.id;\n /*\n company_id,site_id,floor_id,partition_id,unit_id,meter_type_id,\n meter_id,no,name,max_value,min_value,max_angle,min_angle,number_of_digits,decimal_point_position,analysis_flg,is_card_display,is_reviewed,is_reread\n */\n\n let csvData =\n // = '会社ID,施設ID,フロアID,区画ID,メーターID,単位ID, メータータイプID,表示順, メーター名,最大検針値,最小検針値,最大値角度,最小値角度,整数部分の桁数,少数点以下の桁数,メーター解析,カード表示,見直しフラグ表示,再読取,有効期限\\r\\n';\n \"company_id\" +\n \",\" +\n \"site_id\" +\n \",\" +\n \"floor_id\" +\n \",\" +\n \"partition_id\" +\n \",\" +\n \"meter_id\" +\n \",\" +\n \"unit_id\" +\n \",\" +\n \"meter_type_id\" +\n \",\" +\n \"no\" +\n \",\" +\n \"name\" +\n \",\" +\n \"label\" +\n \",\" +\n \"max_value\" +\n \",\" +\n \"min_value\" +\n \",\" +\n \"max_angle\" +\n \",\" +\n \"min_angle\" +\n \",\" +\n \"number_of_digits\" +\n \",\" +\n \"decimal_point_position\" +\n \",\" +\n \"analysis_flg\" +\n \",\" +\n \"is_card_display\" +\n \",\" +\n \"is_reviewed\" +\n \",\" +\n \"is_reread\" +\n \",\" +\n \"expiration_date\\r\\n\";\n\n for (const row of this.allMeterData) {\n if (row.expiration_date == null) {\n row.expiration_date = \"\";\n }\n\n const rowData =\n companyID +\n \",\" +\n row.site_id +\n \",\" +\n row.floor_id +\n \",\" +\n row.partition_id +\n \",\" +\n row.id +\n \",\" +\n row.unit_id +\n \",\" +\n row.meter_type_id +\n \",\" +\n row.no +\n \",\" +\n row.name +\n \",\" +\n row.label +\n \",\" +\n row.max_value * 10 ** row.decimal_point_position +\n \",\" +\n row.min_value * 10 ** row.decimal_point_position +\n \",\" +\n row.max_angle +\n \",\" +\n row.min_angle +\n \",\" +\n row.number_of_digits +\n \",\" +\n row.decimal_point_position +\n \",\" +\n row.analysis_flg +\n \",\" +\n row.is_card_display +\n \",\" +\n row.is_reviewed +\n \",\" +\n row.is_reread +\n \",\" +\n row.expiration_date +\n \"\\r\\n\";\n const rowDataFormated = rowData.replace(/\\*/g, \"\").replace(/N\\/A/g, \"\");\n csvData = csvData + rowDataFormated;\n }\n const strArray = Encoding.stringToCode(csvData);\n const sjisArray = Encoding.convert(strArray, \"SJIS\", \"UNICODE\");\n const uint8Array = new Uint8Array(sjisArray);\n const blob = new Blob([uint8Array], { type: \"text/tab-separated-values\" });\n const link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(blob);\n\n const siteName = this.siteArray.filter(\n (item) => item.id === this.selectedSite.value\n )[0].name;\n const fileName = siteName + \"メーター一覧.csv\";\n link.download = fileName;\n link.click();\n }\n\n onClickImportMeterCSV() {\n document.querySelector(\"input\").click();\n }\n\n search(text: string) {\n this.searchKeyChanged.next(text);\n }\n\n filterResult() {\n if (this.searchKeyString === \"\") {\n this.filtredMeterData = this.currentFloorMeterData;\n return;\n }\n\n switch (this.searchOptionKey) {\n case this.searchOptionsArray[0]:\n this.filtredMeterData = this.currentFloorMeterData.filter((item) =>\n item.partName.includes(this.searchKeyString)\n );\n break;\n case this.searchOptionsArray[1]:\n this.filtredMeterData = this.currentFloorMeterData.filter((item) =>\n item.tenantName.includes(this.searchKeyString)\n );\n break;\n case this.searchOptionsArray[2]:\n this.filtredMeterData = this.currentFloorMeterData.filter((item) =>\n item.name.includes(this.searchKeyString)\n );\n break;\n default:\n break;\n }\n }\n\n onChangeOption() {\n this.searchKeyChanged.next(this.searchKeyString);\n }\n\n doChangeSite() {\n this.isLoadingData = false;\n this.selectedSite.disable();\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n // フロア情報取得\n this.getFloorsUrl = `${environment.apiUrl}/sites/${Const.site_id}/floors`;\n this.floorsInfo = [];\n this.allMeterData = [];\n this.currentFloorMeterData = [];\n this.filtredMeterData = [];\n this.doGetFloors();\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0;\n Const.adminUser = Number(Const.loginUser.user_type) === 1;\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\");\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id;\n }\n }\n }\n\n if (Const.site_id === null) {\n alert(\"前回選択した施設が見つかりませんでした。\");\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.doSetValue();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.onClickLogout();\n }\n );\n }\n\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n onClickMasterEdit() {\n this.router.navigate([\"master-edit\"]);\n }\n\n onClickCardList() {\n this.router.navigate([\"meter-card-list\"]);\n }\n\n public changeListener(event) {\n let files = event.target.files;\n if (files && files.length > 0) {\n let file: File = files.item(0);\n let reader: FileReader = new FileReader();\n reader.readAsText(file, \"Shift_JIS\");\n reader.onload = async (_) => {\n let csv: string = reader.result as string;\n const results = Papa.parse(csv);\n if (results.meta.delimiter === \"\\t\") {\n this.tsvFlg = true;\n }\n let messageContents =\n \"メーター情報をインポートします。よろしいですか?\";\n const rows = csv.split(\"\\r\\n\");\n if (rows.length > 1000) {\n messageContents =\n messageContents +\n `\\n※1000件を超えています。処理に時間がかかる可能性があります。`;\n }\n const messageInfo = new MeterConfirmDialogInfo(\n \"CSVインポート\",\n messageContents\n );\n const meterConfirmDialogRef = this.dialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"650px\",\n data: messageInfo,\n }\n );\n\n meterConfirmDialogRef.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n this.handleCSVStringToMeterArray(csv);\n }\n });\n };\n }\n }\n\n handleCSVStringToMeterArray(csvString: string) {\n this.overlayRef.attach(new ComponentPortal(MatSpinner));\n\n this.csvMeterData = [];\n this.csvAddMeterData = [];\n this.csvUpdateMeterData = [];\n this.csvAddMeterData = [];\n this.csvErrorMeterData = [];\n let splitString = \",\";\n if (this.tsvFlg) {\n splitString = \"\\t\";\n }\n\n let rows = csvString.split(\"\\r\\n\");\n const headerRowTitles = rows[0].trim().split(splitString);\n if (headerRowTitles.length != 20) {\n alert(\"csvファイルのフォーマットが正しいか確認してください。\");\n this.overlayRef.detach();\n return;\n }\n for (let i = 1; i < rows.length; i++) {\n const jsonStr = rows[i];\n const strArr = jsonStr.split(splitString);\n // strArr's cell count not equal 20, skip the row\n if (strArr.length != 20) {\n continue;\n }\n // 会社IDのチェック(管理者の場合で、かつ、同じ会社のレコードでない場合はスキップ)\n if (\n Const.adminUser &&\n String(strArr[0]).trim() !== this.loginUser.company.id\n ) {\n continue;\n }\n // construct meter from csv strArr\n let meter = this.buildMeterFromStringArray(strArr);\n // check each meter's value\n this.checkMeterInfoIsValid(meter);\n // add to list\n this.csvMeterData.push(meter);\n }\n // split meter array\n this.splitToArray();\n }\n\n buildMeterFromStringArray(strArr: string[]) {\n // not used for now\n // let company_id = String(strArr[0]).trim()\n const siteId = String(strArr[1]).trim();\n // let floor_id = String(strArr[2]).trim()\n\n let partition_id = String(strArr[3]).trim();\n let meter_id = String(strArr[4]).trim();\n let unit_id = String(strArr[5]).trim();\n let meter_type_id = String(strArr[6]).trim();\n let no = Number(strArr[7].trim());\n let name = String(strArr[8]).trim();\n let label = String(strArr[10]).trim();\n let max_value = Number(strArr[9].trim());\n let min_value = Number(strArr[10].trim());\n let max_angle = Number(strArr[11].trim());\n let min_angle = Number(strArr[12].trim());\n let number_of_digits = Number(strArr[13].trim());\n let decimal_point_position = Number(strArr[14].trim());\n let analysis_flg = Number(strArr[15].trim());\n let is_card_display = Number(strArr[16].trim());\n let is_reviewed = Number(strArr[17].trim());\n let is_reread = Number(strArr[18].trim());\n let expiration_date = String(strArr[19]).trim();\n\n let meter = new MeterInfo();\n meter.id = meter_id;\n meter.site_id = siteId;\n meter.name = name;\n meter.label = label;\n meter.no = no;\n meter.partition_id = partition_id;\n meter.meter_type_id = meter_type_id;\n meter.unit_id = unit_id;\n meter.max_value = max_value;\n meter.min_value = min_value;\n meter.max_angle = max_angle;\n meter.min_angle = min_angle;\n meter.decimal_point_position = decimal_point_position;\n meter.number_of_digits = number_of_digits;\n meter.analysis_flg = Boolean(analysis_flg);\n meter.is_card_display = Boolean(is_card_display);\n meter.is_reread = Boolean(is_reread);\n meter.is_reviewed = Boolean(is_reviewed);\n meter.expiration_date = expiration_date;\n return meter;\n }\n\n checkValueIsInvalid(val: any) {\n if (val == \"\" || val == \"null\" || val == \"undefined\") {\n return true;\n }\n return false;\n }\n\n checkValueIsInvalidMeterName(meter: MeterInfo) {\n for (const partition of this.partitionTenants) {\n if (partition.id === meter.partition_id) {\n // if (partition.report_type === 0) {\n if (\n meter.name === \"電灯\" ||\n meter.name.substr(meter.name.indexOf(\"_\") + 1, 2) === \"電灯\"\n ) {\n return false;\n } else if (\n meter.name === \"動力\" ||\n meter.name.substr(meter.name.indexOf(\"_\") + 1, 2) === \"動力\"\n ) {\n return false;\n } else if (\n meter.name === \"水道\" ||\n meter.name.substr(meter.name.indexOf(\"_\") + 1, 2) === \"水道\"\n ) {\n return false;\n }\n // } else if (partition.report_type === 1) {\n else if (\n meter.name === \"ガス\" ||\n meter.name.substr(meter.name.indexOf(\"_\") + 1, 2) === \"ガス\"\n ) {\n return false;\n }\n //}\n }\n }\n return true;\n }\n\n checkMeterInfoIsValid(meter: MeterInfo) {\n // -1: unknown,\n // 1: add new meter,\n // 2, error meter : lack of name, unit_id, meter_type_id, partition_id\n let errMsg = \"\";\n let state = -1;\n if (meter.site_id !== Const.site_id) {\n state = 2;\n errMsg += \"siteId is disagreement,\";\n }\n if (this.checkValueIsInvalid(meter.id)) {\n state = 1;\n }\n\n if (this.checkValueIsInvalid(meter.name)) {\n state = 2;\n errMsg += \"name is empty,\";\n }\n\n if (this.checkValueIsInvalid(meter.label)) {\n state = 2;\n errMsg += \"label is empty,\";\n }\n\n if (this.checkValueIsInvalidMeterName(meter)) {\n state = 2;\n errMsg += \"name is bad,\";\n }\n\n if (this.checkValueIsInvalid(meter.unit_id)) {\n state = 2;\n errMsg += \"unit_id is empty,\";\n }\n\n if (this.checkValueIsInvalid(meter.meter_type_id)) {\n state = 2;\n errMsg += \"meter_type_id is empty,\";\n }\n\n if (this.checkValueIsInvalid(meter.partition_id)) {\n state = 2;\n errMsg += \"partition_id is empty,\";\n }\n\n // テナント未登録ものエラー\n if (\n this.partitionTenants.filter((item) => item.id === meter.partition_id)\n .length < 1\n ) {\n state = 2;\n errMsg += \"partition_id is invaid,\";\n }\n\n if (Number.isNaN(meter.max_value)) {\n state = 2;\n errMsg += \"max_value is empty,\";\n }\n\n if (meter.max_value < 0) {\n state = 2;\n errMsg += \"max_value is negative,\";\n }\n\n if (Number.isNaN(meter.min_value)) {\n state = 2;\n errMsg += \"min_value is empty,\";\n }\n\n if (meter.min_value < 0) {\n state = 2;\n errMsg += \"min_value is negative,\";\n }\n\n if (Number.isNaN(meter.max_angle)) {\n state = 2;\n errMsg += \"max_angle is empty,\";\n }\n\n if (meter.max_angle < 0 || meter.max_angle > 360) {\n state = 2;\n errMsg += \"max_angle is out of range [0~360],\";\n }\n\n if (Number.isNaN(meter.min_angle)) {\n state = 2;\n errMsg += \"min_angle is empty,\";\n }\n\n if (meter.min_angle < 0 || meter.min_angle > 360) {\n state = 2;\n errMsg += \"min_angle is out of range [0~360],\";\n }\n\n if (Number.isNaN(meter.number_of_digits)) {\n state = 2;\n errMsg += \"number_of_digits is empty,\";\n }\n\n if (meter.number_of_digits < 0) {\n state = 2;\n errMsg += \"number_of_digits is negative,\";\n }\n\n if (Number.isNaN(meter.decimal_point_position)) {\n state = 2;\n errMsg += \"decimal_point_position is empty,\";\n }\n\n if (meter.decimal_point_position < 0) {\n state = 2;\n errMsg += \"decimal_point_position is negative,\";\n }\n\n if (meter.min_value > meter.max_value) {\n state = 2;\n errMsg += \"meter min value is bigger than max value,\";\n }\n\n if (meter.min_angle > meter.max_angle) {\n state = 2;\n errMsg += \"meter min angle is bigger than max angle,\";\n }\n\n if (this.checkValueIsInvalid(meter.expiration_date)) {\n state = 2;\n errMsg += \"expiration_date is empty\";\n }\n\n if (\n !(\n meter.expiration_date.match(/\\d{4}-[0-1][0-9]-[0-3][0-9]+$/) ||\n meter.expiration_date.match(/\\d{4}[/][0-1][0-9][/][0-3][0-9]+$/)\n )\n ) {\n state = 2;\n errMsg += \"expiration_date format is invalid\";\n }\n\n meter.state = state;\n meter.errMsg = errMsg;\n }\n\n splitToArray() {\n // fetch update meter which satisfy both condition,\n // 1:originData contains the same meter id\n // 2:csv meter's value has any difference compare to the same meter.id from originData's meter value\n let csvUpdateMeterDataNoError = this.csvMeterData.filter(\n (csvMeter) => csvMeter.state != 2\n );\n let updateMeterData = csvUpdateMeterDataNoError.filter((csvMeter) =>\n this.allMeterData.some((originMeter) => {\n let isSameMeter = csvMeter.id === originMeter.id;\n let hasMeterChanged =\n csvMeter.name != originMeter.name.trim() ||\n csvMeter.partition_id != originMeter.partition_id ||\n csvMeter.unit_id != originMeter.unit_id ||\n csvMeter.meter_type_id != originMeter.meter_type_id ||\n csvMeter.no != originMeter.no ||\n csvMeter.label != originMeter.label ||\n csvMeter.max_value !=\n originMeter.max_value * 10 ** originMeter.decimal_point_position ||\n csvMeter.min_value !=\n originMeter.min_value * 10 ** originMeter.decimal_point_position ||\n csvMeter.max_angle != originMeter.max_angle ||\n csvMeter.min_angle != originMeter.min_angle ||\n csvMeter.number_of_digits != originMeter.number_of_digits ||\n csvMeter.decimal_point_position !=\n originMeter.decimal_point_position ||\n csvMeter.analysis_flg != originMeter.analysis_flg ||\n csvMeter.is_card_display != originMeter.is_card_display ||\n csvMeter.is_reviewed != originMeter.is_reviewed ||\n csvMeter.is_reread != originMeter.is_reread ||\n csvMeter.expiration_date != originMeter.expiration_date;\n\n return isSameMeter && hasMeterChanged;\n })\n );\n\n // remove duplicate meter\n this.csvUpdateMeterData = this.unique(updateMeterData, \"id\");\n this.csvAddMeterData = this.csvMeterData.filter(\n (meter) => meter.state == 1\n );\n this.csvErrorMeterData = this.csvMeterData.filter(\n (meter) => meter.state == 2\n );\n\n // this.originMeterData - this.csvMeterData\n let waitForDeletion = this.allMeterData.filter((originMeter) => {\n return !this.csvMeterData.some((importedMeter) => {\n return originMeter.id == importedMeter.id;\n });\n });\n this.csvDeleteMeterData = this.unique(waitForDeletion, \"id\");\n\n this.beginToUploadCSVMeter();\n }\n\n // all asnyc action\n async beginToUploadCSVMeter() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n // for add\n await this.addMeters();\n // for update\n if (!this.csvImportAccountLockError && !this.csvImportUnexpectedError) {\n await this.updateMeters();\n }\n // for delete\n if (!this.csvImportAccountLockError && !this.csvImportUnexpectedError) {\n await this.deleteMeters();\n }\n this.overlayRef.detach();\n if (this.csvImportAccountLockError) {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n let updateSuccessCount = this.csvUpdateMeterData.filter(\n (meter) => meter.statusCode === 200\n ).length;\n let addSuccessCount = this.csvAddMeterData.filter(\n (meter) => meter.statusCode === 200\n ).length;\n let deleteSuccessCount = this.csvDeleteMeterData.filter(\n (meter) => meter.statusCode === 200\n ).length;\n\n let successCount =\n updateSuccessCount + addSuccessCount + deleteSuccessCount;\n let failCount =\n this.csvErrorMeterData.length +\n this.csvUpdateMeterData.length -\n updateSuccessCount +\n this.csvAddMeterData.length -\n addSuccessCount +\n this.csvDeleteMeterData.length -\n deleteSuccessCount;\n\n let resultString = `成功${successCount}件/失敗${failCount}件`;\n const dialogRef = this.dialog.open(MeterCsvBatchDialogComponent, {\n width: \"600px\",\n data: resultString,\n });\n\n dialogRef.afterClosed().subscribe((_) => {\n this.loadMeterData();\n });\n }\n }\n\n // group add\n async addMeters() {\n let addResults: any[] = [];\n for await (let meter of this.csvAddMeterData) {\n const now = Date.now();\n const today = formatDate(now, \"yyyyMMdd\", this.locale);\n if (formatDate(meter.expiration_date, \"yyyyMMdd\", this.locale) < today) {\n continue;\n }\n // 戻り値200:正常、403:予期せぬエラー&アカウントロック、上記以外:その他異常、\n const res = await this.addCSVMeter(meter);\n if (res.statusCode === 403) {\n break;\n }\n addResults.push(res);\n }\n return addResults;\n }\n\n // group update\n async updateMeters() {\n let dupdateResults: any[] = [];\n for await (let meter of this.csvUpdateMeterData) {\n // 戻り値200:正常、403:予期せぬエラー&アカウントロック、上記以外:その他異常、\n const res = await this.updateCSVMeter(meter);\n if (res.statusCode === 403) {\n break;\n }\n dupdateResults.push(res);\n }\n return dupdateResults;\n }\n\n // group delete\n async deleteMeters() {\n let deleteResults: any[] = [];\n for await (let meter of this.csvDeleteMeterData) {\n // 戻り値200:正常、403:予期せぬエラー&アカウントロック、上記以外:その他異常、\n const res = await this.deleteCSVMeter(meter);\n if (res.statusCode === 403) {\n break;\n }\n deleteResults.push(res);\n }\n return deleteResults;\n }\n\n async addCSVMeter(meter: MeterInfo): Promise {\n let params = new HttpParams();\n params = params.set(\"name\", meter.name);\n params = params.set(\"label\", meter.label);\n params = params.set(\"partition_id\", meter.partition_id);\n params = params.set(\"meter_type_id\", meter.meter_type_id);\n params = params.set(\"analysis_flg\", `${meter.analysis_flg ? 1 : 0}`);\n params = params.set(\"unit_id\", meter.unit_id);\n params = params.set(\n \"max_value\",\n (meter.max_value / 10 ** meter.decimal_point_position).toString()\n );\n params = params.set(\n \"min_value\",\n (meter.min_value / 10 ** meter.decimal_point_position).toString()\n );\n params = params.set(\"max_angle\", meter.max_angle.toString());\n params = params.set(\"min_angle\", meter.min_angle.toString());\n params = params.set(\"number_of_digits\", meter.number_of_digits.toString());\n params = params.set(\n \"decimal_point_position\",\n meter.decimal_point_position.toString()\n );\n params = params.set(\"is_card_display\", `${meter.is_card_display ? 1 : 0}`);\n params = params.set(\"is_reviewed\", `${meter.is_reviewed ? 1 : 0}`);\n params = params.set(\"is_reread\", `${meter.is_reread ? 1 : 0}`);\n params = params.set(\"no\", meter.no.toString());\n params = params.set(\n \"expiration_date\",\n formatDate(meter.expiration_date, \"yyyyMMdd\", this.locale)\n );\n let url = `${environment.apiUrl}/meters/meters_info`;\n return new Promise((resolve, _) => {\n try {\n this.httpClient\n .post(url, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (_) => {\n meter.statusCode = 200;\n meter.responseMsg = \"OK\";\n resolve(meter);\n },\n (err) => {\n meter.statusCode = err.status;\n meter.responseMsg = err.error.message;\n if (err.error.code == \"AccountLockError\") {\n this.csvImportAccountLockError = true;\n meter.statusCode = 403;\n }\n let index = this.csvMeterData.indexOf(meter);\n resolve(meter);\n }\n );\n } catch (error) {\n this.csvImportUnexpectedError = true;\n meter.statusCode = 403;\n meter.responseMsg = error.message;\n resolve(meter);\n }\n });\n }\n\n async updateCSVMeter(meter: MeterInfo): Promise {\n let url = `${environment.apiUrl}/meters/${meter.id}/1/meters_info`;\n let params = new HttpParams();\n params = params.set(\"name\", meter.name);\n params = params.set(\"label\", meter.label);\n params = params.set(\"partition_id\", meter.partition_id);\n params = params.set(\"meter_type_id\", meter.meter_type_id);\n params = params.set(\"analysis_flg\", `${meter.analysis_flg ? 1 : 0}`);\n params = params.set(\"unit_id\", meter.unit_id);\n params = params.set(\n \"max_value\",\n (meter.max_value / 10 ** meter.decimal_point_position).toString()\n );\n params = params.set(\n \"min_value\",\n (meter.min_value / 10 ** meter.decimal_point_position).toString()\n );\n params = params.set(\"max_angle\", meter.max_angle.toString());\n params = params.set(\"min_angle\", meter.min_angle.toString());\n params = params.set(\"number_of_digits\", meter.number_of_digits.toString());\n params = params.set(\n \"decimal_point_position\",\n meter.decimal_point_position.toString()\n );\n params = params.set(\"is_card_display\", `${meter.is_card_display ? 1 : 0}`);\n params = params.set(\"is_reviewed\", `${meter.is_reviewed ? 1 : 0}`);\n params = params.set(\"is_reread\", `${meter.is_reread ? 1 : 0}`);\n params = params.set(\"no\", meter.no.toString());\n params = params.set(\n \"expiration_date\",\n formatDate(meter.expiration_date, \"yyyyMMdd\", this.locale)\n );\n\n return new Promise((resolve, _) => {\n try {\n this.httpClient\n .patch(url, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n meter.statusCode = 200;\n meter.responseMsg = \"OK\";\n resolve(meter);\n },\n (err) => {\n meter.statusCode = err.status;\n meter.responseMsg = err.error.message;\n if (err.error.code == \"AccountLockError\") {\n this.csvImportAccountLockError = true;\n meter.statusCode = 403;\n }\n let index = this.csvMeterData.indexOf(meter);\n resolve(meter);\n }\n );\n } catch (error) {\n this.csvImportUnexpectedError = true;\n meter.statusCode = 403;\n meter.responseMsg = error.message;\n resolve(meter);\n }\n });\n }\n\n async deleteCSVMeter(meter: MeterInfo): Promise {\n const url = `${environment.apiUrl}/meters/${meter.id}/0/meters_info`;\n const params = new HttpParams();\n return new Promise((resolve, _) => {\n try {\n this.httpClient\n .patch(url, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (_) => {\n meter.statusCode = 200;\n meter.responseMsg = \"OK\";\n resolve(meter);\n },\n (err) => {\n meter.statusCode = err.status;\n meter.responseMsg = err.error.message;\n if (err.error.code == \"AccountLockError\") {\n this.csvImportAccountLockError = true;\n meter.statusCode = 403;\n }\n\n let index = this.csvMeterData.indexOf(meter);\n resolve(meter);\n }\n );\n } catch (error) {\n this.csvImportUnexpectedError = true;\n meter.statusCode = 403;\n meter.responseMsg = error.message;\n resolve(meter);\n }\n });\n }\n\n // remove duplicate\n unique(arr: any[], val: string) {\n const res = new Map();\n return arr.filter((item) => !res.has(item[val]) && res.set(item[val], 1));\n }\n\n onNumbering() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n this.isLoadingData = false;\n this.selectedSite.disable();\n this.isMeterDataExsit = false;\n this.isPartitionTenantReady = false;\n this.isCreateMeterReady = false;\n\n // APIコールして登録処理\n const patchNumberingMeterUrl = `${environment.apiUrl}/sites/${this.selectedSite.value}/meter_info_all/no`;\n const params = new HttpParams();\n this.httpClient\n .patch(patchNumberingMeterUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n const successMessageInfo = new MessageInfo(\n \"自動採番を行いました\",\n \"\"\n );\n const dialogRef = this.dialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: successMessageInfo,\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n this.doGetFloors();\n }\n });\n },\n (err) => {\n this.isLoadingData = true;\n this.selectedSite.enable();\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"自動採番に失敗しました\");\n this.doGetFloors();\n }\n }\n );\n }\n\n //メーター名称からメーター種類を取得\n typeExtract(name: string) {\n let tmp = \"\";\n tmp = name.substr(name.indexOf(\"_\") + 1, 2);\n return tmp;\n }\n\n //メーター名称からメーター補助名を取得\n nameExtract(name: string) {\n let tmp = \"\";\n tmp = name.substring(0, name.indexOf(\"_\"));\n return tmp;\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { MeterInfo } from '../entity/get-meter-info';\nimport { PRINT_STYLES } from './print-styles';\n\n@Component({\n selector: 'app-meter-qrcode-dialog',\n templateUrl: './meter-qrcode-dialog.component.html',\n styleUrls: ['./meter-qrcode-dialog.component.scss']\n})\n\nexport class MeterQrcodeDialogComponent implements OnInit {\n public myAngularxQrCode: string = null;\n qrcodeTitle: string;\n printStyles = PRINT_STYLES;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public meter: MeterInfo,\n public printDialog: MatDialog\n ) {\n this.myAngularxQrCode = \"$\"+ `${this.meter.id}`\n this.qrcodeTitle = this.meter.partName + \"_\" + this.meter.name\n }\n\n ngOnInit() {\n this.myAngularxQrCode = \"$\"+ `${this.meter.id}`\n }\n}\n","export const PRINT_STYLES =\n{\n '.container':{\n 'display':'flex',\n 'align-items':'flex-start'\n },\n '.rectangle':\n {'width':'130px', 'height': '180px', 'border': '2px solid black','flex-direction': 'column', 'text-align':'center'},\n table: \n {\n 'font-size':'10px'\n },\n th:\n {\n 'width':'120px'\n },\n td:\n {\n 'width':'300px'\n }\n} ","import { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, Input, LOCALE_ID, OnInit } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { DateAdapter, NativeDateAdapter } from \"@angular/material/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { Const } from \"../const/const\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { MeterType } from \"../entity/get-meter-type\";\nimport { GetPartitionsResponse } from \"../entity/get-partitions-response\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { MeterConfirmDialogInfo } from \"../entity/meter-confirm-dialog-info\";\nimport { Unit } from \"../entity/unit\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-meter-replace-dialog\",\n templateUrl: \"./meter-replace-dialog.component.html\",\n styleUrls: [\"./meter-replace-dialog.component.scss\"],\n})\nexport class MeterReplaceDialogComponent implements OnInit {\n site: LoginUserSite;\n idToken: string;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n getPartitionsListUrl: string;\n getPartitionsResponse: GetPartitionsResponse;\n\n partitionTenantList: GetTenantsPartition[];\n currentPartition: GetTenantsPartition;\n selectedPartition = new UntypedFormControl({ value: \"\", disabled: true });\n selectedTenantName: string = \"\";\n\n meterTypeList: MeterType[];\n selectedType = new UntypedFormControl();\n\n meterUnitList: Unit[];\n meter: MeterInfo;\n meterList: MeterInfo[];\n\n meterId: string;\n meterNumber: number;\n meterName: string;\n meterLabel: string;\n maxValue: number; // 小数点あり\n maxValueDisplay: number; // 小数点ない\n minValue: number; // 小数点あり\n minValueDisplay: number; // 小数点ない\n numberOfDigit: number;\n decimalPointPosition: number;\n isShowActualValue: boolean = false;\n meterInitialValue: number;\n\n oldMaxValue: number;\n oldMinValue: number;\n oldDecimalPointPosition: number;\n meterClosedValue: number;\n\n meterIsReViewFlag: boolean;\n meterAIReadFlag: boolean;\n\n meterExpirationDate: string;\n\n hasAnyUpdate: boolean = false;\n errorMessage: string;\n hasError: boolean = false;\n isFormReady: boolean = false;\n isUseAngle: boolean = false;\n\n selectedMeterName = new UntypedFormControl({ value: \"\", disabled: true });\n meterNameList: string[];\n subMeterName: string;\n minDate: Date;\n\n meterValueInterval: number = 1;\n oldMeterValueInterval: number = 1;\n\n isExistNumber: boolean = false;\n isValidNumber: boolean = false;\n meterLabelList: string[];\n\n @Input() public partitionTenant: GetTenantsPartition[];\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data,\n private httpClient: HttpClient,\n public dialogRef: MatDialogRef,\n public meterConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n dateAdapter: DateAdapter,\n @Inject(LOCALE_ID) private locale: string\n ) {\n dateAdapter.setLocale(\"ja\");\n }\n\n ngOnInit() {\n this.site = this.data.site;\n this.partitionTenantList = [];\n this.meterTypeList = [];\n this.meterUnitList = [];\n this.meterList = this.data.metersInfo;\n this.meterLabelList = [];\n\n this.partitionTenantList = this.partitionTenant;\n this.meter = this.data.meter;\n\n this.meterLabelList = this.meterList.map((meter) => {\n return meter.label;\n });\n\n this.meterIsReViewFlag = this.meter.is_reviewed;\n this.meterAIReadFlag = this.meter.is_reread;\n this.meterExpirationDate = this.meter.expiration_date;\n\n this.meterNumber = this.meter.no;\n this.meterName = this.meter.name;\n if (this.meter.name.indexOf(\"_\") !== -1) {\n this.selectedMeterName.setValue(\n this.meter.name.substr(this.meter.name.indexOf(\"_\") + 1, 2)\n );\n this.subMeterName = this.meter.name.substr(\n 0,\n this.meter.name.indexOf(\"_\")\n );\n } else {\n this.selectedMeterName.setValue(this.meter.name);\n }\n this.maxValue = this.meter.max_value;\n this.minValue = 0;\n this.numberOfDigit = this.meter.number_of_digits;\n this.decimalPointPosition = this.meter.decimal_point_position;\n\n this.selectedPartition = new UntypedFormControl({\n value: this.partitionTenantList[0],\n disabled: true,\n });\n this.selectedPartition.setValue(this.meter.partition_id);\n if (this.meter.cancelled_at) {\n this.selectedTenantName = \"(解約済みテナント)\";\n } else {\n this.selectedTenantName = this.meter.tenantName;\n }\n\n this.currentPartition = this.partitionTenantList.filter(\n (item) => item.id == this.selectedPartition.value\n )[0];\n this.setMeterNameList();\n\n this.minDate = new Date();\n\n this.oldMaxValue = this.meter.max_value;\n this.oldMinValue = 0;\n this.oldDecimalPointPosition = this.meter.decimal_point_position;\n this.setOldDecimalInterval();\n\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n }\n\n // ログインユーザーの取得処理(区画一覧の取得に施設IDが必要)\n // リファクタで呼び出し元(レポート画面)から施設IDは連携してくるようにする\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n\n this.loadMeterTypes();\n this.loadMeterUnit();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\n \"ログイン名が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.onClickLogout();\n }\n );\n }\n\n loadMeterTypes() {\n const url = `${environment.apiUrl}/meter_types/meter_types_info_all`;\n this.meterTypeList = [];\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.metertypes;\n\n this.meterTypeList = data;\n this.selectedType.setValue(this.meter.meter_type_id);\n this.onChangeMeterType();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n this.onClickLogout();\n } else {\n alert(\"メータータイプが取得できませんでした。\");\n }\n }\n );\n }\n\n loadMeterUnit() {\n this.meterUnitList = [];\n const url = `${environment.apiUrl}/units/units_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonStr = JSON.stringify(res);\n let jsonObj = JSON.parse(jsonStr);\n let data = jsonObj.result.units;\n this.meterUnitList = data;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n this.onClickLogout();\n } else {\n alert(\"単位情報が取得できませんでした。\");\n }\n }\n );\n }\n\n onChangeMeterType() {\n let useAngleTypeId = this.meterTypeList.filter(\n (type) => type.name === \"アナログ(針)\"\n )[0].id;\n this.isUseAngle = this.selectedType.value == useAngleTypeId;\n this.minValue = 0;\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 || this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n this.isShowActualValue = false;\n if (this.isUseAngle) {\n this.decimalPointPosition = 0;\n this.numberOfDigit = 0;\n } else {\n this.isShowActualValue =\n this.decimalPointPosition !== undefined &&\n this.numberOfDigit !== undefined;\n if (this.decimalPointPosition != undefined) {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** this.decimalPointPosition;\n }\n }\n }\n\n onChangeSubMeterName() {\n this.errorMessage = \"\";\n if (this.subMeterName == undefined || this.subMeterName == null) {\n return;\n }\n\n if (this.subMeterName.indexOf(\" \") != -1) {\n this.subMeterName = String(this.subMeterName).trim();\n } else if (this.subMeterName.indexOf(\" \") != -1) {\n this.subMeterName = String(this.subMeterName).trim();\n }\n\n if (this.subMeterName.indexOf(\"_\") != -1) {\n this.subMeterName = this.subMeterName.replace(/_/g, \"\");\n }\n this.changeMeterName();\n }\n\n onChangeMeterLabel() {\n this.errorMessage = \"\";\n if (this.meterLabel == undefined || this.meterLabel == null) {\n return;\n }\n\n if (this.meterLabel.indexOf(\" \") != -1) {\n this.meterLabel = String(this.meterLabel).trim();\n } else if (this.meterLabel.indexOf(\" \") != -1) {\n this.meterLabel = String(this.meterLabel).trim();\n }\n\n this.isExistNumber = false;\n if (this.meterLabelList.indexOf(this.meterLabel) > -1) {\n this.isExistNumber = true;\n }\n\n this.isValidNumber = false;\n if (this.meterLabel == \"\") {\n this.meterLabel = undefined;\n }\n\n if (this.meterLabel == undefined || this.meterLabel == null) {\n this.isValidNumber = true;\n }\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n // メーター取り替えを行う\n onClickMeterReplace() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n\n // 入力チェック\n const errorMessage = this.checkValue();\n if (errorMessage.length !== 0) {\n // エラーメッセージを表示して終了\n const errorMessageInfo = new MessageInfo(errorMessage, \"\");\n const dialogRef = this.dialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: errorMessageInfo,\n });\n } else {\n const messageInfo = new MeterConfirmDialogInfo(\n \"取り替え確認\",\n \"メーターの取り替えを行います。よろしいですか。\"\n );\n const confirmDialog = this.meterConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n /*\n no:200\n name:updated test\n meter_type_id:9cd589c0-088f-4245-8644-adf1b650ba47\n analysis_flg:1\n unit_id:42731a4b-a2f4-45b7-b218-5084549c0882\n max_value:1000\n min_value:0\n max_angle:90\n min_angle:0\n number_of_digits:2\n decimal_point_position:2\n is_card_display:1\n is_reviewed:1\n is_reread:1\n expiration_date:20231231\n */\n // APIコールして登録処理\n const url = `${environment.apiUrl}/meters/${this.meter.id}/replace`;\n let params = new HttpParams();\n params = params.set(\"no\", this.meterNumber.toString());\n params = params.set(\"name\", this.meterName);\n params = params.set(\"label\", this.meterLabel);\n params = params.set(\"meter_type_id\", this.selectedType.value);\n params = params.set(\"analysis_flg\", \"1\");\n let tmp = \"\";\n if (\n this.selectedMeterName.value === \"水道\" ||\n this.selectedMeterName.value === \"ガス\"\n ) {\n for (let unit of this.meterUnitList) {\n if (unit.type === \"㎥\") {\n tmp = unit.id;\n break;\n }\n }\n } else {\n for (let unit of this.meterUnitList) {\n if (unit.type === \"kWh\") {\n tmp = unit.id;\n break;\n }\n }\n }\n params = params.set(\"unit_id\", tmp);\n console.log(tmp);\n if (this.isUseAngle) {\n params = params.set(\"max_angle\", \"0\");\n params = params.set(\"min_angle\", \"0\");\n params = params.set(\"number_of_digits\", \"0\");\n params = params.set(\"decimal_point_position\", \"0\");\n params = params.set(\"min_value\", \"0\");\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n params = params.set(\"max_value\", tmp1.toString());\n } else {\n params = params.set(\"max_angle\", \"0\");\n params = params.set(\"min_angle\", \"0\");\n params = params.set(\n \"number_of_digits\",\n this.numberOfDigit.toString()\n );\n params = params.set(\n \"decimal_point_position\",\n this.decimalPointPosition.toString()\n );\n params = params.set(\"min_value\", \"0\");\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n (this.decimalPointPosition == 0 ||\n this.decimalPointPosition == undefined)\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n params = params.set(\n \"max_value\",\n (tmp1 / 10 ** this.decimalPointPosition).toString()\n );\n }\n params = params.set(\n \"initial_value\",\n this.meterInitialValue.toString()\n );\n\n params = params.set(\"is_card_display\", \"1\");\n params = params.set(\n \"is_reviewed\",\n `${this.meterIsReViewFlag ? 1 : 0}`\n );\n params = params.set(\"is_reread\", `${this.meterAIReadFlag ? 1 : 0}`);\n params = params.set(\n \"expiration_date\",\n formatDate(this.meterExpirationDate, \"yyyyMMdd\", this.locale)\n );\n\n params = params.set(\"closed_value\", this.meterClosedValue.toString());\n this.httpClient\n .patch(url, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n this.dialogRef.close(\"lockedAccount\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"メーターの取り替えに失敗しました。\");\n }\n }\n );\n }\n });\n }\n }\n\n // 未入力項目有無チェック\n checkValue(): string {\n let errorMessage = \"を入力してください。\";\n\n if (this.selectedType.value === null) {\n errorMessage = \"メータータイプ名\" + errorMessage;\n return errorMessage;\n }\n\n if (!this.isUseAngle) {\n if (this.numberOfDigit === undefined || this.numberOfDigit == null) {\n errorMessage = \"整数部分の桁数\" + errorMessage;\n return errorMessage;\n }\n if (\n this.decimalPointPosition === undefined ||\n this.decimalPointPosition == null\n ) {\n errorMessage = \"小数点以下の桁数\" + errorMessage;\n return errorMessage;\n }\n if (\n this.meterExpirationDate === undefined ||\n this.meterExpirationDate == null\n ) {\n errorMessage = \"有効期限\" + errorMessage;\n return errorMessage;\n }\n }\n\n if (this.meterInitialValue === undefined) {\n errorMessage = \"初期値\" + errorMessage;\n return errorMessage;\n }\n if (this.meterClosedValue === undefined) {\n errorMessage = \"旧メーター終了値\" + errorMessage;\n return errorMessage;\n }\n return \"\";\n }\n numberOfDigitchange(value: number) {\n this.isShowActualValue = false;\n if (this.decimalPointPosition == undefined) {\n let tmp1 = 0;\n if (value > 0 && this.decimalPointPosition > 0) {\n let tmp = value + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (value > 0 && this.decimalPointPosition == undefined) {\n let tmp = value;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n } else {\n let tmp1 = 0;\n if (value > 0 && this.decimalPointPosition > 0) {\n let tmp = Number(value) + Number(this.decimalPointPosition);\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (value > 0 && this.decimalPointPosition == 0) {\n let tmp = value;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** this.decimalPointPosition;\n if (this.numberOfDigit != undefined) {\n this.isShowActualValue = true;\n }\n\n this.setDecimalInterval();\n }\n }\n\n decimalPointPositionchange(value: number) {\n this.isShowActualValue = false;\n if (this.decimalPointPosition == undefined) {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (\n this.numberOfDigit > 0 &&\n this.decimalPointPosition == undefined\n ) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1;\n this.minValue = 0;\n } else {\n let tmp1 = 0;\n if (this.numberOfDigit > 0 && this.decimalPointPosition > 0) {\n let tmp = this.numberOfDigit + this.decimalPointPosition;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else if (this.numberOfDigit > 0 && this.decimalPointPosition == 0) {\n let tmp = this.numberOfDigit;\n for (let i = 0; i < tmp; i++) {\n tmp1 += 9 * 10 ** i;\n }\n } else {\n tmp1 = 0;\n }\n this.maxValue = tmp1 / 10 ** value;\n\n if (this.numberOfDigit != undefined) {\n this.isShowActualValue = true;\n }\n }\n\n this.setDecimalInterval();\n }\n\n minDateCheck(value: string) {\n this.hasError = false;\n this.errorMessage = \"\";\n\n if (value === null || value === \"\") {\n this.hasError = true;\n this.errorMessage = \"有効期限を入力してください\";\n return;\n }\n\n const today = new Date();\n const strToday = today\n .toISOString()\n .split(\"T\")[0]\n .replace(\"-\", \"\")\n .replace(\"-\", \"\");\n if (formatDate(value, \"yyyyMMdd\", this.locale) < strToday) {\n this.hasError = true;\n this.errorMessage = \"有効期限には本日以降の日付を入力してください\";\n return;\n }\n }\n\n checkNumber(value: number) {\n this.hasError = false;\n this.errorMessage = \"\";\n\n if (this.meterNumber === undefined || this.meterNumber == null) {\n this.hasError = true;\n this.errorMessage = \"表示順を入力してください\";\n return;\n }\n if (value == this.meter.no) {\n return;\n }\n for (var i = 0; i < this.meterList.length; i++) {\n if (value == this.meterList[i].no) {\n this.hasError = true;\n this.errorMessage = \"入力した表示順はすでに存在します\";\n break;\n }\n }\n }\n\n setMeterNameList() {\n this.errorMessage = \"\";\n this.meterNameList = [\"電灯\", \"動力\", \"水道\", \"ガス\"];\n this.changeMeterName();\n }\n\n changeMeterName() {\n this.hasError = false;\n if (!this.meterNameList.includes(this.selectedMeterName.value)) {\n this.selectedMeterName = new UntypedFormControl();\n this.meterName = null;\n this.hasError = true;\n this.errorMessage =\n \"メーター名称のメーター種類が無効な値です。再度入力してください\";\n return;\n }\n\n if (\n this.selectedMeterName.value != undefined ||\n this.selectedMeterName.value != null\n ) {\n this.hasError = false;\n if (\n this.subMeterName == undefined ||\n this.subMeterName == \"\" ||\n this.subMeterName == null\n ) {\n this.meterName = this.selectedMeterName.value;\n } else {\n this.meterName = this.subMeterName + \"_\" + this.selectedMeterName.value;\n }\n } else {\n this.hasError = true;\n this.errorMessage = \"メーター名称のメーター種類を入力してください\";\n }\n }\n\n /**\n * @param {number} value 初期値\n */\n initialValuechange(value: number) {\n this.hasError = false;\n this.errorMessage = \"\";\n if (this.maxValue < value) {\n this.hasError = true;\n this.errorMessage = \"初期値は最大検針値を超えることはできません\";\n }\n if (value < this.minValue) {\n this.hasError = true;\n this.errorMessage = \"初期値は最小検針値を下回ることはできません\";\n }\n\n if (this.decimalPointPosition != undefined) {\n const diff =\n value - parseFloat(Number(value).toFixed(this.decimalPointPosition));\n\n if (diff != 0) {\n this.hasError = true;\n this.errorMessage = \"初期値の小数点を正しく入力してください\";\n }\n }\n }\n\n /**\n *\n */\n setDecimalInterval() {\n const interval: number = 0.1;\n\n if (\n this.decimalPointPosition != undefined ||\n this.decimalPointPosition != null\n ) {\n this.meterValueInterval = interval ** this.decimalPointPosition;\n }\n\n if (this.meterInitialValue != undefined) {\n this.initialValuechange(this.meterInitialValue);\n }\n }\n\n /**\n * @param {number} value 初期値\n */\n closedValuechange(value: number) {\n this.hasError = false;\n this.errorMessage = \"\";\n if (this.oldMaxValue < value) {\n this.hasError = true;\n this.errorMessage =\n \"終了値は旧メーターの最大検針値を超えることはできません\";\n }\n if (value < this.oldMinValue) {\n this.hasError = true;\n this.errorMessage =\n \"終了値は旧メーターの最小検針値を下回ることはできません\";\n }\n\n if (this.oldDecimalPointPosition != undefined) {\n const diff =\n value - parseFloat(Number(value).toFixed(this.oldDecimalPointPosition));\n\n if (diff != 0) {\n this.hasError = true;\n this.errorMessage = \"終了値の小数点を正しく入力してください\";\n }\n }\n }\n\n /**\n *\n */\n setOldDecimalInterval() {\n const interval: number = 0.1;\n\n if (\n this.decimalPointPosition != undefined ||\n this.decimalPointPosition != null\n ) {\n this.oldMeterValueInterval = interval ** this.decimalPointPosition;\n }\n }\n\n checkIfReadyToGo() {\n this.isFormReady =\n this.meterInitialValue != undefined &&\n this.meterInitialValue != null &&\n this.meterExpirationDate != null &&\n this.meterClosedValue != undefined &&\n this.meterClosedValue != null &&\n this.meterLabel != undefined &&\n this.meterLabel != \"\" &&\n this.meterLabel != null;\n\n if (!this.isUseAngle) {\n this.isFormReady =\n this.isFormReady &&\n this.numberOfDigit != undefined &&\n this.decimalPointPosition != undefined &&\n this.numberOfDigit != null &&\n this.decimalPointPosition != null;\n }\n\n return !this.hasError && this.isFormReady && !this.isExistNumber;\n }\n}\n","import { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, LOCALE_ID, OnDestroy, OnInit } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { DateAdapter, NativeDateAdapter } from \"@angular/material/core\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { Const } from \"../const/const\";\nimport { CompareDialogData } from \"../entity/compare-dialog-data\";\nimport { CorrectDialogData } from \"../entity/correct-dialog-data\";\nimport { GetInSiteMeterResponse } from \"../entity/get-in-site-meters-response\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { MeterInfo } from \"../entity/get-meter-info\";\nimport { GetReportDataResponse } from \"../entity/get-report-data-response\";\nimport { GetReportListResponse } from \"../entity/get-report-list-response\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { GetTenantsResponse } from \"../entity/get-tenants-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { LoginUserSiteCompany } from \"../entity/login-user-site-company\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { Meter } from \"../entity/meter\";\nimport { ReportListInfo } from \"../entity/report-list-info\";\nimport { ReportPartitions } from \"../entity/report-partitions\";\nimport { ReportRow } from \"../entity/report-row\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { ReportConfirmDialogComponent } from \"../report-confirm-dialog/report-confirm-dialog.component\";\nimport { ReportListDialogComponent } from \"../report-list-dialog/report-list-dialog.component\";\nimport { ValueCompareDialogComponent } from \"../value-compare-dialog/value-compare-dialog.component\";\nimport { ValueCorrectDialogComponent } from \"../value-correct-dialog/value-correct-dialog.component\";\nimport { GetReportConfirmedDataResponse } from \"../entity/get-confirmed-report-data-response\";\nimport { BigNumber } from \"bignumber.js\";\nimport { ReportMeters } from \"../entity/report-meters\";\nimport { ReportPartitionsTenant } from \"../entity/report-partitions-tenant\";\nimport { ReportTenant } from \"../entity/report-tenant\";\n\n@Component({\n selector: \"app-meter-report\",\n templateUrl: \"./meter-report.component.html\",\n styleUrls: [\"./meter-report.component.scss\"],\n})\nexport class MeterReportComponent implements OnInit, OnDestroy {\n selectedSite = new UntypedFormControl();\n selectedType = new UntypedFormControl(\"すべて\");\n selectedMonth: number;\n idToken: string;\n typeArray: string[];\n\n // ログインユーザー取得API関連\n getLoginUserUrl: string;\n getLoginUserResponse: GetLoginUserResponse;\n loginUser: LoginUser;\n\n // レポートデータ取得API関連\n getReportDataUrl: string;\n reportAPIResponse: GetReportDataResponse;\n reportPartitions: ReportPartitions[];\n\n // APIレスポンス\n private getReportConfirmedDataResponse: GetReportConfirmedDataResponse;\n\n // レポート確定\n postConfirmedReportUrl: string;\n\n // レポート取得\n getReportListUrl: string;\n\n // メーター情報1件取得API関連\n getOneMeterDataUrl: string;\n meter: Meter;\n\n // フラグ類\n getReportDataFinished: boolean;\n getUserFinished: boolean;\n canEdit: boolean;\n isConfirmedReport: boolean;\n isAlreadyConfirmed: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n isConfirmedDataSorce = false; // データの取得元が確定レポートデータかどうかのフラグ\n\n // データソース格納用の配列\n reportData: ReportRow[];\n reportDataBackUp: ReportRow[];\n\n // 列の表示項目を決める配列\n displayedColumns: string[];\n\n // レポートリスト表示用\n reportList: ReportListInfo[];\n siteArray: LoginUserSite[];\n\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n // 有効切れメーターリスト\n expMeterData: MeterInfo[] = [];\n partitionTenants: GetTenantsPartition[];\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private httpClient: HttpClient,\n public auth: AuthService,\n public dialog: MatDialog,\n dateAdapter: DateAdapter,\n @Inject(LOCALE_ID) private locale: string\n ) {\n localStorage.setItem(\"path\", router.url);\n dateAdapter.setLocale(\"ja\");\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser();\n this.getLoginUserResponse = new GetLoginUserResponse();\n this.reportData = [];\n this.reportDataBackUp = [];\n this.reportList = [];\n this.siteArray = [];\n this.typeArray = [\"すべて\", \"電灯\", \"動力\", \"水道\", \"ガス\"];\n this.getUserFinished = false;\n this.getReportDataFinished = false;\n this.selectedSite.disable();\n this.selectedType.disable();\n this.canEdit = false;\n this.isConfirmedReport = false;\n this.displayedColumns = [\n \"partition\",\n \"name\",\n \"info\",\n \"label\",\n \"type\",\n \"lastMonth\",\n \"thisMonth\",\n \"used\",\n ];\n this.expMeterData = [];\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser();\n } else {\n this.doSetValue();\n }\n } else {\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n }\n });\n }\n\n doSetValue() {\n this.loginUser = Const.loginUser;\n this.selectedSite = new UntypedFormControl(Const.site_id);\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n if (Const.siteInfo.length > 0) {\n this.siteArray = Const.siteInfo;\n } else {\n this.getAllSiteData();\n }\n } else {\n for (const site of this.loginUser.sites) {\n this.siteArray.push(site);\n }\n }\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.selectedType = new UntypedFormControl(\"すべて\");\n this.loadMeterData();\n this.doGetReportList(\"make\");\n }\n\n doChangeType() {\n this.selectedType.disable();\n this.selectedSite.disable();\n this.getUserFinished = false;\n this.getReportDataFinished = false;\n this.canEdit = false;\n this.isConfirmedReport = false;\n this.loadMeterData();\n this.doGetReportList(\"filtered\");\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n this.siteArray = Const.siteInfo;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"施設情報が取得できませんでした。\");\n console.error(\"Get site data failed\");\n console.error(err);\n }\n }\n );\n }\n\n doChangeSite() {\n this.getReportDataFinished = false;\n this.isConfirmedReport = false;\n this.selectedSite.disable();\n this.selectedType.disable();\n Const.site_id = this.selectedSite.value;\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n this.selectedType = new UntypedFormControl(\"すべて\");\n this.loadMeterData();\n this.doGetReportList(\"make\");\n }\n\n // レポート一覧の取得処理(初回画面描画時、レポート一覧更新時共通)\n // 引数が'make'=最初の画面描画時のみ画面上に描画するレポートが確定済or未確定を判別して後続処理を行う\n doGetReportList(option: string) {\n this.getReportListUrl = `${environment.apiUrl}/report_list/${this.selectedSite.value}`;\n this.httpClient\n .get(this.getReportListUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetReportListResponse) => {\n this.reportList = [];\n let confirmedUser = null;\n const reportListData = response.result.report_list;\n for (const oneReportData of reportListData) {\n const reportMonth = Number(oneReportData.report_month);\n let fixedAt = null;\n let editedAt = null;\n if (oneReportData.confirmed_report_created_at) {\n fixedAt = String(\n formatDate(\n oneReportData.confirmed_report_created_at,\n \"yyyy-MM-dd HH:mm:ss\",\n this.locale\n )\n );\n }\n if (oneReportData.value_confirmation_created_at) {\n editedAt = String(\n formatDate(\n oneReportData.value_confirmation_created_at,\n \"yyyy-MM-dd HH:mm:ss\",\n this.locale\n )\n );\n }\n if (oneReportData.value_confirmation_user_name) {\n confirmedUser = oneReportData.value_confirmation_user_name;\n } else {\n confirmedUser = \"削除済みユーザー\";\n }\n const reportInfo = new ReportListInfo(\n reportMonth,\n fixedAt,\n editedAt,\n confirmedUser\n );\n if (\n oneReportData.confirmed_report_created_at &&\n oneReportData.value_confirmation_created_at\n ) {\n if (\n formatDate(\n oneReportData.confirmed_report_created_at,\n \"yyyy-MM-dd HH:mm:ss\",\n this.locale\n ) <\n formatDate(\n oneReportData.value_confirmation_created_at,\n \"yyyy-MM-dd HH:mm:ss\",\n this.locale\n )\n ) {\n reportInfo.isConfirmedAll = false;\n }\n }\n this.reportList.push(reportInfo);\n }\n\n this.createJobBatch(null);\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"レポート一覧が取得できませんでした。\");\n this.getReportDataFinished = true;\n this.selectedSite.enable();\n this.selectedType.enable();\n this.reportData = [];\n this.reportDataBackUp = [];\n }\n }\n );\n }\n\n // 選択月とレポート一覧を引数に、選択月に確定済レポートがあるかどうか確認する\n checkAlreadyConfirmed(selectedMonth: number, reportList: ReportListInfo[]) {\n for (const reportInfo of reportList) {\n if (reportInfo.month === selectedMonth) {\n if (!reportInfo.fixedTime) {\n return false;\n } else {\n return true;\n }\n }\n }\n }\n\n /**\n * データ作成処理の一連\n * - 引数は判断要素各種\n * - ここをレポートデータ作成の基点とする\n * @param dialogResult(any): レポート年月選択ダイアログの結果\n */\n private async createJobBatch(dialogResult: any) {\n this.getReportDataFinished = false;\n this.reportData = [];\n this.reportDataBackUp = [];\n this.selectedSite.disable();\n this.selectedType.disable();\n\n try {\n // レポートの年月が未設定の場合、レポートリストの先頭を取得\n if (this.selectedMonth == undefined) {\n this.selectedMonth = this.reportList[0].month;\n }\n\n await this.judgeAndRunCreateJob(dialogResult);\n } catch (error) {\n console.error(error);\n\n this.reportData = [];\n this.reportDataBackUp = [];\n\n throw error;\n } finally {\n this.getReportDataFinished = true;\n this.selectedSite.enable();\n this.selectedType.enable();\n }\n }\n\n /**\n * 確定レポートデータか未確定レポートデータかを判定し、実行する処理\n * @param dialogResult(any): レポート年月選択ダイアログの結果\n */\n private async judgeAndRunCreateJob(dialogResult: any) {\n this.isAlreadyConfirmed = this.checkAlreadyConfirmed(\n this.selectedMonth,\n this.reportList\n );\n\n const today = new Date();\n\n // レポート未確定かどうかの判定\n // ダイアログがある場合はその結果、ダイアログがない場合は今月&確定フラグが立っていない&確定レポートがない\n const isPending =\n dialogResult == null\n ? this.selectedMonth.toString() ==\n formatDate(today, \"yyyyMM\", this.locale) &&\n !this.isConfirmedReport &&\n !this.isAlreadyConfirmed\n : !this.isConfirmedReport;\n\n if (isPending) {\n await this.doGetReportData();\n return;\n }\n\n try {\n // 確定済みレポートデータ取得APIからデータを取得\n this.getReportConfirmedDataResponse = await this.getConfirmedReportData();\n } catch (error) {\n console.error(error);\n if (error.status == \"404\") {\n // 確定済みレポートがない場合は未確定データで作成する\n await this.doGetReportData();\n return;\n } else if (error.status == \"401\") {\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n } else {\n alert(\"レポート情報が取得できませんでした。\");\n this.selectedSite.enable();\n this.selectedType.enable();\n this.reportData = [];\n this.reportDataBackUp = [];\n throw error;\n }\n }\n\n // レポート年月選択ダイアログの結果がある場合はそこから判定\n if (dialogResult != null && dialogResult != undefined) {\n // 確定フラグがあれば確定データから作成\n if (dialogResult.isConfirmed) {\n this.createConfirmedReportData();\n } else {\n // ダイアログから受け取った要素のうち、レポートの作成日時があれば確定済みのデータを取得\n if (\n dialogResult.time !== \"\" &&\n dialogResult.time !== undefined &&\n dialogResult.time !== null\n ) {\n this.createConfirmedReportData();\n } else {\n await this.doGetReportData();\n }\n }\n return;\n }\n\n // 全てすり抜けた場合は確定済みレポートから取得\n this.createConfirmedReportData();\n }\n\n /**\n * レポートリストから選択した年月の前月の確定日を取得\n * @returns 前月の確定日: String\n */\n private getLastMonthConfirmDate(): String {\n // 選択した年月の前月の日付型変数を用意\n // JSやTSのDateのMonth部分は月ではなく、月に該当するIndex(0始まり)なので−1した後に−1をsetする\n let lastMonthDate = new Date(\n Number(this.selectedMonth.toString().substring(0, 4)),\n Number(this.selectedMonth.toString().substring(4)) - 1,\n 1\n );\n lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);\n\n // 初期値は選択した年月の前月月初にする\n let lastMonthConfirmDate = formatDate(\n lastMonthDate,\n \"yyyyMMdd\",\n this.locale\n );\n\n if (this.reportList.length > 1) {\n const lastMonthReportInfo = this.reportList.find(\n (element) =>\n element.month.toString() ==\n formatDate(lastMonthDate, \"yyyyMM\", this.locale)\n );\n\n if (lastMonthReportInfo) {\n lastMonthConfirmDate =\n lastMonthReportInfo.fixedTime == null ||\n lastMonthReportInfo.fixedTime == undefined\n ? lastMonthConfirmDate\n : formatDate(\n lastMonthReportInfo.fixedTime,\n \"yyyyMMdd\",\n this.locale\n );\n }\n }\n\n return lastMonthConfirmDate;\n }\n\n /*\n 確定済みレポート処理 START\n */\n\n /**\n * 確定レポートデータ作成処理\n */\n async createConfirmedReportData() {\n // データ取得元のフラグを切り替える\n this.isConfirmedDataSorce = true;\n this.isConfirmedReport = true;\n\n // 初期化\n this.reportData = [];\n this.reportDataBackUp = [];\n this.selectedSite.disable();\n this.selectedType.disable();\n\n try {\n // APIから取得したデータを取得\n const confirmedReportFloors =\n this.getReportConfirmedDataResponse.result.confirmed_report.floors;\n\n // レポートデータ作成\n confirmedReportFloors.forEach((floor) => {\n floor.partitions.forEach((partition) => {\n partition.partitions_tenants.forEach((partitionsTenant) => {\n // テナント情報がなければスキップ\n if (!partitionsTenant.tenant) {\n return;\n }\n\n partition.meters.forEach((meter) => {\n const row = new ReportRow();\n row.id = meter.id;\n row.partition = partition.name;\n // 確定の場合、テナント名はtenant_logから取得\n if (partitionsTenant.tenant_log) {\n row.name = partitionsTenant.tenant_log.name;\n } else {\n row.name = partitionsTenant.tenant.name;\n }\n row.tenantId = partitionsTenant.tenant.id;\n row.label = meter.label;\n row.info = meter.name.substring(0, meter.name.indexOf(\"_\"));\n row.decimal = meter.decimal_point_position;\n row.type = meter.name.substring(\n meter.name.indexOf(\"_\") + 1,\n meter.name.length\n );\n\n // 今月確定値\n row.thisMonth = this.getValueConfirmationForConfirmed(\n row.tenantId,\n meter\n );\n\n // 前月確定値\n row.lastMonth = this.getLastMonthValueConfirmationForConfirmed(\n row.tenantId,\n meter\n );\n\n // 前月と今月の値が揃っている場合のみ差分を計算する\n if (row.lastMonth !== \"N/A\" && row.thisMonth !== \"N/A\") {\n row.used = this.calcUsedValue(\n row.lastMonth,\n row.thisMonth,\n meter.max_value,\n meter.decimal_point_position\n );\n\n // 検針値比較ダイアログ用\n // 2ヶ月前の値があれば先月使用量の計算&アラートフラグの更新処理\n if (meter.two_months_before_value_detections.length !== 0) {\n for (const twoMonthsBeforeValueDetection of meter.two_months_before_value_detections) {\n if (\n twoMonthsBeforeValueDetection.tenant_id === row.tenantId\n ) {\n if (twoMonthsBeforeValueDetection.value_confirmation) {\n row.lastUsed = this.calcUsedValue(\n twoMonthsBeforeValueDetection.value_confirmation[\n \"confirmed_value\"\n ],\n row.lastMonth,\n meter.max_value,\n meter.decimal_point_position\n ).toString();\n row.alert = this.judgingAlertValue(\n row.used,\n row.lastMonth,\n twoMonthsBeforeValueDetection.value_confirmation[\n \"confirmed_value\"\n ],\n meter.max_value,\n meter.decimal_point_position,\n 0.5\n );\n break;\n }\n }\n }\n }\n } else {\n row.used = \"N/A\";\n }\n\n this.checkAndPushToReportData(\n row,\n partition.report_type,\n String(this.selectedType.value)\n );\n });\n });\n });\n });\n\n this.selectedSite.enable();\n this.selectedType.enable();\n } catch (error) {\n console.error(error);\n if (error.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else if (error.status == \"401\") {\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n } else {\n alert(\"レポート情報が取得できませんでした。\");\n this.selectedSite.enable();\n this.selectedType.enable();\n this.reportData = [];\n this.reportDataBackUp = [];\n }\n }\n }\n\n /**\n * 確定済みデータ取得用APIのコール\n * @returns APIレスポンス: GetReportConfirmedDataResponse\n */\n async getConfirmedReportData(): Promise {\n // レポートリストから前月の確定日を取得\n const lastMonthConfirmDate = this.getLastMonthConfirmDate();\n\n const url = `${environment.apiUrl}/report_histories/${this.selectedSite.value}/${this.selectedMonth}/report_details/${lastMonthConfirmDate}`;\n\n try {\n const response = await this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .toPromise();\n return response;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * 確定済み\n * 今月確定値を取得\n * @param tenantId(string): テナントID\n * @param meter(ReportMeters): メーター\n * @returns 今月確定値: string\n */\n private getValueConfirmationForConfirmed(\n tenantId: string,\n meter: ReportMeters\n ): string {\n let result = \"N/A\";\n\n // value_detectionsがない場合は値なしで返却\n if (meter.value_detections.length == 0) {\n return result;\n }\n\n // 確定値は降順でソート\n const valueDetections = meter.value_detections;\n valueDetections.sort(\n (a, b) => Number(new Date(b.created_at)) - Number(new Date(a.created_at))\n );\n\n valueDetections.some((detection) => {\n if (detection.tenant_id == tenantId && detection.value_confirmation) {\n result = detection.value_confirmation.confirmed_value;\n return true;\n } else {\n return false;\n }\n });\n\n return result;\n }\n\n /**\n * 確定済み\n * 前月確定値を取得\n * @param tenantId(string): テナントID\n * @param meter(ReportMeters): メーター\n * @returns 前月確定値: string\n */\n private getLastMonthValueConfirmationForConfirmed(\n tenantId: string,\n meter: ReportMeters\n ): string {\n let result = \"N/A\";\n\n // last_month_value_detectionsがない場合は値なしで返却\n if (meter.last_month_value_detections.length == 0) {\n return result;\n }\n\n // 確定値は降順でソート\n const lastMonthValueDetections = meter.last_month_value_detections;\n lastMonthValueDetections.sort(\n (a, b) => Number(new Date(b.created_at)) - Number(new Date(a.created_at))\n );\n\n lastMonthValueDetections.some((detection) => {\n if (detection.tenant_id == tenantId && detection.value_confirmation) {\n result = detection.value_confirmation.confirmed_value;\n return true;\n } else {\n return false;\n }\n });\n\n return result;\n }\n\n /*\n 確定済みレポート処理 END\n */\n\n /*\n 未確定レポート処理 START\n */\n\n // 【未確定】APIからデータ取得〜レポートデータ作成処理呼び出しまで\n // 月変更後はここを呼び出し\n async doGetReportData() {\n // データ取得元のフラグを切り替える\n this.isConfirmedDataSorce = false;\n this.isConfirmedReport = false;\n\n this.isAlreadyConfirmed = this.checkAlreadyConfirmed(\n this.selectedMonth,\n this.reportList\n );\n\n // レポートリストから前月の確定日を取得\n const lastMonthConfirmDate = this.getLastMonthConfirmDate();\n\n try {\n // APIコール\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/partitions/meters/${this.selectedMonth}/value_confirmations/${lastMonthConfirmDate}`;\n const response = await this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .toPromise();\n\n let partitions = [];\n response.result.site.floors.forEach((floor) => {\n floor.partitions.forEach((parititon) => {\n partitions.push(parititon);\n });\n });\n this.reportPartitions = partitions;\n\n this.createReportDataAll(this.reportPartitions);\n } catch (error) {\n console.error(error);\n if (error.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"レポート情報が取得できませんでした。\");\n }\n }\n }\n\n // 【未確定】レポート作成処理(全体包括)\n createReportDataAll(partitions: ReportPartitions[]) {\n for (const partition of partitions) {\n this.createReportRow(partition);\n }\n }\n\n // 【未確定】1区画分のデータ作成〜reportDataへの格納まで\n // テナント入替or特殊メーター(倉庫など)がある場合は別処理へ\n // 画面表示用の配列へのpushは全てここで行う\n createReportRow(partition: ReportPartitions) {\n // テナント入替区画(個別処理へ)\n if (\n partition.is_card_display !== 0 &&\n partition.partitions_tenants.length > 1\n ) {\n const rowsWithChange = this.createReportRowWithChanged(partition);\n for (const rowData of rowsWithChange) {\n this.checkAndPushToReportData(\n rowData,\n partition.report_type,\n String(this.selectedType.value)\n );\n }\n return;\n } else {\n // 通常の場合\n if (partition.partitions_tenants.length > 0) {\n for (const meter of partition.meters) {\n const row = new ReportRow();\n row.partition = partition.name;\n\n // テナント未契約(テナント解約済みも含む)\n if (partition.partitions_tenants.length === 0) {\n row.name = \"テナント未契約\";\n // 非表示テナントとしての処理\n } else {\n row.name = partition.partitions_tenants[0].tenant.name;\n row.tenantId = partition.partitions_tenants[0].tenant.id;\n row.label = meter.label;\n row.info = meter.name.substr(0, meter.name.indexOf(\"_\"));\n row.decimal = meter.decimal_point_position;\n row.type = meter.name.substr(meter.name.indexOf(\"_\") + 1, 2);\n this.writeMetersDataToRow(meter, row, row.tenantId);\n }\n\n this.checkAndPushToReportData(\n row,\n partition.report_type,\n String(this.selectedType.value)\n );\n }\n }\n }\n }\n\n // 【未確定】区画のレポート種別をみて格納先を判別〜格納処理まで行う\n checkAndPushToReportData(row: ReportRow, reportType: number, filter: String) {\n if (filter === \"すべて\") {\n this.reportData.push(row);\n } else {\n this.reportDataBackUp.push(row);\n if (row.type === filter) {\n this.reportData.push(row);\n }\n }\n }\n\n // 【未確定】テナント入替区画の行データ作成\n // 必要行数分rowsSamePartitionを生成して\n createReportRowWithChanged(partition: ReportPartitions): any {\n let rows: ReportRow[] = [];\n\n partition.partitions_tenants.forEach((partitionsTenant) => {\n partition.meters.forEach((meter) => {\n // メーターの削除フラグがあり、last_month_value_detectionsがない場合はスキップ\n if (\n meter.is_deleted == \"0\" ||\n (meter.is_deleted == \"1\" &&\n meter.last_month_value_detections.length > 0)\n ) {\n const row = new ReportRow();\n row.partition = partition.name;\n row.name = partitionsTenant.tenant.name;\n row.label = meter.label;\n row.info = meter.name.substr(0, meter.name.indexOf(\"_\"));\n row.type = meter.name.substr(meter.name.indexOf(\"_\") + 1, 2);\n row.decimal = meter.decimal_point_position;\n row.tenantId = partitionsTenant.tenant.id;\n this.writeMetersDataToRow(meter, row, row.tenantId);\n this.createTenantReplaceReport(\n meter,\n partition,\n partition.partitions_tenants,\n row\n );\n rows.push(row);\n }\n });\n });\n return rows;\n }\n\n /**\n * テナント入れ替えがある場合の各種確定値\n * - 当月確定値\n * 1. メーターのclosed_valueがあればそちらを優先\n * 2. 上記がなく、テナントのclosed_valueがあればそちらを優先\n * 3. いずれも無ければvalue_confirmationが存在するvalue_detectionを検索し、そのIDを取得する\n * 4. どれも無ければNull\n *\n * - 前月確定値\n * 1. 自分が旧テナントでない & 旧テナントを持っている:テナント登録時の初期値\n * 2. 1の条件に当てはまるが、テナント初期値がない(テナントの区画拡張):旧テナントの当月確定値(=旧テナントの解約時の値)\n * 3. 上記以外:前回確定値\n * 4. 前回確定値がない場合:メーターの初期値\n *\n * - どれも該当しない場合というのはこの処理を呼び出す前のwriteMetersDataToRowで実施済みの前提\n */\n createTenantReplaceReport(\n meter: ReportMeters,\n partition: ReportPartitions,\n partitionTenants: ReportPartitionsTenant[],\n row: ReportRow\n ) {\n // フラグ\n const isLamp =\n meter.name === \"電灯\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"電灯\";\n const isPower =\n meter.name === \"動力\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"動力\";\n const isWaterService =\n meter.name === \"水道\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"水道\";\n const isGus =\n meter.name === \"ガス\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"ガス\";\n\n const isOldTenant = this.isOldTenant(\n row.tenantId,\n partition.partitions_tenants\n );\n const hasOldTenant = this.hasOldTenant(\n row.tenantId,\n partition.partitions_tenants\n );\n\n // テナント登録時のメーター値を取得\n const valueAtTenantRegistration = this.getMeterValueAtTenantRegistration(\n row.tenantId,\n meter,\n partition.partitions_tenants\n );\n\n // テナントの解約時のメーター値を取得\n const closed_value = this.getMeterValueAtTenantClosed(\n row.tenantId,\n meter,\n partition.partitions_tenants\n );\n\n const meterClosedValue = meter.closed_value;\n\n // 旧テナントの当月確定値\n const oldTenantId = this.getOldTenantId(row.tenantId, partitionTenants);\n const oldTenantValue = this.getMeterValueAtTenantClosed(\n oldTenantId,\n meter,\n partition.partitions_tenants\n );\n\n if (isLamp || isPower || isWaterService || isGus) {\n // 当月確定値\n if (meterClosedValue != null && meterClosedValue != \"\") {\n row.thisMonth = meterClosedValue;\n } else if (closed_value != \"\") {\n row.thisMonth = closed_value;\n }\n\n // 前月確定値\n if (!isOldTenant && hasOldTenant) {\n // テナント初期値があればそれを優先\n if (valueAtTenantRegistration != \"\") {\n row.lastMonth = valueAtTenantRegistration;\n\n // メーターの解約値があればそれが旧テナントの当月確定値なのでそれを採用\n } else if (meterClosedValue != null && meterClosedValue != \"\") {\n row.lastMonth = meterClosedValue;\n\n // 上記までに当てはまらない場合は旧テナントの解約時の値が当月確定値なのでそれを採用\n } else if (oldTenantValue != \"\") {\n row.lastMonth = oldTenantValue;\n }\n }\n\n row.used = this.calcUsedValue(\n row.lastMonth,\n row.thisMonth,\n row.maxVal,\n row.decimal\n );\n }\n }\n\n // 【未確定】通常メーターのみ検知して行データに書き込みを行う(電灯動力水道ガスで共通)\n writeMetersDataToRow(meter: ReportMeters, row: ReportRow, tenantId: string) {\n const isLamp =\n meter.name === \"電灯\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"電灯\";\n const isPower =\n meter.name === \"動力\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"動力\";\n const isWaterService =\n meter.name === \"水道\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"水道\";\n const isGus =\n meter.name === \"ガス\" ||\n meter.name.substring(meter.name.indexOf(\"_\") + 1, meter.name.length) ===\n \"ガス\";\n\n if (isLamp || isPower || isWaterService || isGus) {\n // メーター記入状況の初期化\n row.id = meter.id;\n row.lastMonth = \"N/A\";\n row.used = \"N/A\";\n row.thisMonth = \"N/A\";\n row.maxVal = meter.max_value;\n if (meter.last_month_value_detections.length !== 0) {\n // メーターが存在してかつ検針済み(value_detection配列が空じゃない)のとき、最初の要素から順にvalue_detectionをチェックする\n // メーターIDが引数のものと一致かつvalue_confirmationがnull出ない(=確定値入力済み)の場合、書き込みを行う\n // 1度書き込みを行ったらfor文は抜ける(created_atが最新のもの=書き込み対象データが先の要素として出てきているはずのため)\n for (const lastValueDetection of meter.last_month_value_detections) {\n if (lastValueDetection.tenant_id === tenantId) {\n if (lastValueDetection.value_confirmation) {\n row.lastMonth =\n lastValueDetection.value_confirmation[\"confirmed_value\"];\n break;\n }\n }\n }\n }\n if (\n row.lastMonth === \"N/A\" &&\n meter.initial_value !== undefined &&\n meter.initial_value !== null\n ) {\n row.lastMonth = meter.initial_value;\n }\n if (meter.value_detections.length !== 0) {\n // 引数として連携したテナントIDに一致するときだけ書き込みを行う\n for (const valueDetection of meter.value_detections) {\n if (valueDetection.tenant_id === tenantId) {\n if (valueDetection.value_confirmation) {\n row.thisMonth =\n valueDetection.value_confirmation[\"confirmed_value\"];\n break;\n }\n }\n }\n }\n if (meter.closed_value !== undefined && meter.closed_value !== null) {\n row.thisMonth = meter.closed_value;\n }\n if (row.lastMonth !== \"N/A\" && row.thisMonth !== \"N/A\") {\n // 前月と今月の値が揃っている場合のみ差分を計算する\n row.used = this.calcUsedValue(\n row.lastMonth,\n row.thisMonth,\n meter.max_value,\n meter.decimal_point_position\n );\n // 検針値比較ダイアログ用\n // 2ヶ月前の値があれば先月使用量の計算&アラートフラグの更新処理\n if (meter.two_months_before_value_detections.length !== 0) {\n for (const twoMonthsBeforeValueDetection of meter.two_months_before_value_detections) {\n if (twoMonthsBeforeValueDetection.tenant_id === tenantId) {\n if (twoMonthsBeforeValueDetection.value_confirmation) {\n row.lastUsed = this.calcUsedValue(\n twoMonthsBeforeValueDetection.value_confirmation[\n \"confirmed_value\"\n ],\n row.lastMonth,\n meter.max_value,\n meter.decimal_point_position\n );\n row.alert = this.judgingAlertValue(\n row.used,\n row.lastMonth,\n twoMonthsBeforeValueDetection.value_confirmation[\n \"confirmed_value\"\n ],\n meter.max_value,\n meter.decimal_point_position,\n 0.5\n );\n break;\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * テナント登録時のメーター初期値を取得\n * @param tenantId(string): テナントID\n * @param meters(ReportMeters): メーター\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n * @returns 取得した初期値\n */\n private getMeterValueAtTenantRegistration(\n tenantId: string,\n meter: ReportMeters,\n partitionsTenants: ReportPartitionsTenant[]\n ): string {\n let result = \"\";\n\n partitionsTenants.some((partitionsTenant) => {\n if (\n partitionsTenant.tenant &&\n partitionsTenant.tenant.initial_value &&\n tenantId == partitionsTenant.tenant.id\n ) {\n // JSONにパース\n const initialValues = JSON.parse(partitionsTenant.tenant.initial_value);\n const initialTenantMeterInfo = initialValues.find(\n (value) => value.meterLabel == meter.label\n );\n\n // 上記で見つかったらそのメーター値を返却値とする\n if (initialTenantMeterInfo) {\n result = initialTenantMeterInfo.meterValue;\n return true;\n } else {\n return false;\n }\n }\n });\n\n return result;\n }\n\n /**\n * テナント解約時のメーター値を取得\n * @param tenantId(string): テナントID\n * @param meters(ReportMeters): メーター\n * @param partitionsTenants(ReportPartitionsTenant[]): API結果のpartitions_tenants以下\n * @returns 取得した解約時の値\n */\n private getMeterValueAtTenantClosed(\n tenantId: string,\n meter: ReportMeters,\n partitionsTenants: ReportPartitionsTenant[]\n ): string {\n let result = \"\";\n\n partitionsTenants.some((partitionsTenant) => {\n if (\n partitionsTenant.tenant &&\n partitionsTenant.tenant.closed_value &&\n tenantId == partitionsTenant.tenant.id\n ) {\n // JSONにパース\n const closedValues = JSON.parse(partitionsTenant.tenant.closed_value);\n const closedTenantMeterInfo = closedValues.find(\n (value) => value.meterLabel == meter.label\n );\n\n // 上記で見つかったらそのメーター値を返却値とする\n if (closedTenantMeterInfo) {\n result = closedTenantMeterInfo.meterValue;\n return true;\n } else {\n return false;\n }\n }\n });\n\n return result;\n }\n\n /**\n * 自分が旧テナントかどうかの判定\n * @param currentTenantId(string): 確認対象のテナントID\n * @param partitionsTenants(ReportPartitionsTenant[]): 元データのpartitions_tenants\n * @returns 旧テナントかどうか: boolean\n */\n private isOldTenant(\n currentTenantId: string,\n partitionsTenants: ReportPartitionsTenant[]\n ): boolean {\n // テナントが1つしかない場合\n if (partitionsTenants.length == 0) {\n return false;\n }\n\n // 作成日時の昇順でソート\n // tenantsの作成日時だと、区画拡張の時に狂うので、partitions_tenantsでソートする\n partitionsTenants.sort(\n (a, b) =>\n Number(new Date(a.contracted_at)) - Number(new Date(b.contracted_at))\n );\n\n // tenantだけを抽出\n let tenants: ReportTenant[] = [];\n partitionsTenants.forEach((partitionsTenant) => {\n tenants.push(partitionsTenant.tenant);\n });\n\n // 現在のテナントIDのインデックスを特定\n const currentTenantIndex = tenants.findIndex(\n (tenant) => tenant.id == currentTenantId\n );\n\n // テナントの数−1であれば(インデックスが最大であれば)false、それ以外はtrue\n return currentTenantIndex != tenants.length - 1;\n }\n\n /**\n * 自分が旧テナントを持っているか\n * @param currentTenantId(string): 確認対象のテナントID\n * @param partitionsTenants(ReportPartitionsTenant[]): 元データのpartitions_tenants\n * @returns 旧テナントを持っているか: boolean\n */\n private hasOldTenant(\n currentTenantId: string,\n partitionsTenants: ReportPartitionsTenant[]\n ): boolean {\n // テナントが1つしかない場合\n if (partitionsTenants.length == 0) {\n return false;\n }\n\n // 作成日時の昇順でソート\n // tenantsの作成日時だと、区画拡張の時に狂うので、partitions_tenantsでソートする\n partitionsTenants.sort(\n (a, b) =>\n Number(new Date(a.contracted_at)) - Number(new Date(b.contracted_at))\n );\n\n // tenantだけを抽出\n let tenants: ReportTenant[] = [];\n partitionsTenants.forEach((partitionsTenant) => {\n tenants.push(partitionsTenant.tenant);\n });\n\n // 現在のテナントIDのインデックスを特定\n const currentTenantIndex = tenants.findIndex(\n (tenant) => tenant.id == currentTenantId\n );\n\n // インデックスが0(一番古いデータ)でなければtrue\n return currentTenantIndex != 0;\n }\n\n /**\n * 旧テナントIDを特定する\n * @param currentTenantId(string): 確認対象のテナントID\n * @param partitionsTenants(ReportPartitionsTenant[]): 元データのpartitions_tenants\n * @returns 旧テナントID: string\n * - 旧テナントがない、自分が旧テナントな場合などは空文字\n */\n private getOldTenantId(\n currentTenantId: string,\n partitionsTenants: ReportPartitionsTenant[]\n ): string {\n // テナントが1つしかない場合\n if (partitionsTenants.length == 0) {\n return \"\";\n }\n\n // 作成日時の昇順でソート\n // tenantsの作成日時だと、区画拡張の時に狂うので、partitions_tenantsでソートする\n partitionsTenants.sort(\n (a, b) =>\n Number(new Date(a.contracted_at)) - Number(new Date(b.contracted_at))\n );\n\n // tenantだけを抽出\n let tenants: ReportTenant[] = [];\n partitionsTenants.forEach((partitionsTenant) => {\n tenants.push(partitionsTenant.tenant);\n });\n\n // 現在のテナントIDのインデックスを特定\n const currentTenantIndex = tenants.findIndex(\n (tenant) => tenant.id == currentTenantId\n );\n\n // 現在のテナントIDのインデックス-1のテナントIDを返す\n if (currentTenantIndex == 0) {\n return \"\";\n } else {\n return tenants[currentTenantIndex - 1].id;\n }\n }\n\n /*\n 未確定レポート処理 END\n */\n\n // カード表示に戻る処理\n onClickCardList() {\n this.router.navigate([\"meter-card-list\"]);\n }\n\n // レポート確定ボタン押下時の処理\n onClickReportConfirm() {\n const dialogRef = this.dialog.open(ReportConfirmDialogComponent, {\n width: \"600px\",\n data: this.isAlreadyConfirmed,\n });\n\n // レポートリストから前月の確定日を取得\n\n // 選択した年月の前月の日付型変数を用意\n // JSやTSのDateのMonth部分は月ではなく、月に該当するIndex(0始まり)なので−1した後に−1をsetする\n let lastMonthDate = new Date(\n Number(this.selectedMonth.toString().substring(0, 4)),\n Number(this.selectedMonth.toString().substring(4)) - 1,\n 1\n );\n lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);\n\n // 初期値は選択した年月の前月月初にする\n let lastMonthConfirmDate = formatDate(\n lastMonthDate,\n \"yyyyMMdd\",\n this.locale\n );\n\n if (this.reportList.length > 1) {\n const lastMonthReportInfo = this.reportList.find(\n (element) =>\n element.month.toString() ==\n formatDate(lastMonthDate, \"yyyyMM\", this.locale)\n );\n\n if (lastMonthReportInfo) {\n lastMonthConfirmDate =\n lastMonthReportInfo.fixedTime == null ||\n lastMonthReportInfo.fixedTime == undefined\n ? lastMonthConfirmDate\n : formatDate(\n lastMonthReportInfo.fixedTime,\n \"yyyyMMdd\",\n this.locale\n );\n }\n }\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result === \"Confirm\") {\n this.getReportDataFinished = false;\n this.selectedSite.disable();\n this.selectedType.disable();\n this.postConfirmedReportUrl = `${environment.apiUrl}/report_histories/report_details`;\n let params = new HttpParams();\n\n params = params.set(\"site_id\", Const.site_id);\n params = params.set(\"report_month\", this.selectedMonth.toString());\n params = params.set(\n \"last_month_confirm_date_str\",\n lastMonthConfirmDate\n );\n params = params.set(\"is_confirmed\", this.isConfirmedDataSorce);\n this.httpClient\n .post(this.postConfirmedReportUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.isConfirmedReport = true; // 確定レポート固定\n\n this.doGetReportList(\"reload\");\n this.createConfirmedReportData();\n const messageInfo = new MessageInfo(\n \"レポートの確定が完了しました。確定レポートを表示します。\",\n \"\"\n );\n const messageDialogRef = this.dialog.open(\n MessageDialogComponent,\n {\n width: \"500px\",\n data: messageInfo,\n }\n );\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n this.onClickLogout();\n } else {\n alert(\"レポートが確定できませんでした。\");\n }\n }\n );\n }\n });\n }\n\n //指定した小数点まで切り捨てる\n confirmedValueFormat(val: string, point: number) {\n let formatedNum = \"\";\n if (val !== \"*\" && val !== \"N/A\") {\n let ten = new BigNumber(Math.pow(10, point));\n let tmpNum = new BigNumber(val);\n let result = tmpNum.times(ten);\n result = new BigNumber(Math.floor(Number(result)));\n let endRes = result.dividedBy(ten);\n formatedNum = endRes.toString();\n } else {\n formatedNum = val;\n }\n return formatedNum;\n }\n\n // レポート一覧をクリックされた時の処理\n onClickReportList() {\n const dialogRef = this.dialog.open(ReportListDialogComponent, {\n width: \"1150px\",\n data: this.reportList,\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.selectedMonth = result.month;\n // レポート一覧で押下されたボタンによって確定済or未確定データの表示を分ける\n this.selectedType = new UntypedFormControl(\"すべて\");\n this.isConfirmedReport = result.isConfirmed;\n\n // データ作成処理\n this.createJobBatch(result);\n }\n });\n }\n\n // 当月検針値(の横のカメラ)をクリックした時の処理\n onClickThisMonth(\n partition: string,\n tenantName: string,\n meterId: string,\n checkedMonth: string,\n tenantId: string,\n label: string\n ) {\n this.getOneMeterDataUrl = `${environment.apiUrl}/meters/${meterId}/tenants/${tenantId}/${checkedMonth}/value_detections`;\n this.httpClient\n .get(this.getOneMeterDataUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetInSiteMeterResponse) => {\n this.meter = response.result.meter;\n const correctDialogData = new CorrectDialogData(\n partition,\n tenantName,\n this.meter,\n this.loginUser,\n this.canEdit,\n \"report\",\n tenantId,\n checkedMonth,\n label\n );\n const dialogRef = this.dialog.open(ValueCorrectDialogComponent, {\n width: \"400px\",\n data: correctDialogData,\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result === \"dialog close\") {\n this.doGetReportList(\"reload\");\n // データ作成処理\n this.createJobBatch(null);\n }\n });\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"メーター情報が取得できませんでした。\");\n }\n }\n );\n }\n\n // 当月使用量をクリックした時の処理\n // 引数からダイアログ表示用データを生成して、ダイアログ表示コンポーネントに連携する\n onClickUsed(\n meterType: string,\n partition: string,\n name: string,\n info: string,\n decimal: number,\n thisMonthUsed: string,\n lastMonthUsed: string,\n alertFlag: number\n ) {\n let rateOfChangeStr: string;\n if (!lastMonthUsed) {\n lastMonthUsed = \"N/A\";\n rateOfChangeStr = \"N/A\";\n } else {\n let tmUsed = new BigNumber(thisMonthUsed);\n let lmUsed = new BigNumber(lastMonthUsed);\n\n const rateOfChangeTemp = tmUsed.minus(lmUsed);\n let rateOfChange = rateOfChangeTemp.dividedBy(lmUsed);\n rateOfChange = rateOfChange.times(100);\n\n rateOfChangeStr = this.rateChangeStr(Number(rateOfChange));\n }\n const compareDialogData = new CompareDialogData(\n partition,\n name,\n info,\n decimal,\n meterType,\n thisMonthUsed,\n lastMonthUsed,\n rateOfChangeStr,\n alertFlag\n );\n const dialogRef = this.dialog.open(ValueCompareDialogComponent, {\n width: \"400px\",\n data: compareDialogData,\n });\n }\n\n // CSVでのレポート出力処理(1クリックで2種類のレポート同時ダウンロード)\n onClickCSV() {\n let tmpReportData: ReportRow[];\n if (String(this.selectedType.value) !== \"すべて\") {\n tmpReportData = this.reportDataBackUp;\n } else {\n tmpReportData = this.reportData;\n }\n // 電灯・動力・水道、ガスのレポートCSV生成〜ダウンロード\n let csvData =\n \"区画,テナント名称,メーター名称,メーター番号,メーター種類,前月確定値,当月確定値,当月使用量\\r\\n\";\n for (const row of tmpReportData) {\n if (!row.info) {\n row.info = \"\";\n }\n if (!row.type) {\n row.type = \"\";\n }\n const rowData =\n row.partition.replace(\",\", \"、\") +\n \", \" +\n row.name.replace(\",\", \"、\") +\n \", \" +\n row.info +\n \", \" +\n row.label +\n \", \" +\n row.type +\n \", \" +\n this.confirmedValueFormat(row.lastMonth, row.decimal) +\n \", \" +\n this.confirmedValueFormat(row.thisMonth, row.decimal) +\n \", \" +\n this.confirmedValueFormat(row.used, row.decimal) +\n \"\\r\\n\";\n const rowDataFormated = rowData.replace(/\\*/g, \"\").replace(/N\\/A/g, \"\");\n csvData = csvData + rowDataFormated;\n }\n const bom = new Uint8Array([0xef, 0xbb, 0xbf]);\n const blob = new Blob([bom, csvData], { type: \"csv/plain\" });\n const link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(blob);\n const fileName = String(this.selectedMonth) + \"kenshin-report.csv\";\n link.download = fileName;\n link.click();\n\n // ガスのレポートCSV生成〜ダウンロード\n /* let gasCsvData =\n \"コード,系統名称,,メーター番号,前月確定値(ガス),当月確定値(ガス),当月使用量(ガス)\\r\\n\";\n for (const row of this.gasReportData) {\n if (!row.info) {\n row.info = \"\";\n }\n const rowData =\n row.partition.replace(\",\", \"、\") +\n \", \" +\n row.name.replace(\",\", \"、\") +\n \", \" +\n row.info +\n \", \" +\n row.label +\n \", \" +\n row.gasLastMonth +\n \", \" +\n row.gasThisMonth +\n \", \" +\n row.gasUsed +\n \"\\r\\n\";*/\n // const rowDataFormated = rowData.replace(/\\*/g, \"\").replace(/N\\/A/g, \"\");\n /* gasCsvData = gasCsvData + rowDataFormated;\n }\n const gasBlob = new Blob([bom, gasCsvData], { type: \"csv/plain\" });\n const gasLink = document.createElement(\"a\");\n gasLink.href = window.URL.createObjectURL(gasBlob);\n const gasFileName = String(this.selectedMonth) + \"kenshin-gas-report.csv\";\n gasLink.download = gasFileName;\n gasLink.click();*/\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0;\n Const.adminUser = Number(Const.loginUser.user_type) === 1;\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\");\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id;\n }\n }\n }\n\n if (Const.site_id === null) {\n alert(\"前回選択した施設が見つかりませんでした。\");\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.doSetValue();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.onClickLogout();\n }\n );\n }\n\n // ログアウト処理\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n // 「yyyymm」形式の月情報を受け取って「yyyy年mm月」形式に変換する処理\n monthStringFormat(yearMonth: number) {\n const formatedMonth =\n String(yearMonth).substr(0, 4) +\n \"年\" +\n String(yearMonth).substr(4) +\n \"月\";\n return formatedMonth;\n }\n\n // 使用量比較画面で表示する時にに正負と%を補正\n // 変化0の時と、倍率無限の時の補正\n rateChangeStr(rate: number) {\n if (rate > 0 && rate !== Infinity) {\n return \"+\" + String(this.rounding(rate)) + \"%\";\n } else if (!rate) {\n const zero = \"0%\";\n return zero;\n } else if (rate < 0) {\n return String(this.rounding(rate)) + \"%\";\n } else {\n const infinity = \"∞%\";\n return infinity;\n }\n }\n\n // 小数点第3位で四捨五入かつ小数点第2位までは必ず表示するよう補正する処理\n rounding(val: number) {\n const returnNumber = Number(val).toFixed(2);\n return returnNumber;\n }\n\n roundingUsed(val: number, decimal: number) {\n const returnNumber = Number(val).toFixed(decimal);\n return returnNumber;\n }\n\n usedValueFormat(val: number, point: number): Number {\n let ten = new BigNumber(Math.pow(10, point));\n let tmpNum = new BigNumber(val);\n let result = tmpNum.times(ten);\n result = new BigNumber(Math.floor(Number(result)));\n let endRes = result.dividedBy(ten);\n return Number(endRes);\n }\n\n // メーター1周を考慮しつつ、当月使用量を計算する処理\n calcUsedValue(\n lastMonthValue: any,\n thisMonthValue: any,\n maxValue: string,\n decimalPoint: number\n ) {\n if (\n lastMonthValue !== \"N/A\" &&\n lastMonthValue !== \"*\" &&\n thisMonthValue !== \"N/A\" &&\n thisMonthValue !== \"*\"\n ) {\n // 今月の検針値が先月の検針値より小さい場合、メーター最大値を足して返す\n if (Number(lastMonthValue) > Number(thisMonthValue)) {\n let tempThisMonth = this.usedValueFormat(thisMonthValue, decimalPoint);\n let tempLastMonth = this.usedValueFormat(lastMonthValue, decimalPoint);\n let tempMaxV = this.usedValueFormat(Number(maxValue), decimalPoint);\n\n let thisMonth = new BigNumber(Number(tempThisMonth));\n let lastMonth = new BigNumber(Number(tempLastMonth));\n let maxV = new BigNumber(Number(tempMaxV));\n\n let usedValue = maxV.minus(lastMonth).plus(thisMonth);\n\n let endUsedValue = this.usedValueFormat(\n Number(usedValue),\n decimalPoint\n );\n return endUsedValue.toString();\n } else {\n let tempThisMonth = this.usedValueFormat(thisMonthValue, decimalPoint);\n let tempLastMonth = this.usedValueFormat(lastMonthValue, decimalPoint);\n\n let thisMonth = new BigNumber(Number(tempThisMonth));\n let lastMonth = new BigNumber(Number(tempLastMonth));\n\n let usedValue = thisMonth.minus(lastMonth);\n\n let endUsedValue = this.usedValueFormat(\n Number(usedValue),\n decimalPoint\n );\n\n return endUsedValue.toString();\n }\n } else {\n return \"N/A\";\n }\n }\n\n // 前月使用量(前月検針値-前々月検針値)と当月使用量(当月検針値-前月検針値)を比較して、異常基準値の割合(今回は50%)以上増減している場合フラグ変更\n // 過減少は1、過増加は2\n // 当月使用量(計算済)、前月検針値、前々月検針値、メーター最大値、異常基準値を引数にとる\n judgingAlertValue(\n thisMonthUsed: string,\n lastMonthValue: string,\n twoMonthsBeforeValue: string,\n maxValue: string,\n decimal: number,\n judgementValue: number\n ) {\n const lastMonthUsed = this.calcUsedValue(\n twoMonthsBeforeValue,\n lastMonthValue,\n maxValue,\n decimal\n );\n\n if (lastMonthUsed === \"N/A\") {\n const diff = Number(thisMonthUsed) - Number(lastMonthUsed);\n let diffPer = diff / Number(lastMonthUsed);\n if (diffPer < 0) {\n diffPer = diffPer * -1;\n if (diffPer >= judgementValue) {\n return 1;\n }\n } else {\n if (diffPer >= judgementValue) {\n return 2;\n }\n }\n return 0;\n } else {\n let tmUsed = new BigNumber(thisMonthUsed);\n let lmUsed = new BigNumber(Number(lastMonthUsed));\n\n const diff = new BigNumber(tmUsed.minus(lmUsed));\n let diffPer = new BigNumber(diff.dividedBy(lmUsed));\n\n if (Number(diffPer) < 0) {\n diffPer = diffPer.times(-1);\n if (Number(diffPer) >= judgementValue) {\n return 1;\n }\n } else {\n if (Number(diffPer) >= judgementValue) {\n return 2;\n }\n }\n return 0;\n }\n }\n\n ngOnDestroy() {}\n loadMeterData() {\n this.expMeterData = [];\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/meters_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n let jsonObj = JSON.parse(JSON.stringify(res));\n if (jsonObj.status == 200) {\n let jsonFloors = jsonObj.result.site.floors;\n let site_id = jsonObj.result.site.id;\n this.getPartitionTenantData();\n for (let index = 0; index < jsonFloors.length; index++) {\n const floor = jsonFloors[index];\n const partitions = floor.partitions;\n for (let index = 0; index < partitions.length; index++) {\n const partition = partitions[index];\n for (let index = 0; index < partition.meters.length; index++) {\n const meterObj = partition.meters[index];\n let meterModel = meterObj as MeterInfo;\n\n meterModel.partName = partition.name;\n if (\n partition.partitions_tenants !== undefined &&\n partition.partitions_tenants.length > 0\n ) {\n meterModel.tenantName =\n partition.partitions_tenants[0].tenant_log.name;\n meterModel.site_id = site_id;\n meterModel.floor_id = floor.id;\n meterModel.floor_name = floor.name;\n }\n if (\n Number(this.loginUser.user_type) !== this.userTypeSysAdmin\n ) {\n if (\n meterModel.expiration_date !== null &&\n meterModel.expiration_date !== undefined &&\n meterModel.expiration_date !== \"\"\n ) {\n var day = new Date();\n day.setMonth(day.getMonth() + 24);\n const dayOfNextYear = formatDate(\n day,\n \"yyyyMMdd\",\n this.locale\n );\n const expiration = formatDate(\n meterModel.expiration_date,\n \"yyyyMMdd\",\n this.locale\n );\n if (expiration < dayOfNextYear) {\n meterModel.isExpireMeterFlag = true;\n\n let expMeterModel = meterObj as MeterInfo;\n expMeterModel = meterModel;\n this.expMeterData.push(expMeterModel);\n }\n }\n }\n }\n }\n }\n // ソート\n if (this.expMeterData.length > 0) {\n this.expMeterData.sort((n1, n2) => {\n if (n1.expiration_date > n2.expiration_date) {\n return 1;\n }\n if (n1.expiration_date < n2.expiration_date) {\n return -1;\n }\n return 0;\n });\n }\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n }\n }\n );\n }\n getPartitionTenantData() {\n const dateData = new Date();\n const thisMonth = formatDate(dateData, \"yyyyMM\", this.locale);\n const url = `${environment.apiUrl}/sites/${this.selectedSite.value}/partitions/tenants/${thisMonth}`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetTenantsResponse) => {\n this.partitionTenants = response.result.site.partitions;\n this.partitionTenants = this.partitionTenants.filter(\n (item) => item.partitions_tenants.length != 0\n );\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n }\n }\n );\n }\n}\n","import { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { MessageInfo } from '../entity/message-info';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { MessageDialogComponent } from '../message-dialog/message-dialog.component';\nimport { AuthService } from '../auth/auth.service';\nimport { Const } from '../const/const';\n\n@Component({\n selector: 'app-meter-type-add-dialog',\n templateUrl: './meter-type-add-dialog.component.html',\n styleUrls: ['./meter-type-add-dialog.component.scss']\n})\nexport class MeterTypeAddDialogComponent implements OnInit {\n\n meterTypeName: string\n idToken: string;\n errorMeterTypeNameMsg: string;\n maxLengthMeterTypeName = 128;\n\n constructor( \n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n public auth: AuthService,\n private httpClient: HttpClient,\n ) {\n\n }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n }\n }\n );\n }\n\n onClickConfirm(){\n\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n if (this.meterTypeName === undefined) {\n const errorMessageInfo = new MessageInfo(\"メータータイプ名を入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else if (this.meterTypeName.length > this.maxLengthMeterTypeName) {\n const errorMessageInfo = new MessageInfo(\"メータータイプ名を\" + this.maxLengthMeterTypeName + \"文字以内で入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else {\n const messageInfo = new MeterConfirmDialogInfo('新規登録確認', 'メータータイプを新規登録します。よろしいですか。');\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent,{\n width: '400px',\n data: messageInfo\n })\n \n confirmDialog.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n const url = `${environment.apiUrl}/meter_types/meter_types_info`;\n const token = this.idToken\n\n let params = new HttpParams();\n params = params.set('name', this.meterTypeName);\n this.httpClient.post(url, params,\n {\n headers: new HttpHeaders({\n Authorization: token\n })\n }\n )\n .subscribe((response: any) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('メータータイプを新規登録に失敗しました。');\n }\n }\n );\n }\n })\n }\n }\n\n checkIfFormDirty() {\n let hasNameChanged = true\n if (this.meterTypeName === \"\" || this.meterTypeName === null || this.meterTypeName === undefined) {\n hasNameChanged = false\n } else if (this.meterTypeName.length > this.maxLengthMeterTypeName) {\n hasNameChanged = false\n }\n\n return hasNameChanged\n }\n\n changeValue() {\n this.errorMeterTypeNameMsg = ''\n if (this.meterTypeName === \"\" || this.meterTypeName === null || this.meterTypeName === undefined) {\n this.errorMeterTypeNameMsg = 'メータータイプ名を入力してください'\n } else if (this.meterTypeName.length > this.maxLengthMeterTypeName) {\n this.errorMeterTypeNameMsg = \"メータータイプ名を\" + this.maxLengthMeterTypeName + \"文字以内で入力してください\"\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { MeterType } from '../entity/get-meter-type';\nimport { MessageInfo } from '../entity/message-info';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { MessageDialogComponent } from '../message-dialog/message-dialog.component';\n\n@Component({\n selector: 'app-meter-type-edit-dialog',\n templateUrl: './meter-type-edit-dialog.component.html',\n styleUrls: ['./meter-type-edit-dialog.component.scss']\n})\nexport class MeterTypeEditDialogComponent implements OnInit {\n\n meterTypeName: string\n idToken: string;\n maxLengthMeterTypeName = 128;\n errorMeterTypeNameMsg: string;\n\n constructor( public confirmDialog: MatDialog,\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public meterType: MeterType,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n public auth: AuthService,\n\n ) { }\n\n ngOnInit() {\n this.meterTypeName = this.meterType.name\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n }\n }\n );\n }\n\n onClickConfirm(){\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n if (this.meterTypeName === undefined) {\n const errorMessageInfo = new MessageInfo(\"メータータイプ名を入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else if (this.meterTypeName.length > this.maxLengthMeterTypeName) {\n const errorMessageInfo = new MessageInfo(\"メータータイプ名を\" + this.maxLengthMeterTypeName + \"文字以内で入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else {\n const messageInfo = new MeterConfirmDialogInfo('変更確認', '情報の変更を反映します。よろしいですか。');\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent,{\n width: '400px',\n data: messageInfo\n })\n \n confirmDialog.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n \n const url = `${environment.apiUrl}/meter_types/${this.meterType.id}/1/meter_types_info`;\n const token = this.idToken\n\n let params = new HttpParams();\n params = params.set('name', this.meterTypeName);\n this.httpClient.patch(url, params,\n {\n headers: new HttpHeaders({\n Authorization: token\n })\n }\n )\n .subscribe((response: any) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.dialogRef.close('lockedAccount');\n this.auth.signOut()\n }else{\n alert('メータータイプ名の変更に失敗しました。\\n' + err.error.message);\n }\n }\n );\n }\n })\n }\n }\n\n checkIfFormDirty() {\n let hasNameChanged = true\n if (this.meterTypeName === \"\" || this.meterTypeName === null || this.meterTypeName === undefined) {\n hasNameChanged = false\n } else if (this.meterTypeName === this.meterType.name) {\n hasNameChanged = false\n } else if (this.meterTypeName.length > this.maxLengthMeterTypeName) {\n hasNameChanged = false\n }\n\n return hasNameChanged\n }\n\n changeValue() {\n this.errorMeterTypeNameMsg = ''\n if (this.meterTypeName === \"\" || this.meterTypeName === null || this.meterTypeName === undefined) {\n this.errorMeterTypeNameMsg = 'メータータイプ名を入力してください'\n } else if (this.meterTypeName.length > this.maxLengthMeterTypeName) {\n this.errorMeterTypeNameMsg = \"メータータイプ名を\" + this.maxLengthMeterTypeName + \"文字以内で入力してください\"\n }\n }\n}\n","import { Component, OnInit, Inject, LOCALE_ID} from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { AuthService } from '../auth/auth.service';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { LoginUser } from '../entity/login-user';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MeterType } from \"../entity/get-meter-type\";\nimport { MeterTypeAddDialogComponent } from '../meter-type-add-dialog/meter-type-add-dialog.component';\nimport { MeterTypeEditDialogComponent } from '../meter-type-edit-dialog/meter-type-edit-dialog.component';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { MeterTypeService } from '../services/meter-type.service';\nimport { Subject } from 'rxjs';\nimport { Const } from '../const/const';\n\n@Component({\n selector: 'app-meter-type-management-list',\n templateUrl: './meter-type-management-list.component.html',\n styleUrls: ['./meter-type-management-list.component.scss']\n})\nexport class MeterTypeManagementListComponent implements OnInit {\n\n loginUser: LoginUser;\n getLoginUserUrl: string;\n getLoginUserResponse: GetLoginUserResponse;\n getTenantDataUrl: string;\n\n idToken: string;\n\n // テーブル生成用\n displayedColumns: string[];\n meterTypeData: MeterType[];\n filterdMeterTypeData: MeterType[];\n\n searchKeyString: string=\"\";\n searchKeyChanged: Subject = new Subject();\n\n // フラグ類\n getUserFinished: boolean;\n getMeterTypeFinished: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private httpClient: HttpClient,\n public auth: AuthService,\n public typeService: MeterTypeService,\n public meterTypeDialog: MatDialog,\n ) {\n localStorage.setItem(\"path\", router.url)\n }\n\n\n ngOnInit() {\n this.loginUser = new LoginUser()\n this.getLoginUserResponse = new GetLoginUserResponse();\n this.meterTypeData = []\n\n this.getUserFinished = false\n\n this.searchKeyChanged\n .debounceTime(300) // wait 300ms after the last event before emitting last event\n .subscribe(str => {this.searchKeyString = str; this.filterResult()});\n\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser()\n } else {\n this.loginUser = Const.loginUser\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.doGetMeterTypeData()\n }\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.onClickLogout()\n }\n }\n );\n }\n\n filterResult(){\n if(this.searchKeyString === \"\"){\n this.filterdMeterTypeData = this.meterTypeData\n return\n }\n\n this.filterdMeterTypeData = this.meterTypeData.filter(item => item.name.includes(this.searchKeyString))\n }\n\n search(text: string){\n this.searchKeyChanged.next(text);\n }\n \n \n doGetMeterTypeData(){\n\n this.getMeterTypeFinished = false\n\n const url = `${environment.apiUrl}/meter_types/meter_types_info_all`\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res =>{\n let jsonStr = JSON.stringify(res)\n let jsonObj = JSON.parse(jsonStr)\n this.meterTypeData = jsonObj.result.metertypes\n\n this.filterdMeterTypeData = this.meterTypeData\n this.displayedColumns = [\"typeName\",\"createdBy\",\"createdAt\",\"updatedBy\",\"updatedAt\",\"editButton\",\"deleteButton\"]\n this.getMeterTypeFinished = true\n },\n err=>{\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout();\n }else{\n alert(\"メータータイプが取得できませんでした。\")\n }\n })\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n \n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0\n Const.adminUser = Number(Const.loginUser.user_type) === 1\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\")\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id\n }\n }\n \n if (Const.site_id === null) {\n alert('前回選択した施設が見つかりませんでした。');\n Const.site_id = response.result.login_user.sites[0].id;\n }\n }\n \n this.loginUser = Const.loginUser\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.doGetMeterTypeData()\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n }else{\n alert('ログイン情報が取得できませんでした。再度ログインしてください。');\n }\n this.onClickLogout()\n });\n }\n \n // ログアウト\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n \n onClickAddMeterType() {\n\n const dialogRef = this.meterTypeDialog.open(MeterTypeAddDialogComponent, {\n width: '650px',\n });\n dialogRef.afterClosed().subscribe(dialogResult => {\n if (dialogResult === 'close') {\n // 最小限の更新になるように要改良\n this.doGetMeterTypeData()\n }\n });\n }\n\n onClickMeterTypeEdit(meterType: MeterType) {\n const dialogRef = this.meterTypeDialog.open(MeterTypeEditDialogComponent, {\n width: '650px',\n data: meterType\n });\n\n dialogRef.afterClosed().subscribe(dialogResult => {\n if (dialogResult === 'close') {\n // 最小限の更新になるように要改良\n this.doGetMeterTypeData()\n }\n });\n }\n \n onClickMeterTypeDelete(meterType: MeterType) {\n if(!navigator.onLine){\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n let contentMsg = meterType.name + \"を削除します。よろしいですか。\"\n const messageInfo = new MeterConfirmDialogInfo('メータータイプ削除確認', contentMsg);\n const confirmDialog = this.meterTypeDialog.open(CommonConfirmDialogComponent,{\n width: '400px',\n data: messageInfo\n })\n\n confirmDialog.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n \n let params = new HttpParams();\n params.set(\"name\",\"\")\n\n const url = `${environment.apiUrl}/meter_types/${meterType.id}/0/meter_types_info`;\n this.httpClient.patch(url,params, {\n headers: new HttpHeaders({Authorization: this.idToken })\n }).subscribe(\n () => {\n this.doGetMeterTypeData()\n },err=>{\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }else{\n alert(\"メータータイプ削除に失敗しました\")\n }\n })\n }\n })\n }\n \n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { MessageInfo } from '../entity/message-info';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { MessageDialogComponent } from '../message-dialog/message-dialog.component';\n\n\n@Component({\n selector: 'app-meter-unit-add-dialog',\n templateUrl: './meter-unit-add-dialog.component.html',\n styleUrls: ['./meter-unit-add-dialog.component.scss']\n})\nexport class MeterUnitAddDialogComponent implements OnInit {\n meterUnitName: string\n idToken: string;\n maxLengthMeterUnitName = 10;\n errorMeterUnitNameMsg: string;\n\n constructor( \n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n public auth: AuthService,\n ) {\n\n }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n }\n }\n );\n }\n\n onClickConfirm(){\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n\n if (this.meterUnitName === undefined) {\n const errorMessageInfo = new MessageInfo(\"メーター単位名を入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else if (this.meterUnitName.length > this.maxLengthMeterUnitName) {\n const errorMessageInfo = new MessageInfo(\"メーター単位名を\" + this.maxLengthMeterUnitName + \"文字以内で入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else {\n const messageInfo = new MeterConfirmDialogInfo('新規登録確認', 'メーター単位を新規登録します。よろしいですか。');\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent,{\n width: '400px',\n data: messageInfo\n })\n \n confirmDialog.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n const url = `${environment.apiUrl}/units/units_info`;\n const token = this.idToken\n\n let params = new HttpParams();\n params = params.set('type', this.meterUnitName);\n this.httpClient.post(url, params,\n {\n headers: new HttpHeaders({\n Authorization: token\n })\n }\n )\n .subscribe((response: any) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('メーター単位を新規登録に失敗しました。\\n' + err.error.message);\n }\n }\n );\n }\n })\n }\n }\n\n checkIfFormDirty() {\n let hasNameChanged = true\n if (this.meterUnitName === null || this.meterUnitName === undefined || this.meterUnitName === \"\") {\n hasNameChanged = false\n } else if (this.meterUnitName.length > this.maxLengthMeterUnitName) {\n hasNameChanged = false\n }\n\n return hasNameChanged\n }\n\n changeValue() {\n this.errorMeterUnitNameMsg = ''\n if (this.meterUnitName === \"\" || this.meterUnitName === null || this.meterUnitName === undefined) {\n this.errorMeterUnitNameMsg = 'メーター単位名を入力してください'\n } else if (this.meterUnitName.length > this.maxLengthMeterUnitName) {\n this.errorMeterUnitNameMsg = \"メーター単位名を\" + this.maxLengthMeterUnitName + \"文字以内で入力してください\"\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { MessageInfo } from '../entity/message-info';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { Unit } from '../entity/unit';\nimport { MessageDialogComponent } from '../message-dialog/message-dialog.component';\n\n@Component({\n selector: 'app-meter-unit-edit-dialog',\n templateUrl: './meter-unit-edit-dialog.component.html',\n styleUrls: ['./meter-unit-edit-dialog.component.scss']\n})\nexport class MeterUnitEditDialogComponent implements OnInit {\n meterUnitName: string\n idToken: string;\n maxLengthMeterUnitName = 10;\n errorMeterUnitNameMsg: string;\n\n constructor(@Inject(MAT_DIALOG_DATA) public unit: Unit,\n\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n ) { }\n\n ngOnInit() {\n\n this.meterUnitName = this.unit.type\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n }\n }\n );\n }\n\n onClickConfirm(){\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n if (this.meterUnitName === undefined) {\n const errorMessageInfo = new MessageInfo(\"メーター単位名を入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else if (this.meterUnitName.length > this.maxLengthMeterUnitName) {\n const errorMessageInfo = new MessageInfo(\"メーター単位名を\" + this.maxLengthMeterUnitName +\"文字以内で入力してください。\", '');\n this.dialog.open(MessageDialogComponent, {\n width: '400px',\n data: errorMessageInfo\n });\n } else {\n const messageInfo = new MeterConfirmDialogInfo('変更確認', '情報の変更を反映します。よろしいですか。');\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent,{\n width: '400px',\n data: messageInfo\n })\n\n confirmDialog.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n \n const url = `${environment.apiUrl}/units/${this.unit.id}/1/units_info`;\n const token = this.idToken\n\n let params = new HttpParams();\n params = params.set('type', this.meterUnitName);\n this.httpClient.patch(url, params,\n {\n headers: new HttpHeaders({\n Authorization: token\n })\n }\n )\n .subscribe((response: any) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('単位名の変更に失敗しました。\\n' + err.error.message);\n }\n }\n );\n }\n })\n }\n }\n\n checkIfFormDirty() {\n let hasNameChanged = true\n if (this.meterUnitName === null || this.meterUnitName === undefined || this.meterUnitName === \"\") {\n hasNameChanged = false\n } else if (this.meterUnitName === this.unit.type) {\n hasNameChanged = false\n } else if (this.meterUnitName.length > this.maxLengthMeterUnitName) {\n hasNameChanged = false\n }\n\n return hasNameChanged\n }\n\n changeValue() {\n this.errorMeterUnitNameMsg = ''\n if (this.meterUnitName === \"\" || this.meterUnitName === null || this.meterUnitName === undefined) {\n this.errorMeterUnitNameMsg = 'メーター単位名を入力してください'\n } else if (this.meterUnitName.length > this.maxLengthMeterUnitName) {\n this.errorMeterUnitNameMsg = \"メーター単位名を\" + this.maxLengthMeterUnitName + \"文字以内で入力してください\"\n }\n }\n}\n","import { Component, OnInit, Inject, LOCALE_ID} from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { AuthService } from '../auth/auth.service';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { LoginUser } from '../entity/login-user';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Unit } from \"../entity/unit\"; \nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { MeterUnitAddDialogComponent } from '../meter-unit-add-dialog/meter-unit-add-dialog.component';\nimport { MeterUnitEditDialogComponent } from '../meter-unit-edit-dialog/meter-unit-edit-dialog.component';\nimport { Const } from '../const/const';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-meter-unit',\n templateUrl: './meter-unit.component.html',\n styleUrls: ['./meter-unit.component.scss']\n})\nexport class MeterUnitComponent implements OnInit {\n loginUser: LoginUser;\n getLoginUserUrl: string;\n getLoginUserResponse: GetLoginUserResponse;\n getTenantDataUrl: string;\n idToken: string;\n\n // テーブル生成用\n displayedColumns: string[];\n meterUnitData: Unit[];\n filteredMeterUnitData: Unit[];\n\n searchKeyString: string=\"\";\n searchKeyChanged: Subject = new Subject();\n\n // フラグ類\n getUserFinished: boolean;\n getMeterUnitFinished: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n\n constructor(\n private router: Router,\n private httpClient: HttpClient,\n public auth: AuthService,\n private route: ActivatedRoute,\n public meterUnitDialog: MatDialog,\n @Inject(LOCALE_ID) private locale: string,\n ) {\n localStorage.setItem(\"path\", router.url)\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser()\n this.meterUnitData = []\n this.getMeterUnitFinished = false\n\n this.searchKeyChanged\n .debounceTime(300) // wait 300ms after the last event before emitting last event\n .subscribe(str => {this.searchKeyString = str; this.filterResult()});\n\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser()\n } else {\n this.loginUser = Const.loginUser\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n this.onGetMeterUnitData();\n }\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.onClickLogout()\n }\n }\n );\n }\n \n \n filterResult(){\n if(this.searchKeyString === \"\"){\n this.filteredMeterUnitData = this.meterUnitData\n return\n }\n \n this.filteredMeterUnitData = this.meterUnitData.filter(item => item.type.includes(this.searchKeyString))\n }\n \n search(text: string){\n this.searchKeyChanged.next(text);\n }\n \n onGetMeterUnitData(){\n\n this.getMeterUnitFinished = false\n const url = `${environment.apiUrl}/units/units_info_all`\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res =>{\n let jsonStr = JSON.stringify(res)\n let jsonObj = JSON.parse(jsonStr)\n let data = jsonObj.result.units\n\n this.getMeterUnitFinished = true\n\n this.meterUnitData = data.sort(function(a: Unit,b: Unit){\n let left = new Date(a.updated_at)\n let right = new Date(b.updated_at)\n return right.getDate() - left.getDate()\n })\n this.filteredMeterUnitData = this.meterUnitData\n this.displayedColumns = [\"unit\",\"createdBy\",\"createdAt\",\"updatedBy\",\"updatedAt\",\"editButton\",\"deleteButton\"]\n this.getMeterUnitFinished = true \n },\n err=>{\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }else{\n alert(\"単位情報が取得できませんでした。\")\n }\n })\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n \n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0\n Const.adminUser = Number(Const.loginUser.user_type) === 1\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\")\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id\n }\n }\n }\n \n if (Const.site_id === null) {\n alert('前回選択した施設が見つかりませんでした。');\n Const.site_id = response.result.login_user.sites[0].id;\n }\n \n this.loginUser = Const.loginUser\n this.mjitUserFlag = Const.mjitUser\n this.adminUserFlag = Const.adminUser\n this.onGetMeterUnitData();\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n }else{\n alert('ログイン情報が取得できませんでした。再度ログインしてください。');\n }\n this.onClickLogout();\n });\n }\n \n // ログアウト\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n\n\n onClickAddMeterUnit(){\n const dialogRef = this.meterUnitDialog.open(MeterUnitAddDialogComponent, {\n width: '650px',\n });\n dialogRef.afterClosed().subscribe(dialogResult => {\n if (dialogResult === 'close') {\n // 最小限の更新になるように要改良\n\n this.onGetMeterUnitData()\n }\n });\n }\n\n\n onClickUpdateMeterUnit(unit: Unit){\n const dialogRef = this.meterUnitDialog.open(MeterUnitEditDialogComponent, {\n width: '650px',\n data: unit\n });\n dialogRef.afterClosed().subscribe(dialogResult => {\n if (dialogResult === 'close') {\n // 最小限の更新になるように要改良\n this.onGetMeterUnitData()\n }\n });\n }\n\n onClickDeleteMeterUnit(unit: Unit){\n let contentMsg = unit.type + \"を削除します。よろしいですか。\"\n const messageInfo = new MeterConfirmDialogInfo('メーター単位削除確認', contentMsg);\n const confirmDialog = this.meterUnitDialog.open(CommonConfirmDialogComponent,{\n width: '400px',\n data: messageInfo\n })\n\n confirmDialog.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n\n const url = `${environment.apiUrl}/units/${unit.id}/0/units_info`\n let params = new HttpParams();\n params.set(\"type\",\"\")\n\n this.httpClient.patch(url,params, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe(res => {\n\n let jsonStr = JSON.stringify(res)\n let jsonObj = JSON.parse(jsonStr)\n\n if(jsonObj.status == 200){\n this.onGetMeterUnitData()\n }\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n }else{\n alert(\"単位削除に失敗しました\")\n }\n })\n }\n })\n }\n\n\n}\n","import { Component, Inject, LOCALE_ID, OnInit } from \"@angular/core\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Router, ActivatedRoute, ParamMap } from \"@angular/router\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { environment } from \"src/environments/environment\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\nimport { GetPartitionsResponse } from \"../entity/get-partitions-response\";\nimport { GetPartitionsResult } from \"../entity/get-partitions-result\";\nimport { GetPartitionsSite } from \"../entity/get-partitions-site\";\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { PartitionDetailDialogComponent } from \"../partittion-detail-dialog/partition-detail-dialog.component\";\nimport { PartitionAddDialogComponent } from \"../partittion-add-dialog/partition-add-dialog.component\";\nimport { PartitionEditDialogComponent } from \"../partittion-edit-dialog/partition-edit-dialog.component\";\nimport { PartitionDeleteDialogComponent } from \"../partittion-delete-dialog/partition-delete-dialog.component\";\nimport { GetFloorsResponse } from \"../entity/get-floors-response\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { Const } from \"../const/const\";\nimport { idName } from \"../entity/id-name\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { LoginUserSiteCompany } from \"../entity/login-user-site-company\";\n\nclass Partition {\n id: string;\n name: string;\n no: number;\n is_card_display: number;\n report_type: number;\n floor_id: string;\n floor_name: string;\n created_at: string;\n updated_at: string;\n created_by: string;\n updated_by: string;\n}\n\n@Component({\n selector: \"app-partition-management-list\",\n templateUrl: \"./partition-management-list.component.html\",\n styleUrls: [\"./partition-management-list.component.scss\"],\n})\nexport class PartitionManagementListComponent implements OnInit {\n selectedSite = new UntypedFormControl();\n loginUser: LoginUser;\n siteArray: LoginUserSite[];\n idToken: string;\n site = new LoginUserSite();\n sitename: string;\n\n // テーブル生成用\n displayedColumns: string[];\n partition: Partition;\n partitionsInfo: Partition[];\n\n // APIのURL\n getLoginUserUrl: string;\n getPartitionsFloorUrl: string;\n getFloorsUrl: string;\n\n // APIのレスポンス\n getPartitionsResponse: GetPartitionsResponse;\n\n getPartitionsResult: GetPartitionsResult;\n siteInfo: GetPartitionsSite;\n floorsInfo: FloorInfo[];\n\n // フラグ類\n getUserFinished: boolean;\n getPartitionFinished: boolean;\n NumberingFlag: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private httpClient: HttpClient,\n private router: Router,\n private route: ActivatedRoute,\n public auth: AuthService,\n public partitionDialog: MatDialog\n ) {\n localStorage.setItem(\"path\", router.url);\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser();\n this.siteArray = [];\n this.getPartitionsResponse = new GetPartitionsResponse();\n this.floorsInfo = [];\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n if (Const.loginUser === null) {\n this.doGetLoginUser();\n } else {\n this.doSetValue();\n }\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.onClickLogout();\n }\n });\n }\n\n doSetValue() {\n this.loginUser = Const.loginUser;\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n if (Const.siteInfo.length > 0) {\n this.siteArray = Const.siteInfo;\n } else {\n this.getAllSiteData();\n }\n } else {\n for (const site of this.loginUser.sites) {\n this.siteArray.push(site);\n }\n }\n this.selectedSite = new UntypedFormControl(Const.site_id);\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser;\n\n this.getFloorsUrl = `${environment.apiUrl}/sites/${this.selectedSite.value}/floors`;\n this.doGetFloors();\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。)\n getAllSiteData() {\n Const.siteInfo.splice(0);\n const url = `${environment.apiUrl}/sites/sites_info_all/all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n for (const site of jsonObj.result.sites as SiteInfo[]) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n this.siteArray = Const.siteInfo;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"施設情報が取得できませんでした。\");\n }\n }\n );\n }\n\n doGetFloors() {\n this.getPartitionFinished = false;\n this.selectedSite.disable();\n this.NumberingFlag = false;\n this.partitionsInfo = [];\n\n this.httpClient\n .get(this.getFloorsUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetFloorsResponse) => {\n this.floorsInfo = response.result.floors;\n\n this.getPartitionsFloorUrl = `${environment.apiUrl}/sites/${this.selectedSite.value}/floors/partitions`;\n this.doGetPartitionsFloor();\n },\n () => {\n alert(\"フロア情報が存在しません。\\nフロアを登録してください\");\n this.floorsInfo = [];\n this.getPartitionFinished = true;\n this.selectedSite.enable();\n }\n );\n }\n\n doGetPartitionsFloor() {\n this.httpClient\n .get(this.getPartitionsFloorUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetPartitionsResponse) => {\n this.getPartitionsResult = response.result;\n\n for (\n var partitionNumber = 0;\n partitionNumber < this.getPartitionsResult.partitions.length;\n partitionNumber++\n ) {\n this.partition = new Partition();\n this.partition.id =\n this.getPartitionsResult.partitions[partitionNumber].id;\n this.partition.name =\n this.getPartitionsResult.partitions[partitionNumber].name;\n this.partition.no =\n this.getPartitionsResult.partitions[partitionNumber].no;\n this.partition.floor_id =\n this.getPartitionsResult.partitions[partitionNumber].floor.id;\n this.partition.floor_name =\n this.getPartitionsResult.partitions[partitionNumber].floor.name;\n this.partition.is_card_display =\n this.getPartitionsResult.partitions[\n partitionNumber\n ].is_card_display;\n this.partition.report_type =\n this.getPartitionsResult.partitions[partitionNumber].report_type;\n this.partition.created_at =\n this.getPartitionsResult.partitions[partitionNumber].created_at;\n this.partition.updated_at =\n this.getPartitionsResult.partitions[partitionNumber].updated_at;\n if (\n this.getPartitionsResult.partitions[partitionNumber]\n .created_by !== null\n ) {\n this.partition.created_by =\n this.getPartitionsResult.partitions[partitionNumber].created_by;\n }\n if (\n this.getPartitionsResult.partitions[partitionNumber]\n .updated_by !== null\n ) {\n this.partition.updated_by =\n this.getPartitionsResult.partitions[partitionNumber].updated_by;\n }\n this.partitionsInfo.push(this.partition);\n }\n\n if (this.partitionsInfo.length !== 0) {\n this.NumberingFlag = true;\n }\n\n this.displayedColumns = [\n \"detailButton\",\n \"partitionName\",\n \"floorName\",\n \"editButton\",\n \"deleteButton\",\n ];\n this.getPartitionFinished = true;\n this.selectedSite.enable();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"区画情報が存在しません。\");\n this.getPartitionFinished = true;\n this.selectedSite.enable();\n }\n }\n );\n }\n\n doChangeSite() {\n Const.site_id = this.selectedSite.value;\n this.getFloorsUrl = `${environment.apiUrl}/sites/${Const.site_id}/floors`;\n this.doGetFloors();\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0;\n Const.adminUser = Number(Const.loginUser.user_type) === 1;\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\");\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id;\n }\n }\n }\n\n if (Const.site_id === null) {\n alert(\"前回選択した施設が見つかりませんでした。\");\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.doSetValue();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.onClickLogout();\n }\n );\n }\n\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n onClickPartitionDetail(partitionInfo: Partition) {\n const dialogRef = this.partitionDialog.open(\n PartitionDetailDialogComponent,\n {\n width: \"650px\",\n data: partitionInfo,\n }\n );\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // TODO: 最小限の更新になるように要改良\n this.doGetFloors();\n }\n });\n }\n\n onClickForPartitionCreate() {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.partitionDialog.open(PartitionAddDialogComponent, {\n width: \"650px\",\n data: {\n partitionsInfo: this.partitionsInfo,\n siteId: this.selectedSite.value,\n site: this.site,\n },\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // TODO: 最小限の更新になるように要改良\n this.doGetFloors();\n }\n });\n }\n\n onClickPartitionEdit(partitionInfo) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.partitionDialog.open(PartitionEditDialogComponent, {\n width: \"650px\",\n data: {\n partitionInfo: partitionInfo,\n partitionsInfo: this.partitionsInfo,\n siteId: this.selectedSite.value,\n site: this.site,\n },\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // TODO: 最小限の更新になるように要改良\n this.doGetFloors();\n }\n });\n }\n\n onClickPartitionDelete(partitionInfo) {\n Const.site_id = this.selectedSite.value;\n\n localStorage.setItem(\"siteId\", this.selectedSite.value);\n for (var i = 0; i < this.siteArray.length; i++) {\n if (Const.site_id == this.siteArray[i].id) {\n this.site = this.siteArray[i];\n break;\n }\n }\n const dialogRef = this.partitionDialog.open(\n PartitionDeleteDialogComponent,\n {\n width: \"650px\",\n data: { partitionInfo: partitionInfo, site: this.site },\n }\n );\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n // TODO: 最小限の更新になるように要改良\n this.doGetFloors();\n }\n });\n //console.log(partitionInfo);\n }\n checkIfReadyToGo() {\n if (!this.floorsInfo.length || !this.getPartitionFinished) {\n return true;\n } else {\n return false;\n }\n }\n\n onNumbering() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n this.getPartitionFinished = false;\n this.selectedSite.disable();\n this.NumberingFlag = false;\n // APIコールして登録処理\n const patchNumberingPartitionUrl = `${environment.apiUrl}/sites/${this.selectedSite.value}/floors/partitions/no`;\n const params = new HttpParams();\n this.httpClient\n .patch(patchNumberingPartitionUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n const successMessageInfo = new MessageInfo(\n \"自動採番を行いました\",\n \"\"\n );\n const dialogRef = this.partitionDialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: successMessageInfo,\n });\n dialogRef.afterClosed().subscribe((dialogResult) => {\n if (dialogResult === \"close\") {\n this.doGetFloors();\n }\n });\n },\n (err) => {\n this.getPartitionFinished = true;\n this.selectedSite.enable();\n this.NumberingFlag = true;\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.onClickLogout();\n } else {\n alert(\"自動採番に失敗しました\");\n this.doGetFloors();\n }\n }\n );\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, Input, OnInit } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { Router } from \"@angular/router\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { Const } from \"../const/const\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { GetFloorsResponse } from \"../entity/get-floors-response\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { PartitionConfirmDialogInfo } from \"../entity/partition-confirm-dialog-info\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\nclass Partition {\n id: string;\n name: string;\n no: number;\n is_card_display: number;\n report_type: number;\n floor_id: string;\n floor_name: string;\n floor_no: number;\n created_at: string;\n updated_at: string;\n}\n\n@Component({\n selector: \"app-partition-add-dialog\",\n templateUrl: \"./partition-add-dialog.component.html\",\n styleUrls: [\"./partition-add-dialog.component.scss\"],\n})\nexport class PartitionAddDialogComponent implements OnInit {\n loginUser: LoginUser;\n idToken: string;\n partitionName: string;\n selectedFloor = new UntypedFormControl();\n partitionNumber: number;\n partitioReportTypeFlag: boolean;\n partitioIsCardDisplayFlag: boolean;\n errorPartitionNameMsg: string;\n errorPartitionNumberMsg: string;\n partitionsInfo: Partition[];\n site: LoginUserSite;\n\n // APIのURL\n getLoginUserUrl: string;\n getFloorsUrl: string;\n\n // APIのレスポンス\n getFloorsResponse: GetFloorsResponse;\n floorsInfo: FloorInfo[];\n\n // フラグ類\n getUserFinished: boolean;\n getFloorFinished: boolean;\n\n constructor(\n public partitionConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n public auth: AuthService,\n private router: Router,\n private httpClient: HttpClient,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.site = this.data.site;\n this.partitionsInfo = this.data.partitionsInfo;\n this.partitioReportTypeFlag = true;\n this.partitioIsCardDisplayFlag = true;\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n doGetLoginUser() {\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n this.getUserFinished = true;\n this.getFloorsUrl = `${environment.apiUrl}/sites/${this.data.siteId}/floors`;\n this.doGetFloors();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.dialogRef.close(\"lockedAccount\");\n Const.release();\n this.auth.signOut();\n }\n );\n }\n\n doGetFloors() {\n this.getFloorFinished = false;\n\n this.httpClient\n .get(this.getFloorsUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetFloorsResponse) => {\n this.floorsInfo = response.result.floors;\n this.selectedFloor = new UntypedFormControl(this.floorsInfo[0].id);\n this.getFloorFinished = true;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"フロア情報が取得できませんでした。\");\n this.floorsInfo = null;\n this.getFloorFinished = true;\n }\n }\n );\n }\n\n checkIfReadyToGo() {\n let hasNameChanged = false;\n\n if (\n this.partitionName == undefined ||\n this.partitionName == null ||\n this.partitionName == \"\" ||\n this.partitionName == \"未登録\" ||\n this.partitionNumber == undefined ||\n this.partitionNumber == null\n ) {\n hasNameChanged = true;\n } else {\n for (var i = 0; i < this.partitionsInfo.length; i++) {\n if (this.partitionNumber == this.partitionsInfo[i].no) {\n hasNameChanged = true;\n break;\n }\n }\n }\n\n return hasNameChanged;\n }\n\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n\n const messageInfo = new PartitionConfirmDialogInfo(\n \"登録確認\",\n \"区画を新規登録します。よろしいですか。\"\n );\n const confirmDialog = this.partitionConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n // APIコールして登録処理\n const postPartitionUrl = `${environment.apiUrl}/partitions/partition_info`;\n let params = new HttpParams();\n params = params.set(\"name\", this.partitionName);\n params = params.set(\"no\", this.partitionNumber.toString());\n params = params.set(\"floor_id\", this.selectedFloor.value);\n params = params.set(\n \"report_type\",\n `${this.partitioReportTypeFlag ? 1 : 0}`\n );\n params = params.set(\n \"is_card_display\",\n `${this.partitioIsCardDisplayFlag ? 1 : 0}`\n );\n this.httpClient\n .post(postPartitionUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n this.dialogRef.close(\"lockedAccount\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"区画情報の登録に失敗しました。\");\n }\n }\n );\n }\n });\n }\n\n changePartitionValue() {\n this.errorPartitionNameMsg = \"\";\n this.errorPartitionNumberMsg = \"\";\n\n if (\n this.partitionName == undefined ||\n this.partitionName == null ||\n this.partitionName == \"\" ||\n this.partitionNumber == undefined ||\n this.partitionNumber == null\n ) {\n this.errorPartitionNameMsg = \"区画名と表示順を入力してください\";\n } else if (this.partitionName == \"未登録\") {\n this.errorPartitionNameMsg = \"区画名が「未登録」の区画は登録できません\";\n } else {\n for (var i = 0; i < this.partitionsInfo.length; i++) {\n if (this.partitionNumber == this.partitionsInfo[i].no) {\n this.errorPartitionNumberMsg = \"入力した表示順はすでに存在します\";\n break;\n }\n }\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, OnInit } from \"@angular/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { Router } from \"@angular/router\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { Const } from \"../const/const\";\nimport { PartitionConfirmDialogInfo } from \"../entity/partition-confirm-dialog-info\";\n\n@Component({\n selector: \"app-partition-delete-dialog\",\n templateUrl: \"./partition-delete-dialog.component.html\",\n styleUrls: [\"./partition-delete-dialog.component.scss\"],\n})\nexport class PartitionDeleteDialogComponent implements OnInit {\n idToken: string;\n\n constructor(\n public partitionConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n public auth: AuthService,\n private router: Router,\n private httpClient: HttpClient,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n\n const messageInfo = new PartitionConfirmDialogInfo(\n \"削除確認\",\n \"区画を削除します。よろしいですか。\"\n );\n const confirmDialog = this.partitionConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n // APIコールして登録処理\n const patchPartitionUrl = `${environment.apiUrl}/partitions/partition_info/0/${this.data.partitionInfo.id}`;\n let params = new HttpParams();\n this.httpClient\n .patch(patchPartitionUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"区画情報の削除に失敗しました。\");\n }\n }\n );\n }\n });\n }\n}\n","import { Component, OnInit, Inject} from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { AuthService } from '../auth/auth.service';\nimport { Router } from '@angular/router';\n\nclass Partition {\n id: string;\n name: string;\n no: number;\n is_card_display: number;\n report_type: number;\n floor_id: string;\n floor_name: string;\n floor_no: number;\n created_at: string;\n updated_at: string;\n created_by: string;\n updated_by: string;\n}\n\n@Component({\n selector: 'app-partition-detail-dialog',\n templateUrl: './partition-detail-dialog.component.html',\n styleUrls: ['./partition-detail-dialog.component.scss']\n})\n\nexport class PartitionDetailDialogComponent implements OnInit {\n meterUnitName: string\n idToken: string;\n\n constructor( \n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n public auth: AuthService,\n private router: Router,\n @Inject(MAT_DIALOG_DATA) public partitionInfo: Partition\n ) {\n }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n}\n","import { Component, OnInit, Inject } from \"@angular/core\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Router } from \"@angular/router\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { environment } from \"src/environments/environment\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from \"@angular/material/dialog\";\nimport { FloorInfo } from \"../entity/floor-info\";\nimport { GetFloorsResponse } from \"../entity/get-floors-response\";\nimport { PartitionConfirmDialogInfo } from \"../entity/partition-confirm-dialog-info\";\nimport { Const } from \"../const/const\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\nclass Partition {\n id: string;\n name: string;\n no: number;\n is_card_display: number;\n report_type: number;\n floor_id: string;\n floor_name: string;\n created_at: string;\n updated_at: string;\n}\n\n@Component({\n selector: \"app-partition-edit-dialog\",\n templateUrl: \"./partition-edit-dialog.component.html\",\n styleUrls: [\"./partition-edit-dialog.component.scss\"],\n})\nexport class PartitionEditDialogComponent implements OnInit {\n loginUser: LoginUser;\n idToken: string;\n partitionName: string;\n selectedFloor = new UntypedFormControl();\n partitionNumber: number;\n partitioReportTypeFlag: boolean;\n partitioIsCardDisplayFlag: boolean;\n errorPartitionNameMsg: string;\n errorPartitionNumberMsg: string;\n partitionsInfo: Partition[];\n partitionInfo: Partition;\n site: LoginUserSite;\n\n // APIのURL\n getLoginUserUrl: string;\n getFloorsUrl: string;\n\n // APIのレスポンス\n getFloorsResponse: GetFloorsResponse;\n floorsInfo: FloorInfo[];\n\n // フラグ類\n getUserFinished: boolean;\n getFloorFinished: boolean;\n\n constructor(\n public partitionConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public dialogRef: MatDialogRef,\n public auth: AuthService,\n private router: Router,\n private httpClient: HttpClient,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.site = this.data.site;\n this.partitionInfo = this.data.partitionInfo;\n this.partitionsInfo = [];\n this.partitionName = this.partitionInfo.name;\n this.partitionNumber = this.partitionInfo.no;\n this.selectedFloor = new UntypedFormControl(this.partitionInfo.floor_id);\n this.partitioReportTypeFlag = Boolean(this.partitionInfo.report_type);\n this.partitioIsCardDisplayFlag = Boolean(\n this.partitionInfo.is_card_display\n );\n for (var i = 0; i < this.data.partitionsInfo.length; i++) {\n if (this.partitionInfo.id != this.data.partitionsInfo[i].id) {\n this.partitionsInfo.push(this.data.partitionsInfo[i]);\n }\n }\n\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n\n doGetLoginUser() {\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n this.getUserFinished = true;\n this.getFloorsUrl = `${environment.apiUrl}/sites/${this.data.siteId}/floors`;\n this.doGetFloors();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n } else {\n alert(\n \"ログイン情報が取得できませんでした。再度ログインしてください。\"\n );\n }\n this.onClickLogout();\n }\n );\n }\n\n doGetFloors() {\n this.getFloorFinished = false;\n\n this.httpClient\n .get(this.getFloorsUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetFloorsResponse) => {\n this.floorsInfo = response.result.floors;\n this.getFloorFinished = true;\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"フロア情報が取得できませんでした。\");\n this.floorsInfo = null;\n this.getFloorFinished = true;\n }\n }\n );\n }\n\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n checkIfReadyToGo() {\n let hasNameChanged = false;\n\n if (\n this.partitionName == undefined ||\n this.partitionName == null ||\n this.partitionName == \"\" ||\n this.partitionName == \"未登録\" ||\n this.partitionNumber == undefined ||\n this.partitionNumber == null ||\n (this.partitionName == this.partitionInfo.name &&\n this.partitionNumber == this.partitionInfo.no &&\n this.selectedFloor.value == this.partitionInfo.floor_id &&\n this.partitioReportTypeFlag ==\n Boolean(this.partitionInfo.report_type) &&\n this.partitioIsCardDisplayFlag ==\n Boolean(this.partitionInfo.is_card_display))\n ) {\n hasNameChanged = true;\n } else {\n for (var i = 0; i < this.partitionsInfo.length; i++) {\n if (this.partitionNumber == this.partitionsInfo[i].no) {\n hasNameChanged = true;\n break;\n }\n }\n }\n\n return hasNameChanged;\n }\n\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n\n const messageInfo = new PartitionConfirmDialogInfo(\n \"変更確認\",\n \"区画を変更します。よろしいですか。\"\n );\n const confirmDialog = this.partitionConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n // APIコールして登録処理\n const patchPartitionUrl = `${environment.apiUrl}/partitions/partition_info/1/${this.partitionInfo.id}`;\n let params = new HttpParams();\n params = params.set(\"name\", this.partitionName);\n params = params.set(\"no\", this.partitionNumber.toString());\n params = params.set(\"floor_id\", this.selectedFloor.value);\n params = params.set(\n \"report_type\",\n `${this.partitioReportTypeFlag ? 1 : 0}`\n );\n params = params.set(\n \"is_card_display\",\n `${this.partitioIsCardDisplayFlag ? 1 : 0}`\n );\n this.httpClient\n .patch(patchPartitionUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"区画情報の登録に失敗しました。\");\n }\n }\n );\n }\n });\n }\n\n changePartitionValue() {\n this.errorPartitionNameMsg = \"\";\n this.errorPartitionNumberMsg = \"\";\n\n if (\n this.partitionName == undefined ||\n this.partitionName == null ||\n this.partitionName == \"\" ||\n this.partitionNumber == undefined ||\n this.partitionNumber == null\n ) {\n this.errorPartitionNameMsg = \"区画名と表示順を入力してください\";\n } else if (this.partitionName == \"未登録\") {\n this.errorPartitionNameMsg = \"区画名が未登録のフロアは登録できません\";\n } else {\n for (var i = 0; i < this.partitionsInfo.length; i++) {\n if (this.partitionNumber == this.partitionsInfo[i].no) {\n this.errorPartitionNumberMsg = \"入力した表示順はすでに存在します\";\n break;\n }\n }\n }\n }\n}\n","import { Component, OnInit, Inject} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-report-confirm-dialog',\n templateUrl: './report-confirm-dialog.component.html',\n styleUrls: ['./report-confirm-dialog.component.scss']\n})\nexport class ReportConfirmDialogComponent implements OnInit {\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) { }\n\n ngOnInit() {\n }\n\n onClickYes() {\n this.dialogRef.close('Confirm');\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-report-list-dialog',\n templateUrl: './report-list-dialog.component.html',\n styleUrls: ['./report-list-dialog.component.scss']\n})\nexport class ReportListDialogComponent implements OnInit {\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) { }\n\n ngOnInit() {\n }\n\n onClickReportButton(month: number, isConfirmed: boolean, time: string) {\n // 定義してやった方がいい\n const info = {\n 'month': month, \n 'isConfirmed': isConfirmed,\n 'time': time\n };\n this.dialogRef.close(info);\n }\n\n // 「yyyymm」形式の月情報を受け取って「yyyy年mm月」形式に変換する処理\n monthStringFormat(yearMonth: number) {\n const formatedMonth = String(yearMonth).substr(0, 4) + '年' + String(yearMonth).substr(4) + '月';\n return (formatedMonth);\n }\n\n // 「yyyy-mm-dd hh:mm:ss」形式に変換する かつ +9時間(日本時間にする)\n timeStringFormat(time: number) {\n let newD = new Date(new Date(time).setHours(new Date(time).getHours() + 9));\n\n const yyyy = String(newD.getFullYear());\n const mm = String(newD.getMonth() + 1).padStart(2, \"0\");\n const dd = String(newD.getDate()).padStart(2, \"0\");\n const hh = String(newD.getHours()).padStart(2, \"0\");\n const ms = String(newD.getMinutes()).padStart(2, \"0\");\n const s = String(newD.getSeconds()).padStart(2, \"0\");\n\n return `${yyyy}-${mm}-${dd} ${hh}:${ms}:${s}`;\n }\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { MeterType } from \"../entity/get-meter-type\";\n\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class MeterTypeService {\n\n public token: string = null\n private baseURL = environment.apiUrl\n\n constructor(private httpClient: HttpClient,public auth: AuthService,private router: Router) { \n this.getToken()\n\n }\n\n getToken(){\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result){\n this.token = result\n }else{\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n )\n }\n\n\n getAllMeterType(): Observable{\n\n const url = this.baseURL + \"/meter_types/meter_types_info_all\"\n return this.httpClient.get(url,this.getHeader()).pipe(\n map(x => JSON.stringify(x)),\n map(x => JSON.parse(x).result.metertypes),\n catchError(this.handleError('getAllMeterType', []))\n )\n }\n\n addNewMeterType(name: string): Observable{\n name = name.trim();\n if (!name) { return; }\n\n let params = new HttpParams();\n params.set(\"name\",name)\n\n const url = this.baseURL + \"/meter_types/meter_types_info\"\n return this.httpClient.post(url,params, this.getHeader()).pipe(\n tap(x =>{this.log(\"addNewMeterType begin\")}),\n map(x => JSON.stringify(x)),\n map(x => JSON.parse(x).result.metertypes),\n catchError(this.handleError(\"addNewMeterType error\"))\n )\n \n }\n\n updateMeterType(id: string,name: string): Observable{\n name = name.trim();\n if (!name) { return; }\n let params = new HttpParams();\n params.set(\"name\",name)\n\n const url = `${this.baseURL}/meter_types/${id}/1/meter_types_info`;\n const token = this.token\n\n let option = {\n headers: new HttpHeaders({\n Authorization: token\n })\n }\n\n return this.httpClient.patch(url,params,option).pipe(\n map(x => JSON.stringify(x)),\n map(x => JSON.parse(x).message),\n catchError(this.handleError(\"updateMeterType error\"))\n )\n }\n\n\n deleteMeterType(id: string): Observable{\n\n let params = new HttpParams();\n params.set(\"name\",\"\")\n\n const url = `${this.baseURL}/meter_types/${id}/0/meter_types_info`;\n return this.httpClient.patch(url, params,this.getHeader()).pipe(\n map(x => JSON.stringify(x)),\n map(x => JSON.parse(x).message),\n catchError(this.handleError(\"deleteMeterType error\"))\n )\n }\n\n\n getHeader(){\n let httpOptions = {\n headers: new HttpHeaders({Authorization: this.token }),\n };\n return httpOptions\n }\n\n getPatchHeader(){\n let httpOptions = {\n headers: new HttpHeaders({Authorization: this.token,\n \"Content-Type\":\"application/x-www-form-urlencoded\"\n }),\n };\n return httpOptions\n }\n\n private handleError(operation = 'operation', result?: T) {\n return (error: any): Observable => {\n // TODO: better job of transforming error for user consumption\n this.log(`${operation} failed: ${error.message}`);\n // Let the app keep running by returning an empty result.\n return of(result as T);\n };\n }\n \n /** Log a HeroService message with the MessageService */\n private log(message: string) {\n this.log(message)\n }\n}\n","import { Component, Input, OnChanges, OnInit, } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-side-nav',\n templateUrl: './side-nav.component.html',\n styleUrls: ['./side-nav.component.scss']\n})\nexport class SideNavComponent implements OnInit, OnChanges {\n showDisplayForMJIT = false\n showDisplayForAdmin = false\n @Input() displayMjitFlag\n @Input() displayAdminFlag\n @Input() currentIndex: number = 0;\n\n constructor(\n private router: Router,\n ) { }\n\n ngOnInit() {\n }\n\n ngOnChanges() {\n if (this.showDisplayForMJIT != this.displayMjitFlag) {\n this.showDisplayForMJIT = this.displayMjitFlag\n }\n\n if (this.showDisplayForAdmin != this.displayAdminFlag) {\n this.showDisplayForAdmin = this.displayAdminFlag\n }\n }\n\n // レポート画面遷移処理\n onClickReport() {\n this.router.navigate(['meter-report']);\n }\n\n // 区画管理画面遷移処理\n onClickPartitionManagement() {\n this.router.navigate(['partition-management']);\n }\n\n // 施設管理画面遷移処理\n onClickSiteEdit() {\n this.router.navigate(['site-management']);\n }\n\n // テナント情報変更画面遷移処理\n onClickMasterEdit() {\n this.router.navigate(['master-edit']);\n }\n\n // カード一覧画面遷移処理\n onClickCardList() {\n this.router.navigate(['meter-card-list']);\n }\n\n // フロア管理画面遷移処理\n onClickFloorManagement() {\n this.router.navigate(['floor-management']);\n }\n\n // メーター管理画面遷移処理\n onClickMeterManagement() {\n this.router.navigate(['meter-management']);\n }\n\n // メータータイプ管理画面遷移処理\n onClickMeterTypeManagement() {\n this.router.navigate(['meter-type']);\n }\n\n // メーター単位管理画面遷移処理\n onClickMeterUnitManagement() {\n this.router.navigate(['meter-unit']);\n }\n\n // ユーザー管理画面遷移処理\n onClickUseranagement() {\n this.router.navigate(['user-management']);\n }\n\n // 会社管理画面遷移処理\n onClickCompanyEdit() {\n this.router.navigate(['company-management']);\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { CompanyModel, SiteWithUserInfo, UserForSiteModel, UserWithSiteInfo } from '../site-management/site-management.component';\nimport { SiteUserSelectionDialogComponent } from '../site-user-selection-dialog/site-user-selection-dialog.component';\nimport { SiteInfo } from '../entity/get-site-info';\nimport { Const } from '../const/const';\n\n@Component({\n selector: 'app-site-add-dialog',\n templateUrl: './site-add-edit-dialog.component.html',\n styleUrls: ['./site-add-edit-dialog.component.scss']\n})\n\nexport class SiteAddOrEditDialogComponent implements OnInit {\n idToken: string;\n\n companyList: CompanyModel[];\n selectedCompany = new UntypedFormControl();\n\n siteName: string;\n siteAddress: string;\n userSelectionTitle: string=\"ユーザー選択\";\n\n userSiteData: UserWithSiteInfo[] = []\n siteUserData: SiteWithUserInfo[] = [] \n\n userSelectionData: UserForSiteModel[] = [];\n isSiteUserDataReady: boolean = false\n\n usingCompanyUserMap = new Map();\n originCompanyUserMap = new Map();\n\n waitForAddUser:UserForSiteModel[] = []\n waitForDeleteUser:UserForSiteModel[] = []\n\n @Input() public companyData: CompanyModel[];\n @Input() public allUserData: UserForSiteModel[];\n @Input() public siteModel: SiteInfo;\n \n constructor(\n private httpClient: HttpClient,\n public dialogRef: MatDialogRef,\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n @Inject(MAT_DIALOG_DATA) public isEdit: boolean = false) {}\n\n ngOnInit() {\n this.companyList = this.companyData\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n this.getAllSitesWithUsers()\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n this.onClickLogout()\n alert('セッションが切れています。再度ログインしてください。');\n }\n }\n );\n }\n\n getAllSitesWithUsers(){\n if(this.isEdit && this.siteModel != undefined){\n this.siteName = this.siteModel.name\n this.siteAddress = this.siteModel.address\n this.selectedCompany.setValue(this.siteModel.company_id)\n }\n this.isSiteUserDataReady = false\n this.userSiteData = []\n const url = `${environment.apiUrl}/sites/user_site_links_info_all/all`;\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.sites;\n this.siteUserData = data\n this.isSiteUserDataReady = true\n\n this.makeCompanyUserMapData()\n\n if(this.isEdit && this.siteModel != undefined){\n this.doChangeCompany()\n }\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert(err.message)\n }\n });\n }\n\n makeCompanyUserMapData(){\n this.usingCompanyUserMap = new Map()\n this.originCompanyUserMap = new Map()\n\n for (let index = 0; index < this.companyList.length; index++) {\n const company = this.companyList[index];\n\n // all user under each company\n let userSelections =this.allUserData.filter(item => {\n if(item.company){\n return item.company.id === company.id\n }\n return false\n })\n\n // all selectable user data under each company\n let siteUserSelection = this.siteUserData.filter(item => {\n return item.company_id === company.id\n })\n\n // filter by the siteID if exists\n if (this.siteModel) {\n let siteId = this.siteModel.id \n\n let siteWithUserArray: UserWithSiteInfo[] = []\n siteUserSelection.forEach( site => {\n if(site.id === siteId){\n if(site.users){\n site.users.forEach(user => {\n siteWithUserArray.push(user)\n })\n }\n }\n })\n\n userSelections.forEach( item => {\n item.is_selected = false\n siteWithUserArray.forEach(siteUser => {\n if(siteUser.id === item.id){\n item.is_selected = true\n }\n })\n })\n }else{\n userSelections.forEach( item => {\n item.is_selected = false\n })\n }\n\n // save to the map\n this.usingCompanyUserMap.set(company.id, userSelections)\n }\n\n // deep clone map for comparision\n let deepCloneMap = new Map(JSON.parse(JSON.stringify([...this.usingCompanyUserMap])));\n this.originCompanyUserMap = deepCloneMap\n }\n\n doChangeCompany(){\n\n this.userSelectionData = []\n // get data from map\n let selectedCompanyID = this.selectedCompany.value\n let userSelectionData = this.usingCompanyUserMap.get(selectedCompanyID)\n\n this.userSelectionTitle = \"ユーザー選択\"\n let count = userSelectionData.filter(item => item.is_selected).length\n if (count > 0) {\n this.userSelectionTitle = `ユーザー選択(${count})`\n }\n\n this.userSelectionData = userSelectionData\n this.checkForUserToSiteData()\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n // メーター管理登録\n onClickConfirm() {\n if(!navigator.onLine){\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n\n if(this.isEdit){\n this.updateSite()\n }else{\n this.addSite()\n }\n }\n\n addSite(){\n const messageInfo = new MeterConfirmDialogInfo('新規登録確認', '施設を新規登録します。よろしいですか。');\n\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n\n // 施設の登録処理\n const postSiteUrl = `${environment.apiUrl}/sites/sites_info`;\n let params = new HttpParams();\n params = params.set('name', this.siteName);\n params = params.set('address', this.siteAddress);\n params = params.set('company_id', this.selectedCompany.value);\n this.httpClient.post(postSiteUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n // ユーザー施設紐付登録処理\n if(this.hasUserToSiteChanged){\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n const siteId = jsonObj.result.site.id;\n this.updateUserToSiteData(siteId)\n }else{\n this.dialogRef.close('close');\n }\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('施設情報の登録に失敗しました。');\n }\n });\n }\n });\n }\n\n updateSite(){\n const messageInfo = new MeterConfirmDialogInfo('施設更新', '施設を更新します。よろしいですか。');\n const confirmDialog = this.confirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n\n // 施設の更新処理\n const url = `${environment.apiUrl}/sites/${this.siteModel.id}/1/sites_info`;\n let params = new HttpParams();\n params = params.set('name', this.siteName);\n params = params.set('address', this.siteAddress);\n params = params.set('company_id', this.selectedCompany.value);\n this.httpClient.patch(url, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n if(this.hasUserToSiteChanged){\n this.updateUserToSiteData(this.siteModel.id)\n }else{\n this.dialogRef.close('close');\n }\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('施設情報の更新に失敗しました。');\n }\n });\n }\n });\n }\n\n onClickSelectUser(){\n\n const userDialog = this.dialog.open(SiteUserSelectionDialogComponent,{\n width: '800px',\n data: this.isEdit,\n })\n\n userDialog.componentInstance.allUserData = this.userSelectionData\n userDialog.afterClosed().subscribe(result => {\n\n if(result === \"yes\"){\n let newUserSelection = userDialog.componentInstance.allUserData\n this.userSelectionData = newUserSelection\n this.usingCompanyUserMap.set(this.selectedCompany.value, this.userSelectionData)\n let count = newUserSelection.filter(user => user.is_selected).length\n\n this.userSelectionTitle = \"ユーザー選択\"\n if(count > 0) {\n this.userSelectionTitle = `ユーザー選択(${count})` \n }\n this.checkForUserToSiteData()\n }else{\n this.doChangeCompany()\n }\n })\n}\n\n\n checkForUserToSiteData(){\n\n let waitForAdd:UserForSiteModel[] = []\n let waitForDelete:UserForSiteModel[] = []\n\n this.usingCompanyUserMap.forEach((_, key ) => {\n let currentUserSelections: UserForSiteModel[] = this.usingCompanyUserMap.get(key) as UserForSiteModel[]\n let originUserSelections: UserForSiteModel[] = this.originCompanyUserMap.get(key) as UserForSiteModel[]\n if (key === this.selectedCompany.value) {\n currentUserSelections.forEach(currentUser => {\n originUserSelections.forEach(originUser => {\n if (currentUser.id === originUser.id) {\n if(currentUser.is_selected && originUser.is_selected == false){\n waitForAdd.push(currentUser)\n }else if(currentUser.is_selected == false && originUser.is_selected){\n waitForDelete.push(currentUser)\n }\n }\n })\n })\n }else{\n originUserSelections.forEach(originUser => { \n if(originUser.is_selected){\n waitForDelete.push(originUser)\n }\n })\n }\n })\n\n // filter the company id\n waitForAdd = waitForAdd.filter(user => user.company_id === this.selectedCompany.value)\n\n this.waitForAddUser = waitForAdd\n this.waitForDeleteUser = waitForDelete\n\n }\n\n // ユーザー施設紐付登録処理\n async updateUserToSiteData(siteId: string = \"\"){\n\n let addResults:any[] = []\n if (this.waitForAddUser.length > 0) {\n for await (const user of this.waitForAddUser) {\n const res = await this.addNewUserToSite(user, siteId)\n addResults.push(res)\n }\n }\n\n let deleteResults:any[] = []\n if (this.waitForDeleteUser.length > 0) {\n for await (const user of this.waitForDeleteUser) {\n const res = await this.deleteUserFromSite(user)\n deleteResults.push(res)\n }\n }\n\n let addStatusResults = addResults.map( result => result.status).filter(status => status === 200)\n let deleteStatusResults = deleteResults.map( result => result.status).filter(status => status === 200)\n\n let addErrorMsg = \"\"\n let isAddSuccess = true\n if (addStatusResults.length == this.waitForAddUser.length) {\n isAddSuccess = true\n }else{\n isAddSuccess = false\n addResults.map(result => {\n if(result.status != 200){\n addErrorMsg = result.message\n }\n })\n }\n\n let deleteErrorMsg = \"\"\n let isDeleteSuccess = true\n if (deleteStatusResults.length == this.waitForDeleteUser.length) {\n isDeleteSuccess = true\n }else{\n isDeleteSuccess = false\n deleteResults.map(result => {\n if(result.status != 200){\n deleteErrorMsg = result.message\n }\n })\n }\n\n if(isAddSuccess && isDeleteSuccess){\n this.dialogRef.close('close');\n }else{\n alert('ユーザー施設紐付に失敗しました。');\n }\n }\n\n // ユーザー施設紐付登録処理\n async addNewUserToSite(user: UserForSiteModel,siteId: string){\n const postUserSiteLinksUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n let postUserSiteLinksParams = new HttpParams();\n postUserSiteLinksParams = postUserSiteLinksParams.set('user_id', user.id);\n postUserSiteLinksParams = postUserSiteLinksParams.set('site_id', siteId);\n return this.httpClient.post(postUserSiteLinksUrl, postUserSiteLinksParams,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n ).toPromise()\n }\n\n // ユーザー施設紐付削除処理\n async deleteUserFromSite(user: UserForSiteModel){ \n const postUserSiteLinksUrl = `${environment.apiUrl}/user_site_links/1/${user.id}`;\n return this.httpClient.patch(postUserSiteLinksUrl,\"\",\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n \"content-type\": \"application/x-www-form-urlencoded\"\n }) \n }\n ).toPromise()\n }\n\n isUserSelectionDisable(){\n let isDisabled = this.selectedCompany.value == \"\" || \n this.selectedCompany.value == undefined || \n this.selectedCompany.value == null || \n this.selectedCompany.value == \"00000000-0000-0000-0000-000000000000\" || //未登録のcompanyID\n !this.isSiteUserDataReady\n return isDisabled\n }\n\n hasUserToSiteChanged(){\n return this.waitForAddUser.length > 0 || this.waitForDeleteUser.length > 0\n }\n\n isFormReadyToGo(){\n let siteNameReady = this.siteName != undefined && this.siteName != \"\"\n let siteAddressReady = this.siteAddress != undefined && this.siteAddress != \"\"\n let siteCompanyReady= this.selectedCompany.value != undefined && this.selectedCompany.value != \"\" && this.selectedCompany.value != null \n return siteNameReady && siteAddressReady && siteCompanyReady\n }\n\n isFormChanged(){\n let hasNameChanged = this.siteName != this.siteModel.name\n let hasAddressChanged = this.siteAddress != this.siteModel.address\n let hasCompanyChanged = this.selectedCompany.value != this.siteModel.company_id\n let hasUserChaned = this.hasUserToSiteChanged()\n return hasNameChanged || hasAddressChanged || hasCompanyChanged || hasUserChaned\n }\n\n confirmButtonDisabled(){\n if(this.isEdit){\n return this.isFormReadyToGo() && this.isFormChanged()\n }\n return this.isFormReadyToGo()\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-site-confirm-dialog',\n templateUrl: './site-complete-dialog.component.html',\n styleUrls: ['./site-complete-dialog.component.scss']\n})\n\nexport class SiteCompleteDialogComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public message: string) { }\n\n ngOnInit() {}\n\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { SiteInfo } from '../entity/get-site-info';\nimport { MeterConfirmDialogInfo } from '../entity/meter-confirm-dialog-info';\n\n@Component({\n selector: 'app-site-delete-dialog',\n templateUrl: './site-delete-dialog.component.html',\n styleUrls: ['./site-delete-dialog.component.scss']\n})\nexport class SiteDeleteDialogComponent implements OnInit {\n\n idToken: string;\n\n constructor(\n private httpClient: HttpClient,\n public dialogRef: MatDialogRef,\n public dialog: MatDialog,\n public confirmDialog: MatDialog,\n public auth: AuthService,\n @Inject(MAT_DIALOG_DATA) public site: SiteInfo,\n ) { }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n Const.release();\n this.auth.signOut();\n }\n }\n );\n }\n\n // メーター管理削除\n onClickConfirm() {\n if(!navigator.onLine){\n alert(\"ネットワーク接続を確認してください\")\n return\n }\n\n const messageInfo = new MeterConfirmDialogInfo('施設削除', '施設情報を削除します。よろしいですか。');\n const meterConfirmDialogRef = this.confirmDialog.open(CommonConfirmDialogComponent, {\n width: '650px',\n data: messageInfo\n });\n\n meterConfirmDialogRef.afterClosed().subscribe(result => {\n if(result === \"Yes\"){\n\n const deleteSiteUrl = `${environment.apiUrl}/sites/${this.site.id}/0/sites_info`;\n let params = new HttpParams();\n params = params.set('name', \"\");\n params = params.set('address', \"\");\n params = params.set('company_id', \"\");\n\n this.httpClient.patch(deleteSiteUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n ) .subscribe((response: any) => {\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('施設削除に失敗しました。');\n }\n }\n );\n }\n });\n\n }\n\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { MatSpinner } from '@angular/material/progress-spinner';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport Encoding from 'encoding-japanese';\nimport Papa from 'papaparse';\nimport { Subject } from 'rxjs';\nimport 'rxjs/add/operator/debounceTime';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { CsvSiteInfo } from '../entity/csv-site-info';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { SiteInfo } from '../entity/get-site-info';\nimport { idName } from '../entity/id-name';\nimport { LoginUser } from '../entity/login-user';\nimport { LoginUserSite } from '../entity/login-user-site';\nimport { LoginUserSiteCompany } from '../entity/login-user-site-company';\nimport { SiteConfirmDialogInfo } from '../entity/site-confirm-dialog-info';\nimport { SiteAddOrEditDialogComponent } from '../site-add-edit-dialog/site-add-edit-dialog.component';\nimport { SiteCompleteDialogComponent } from '../site-complete-dialog/site-complete-dialog.component';\nimport { SiteDeleteDialogComponent } from '../site-delete-dialog/site-delete-dialog.component';\n\n\nexport class CompanyModel {\n id: string;\n name: string;\n createdAt = new Date();\n updatedAt = new Date();\n createdBy = idName;\n updatedBy = idName;\n}\n\nexport class UserForSiteModel {\n\n id: string;\n name: string;\n\n user_type: number;\n user_type_name: string;\n\n company_id: string;\n company_name: string;\n\n company: CompanyModel;\n created_at: string;\n updated_at: string;\n\n is_selected = false;\n}\n\nexport class SiteWithUserInfo {\n id: string;\n name: string;\n address: string;\n company_id: string;\n company_name: string;\n users: UserWithSiteInfo[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport class UserWithSiteInfo {\n id: string;\n name: string;\n userType: number;\n\n company: CompanyModel;\n sites: SiteInfo[];\n\n createdAt: string;\n updatedAt: string;\n}\n\n\n@Component({\n selector: 'app-site-management',\n templateUrl: './site-management.component.html',\n styleUrls: ['./site-management.component.scss']\n})\n\nexport class SiteManagementComponent implements OnInit {\n loginUser: LoginUser;\n filtredsiteData: SiteInfo[] = [];\n sitesData: SiteInfo[] = []\n siteData: SiteInfo[] = [];\n userData: UserForSiteModel[] = [];\n companiesData: CompanyModel[] = [];\n companyData: CompanyModel[] = [];\n isSiteUserDataReady = false;\n siteUserData: SiteWithUserInfo[] = [];\n // テーブル生成用\n displayedColumns: string[];\n\n // APIのURL\n idToken: string;\n getLoginUserUrl: string;\n getAllSiteUrl: string;\n\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n\n // フラグ類\n getUserFinished = false;\n isLoadingData = false;\n isCompanyDataReady = false;\n isUserDataReady = false;\n mjitUserFlag = false;\n adminUserFlag = false;\n\n searchOptionKey = '';\n searchOptionsArray: string[] = ['施設名', '所管会社'];\n\n searchKeyString = '';\n searchKeyChanged: Subject = new Subject();\n\n // for csv import\n csvSiteData: CsvSiteInfo[] = [];\n csvAllSiteData: CsvSiteInfo[] = [];\n csvAddPreSiteData: CsvSiteInfo[] = [];\n csvAddSiteData: CsvSiteInfo[] = [];\n csvAddSiteUserLinksData: CsvSiteInfo[] = [];\n csvUpdateSiteForSiteData: CsvSiteInfo[] = [];\n csvUpdatePreSiteForUserData: CsvSiteInfo[] = [];\n csvUpdateSiteForUserData: CsvSiteInfo[] = [];\n csvErrorSiteData: CsvSiteInfo[] = [];\n csvDeletePreSiteData: CsvSiteInfo[] = [];\n csvDeleteDupSiteData: CsvSiteInfo[] = [];\n csvDeleteSiteData: string[] = [];\n addFailedCount: number;\n addUserSiteLinksFailedCount: number;\n updateFailedCount: number;\n tsvFlg = false;\n csvImportAccountLockError = false\n csvImportUnexpectedError = false\n updateResults: any[] = []\n addResults: any[] = []\n updateUserSiteLinksResults: any[] = []\n deleteResults: any[] = []\n\n overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay\n .position().global().centerHorizontally().centerVertically()\n });\n\n constructor(\n private httpClient: HttpClient,\n private router: Router,\n private route: ActivatedRoute,\n public auth: AuthService,\n public dialog: MatDialog,\n private overlay: Overlay,\n ) {\n localStorage.setItem(\"path\", router.url)\n }\n\n ngOnInit() {\n this.loginUser = new LoginUser();\n this.searchOptionKey = this.searchOptionsArray[0];\n this.searchKeyChanged\n .debounceTime(300) // wait 300ms after the last event before emitting last event\n .subscribe(str => {this.searchKeyString = str; this.filterResult(); });\n\n this.getToken();\n }\n\n getToken() {\n\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser()\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n // 施設情報の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。UserType:1は自身の所属会社所管の施設を取得)\n loadSiteData() {\n this.siteData.splice(0);\n this.isLoadingData = false;\n let companyId = 'all';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n companyId = this.loginUser.company.id;\n }\n const url = `${environment.apiUrl}/sites/sites_info_all/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n this.sitesData = jsonObj.result.sites;\n\n // システム管理者の場合、最新を取得しConstを更新\n if (Number(this.loginUser.user_type) === 0) {\n this.siteData = this.sitesData;\n Const.siteInfo.splice(0);\n for (const site of this.sitesData) {\n const siteItem = new LoginUserSite();\n siteItem.id = site.id;\n siteItem.name = site.name;\n siteItem.address = site.address;\n siteItem.updated_at = site.updated_at;\n siteItem.created_at = site.created_at;\n siteItem.company = new LoginUserSiteCompany();\n siteItem.company.id = site.company_id;\n siteItem.company.name = site.company_name;\n Const.siteInfo.push(siteItem);\n }\n } else if (Number(this.loginUser.user_type) === 1 || Number(this.loginUser.user_type) === 2) {\n this.sitesData.forEach(site => {\n if (site.company_id === this.loginUser.company.id) {\n this.siteData.push(site)\n }\n })\n }\n \n this.loadCompany()\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout();\n }else{\n alert('施設情報が取得できませんでした。');\n }\n });\n }\n\n loadSiteUserData() {\n this.isSiteUserDataReady = false;\n this.siteUserData = [];\n let companyId = 'all';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n companyId = this.loginUser.company.id;\n }\n const url = `${environment.apiUrl}/sites/user_site_links_info_all/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.sites;\n this.siteUserData = data;\n this.siteUserData.forEach(site => {\n if (site.company_id !== '') {\n if (this.companyData.length > 1) {\n const companyArray = this.companyData.filter(item => item.id === site.company_id);\n if (companyArray.length > 0) {\n site.company_name = companyArray[0].name;\n } else {\n site.company_id = '00000000-0000-0000-0000-000000000000';\n site.company_name = '未登録';\n }\n } else {\n site.company_name = (this.companyData[0] as unknown as CompanyModel).name;\n }\n } else {\n site.company_id = '00000000-0000-0000-0000-000000000000';\n site.company_name = '未登録';\n }\n });\n this.isSiteUserDataReady = true;\n });\n }\n // 所管会社の取得(UserType:0はシステム管理者として登録されている会社を全件取得する。UserType:1は自身の所属会社のみ)\n loadCompany() {\n let companyId = 'all';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n companyId = this.loginUser.company.id;\n }\n this.companyData = [];\n this.companiesData = [];\n this.companyData.splice(0);\n this.isCompanyDataReady = false;\n const url = `${environment.apiUrl}/company/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.companies;\n\n if (Array.isArray(data)) {\n this.companiesData = data;\n } else {\n this.companiesData.push(data as unknown as CompanyModel);\n }\n\n if (Number(this.loginUser.user_type) === 0) {\n this.companyData = this.companiesData\n } else if (Number(this.loginUser.user_type) === 1 || Number(this.loginUser.user_type) === 2) {\n this.companiesData.forEach (company => {\n if (company.id === this.loginUser.company.id) {\n this.companyData.push(company)\n }\n })\n }\n\n this.siteData.forEach(site => {\n if (site.company_id !== '') {\n if (this.companyData.length > 1) {\n const companyArray = this.companyData.filter(item => item.id === site.company_id);\n if (companyArray.length > 0) {\n site.company_name = companyArray[0].name;\n }\n } else {\n site.company_name = (this.companyData[0] as unknown as CompanyModel).name;\n }\n } else {\n site.company_id = '00000000-0000-0000-0000-000000000000';\n site.company_name = '未登録';\n }\n });\n this.filtredsiteData = this.siteData;\n this.displayedColumns = ['siteName', 'siteAddress', 'companyName', 'createBy', 'createAt','updateBy', 'updateAt', 'editButton', 'deleteButton'];\n this.isCompanyDataReady = true;\n this.isLoadingData = true;\n this.loadUserData();\n },\n () => {\n alert('会社情報が取得できませんでした。');\n });\n }\n\n loadUserData() {\n this.userData = [];\n this.isUserDataReady = false;\n let companyId = 'all';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n companyId = this.loginUser.company.id;\n }\n const url = `${environment.apiUrl}/users/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.users;\n\n this.userData = data;\n this.userData.forEach(item => {\n item.is_selected = false;\n\n if (item.company) {\n item.company_id = item.company.id;\n item.company_name = item.company.name;\n } else {\n item.company_id = '-1';\n item.company_name = '未登録';\n }\n switch (item.user_type) {\n case 0:\n item.user_type_name = 'システム管理者';\n break;\n case 1:\n item.user_type_name = '管理者';\n break;\n case 2:\n item.user_type_name = '一般';\n break;\n default:\n item.user_type_name = '-';\n break;\n }\n });\n\n this.isUserDataReady = true;\n this.loadSiteUserData();\n },\n () => {\n alert('ユーザーが取得できませんでした。');\n });\n }\n\n\n // 施設登録\n onClickAddSite() {\n const dialogRef = this.dialog.open(SiteAddOrEditDialogComponent, {\n width: '600px',\n data: false\n });\n\n dialogRef.componentInstance.companyData = this.companyData;\n dialogRef.componentInstance.allUserData = this.userData;\n\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n this.ngOnInit();\n }\n });\n }\n\n // 施設更新\n onClickEditSite(site: SiteInfo) {\n\n const dialogRef = this.dialog.open(SiteAddOrEditDialogComponent, {\n width: '600px',\n data: true,\n });\n\n dialogRef.componentInstance.companyData = this.companyData;\n dialogRef.componentInstance.allUserData = this.userData;\n dialogRef.componentInstance.siteModel = site;\n\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n this.ngOnInit();\n }\n });\n }\n\n // 施設削除\n onClickDeleteSite(site: SiteInfo) {\n\n const dialogRef = this.dialog.open(SiteDeleteDialogComponent, {\n width: '600px',\n data: site\n });\n\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n this.ngOnInit();\n }\n });\n }\n\n // CSV出力\n onClickExportSiteCSV() {\n\n let csvData = 'site_id' + ',' +\n 'name' + ',' +\n 'address' + ',' +\n 'company_id' + ',' +\n 'company_name' + ',' +\n 'user_id\\r\\n';\n for (const row of this.siteUserData) {\n if (row.users.length > 0) {\n for (const user of row.users) {\n const rowData = row.id + ',' +\n row.name + ',' +\n row.address + ',' +\n row.company_id + ',' +\n row.company_name + ',' +\n user.id + '\\r\\n';\n const rowDataFormated = rowData.replace(/\\*/g, '').replace(/N\\/A/g, '');\n csvData = csvData + rowDataFormated;\n }\n } else {\n const rowData = row.id + ',' +\n row.name + ',' +\n row.address + ',' +\n row.company_id + ',' +\n row.company_name + ',' +\n '*' + '\\r\\n';\n const rowDataFormated = rowData.replace(/\\*/g, '').replace(/N\\/A/g, '');\n csvData = csvData + rowDataFormated;\n }\n }\n const strArray = Encoding.stringToCode(csvData);\n const sjisArray = Encoding.convert(strArray, 'SJIS', 'UNICODE');\n const uint8Array = new Uint8Array(sjisArray);\n const blob = new Blob([uint8Array], {type: 'text/tab-separated-values'});\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n\n let fileName = '施設一覧.csv';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n fileName = this.loginUser.company.name + '施設一覧.csv';\n }\n link.download = fileName;\n link.click();\n }\n\n onClickImportSiteCSV() {\n document.querySelector('input').click();\n }\n\n public changeListener(event) {\n const files = event.target.files;\n if (files && files.length > 0) {\n const file: File = files.item(0);\n const reader: FileReader = new FileReader();\n reader.readAsText(file, 'Shift_JIS');\n reader.onload = async (_) => {\n const csv: string = reader.result as string;\n const results = Papa.parse(csv);\n if (results.meta.delimiter === '\\t') {\n this.tsvFlg = true;\n }\n let messageContents = '施設情報をインポートします。よろしいですか?';\n const rows = csv.split('\\r\\n');\n if (rows.length > 1000) {\n messageContents = messageContents + `\\n※1000件を超えています。処理に時間がかかる可能性があります。`;\n }\n const messageInfo = new SiteConfirmDialogInfo('CSVインポート', messageContents );\n const siteConfirmDialogRef = this.dialog.open(CommonConfirmDialogComponent, {\n width: '650px',\n data: messageInfo\n });\n\n siteConfirmDialogRef.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n this.handleCSVStringToUserArray(csv);\n }\n });\n };\n }\n }\n\n handleCSVStringToUserArray(csvString: string) {\n this.overlayRef.attach(new ComponentPortal(MatSpinner));\n try {\n\n this.csvAllSiteData = [];\n this.csvAddPreSiteData = [];\n this.csvAddSiteData = [];\n this.csvAddSiteUserLinksData = [];\n this.csvUpdateSiteForSiteData = [];\n this.csvUpdatePreSiteForUserData = [];\n this.csvUpdateSiteForUserData = [];\n this.csvErrorSiteData = [];\n this.csvDeletePreSiteData = [];\n this.csvDeleteDupSiteData = [];\n this.csvDeleteSiteData = [];\n this.addFailedCount = 0;\n this.addUserSiteLinksFailedCount = 0;\n this.updateFailedCount = 0;\n\n let splitString = ',';\n if (this.tsvFlg) {\n splitString = '\\t';\n }\n\n // CSVの項目:site_id,name,address,company_id,company_name, user_id\n const rows = csvString.split('\\r\\n');\n const headerRowTitles = rows[0].trim().split(splitString);\n if (headerRowTitles.length !== 6) {\n alert('csvファイルのフォーマットが正しいか確認してください。');\n this.overlayRef.detach();\n return;\n }\n\n // CSVの項目:site_id,name,address,companyId,companyName, userId\n for (let i = 1; i < rows.length; i++) {\n const csvSiteInfo = new CsvSiteInfo();\n const jsonStr = rows[i];\n const strArr = jsonStr.split(splitString);\n // 項目の足りないレコードはスキップ\n if (strArr.length < 6) {\n continue;\n }\n csvSiteInfo.siteId = strArr[0].trim();\n csvSiteInfo.siteName = strArr[1].trim();\n csvSiteInfo.siteAddress = strArr[2].trim();\n csvSiteInfo.companyId = strArr[3].trim();\n csvSiteInfo.companyName = strArr[4].trim();\n csvSiteInfo.userIdList = [];\n if (strArr[5].length > 0) {\n csvSiteInfo.userIdList.push(strArr[5].trim());\n }\n // idが空の場合登録\n if (csvSiteInfo.siteId === '') {\n // 項目チェックを行い不正データは振り分ける\n this.checkAddCSVData(csvSiteInfo);\n }\n // idが存在する場合更新\n const siteItem = this.siteData.filter(item => {\n return item.id === csvSiteInfo.siteId;\n });\n if (siteItem.length > 0) {\n // 項目チェックを行い不正データは振り分ける\n this.checkUpdateCSVData(csvSiteInfo);\n }\n this.csvAllSiteData.push(csvSiteInfo);\n }\n if (this.csvAddPreSiteData.length > 0) {\n // 同一施設毎にデータをまとめる\n this.checkAddSiteUserLinks();\n }\n if (this.csvUpdateSiteForSiteData.length > 0) {\n // 更新データ(施設)の重複削除\n this.csvUpdateSiteForSiteData = this.csvUpdateSiteForSiteData.filter((element, index, self) =>\n self.findIndex(e =>\n e.siteId === element.siteId\n ) === index\n );\n }\n if (this.csvUpdatePreSiteForUserData.length > 0) {\n this.checkUpdateSiteUserLinks();\n }\n if (this.csvDeletePreSiteData.length > 0) {\n this.checkDeleteSiteUserLinks();\n }\n // DBの施設 - CSVの施設の差分が削除対象\n const dbSiteIdList: string[] = new Array();\n const csvSiteIdList: string[] = new Array();\n for (const site of this.siteData) {\n dbSiteIdList.push(site.id);\n }\n for (const csvSite of this.csvDeleteDupSiteData) {\n csvSiteIdList.push(csvSite.siteId);\n }\n this.csvDeleteSiteData = dbSiteIdList.filter(item => {\n return JSON.stringify(csvSiteIdList).indexOf(JSON.stringify(item)) === -1;\n });\n this.beginToUploadCSVSite();\n } catch (error) {\n alert('csvファイルのフォーマットが正しいか確認してください。');\n this.overlayRef.detach();\n }\n }\n\n checkAddCSVData(csvSiteInfo: CsvSiteInfo) {\n // CSVの項目:siteId,name,address,companyId,companyName,userId\n // nameのCSV存在チェック\n if (!this.checkValueIsInvalid(csvSiteInfo.siteName)) {\n this.addFailedCount++;\n return;\n }\n // addressのCSV存在チェック\n if (!this.checkValueIsInvalid(csvSiteInfo.siteAddress)) {\n this.addFailedCount++;\n return;\n }\n // companyIDのCSV存在チェック\n if (!this.checkValueIsInvalid(csvSiteInfo.companyId)) {\n this.addFailedCount++;\n return;\n }\n // companyIDの妥当性チェック\n // 管理者の場合同じ会社の施設のみ\n if (Number(this.loginUser.user_type) === this.userTypeAdmin && this.loginUser.company.id !== csvSiteInfo.companyId) {\n this.addFailedCount++;\n return;\n }\n // システム管理者の場合、複数の会社を登録できるためcompanyIdがDBに存在するかチェック\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n const isCompnay = this.companyData.filter(item => {\n return item.id === csvSiteInfo.companyId;\n });\n if (isCompnay.length === 0) {\n this.addFailedCount++;\n return;\n }\n }\n\n // userIdの存在チェック\n if (csvSiteInfo.userIdList.length > 0) {\n this.csvAddSiteUserLinksData.push(csvSiteInfo);\n }\n this.csvAddPreSiteData.push(csvSiteInfo);\n }\n\n checkAddSiteUserLinks() {\n // 同-施設のユーザー登録チェック\n let csvSameSiteData = new Array();\n for (const siteInfo of this.csvAddPreSiteData) {\n const siteInfoItem = this.csvAddPreSiteData.filter(item => {\n return item.siteName === siteInfo.siteName &&\n item.siteAddress === siteInfo.siteAddress &&\n item.companyId === siteInfo.companyId &&\n item.userIdList[0] !== siteInfo.userIdList[0];\n });\n if (siteInfoItem.length > 0) {\n siteInfoItem.push(siteInfo);\n csvSameSiteData = siteInfoItem;\n const sameSiteInfoData = new CsvSiteInfo();\n const userList = new Array();\n sameSiteInfoData.siteName = csvSameSiteData[0].siteName;\n sameSiteInfoData.siteAddress = csvSameSiteData[0].siteAddress;\n sameSiteInfoData.companyId = csvSameSiteData[0].companyId;\n sameSiteInfoData.companyName = csvSameSiteData[0].companyName;\n for (const sameSiteData of csvSameSiteData) {\n userList.push(sameSiteData.userIdList[0]);\n }\n sameSiteInfoData.userIdList = userList.sort();\n this.csvAddSiteData.push(sameSiteInfoData);\n } else {\n this.csvAddSiteData.push(siteInfo);\n }\n }\n // 登録データ(施設)の重複削除\n this.csvAddSiteData = this.csvAddSiteData.filter((element, index, self) =>\n self.findIndex(e =>\n e.siteName === element.siteName &&\n e.siteAddress === element.siteAddress &&\n e.companyId === element.companyId &&\n JSON.stringify(e.userIdList) === JSON.stringify(element.userIdList)\n ) === index\n );\n }\n\n checkUpdateSiteUserLinks() {\n // 同-施設のユーザー登録チェック\n const csvSameSiteData = new Array();\n for (const siteInfo of this.csvUpdatePreSiteForUserData) {\n const siteInfoItem = this.csvUpdatePreSiteForUserData.filter(item => {\n return item.siteId === siteInfo.siteId;\n });\n csvSameSiteData.push(siteInfoItem);\n }\n\n for (const sameSiteData of csvSameSiteData) {\n const sameSiteInfoData = new CsvSiteInfo();\n const userList = new Array();\n sameSiteInfoData.siteId = sameSiteData[0].siteId;\n sameSiteInfoData.siteName = sameSiteData[0].siteName;\n sameSiteInfoData.siteAddress = sameSiteData[0].siteAddress;\n sameSiteInfoData.companyId = sameSiteData[0].companyId;\n sameSiteInfoData.companyName = sameSiteData[0].companyName;\n if (sameSiteData.length > 1) {\n for (const sameSiteDataItem of sameSiteData) {\n userList.push(sameSiteDataItem.userIdList[0]);\n }\n sameSiteInfoData.userIdList = userList.sort();\n } else {\n sameSiteInfoData.userIdList = sameSiteData[0].userIdList.sort();\n }\n this.csvUpdateSiteForUserData.push(sameSiteInfoData);\n }\n if (this.csvUpdateSiteForUserData.length > 0) {\n // 更新データ(ユーザー)の重複削除\n this.csvUpdateSiteForUserData = this.csvUpdateSiteForUserData.filter((element, index, self) =>\n self.findIndex(e =>\n e.siteId === element.siteId\n ) === index\n );\n // DBデータ紐付け\n for (const csvUpdateSiteForUserDataItem of this.csvUpdateSiteForUserData) {\n const dbSiteData = this.siteUserData.filter(item => {\n return item.id === csvUpdateSiteForUserDataItem.siteId;\n });\n csvUpdateSiteForUserDataItem.dbSiteData = dbSiteData[0];\n }\n }\n }\n\n checkDeleteSiteUserLinks() {\n // 同-施設のユーザー登録チェック\n const csvSameSiteData = new Array();\n for (const siteInfo of this.csvDeletePreSiteData) {\n const siteInfoItem = this.csvDeletePreSiteData.filter(item => {\n return item.siteId === siteInfo.siteId;\n });\n csvSameSiteData.push(siteInfoItem);\n }\n\n for (const sameSiteData of csvSameSiteData) {\n const sameSiteInfoData = new CsvSiteInfo();\n const userList = new Array();\n sameSiteInfoData.siteId = sameSiteData[0].siteId;\n this.csvDeleteDupSiteData.push(sameSiteInfoData);\n }\n if (this.csvDeleteDupSiteData.length > 0) {\n // データの重複削除\n this.csvDeleteDupSiteData = this.csvDeleteDupSiteData.filter((element, index, self) =>\n self.findIndex(e =>\n e.siteId === element.siteId\n ) === index\n );\n }\n\n }\n\n checkUpdateCSVData(csvSiteInfo: CsvSiteInfo) {\n let updateFlg = false;\n // CSVの項目:siteId,name,address,companyId,companyName, userId\n // siteIdは存在するのでこれを元に施設情報がDB上に存在するかチェック\n const siteInfo = this.siteUserData.filter(item => {\n return item.id === csvSiteInfo.siteId;\n });\n if (siteInfo.length === 0) {\n this.updateFailedCount++;\n return;\n }\n this.csvDeletePreSiteData.push(csvSiteInfo);\n\n // nameのCSV存在チェック\n if (!this.checkValueIsInvalid(csvSiteInfo.siteName)) {\n this.updateFailedCount++;\n return;\n }\n if (siteInfo[0].name !== csvSiteInfo.siteName) {\n updateFlg = true;\n }\n\n // addressのCSV存在チェック\n if (!this.checkValueIsInvalid(csvSiteInfo.siteAddress)) {\n this.updateFailedCount++;\n return;\n }\n if (siteInfo[0].address !== csvSiteInfo.siteAddress) {\n updateFlg = true;\n }\n\n // companyIDのCSV存在チェック\n if (!this.checkValueIsInvalid(csvSiteInfo.companyId)) {\n this.updateFailedCount++;\n return;\n }\n // companyIDの妥当性チェック\n if (Number(this.loginUser.user_type) === this.userTypeAdmin && this.loginUser.company.id !== csvSiteInfo.companyId) {\n this.updateFailedCount++;\n return;\n }\n // システム管理者の場合、複数の会社を登録できるためcompanyIdがDBに存在するかチェック\n if (Number(this.loginUser.user_type) === this.userTypeSysAdmin) {\n const isCompnay = this.companyData.filter(item => {\n return item.id === csvSiteInfo.companyId;\n });\n if (isCompnay.length === 0) {\n this.updateFailedCount++;\n return;\n }\n }\n\n // companyNameは更新しないのでここでは対象外\n\n if (updateFlg) {\n csvSiteInfo.dbSiteData = siteInfo[0];\n this.csvUpdateSiteForSiteData.push(csvSiteInfo);\n }\n\n // userIDの更新チェック → 施設単位でまとめて実施するのでここではチェック対象外\n // userIDがある → DBの紐付けみてなければ追加更新\n // userIDがない → 更新対象外\n // 施設ユーザー紐付けの削除更新は施設ID単位で見る必要があるのでまとめてから実施\n // DBの施設に紐づくユーザーリストに存在・CSVの同一施設のユーザーリストに非存在 >論理削除\n // DBの施設に紐づくユーザーリストに非存在・CSVの同一施設のユーザーリストに存在 >追加\n this.csvUpdatePreSiteForUserData.push(csvSiteInfo);\n }\n\n checkValueIsInvalid(val: any) {\n return !(val === '' || val === null || val === undefined);\n }\n\n async beginToUploadCSVSite() {\n if (!navigator.onLine) {\n alert('ネットワーク接続を確認してください');\n return;\n }\n\n // for add\n this.addResults = await this.addSites();\n const addSuccessCount = this.addResults.filter(item => item === 1).length;\n this.addFailedCount += this.addResults.filter(item => item === 3).length;\n\n // for update\n if (!this.csvImportUnexpectedError){\n this.updateResults = await this.updateSites();\n }\n const updateSuccessCount = this.updateResults.filter(item => item === 1).length;\n this.updateFailedCount += this.updateResults.filter(item => item === 3).length;\n if (!this.csvImportUnexpectedError){\n this.updateUserSiteLinksResults = await this.updateUserSiteLinks();\n }\n const updateUserSiteLinksSuccessCount = this.updateUserSiteLinksResults.filter(item => item === 1).length;\n const updateUserSiteLinksFailedCount = this.updateUserSiteLinksResults.filter(item => item === 3).length;\n\n // for delete\n if (!this.csvImportUnexpectedError){\n this.deleteResults = await this.deleteSites();\n }\n const deleteSuccessCount = this.deleteResults.filter(item => item === 1).length;\n const deleteFailedCount = this.deleteResults.filter(item => item === 3).length;\n this.overlayRef.detach();\n\n if(this.csvImportAccountLockError){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n } else {\n const successCount = updateSuccessCount + addSuccessCount + deleteSuccessCount;\n const failCount = this.addFailedCount + this.updateFailedCount + deleteFailedCount;\n \n const resultString = `インポートが完了しました。\\n\n 施設:成功${successCount}件/失敗${failCount}件\\n\n ユーザー施設紐付:成功${updateUserSiteLinksSuccessCount}件/失敗${updateUserSiteLinksFailedCount}件`;\n const dialogRef = this.dialog.open(SiteCompleteDialogComponent, {\n width: '600px',\n data: resultString\n });\n \n dialogRef.afterClosed().subscribe(_ => {\n this.ngOnInit();\n });\n } \n }\n\n async addSites() {\n const addResults: any[] = [];\n for await (const user of this.csvAddSiteData) {\n const res = await this.createSites(user);\n if (res === 1 || res === 3) {\n addResults.push(res);\n }\n if (res === 4){\n this.csvImportUnexpectedError = true\n break\n }\n }\n return addResults;\n }\n\n async createSites(site: CsvSiteInfo): Promise {\n return new Promise(async (resolve, _) => {\n try {\n // 施設の登録処理\n const postSiteUrl = `${environment.apiUrl}/sites/sites_info`;\n let params = new HttpParams();\n params = params.set('name', site.siteName);\n params = params.set('address', site.siteAddress);\n params = params.set('company_id', site.companyId);\n this.httpClient.post(postSiteUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe(async (res) => {\n const jsonSiteStr = JSON.stringify(res);\n const jsonSiteObj = JSON.parse(jsonSiteStr);\n const siteData = jsonSiteObj.result.site;\n // ユーザー施設紐付情報の登録\n resolve(await this.postUserSitelinks(siteData.id, site));\n },\n err => {\n if (err.error.code = 'AccountLockError'){\n this.csvImportAccountLockError = true\n resolve(4);\n }else{\n resolve(3);\n }\n });\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n // ユーザー施設紐付け情報の登録\n async postUserSitelinks(siteId: string, site: CsvSiteInfo): Promise {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n return new Promise((resolve, _) => {\n try {\n for (const userId of site.userIdList) {\n if (userId === undefined) {\n this.addUserSiteLinksFailedCount++;\n continue;\n }\n if (userId.length > 0) {\n let params = new HttpParams();\n params = params.set('user_id', userId);\n params = params.set('site_id', siteId);\n this.httpClient.post(\n posthUserUrl,\n params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n resolve(1)\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4)\n }else{\n resolve(3);\n }\n });\n }\n }\n resolve(1)\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n async updateSites() {\n const dupdateResults: any[] = [];\n for await (const site of this.csvUpdateSiteForSiteData) {\n // 戻り値1:正常、2:処理なし、3:異常、4:予期せぬエラー&アカウントロック\n const res = await this.updateCSVSite(site);\n if (res === 1 || res === 3) {\n dupdateResults.push(res);\n }\n if (res === 4){\n this.csvImportUnexpectedError = true\n break\n }\n }\n return dupdateResults;\n }\n\n async updateUserSiteLinks() {\n const dupdateResults: any[] = [];\n for await (const site of this.csvUpdateSiteForUserData) {\n // 戻り値1:正常、3:異常、4:予期せぬエラー&アカウントロック\n const res = await this.updateUserSitelinks(site);\n if (res === 1 || res === 3) {\n dupdateResults.push(res);\n }\n if (res === 4){\n this.csvImportUnexpectedError = true\n break\n }\n\n }\n return dupdateResults;\n }\n\n async updateCSVSite(site: CsvSiteInfo): Promise {\n return new Promise((resolve, _) => {\n try {\n // 施設の更新処理\n const url = `${environment.apiUrl}/sites/${site.siteId}/1/sites_info`;\n let params = new HttpParams();\n params = params.set('name', site.siteName);\n params = params.set('address', site.siteAddress);\n params = params.set('company_id', site.companyId);\n this.httpClient.patch(url, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe(async (response) => {\n resolve(1);\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }else{\n resolve(3)\n }\n });\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n // 取得時の紐付け情報と比較を行い、増減によりユーザー施設紐付けの更新を行う\n async updateUserSitelinks(site: CsvSiteInfo): Promise {\n return new Promise((resolve, _) => {\n try {\n let result = 2\n // 元々の紐付けと更新時の紐付けを比較\n const dbUserSiteList: string[] = new Array();\n for (const userItem of site.dbSiteData.users) {\n dbUserSiteList.push(userItem.id);\n }\n let updateDelteList: string[] = new Array();\n let updateAddList: string[] = new Array();\n // dbUserSiteList > 0 && user.siteIdList > 0 --> 差分検出してuser.siteIdListに差分がある場合 --> 差分追加\n // A | A,B\n if (dbUserSiteList.length > 0 && site.userIdList.length > 0) {\n updateAddList = site.userIdList.filter(i => JSON.stringify(dbUserSiteList).indexOf(JSON.stringify(i)) === -1);\n if (updateAddList.length > 0) {\n for (const updateAddUserId of updateAddList) {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n let params = new HttpParams();\n params = params.set('user_id', updateAddUserId);\n params = params.set('site_id', site.siteId);\n this.httpClient.post(\n posthUserUrl,\n params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n result = 1\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n result = 4\n }else{\n result = 3\n }\n });\n if(this.csvImportAccountLockError){\n break\n }\n }\n resolve(1);\n \n }\n // dbUserSiteList > 0 && user.siteIdList > 0 --> 差分検出してdbUserSiteListに差分がある場合 --> 差分削除\n // A,B | A\n updateDelteList = dbUserSiteList.filter(i => JSON.stringify(site.userIdList).indexOf(JSON.stringify(i)) === -1);\n if (updateDelteList.length > 0) {\n for (const updateDelteUserId of updateDelteList) {\n const patchUserUrl = `${environment.apiUrl}/user_site_links/delete_user_site_links_info`;\n let updateDelteParams = new HttpParams();\n updateDelteParams = updateDelteParams.set('user_id', updateDelteUserId);\n updateDelteParams = updateDelteParams.set('site_id', site.siteId);\n this.httpClient.patch(\n patchUserUrl,\n updateDelteParams,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n result = 1\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n result = 4\n }else{\n result = 3\n }\n });\n }\n resolve(1);\n }\n }\n\n // dbUserSiteList === 0 && user.siteIdList > 0 --> user.siteIdList追加\n // - | A\n if (dbUserSiteList.length === 0 && site.userIdList.length > 0) {\n for (const userId of site.userIdList) {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n let params = new HttpParams();\n params = params.set('user_id', userId);\n params = params.set('site_id', site.siteId);\n this.httpClient.post(\n posthUserUrl,\n params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n result = 1\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n result = 4\n }else{\n result = 3\n }\n });\n }\n resolve(1);\n }\n\n // dbUserSiteList === user.siteIdList --> チェック済みの為処理なし\n // - | -\n // A | A\n\n // dbUserSiteList > 0 && user.siteIdList === 0 --> チェック済みの為処理なし\n // A | -\n // A,B | -\n resolve(result);\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n async deleteSites() {\n const deleteResults: any[] = [];\n for await (const siteId of this.csvDeleteSiteData) {\n // 戻り値1:正常、2:処理なし、3:異常、4:予期せぬエラー&アカウントロック\n const res = await this.deleteCSVSite(siteId);\n if (res === 1 || res === 3) {\n deleteResults.push(res);\n }\n if (res === 4){\n this.csvImportUnexpectedError = true\n break\n }\n }\n return deleteResults;\n }\n\n async deleteCSVSite(siteId: string): Promise {\n return new Promise((resolve, _) => {\n try {\n // 施設削除\n const patchSiteUrl = `${environment.apiUrl}/sites/${siteId}/0/sites_info`;\n const params = new HttpParams();\n this.httpClient.patch(patchSiteUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n ).subscribe((response) => {\n resolve(1);\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4)\n }else{\n resolve(3)\n }\n });\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n search(text: string) {\n this.searchKeyChanged.next(text);\n }\n\n filterResult() {\n if (this.searchKeyString === '') {\n this.filtredsiteData = this.siteData;\n return;\n }\n\n switch (this.searchOptionKey) {\n case this.searchOptionsArray[0]:\n this.filtredsiteData = this.siteData.filter(item => item.name.includes(this.searchKeyString));\n break;\n case this.searchOptionsArray[1]:\n this.filtredsiteData = this.siteData.filter(item => item.company_name.includes(this.searchKeyString));\n break;\n default:\n break;\n }\n }\n\n onChangeOption() {\n this.searchKeyChanged.next(this.searchKeyString);\n }\n\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n this.dialog.closeAll();\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n Const.mjitUser = Number(Const.loginUser.user_type) === 0\n Const.adminUser = Number(Const.loginUser.user_type) === 1\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\")\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id\n }\n }\n }\n\n if (Const.site_id === null) {\n alert('前回選択した施設が見つかりませんでした。');\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n this.loginUser = Const.loginUser;\n this.mjitUserFlag = Const.mjitUser;\n this.adminUserFlag = Const.adminUser; \n this.loadSiteData()\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n }else{\n alert('ログイン情報が取得できませんでした。再度ログインしてください。');\n }\n this.onClickLogout();\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '../auth/auth.service';\nimport { LoginUser } from '../entity/login-user';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { LoginUserSite } from '../entity/login-user-site';\nimport { Const } from '../const/const'\nimport { environment } from 'src/environments/environment';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\n\n@Component({\n selector: 'app-site-select',\n templateUrl: './site-select.component.html',\n styleUrls: ['./site-select.component.scss']\n})\n\nexport class SiteSelectComponent implements OnInit {\n loginUser: LoginUser;\n idToken: string;\n getLoginUserUrl: string;\n siteArray: LoginUserSite[];\n displayedColumns: string[];\n getUserFinished = false;\n show = false;\n\n constructor(\n private router: Router,\n private auth: AuthService,\n private httpClient: HttpClient,\n ) {\n localStorage.setItem(\"path\", router.url)\n }\n\n ngOnInit() {\n this.siteArray = []\n\n if (Const.loginUser == null) {\n this.getToken()\n } else {\n if (Const.loginUser.user_type === 0) {\n this.router.navigate(['company-management']);\n }\n this.loginUser = Const.loginUser\n this.siteArray = Const.loginUser.sites\n this.displayedColumns = ['site'];\n this.getUserFinished = true;\n }\n }\n\n getToken() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser()\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n\n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n Const.loginUser = response.result.login_user;\n if (Const.loginUser.user_type === 0) {\n this.router.navigate(['company-management']);\n }\n Const.mjitUser = Number(Const.loginUser.user_type) === 0\n Const.adminUser = Number(Const.loginUser.user_type) === 1\n\n this.loginUser = Const.loginUser;\n this.siteArray = Const.loginUser.sites\n this.displayedColumns = ['site'];\n this.getUserFinished = true;\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n }else{\n alert('ログイン情報が取得できませんでした。再度ログインしてください。');\n }\n this.onClickLogout();\n });\n }\n\n onClickLogout() {\n Const.release()\n this.auth.signOut();\n }\n\n onClick(event: LoginUserSite) {\n Const.site_id = event.id\n localStorage.setItem('siteId', event.id);\n this.router.navigate(['meter-card-list']);\n }\n}\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { UserForSiteModel } from '../site-management/site-management.component';\n\n@Component({\n selector: 'app-site-user-selection-dialog',\n templateUrl: './site-user-selection-dialog.component.html',\n styleUrls: ['./site-user-selection-dialog.component.scss']\n})\n\nexport class SiteUserSelectionDialogComponent implements OnInit {\n\n userList: UserForSiteModel[] = []\n originUserList: UserForSiteModel[] = []\n\n // テーブル生成用\n displayedColumns: string[];\n\n @Input() public allUserData: UserForSiteModel[];\n\n\n constructor( @Inject(MAT_DIALOG_DATA) public isEdit: boolean = false,\n public dialogRef: MatDialogRef,\n ) {\n dialogRef.disableClose = true; \n }\n\n ngOnInit() {\n // deep clone \n let deepCloneUserArray = JSON.parse(JSON.stringify(this.allUserData));\n this.originUserList = deepCloneUserArray\n\n // for selection\n this.userList = JSON.parse(JSON.stringify(this.allUserData))\n this.displayedColumns = [\"userName\", \"companyName\",\"userPermission\"]\n }\n\n isAllSelected(){\n let allSelectedCount = this.userList.filter(user => user.is_selected).length\n return allSelectedCount == this.userList.length && this.userList.length != 0\n }\n\n toggleAllRows(){\n let toggleValue = true\n let isAllNotSelected = this.userList.length == this.userList.filter(user => !user.is_selected).length\n let isAllSelected = this.isAllSelected()\n\n if(isAllSelected){\n toggleValue = false\n }else if(isAllNotSelected){\n toggleValue = true\n }\n\n this.userList.forEach(user => {\n user.is_selected = toggleValue\n })\n }\n\n confirmButtonEnabled(){\n let enable = false\n this.originUserList.forEach(item => {\n this.userList.forEach(user => {\n if(user.is_selected != item.is_selected){\n enable = true\n }\n })\n })\n return enable\n }\n\n onClickConfirm(){\n this.allUserData = this.userList\n this.dialogRef.close('yes');\n }\n\n onClickClose(){\n this.allUserData = this.originUserList\n this.dialogRef.close('close');\n }\n\n}\n","import { Component, OnInit, Inject} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { TenantConfirmDialogInfo } from '../entity/tenant-confirm-dialog-info';\n\n@Component({\n selector: 'app-tenant-confirm-dialog',\n templateUrl: './tenant-confirm-dialog.component.html',\n styleUrls: ['./tenant-confirm-dialog.component.scss']\n})\nexport class TenantConfirmDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public dialogInfo: TenantConfirmDialogInfo\n ) { }\n\n ngOnInit() {\n }\n\n onClickYes() {\n this.dialogRef.close('Yes');\n }\n}\n","import { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, LOCALE_ID, OnInit } from \"@angular/core\";\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormGroup,\n} from \"@angular/forms\";\nimport { DateAdapter, NativeDateAdapter } from \"@angular/material/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { Const } from \"../const/const\";\nimport { PatchTenantCancellResponse } from \"../entity/patch-tenant-cancell-response\";\nimport { TenantConfirmDialogInfo } from \"../entity/tenant-confirm-dialog-info\";\nimport { TenantRow } from \"../entity/tenant-row\";\nimport { TenantConfirmDialogComponent } from \"../tenant-confirm-dialog/tenant-confirm-dialog.component\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-tenant-delete-dialog\",\n templateUrl: \"./tenant-delete-dialog.component.html\",\n styleUrls: [\"./tenant-delete-dialog.component.scss\"],\n})\nexport class TenantDeleteDialogComponent implements OnInit {\n date: Date;\n minDate: Date;\n messageInfo: TenantConfirmDialogInfo;\n idToken: string;\n site: LoginUserSite;\n\n closedValue = this.fb.group({\n items: this.fb.array([]),\n });\n isClosedValue = false;\n isMeter = true;\n constructor(\n public tenantConfirmDialog: MatDialog,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public tenantRow: TenantRow,\n @Inject(LOCALE_ID) private locale: string,\n dateAdapter: DateAdapter,\n private httpClient: HttpClient,\n public auth: AuthService,\n private fb: UntypedFormBuilder,\n @Inject(MAT_DIALOG_DATA) public data\n ) {\n dateAdapter.setLocale(\"ja\");\n }\n\n // ダイアログオープン時、解約日が入力されていれば初期値に設定\n // 契約日より前の日付では解約できないようにカレンダーを制御\n ngOnInit() {\n this.site = this.data.site;\n if (this.data.tenantRow.cancelledAt) {\n this.date = new Date(this.data.tenantRow.cancelledAt);\n }\n this.minDate = new Date(this.data.tenantRow.contractedAt);\n this.minDate.setDate(this.minDate.getDate() + 1);\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.closedValueSetup();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n }\n\n checkClosedValue() {\n for (const val of this.closedValues.value) {\n if (\n val.meterLabel === undefined ||\n val.meterLabel === null ||\n val.meterLabel === \"\" ||\n val.meterValue === undefined ||\n val.meterValue === null ||\n val.meterValue === \"\"\n ) {\n this.isClosedValue = false;\n return;\n }\n }\n this.isClosedValue = true;\n }\n\n // 追加分の入力フォーム\n get optionForm(): UntypedFormGroup {\n return this.fb.group({\n meterLabel: [],\n meterValue: [],\n });\n }\n\n closedValueSetup() {\n if (this.data.tenantRow.closedValue) {\n let itemsTemp = this.fb.array([]);\n for (const val of JSON.parse(this.data.tenantRow.closedValue)) {\n itemsTemp.push(\n this.fb.group({\n meterName: val.meterName,\n meterLabel: val.meterLabel,\n meterValue: val.meterValue,\n })\n );\n }\n this.closedValue.setControl(\"items\", itemsTemp);\n this.isClosedValue = true;\n } else {\n this.getMeterLabelList();\n }\n }\n\n getMeterLabelList() {\n const url = `${environment.apiUrl}/sites/${Const.site_id}/meters_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n let itemsTemp = this.fb.array([]);\n\n for (const floor of response[\"result\"][\"site\"][\"floors\"]) {\n for (const partition of floor[\"partitions\"]) {\n if (\n partition.id === this.data.tenantRow.partitionId &&\n partition[\"meters\"].length > 0\n ) {\n const meters = partition[\"meters\"];\n // old_meter_idの配列を用意\n const oldMeterIds = meters\n .map((value) => {\n return value[\"old_meter_id\"];\n })\n .filter((item) => {\n return item != null; // Nullも除く\n });\n\n meters.forEach((value) => {\n // 旧メーターは含めない(old_meter_idに該当したidは含めない)\n if (!oldMeterIds.includes(value[\"id\"])) {\n itemsTemp.push(\n this.fb.group({\n meterName: value[\"name\"],\n meterLabel: value[\"label\"],\n meterValue: [],\n })\n );\n }\n });\n break;\n }\n }\n }\n if (itemsTemp.value.length <= 0) {\n this.isClosedValue = true;\n this.isMeter = false;\n return;\n }\n\n this.closedValue.setControl(\"items\", itemsTemp);\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"区画一覧が取得できませんでした。\");\n }\n }\n );\n }\n\n // 可変枠の抽出\n get closedValues(): UntypedFormArray {\n return this.closedValue.get(\"items\") as UntypedFormArray;\n }\n\n checkIfReadyToGo() {\n return this.isClosedValue && this.date;\n }\n\n // 解約ボタンを押した時の処理\n // 既存の解約日の有無でメッセージを変える\n onClickConfirm() {\n if (this.date) {\n if (this.data.tenantRow.cancelledAt) {\n this.messageInfo = new TenantConfirmDialogInfo(\n \"解約確認\",\n \"解約情報を上書きします。よろしいですか。\"\n );\n } else {\n this.messageInfo = new TenantConfirmDialogInfo(\n \"解約確認\",\n \"テナントの解約を確定します。よろしいですか。\"\n );\n }\n const tenantConfirmDialogRef = this.tenantConfirmDialog.open(\n TenantConfirmDialogComponent,\n {\n width: \"650px\",\n data: this.messageInfo,\n }\n );\n tenantConfirmDialogRef.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n const patchCancellTenantUrl = `${environment.apiUrl}/partitions/${this.data.tenantRow.partitionId}/tenants/${this.data.tenantRow.tenantId}`;\n let params = new HttpParams();\n params = params.set(\n \"cancelled_at\",\n String(formatDate(this.date, \"yyyy-MM-dd hh:mm:ss\", this.locale))\n );\n params = params.set(\n \"closed_value\",\n JSON.stringify(this.closedValues.value)\n );\n this.httpClient\n .patch(patchCancellTenantUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: PatchTenantCancellResponse) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"テナント解約に失敗しました。\");\n }\n }\n );\n }\n });\n }\n }\n\n // 解約取消ボタン押下時の処理(パラメータに''を設定してpatch)\n onClickDeleteCancell() {\n this.messageInfo = new TenantConfirmDialogInfo(\n \"解約取消\",\n \"解約を取り消します。よろしいですか。\"\n );\n const tenantConfirmDialogRef = this.tenantConfirmDialog.open(\n TenantConfirmDialogComponent,\n {\n width: \"650px\",\n data: this.messageInfo,\n }\n );\n tenantConfirmDialogRef.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n const patchCancellTenantUrl = `${environment.apiUrl}/partitions/${this.data.tenantRow.partitionId}/tenants/${this.data.tenantRow.tenantId}`;\n let params = new HttpParams();\n params = params.set(\"cancelled_at\", \"\");\n this.httpClient\n .patch(patchCancellTenantUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: PatchTenantCancellResponse) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"テナント解約取消に失敗しました。\");\n }\n }\n );\n }\n });\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, EventEmitter, Inject, OnInit, Output } from \"@angular/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { Const } from \"../const/const\";\nimport { PatchNoteToTenantsResponse } from \"../entity/patch-note-to-tenants-response\";\nimport { TenantConfirmDialogInfo } from \"../entity/tenant-confirm-dialog-info\";\nimport { TenantRow } from \"../entity/tenant-row\";\nimport { TenantConfirmDialogComponent } from \"../tenant-confirm-dialog/tenant-confirm-dialog.component\";\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormGroup,\n} from \"@angular/forms\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-tenant-edit-dialog\",\n templateUrl: \"./tenant-edit-dialog.component.html\",\n styleUrls: [\"./tenant-edit-dialog.component.scss\"],\n})\nexport class TenantEditDialogComponent implements OnInit {\n site: LoginUserSite;\n editedNote: string;\n editedTenantName: string;\n isCardDisplayBoolean: boolean;\n idToken: string;\n initialValue = this.fb.group({\n items: this.fb.array([]),\n });\n isInitialValue = false;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public tenantRow: TenantRow,\n private httpClient: HttpClient,\n public tenantConfirmDialog: MatDialog,\n public auth: AuthService,\n private fb: UntypedFormBuilder,\n @Inject(MAT_DIALOG_DATA) public data\n ) {}\n\n ngOnInit() {\n this.site = this.data.site;\n this.editedNote = this.data.tenantRow.note;\n this.editedTenantName = this.data.tenantRow.name;\n if (this.data.tenantRow.initialValue) {\n for (const val of JSON.parse(this.data.tenantRow.initialValue)) {\n this.initialValues.push(\n this.fb.group({\n meterLabel: val.meterLabel,\n meterValue: val.meterValue,\n })\n );\n }\n this.isInitialValue = false;\n } else {\n this.addForm();\n }\n this.isCardDisplayBoolean = this.changeIsCardDisplayFormat(\n this.data.tenantRow.isCardDisplay\n );\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n }\n\n // number型のカード表示フラグをboolean型に変換する\n changeIsCardDisplayFormat(isCardDisplay: number): boolean {\n if (isCardDisplay === 1) {\n return true;\n } else {\n return false;\n }\n }\n\n changeIsCardDisplayFormatNum(isCardDisplayBoolean: boolean): number {\n if (isCardDisplayBoolean === true) {\n return 1;\n } else {\n return 0;\n }\n }\n\n checkInitialValue() {\n for (const val of this.initialValues.value) {\n if (\n val.meterLabel === undefined ||\n val.meterLabel === null ||\n val.meterLabel === \"\" ||\n val.meterValue === undefined ||\n val.meterValue === null ||\n val.meterValue === \"\"\n ) {\n this.isInitialValue = false;\n return;\n }\n }\n this.isInitialValue =\n this.data.tenantRow.initialValue !==\n JSON.stringify(this.initialValues.value);\n }\n\n // 追加分の入力フォーム\n get optionForm(): UntypedFormGroup {\n return this.fb.group({\n meterLabel: [],\n meterValue: [],\n });\n }\n\n // 可変枠の抽出\n get initialValues(): UntypedFormArray {\n return this.initialValue.get(\"items\") as UntypedFormArray;\n }\n\n // 追加ボタン押下時\n addForm() {\n this.initialValues.push(this.optionForm);\n this.isInitialValue = false;\n }\n\n // 削除ボタン押下時\n removeForm(idx: number) {\n this.initialValues.removeAt(idx);\n this.checkInitialValue();\n }\n\n // 更新ボタンの制御:TRUE→活性\n checkIfReadyToGo() {\n return (\n this.editedTenantName &&\n (this.editedTenantName !== this.data.tenantRow.name ||\n this.isInitialValue ||\n this.editedNote !== this.tenantRow.note ||\n this.isCardDisplayBoolean !==\n this.changeIsCardDisplayFormat(this.data.tenantRow.isCardDisplay))\n );\n }\n\n // 確定ボタン押された時の処理\n // 確定確認ダイアログの呼び出し⇨「はい」なら変更があった箇所だけ書き込み処理\n onClickConfirmButton() {\n if (\n this.tenantRow.note !== this.editedNote ||\n this.data.tenantRow.name !== this.editedTenantName ||\n this.isInitialValue ||\n this.changeIsCardDisplayFormat(this.data.tenantRow.isCardDisplay) !==\n this.isCardDisplayBoolean\n ) {\n const messageInfo = new TenantConfirmDialogInfo(\n \"変更確認\",\n \"テナント情報の変更を反映します。よろしいですか。\"\n );\n const tenantConfirmDialogRef = this.tenantConfirmDialog.open(\n TenantConfirmDialogComponent,\n {\n width: \"650px\",\n data: messageInfo,\n }\n );\n tenantConfirmDialogRef.afterClosed().subscribe(\n (result) => {\n if (result === \"Yes\") {\n // 情報変更があった箇所だけ更新APIを叩く\n if (\n this.data.tenantRow.name !== this.editedTenantName ||\n this.isInitialValue\n ) {\n this.doPatchTenantName();\n }\n if (this.tenantRow.note !== this.editedNote) {\n this.doPatchTenantNote();\n }\n if (\n this.changeIsCardDisplayFormat(\n this.data.tenantRow.isCardDisplay\n ) !== this.isCardDisplayBoolean\n ) {\n this.doPatchIsCardDisplayFlag();\n }\n this.dialogRef.close(\"close\");\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"テナント更新に失敗しました。\");\n }\n }\n );\n }\n }\n\n // テナントメモ更新のAPIを叩く処理\n doPatchTenantNote() {\n const patchNoteToTenantsUrl = `${environment.apiUrl}/tenants/${this.data.tenantRow.tenantId}/note`;\n let params = new HttpParams();\n params = params.set(\"note\", this.editedNote);\n this.httpClient\n .patch(patchNoteToTenantsUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: PatchNoteToTenantsResponse) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"テナントメモの登録に失敗しました。\");\n }\n }\n );\n }\n\n // テナント名更新API叩く処理\n doPatchTenantName() {\n const patchNameToTenantsUrl = `${environment.apiUrl}/tenants/${this.data.tenantRow.tenantId}/info`;\n let params = new HttpParams();\n params = params.set(\"name\", this.editedTenantName);\n params = params.set(\n \"initial_value\",\n JSON.stringify(this.initialValues.value)\n );\n this.httpClient\n .patch(patchNameToTenantsUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n // レスポンスのクラス未実装\n .subscribe(\n (response: any) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"テナント名の変更に失敗しました。\");\n }\n }\n );\n }\n\n // カード・アプリ表示有無の変更API叩く処理\n doPatchIsCardDisplayFlag() {\n const patchIsCardDisplayFlagUrl = `${environment.apiUrl}/partitions/${this.data.tenantRow.partitionId}/is_card_display`;\n let params = new HttpParams();\n params = params.set(\n \"is_card_display\",\n String(this.changeIsCardDisplayFormatNum(this.isCardDisplayBoolean))\n );\n this.httpClient\n .patch(patchIsCardDisplayFlagUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n // レスポンスのクラス未実装\n .subscribe(\n (response: any) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"カード表示の変更に失敗しました。\");\n }\n }\n );\n }\n}\n","import { formatDate } from \"@angular/common\";\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Component, Inject, LOCALE_ID, OnInit } from \"@angular/core\";\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n} from \"@angular/forms\";\nimport { DateAdapter, NativeDateAdapter } from \"@angular/material/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { Const } from \"../const/const\";\nimport { ExistingTenant } from \"../entity/existing-tenant\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { GetPartitionsResponse } from \"../entity/get-partitions-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { MessageInfo } from \"../entity/message-info\";\nimport { SelectedPartition } from \"../entity/selected-partition\";\nimport { TenantConfirmDialogInfo } from \"../entity/tenant-confirm-dialog-info\";\nimport { ToTenantMakeObject } from \"../entity/to-tenant-make-object\";\nimport { MessageDialogComponent } from \"../message-dialog/message-dialog.component\";\nimport { TenantConfirmDialogComponent } from \"../tenant-confirm-dialog/tenant-confirm-dialog.component\";\nimport { LoginUserSite } from \"../entity/login-user-site\";\n\n@Component({\n selector: \"app-tenant-make-dialog\",\n templateUrl: \"./tenant-make-dialog.component.html\",\n styleUrls: [\"./tenant-make-dialog.component.scss\"],\n})\nexport class TenantMakeDialogComponent implements OnInit {\n partitionList: SelectedPartition[];\n tenantList: ExistingTenant[];\n selectedPartition = new UntypedFormControl();\n selectedTenant = new UntypedFormControl();\n tenantName: string;\n tenantNote: string;\n contractedAt: Date;\n minDate: Date;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n getPartitionsListUrl: string;\n getPartitionsResponse: GetPartitionsResponse;\n isCardDisplayBoolean = true;\n isMakingNewTenant = true;\n isExistTenantNow = false;\n notExistTenantPartition = false;\n canChooseDate = false;\n idToken: string;\n site: LoginUserSite;\n\n initialValue = this.fb.group({\n items: this.fb.array([]),\n });\n isInitialValue = false;\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public allTenantObject: ToTenantMakeObject,\n public tenantConfirmDialog: MatDialog,\n dateAdapter: DateAdapter,\n @Inject(LOCALE_ID) private locale: string,\n private httpClient: HttpClient,\n public dialog: MatDialog,\n public auth: AuthService,\n private fb: UntypedFormBuilder,\n @Inject(MAT_DIALOG_DATA) public data\n ) {\n dateAdapter.setLocale(\"ja\");\n }\n\n ngOnInit() {\n this.site = this.data.site;\n this.partitionList = [];\n this.tenantList = [];\n for (const tenant of this.data.allTenantObject.allTenantList) {\n const existingTenant = new ExistingTenant(tenant.id, tenant.name);\n this.tenantList.push(existingTenant);\n }\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n this.addForm();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n }\n });\n }\n\n checkInitialValue() {\n for (const val of this.initialValues.value) {\n if (\n val.meterLabel === undefined ||\n val.meterLabel === null ||\n val.meterLabel === \"\" ||\n val.meterValue === undefined ||\n val.meterValue === null ||\n val.meterValue === \"\"\n ) {\n this.isInitialValue = false;\n return;\n }\n }\n this.isInitialValue = true;\n }\n\n // 追加分の入力フォーム\n get optionForm(): UntypedFormGroup {\n return this.fb.group({\n meterLabel: [],\n meterValue: [],\n });\n }\n\n // 可変枠の抽出\n get initialValues(): UntypedFormArray {\n return this.initialValue.get(\"items\") as UntypedFormArray;\n }\n\n // 追加ボタン押下時\n addForm() {\n this.initialValues.push(this.optionForm);\n this.isInitialValue = false;\n }\n\n // 削除ボタン押下時\n removeForm(idx: number) {\n this.initialValues.removeAt(idx);\n }\n\n // ログインユーザーの取得処理(区画一覧の取得に施設IDが必要)\n // リファクタで呼び出し元(レポート画面)から施設IDは連携してくるようにする\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n this.getPartitionsList();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\n \"ログイン名が取得できませんでした。再度ログインしてください。\"\n );\n this.dialogRef.close(\"failed\");\n }\n this.onClickLogout();\n }\n );\n }\n\n // 区画一覧取得処理\n getPartitionsList() {\n const url = `${environment.apiUrl}/sites/${Const.site_id}/meters_info_all`;\n this.httpClient\n .get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n for (const floor of response[\"result\"][\"site\"][\"floors\"]) {\n for (const partition of floor[\"partitions\"]) {\n let meterLabels = [];\n\n for (const meter of partition[\"meters\"]) {\n meterLabels.push(meter[\"label\"]);\n }\n const partitionInfo = new SelectedPartition(\n partition.id,\n partition.name,\n meterLabels\n );\n this.partitionList.push(partitionInfo);\n }\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n } else {\n alert(\"区画一覧が取得できませんでした。\");\n }\n }\n );\n }\n\n formSetup() {\n this.initialValueSetup(this.selectedPartition.value);\n this.calenderRegulate();\n }\n\n initialValueSetup(partitionId: string) {\n let itemsTemp = this.fb.array([]);\n for (const partition of this.partitionList) {\n if (partition.partitionId === partitionId) {\n if (partition.meterLabels.length > 0) {\n for (const meterLabel of partition.meterLabels) {\n itemsTemp.push(\n this.fb.group({\n meterLabel: meterLabel,\n meterValue: [],\n })\n );\n }\n this.initialValue.setControl(\"items\", itemsTemp);\n } else {\n itemsTemp.push(this.optionForm);\n this.initialValue.setControl(\"items\", itemsTemp);\n this.isInitialValue = true;\n }\n }\n }\n }\n\n // 選択区画の変更に伴って、カレンダーの選択可能日付を編集する(minDateの書き換え)\n calenderRegulate() {\n this.checkExistTenantNow(this.selectedPartition.value);\n const lastCancellDate = this.getLastCancellDate(\n this.selectedPartition.value\n );\n if (lastCancellDate) {\n lastCancellDate.setDate(lastCancellDate.getDate() + 1);\n this.minDate = lastCancellDate;\n }\n }\n\n // 区画IDを引数に、現在テナントがいる区画かどうか判定する(いれば日付選択可能)\n // テナント一覧で表示されている各区画の最新テナント(一覧で一番下に表示)のうち、解約日が記入されているものだけ日付選択が可能になる\n checkExistTenantNow(partitionId: string) {\n const tenantRowsSamePartition = [];\n for (const tenantRow of this.data.allTenantObject.tenantData) {\n if (partitionId === tenantRow.partitionId) {\n tenantRowsSamePartition.push(tenantRow);\n }\n }\n if (tenantRowsSamePartition.length > 0) {\n if (\n !tenantRowsSamePartition[tenantRowsSamePartition.length - 1].cancelledAt\n ) {\n this.isExistTenantNow = true;\n this.canChooseDate = false;\n this.notExistTenantPartition = false;\n } else {\n this.isExistTenantNow = false;\n this.canChooseDate = true;\n this.notExistTenantPartition = false;\n }\n } else {\n this.isExistTenantNow = false;\n this.canChooseDate = true;\n this.notExistTenantPartition = false;\n }\n }\n\n // 区画IDを引数に、その区画の最新の解約日を取得する\n getLastCancellDate(partitionId: string) {\n let lastCancellDate: Date;\n for (const tenantRow of this.data.allTenantObject.tenantData) {\n if (partitionId === tenantRow.partitionId) {\n if (!lastCancellDate) {\n // 最初にここにくるテナントが未契約の場合(運用上はありえないはず)、契約日制御入っていなかったのを修正\n if (tenantRow.cancelledAt) {\n lastCancellDate = new Date(tenantRow.cancelledAt);\n }\n }\n if (lastCancellDate <= new Date(tenantRow.cancelledAt)) {\n lastCancellDate = new Date(tenantRow.cancelledAt);\n }\n }\n }\n return lastCancellDate;\n }\n\n // boolean型のカード表示フラグをnumber型に変換する\n changeIsCardDisplayFormat(isCardDisplayBoolean: boolean): number {\n if (isCardDisplayBoolean === true) {\n return 1;\n } else {\n return 0;\n }\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n // ログインボタンの制御:TRUE→活性\n checkIfReadyToGo() {\n return (\n (this.isMakingNewTenant &&\n this.tenantName &&\n this.contractedAt &&\n this.isInitialValue) ||\n (!this.isMakingNewTenant &&\n this.selectedTenant.value &&\n this.contractedAt &&\n this.isInitialValue)\n );\n }\n\n // 新規作成(確定)ボタンが押された時の処理\n onClickConfirm() {\n if (\n !this.isExistTenantNow &&\n this.selectedPartition.value &&\n this.contractedAt\n ) {\n if (this.selectedTenant.value || this.tenantName) {\n const messageInfo = new TenantConfirmDialogInfo(\n \"新規登録確認\",\n \"テナントを新規登録します。よろしいですか。\"\n );\n const tenantConfirmDialogRef = this.tenantConfirmDialog.open(\n TenantConfirmDialogComponent,\n {\n width: \"650px\",\n data: messageInfo,\n }\n );\n tenantConfirmDialogRef.afterClosed().subscribe((result) => {\n if (result === \"Yes\") {\n const lastCancellDate = this.getLastCancellDate(\n this.selectedPartition.value\n );\n // 同日に契約開始・終了があった場合に登録できるよう、比較時のみ契約日を24時間分補正\n const contractedDate = new Date(this.contractedAt);\n contractedDate.setHours(contractedDate.getHours() + 24);\n if (contractedDate <= lastCancellDate) {\n const errorMessageInfo = new MessageInfo(\n \"契約開始日が旧テナントの解約日前です。 再設定してください。\",\n \"\"\n );\n const dialogRef = this.dialog.open(MessageDialogComponent, {\n width: \"400px\",\n data: errorMessageInfo,\n });\n } else {\n if (!this.tenantNote) {\n this.tenantNote = \"\";\n }\n let postTenantUrl = `${environment.apiUrl}/partitions/tenants`;\n let params = new HttpParams();\n params = params.set(\"partition_id\", this.selectedPartition.value);\n params = params.set(\"note\", this.tenantNote);\n params = params.set(\n \"initial_value\",\n JSON.stringify(this.initialValues.value)\n );\n params = params.set(\n \"contracted_at\",\n String(\n formatDate(\n this.contractedAt,\n \"yyyy-MM-dd hh:mm:ss\",\n this.locale\n )\n )\n );\n params = params.set(\n \"is_card_display\",\n String(\n this.changeIsCardDisplayFormat(this.isCardDisplayBoolean)\n )\n );\n // 新規テナント作成時の処理\n if (this.isMakingNewTenant) {\n params = params.set(\"tenant_name\", this.tenantName);\n } else {\n // 既存テナント作成時の処理\n params = params.set(\"tenant_id\", this.selectedTenant.value);\n postTenantUrl = `${environment.apiUrl}/partitions_tenants`;\n }\n this.httpClient\n .post(postTenantUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n // レスポンスクラス未実装\n .subscribe(\n (response) => {\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\"テナントの登録に失敗しました。\");\n }\n }\n );\n }\n }\n });\n }\n }\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport {\n MatDialogRef,\n MAT_DIALOG_DATA,\n MatDialog,\n} from \"@angular/material/dialog\";\nimport { Component, Inject, Input, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { environment } from \"src/environments/environment\";\nimport { AuthService } from \"../auth/auth.service\";\nimport { GetLoginUserResponse } from \"../entity/get-login-user-response\";\nimport { LoginUser } from \"../entity/login-user\";\nimport { UserConfirmDialogInfo } from \"../entity/user-confirm-dialog-info\";\nimport { CommonConfirmDialogComponent } from \"../common-confirm-dialog/common-confirm-dialog.component\";\nimport { GetTenantsPartition } from \"../entity/get-tenants-partition\";\nimport { CompanyInfo } from \"../entity/get-company-info\";\nimport { SiteInfo } from \"../entity/get-site-info\";\nimport { UserSiteLinksSelectDialogComponent } from \"../user-site-links-select-dialog/user-site-links-select-dialog.component\";\nimport {\n GetUserWithSitesLinksInfo,\n UserSite,\n} from \"../entity/get-user-with-sites-links-info\";\nimport { Auth } from \"aws-amplify\";\nimport { Subscriber } from \"rxjs\";\nimport { Const } from \"../const/const\";\nimport { AbstractControl, ValidatorFn } from \"@angular/forms\";\nimport { isNull } from \"util\";\nimport { Directive, ElementRef } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { ForbiddenCharactersDirective } from \"../common-confirm-dialog/forbidden-characters.directive\";\nimport { NgModule } from \"@angular/core\";\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { FormsModule } from \"@angular/forms\";\nimport { Dialog } from \"@angular/cdk/dialog\";\n\ninterface UserType {\n value: string;\n viewValue: string;\n}\n\nexport class CheckSiteInfo {\n checked = false;\n\n siteId: string;\n siteName: string;\n siteAddress: string;\n companyName: string;\n}\n\n@Component({\n selector: \"app-user-add-dialog\",\n templateUrl: \"./user-add-dialog.component.html\",\n styleUrls: [\"./user-add-dialog.component.scss\"],\n})\nexport class UserAddDialogComponent implements OnInit {\n idToken: string;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n companyList: CompanyInfo[];\n userTypeList: UserType[] = [\n { value: \"1\", viewValue: \"管理者\" },\n { value: \"2\", viewValue: \"一般\" },\n ];\n\n // 施設情報\n siteData: SiteInfo[];\n\n // 施設選択情報\n selectSite: string;\n selectSiteInfoList: UserSite[] = new Array();\n siteInfoList: UserSite[] = new Array();\n checkSiteInfoList: CheckSiteInfo[] = new Array();\n\n // 入力項目\n loginId: string;\n password: string;\n confirmPassword: string;\n userName: string;\n selectedCompnay = new UntypedFormControl();\n selectedUserType = new UntypedFormControl();\n\n userTypeSysAdmin = \"0\";\n userTypeAdmin = \"1\";\n userTypeUser = \"2\";\n\n errorMessage: string;\n hasError = false;\n isFormReady = false;\n\n @Input() public company: CompanyInfo[];\n @Input() public siteInfo: SiteInfo[];\n @Input() public userInfo: GetUserWithSitesLinksInfo[];\n\n constructor(\n private httpClient: HttpClient,\n private el: ElementRef,\n private router: Router,\n public dialogRef: MatDialogRef,\n public userConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n @Inject(MAT_DIALOG_DATA) public partitionTenant: GetTenantsPartition[]\n ) {}\n\n ngOnInit() {\n this.selectSite = \"施設選択\";\n this.selectSiteInfoList = [];\n this.checkSiteInfoList = [];\n this.companyList = [];\n this.companyList = this.company;\n this.siteCompnayLinks();\n this.hasError = false;\n this.errorMessage = \"\";\n this.auth.getIdToken().subscribe((result) => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert(\"セッションが切れています。再度ログインしてください。\");\n this.router.navigate([\"login\"]);\n }\n });\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient\n .get(this.getLoginUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n if (response.result.login_user.user_type == this.userTypeSysAdmin) {\n this.userTypeList.push({ value: \"0\", viewValue: \"MJIT\" });\n }\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n this.dialogRef.close(\"lockedAccount\");\n } else {\n alert(\n \"ログイン名が取得できませんでした。再度ログインしてください。\"\n );\n this.dialogRef.close(\"failed\");\n }\n this.onClickLogout();\n }\n );\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n // 会社選択\n changeCompanySelection() {\n this.selectSite = \"施設選択\";\n this.selectSiteInfoList = [];\n this.checkSiteInfoList = [];\n }\n\n // 施設選択\n onClickSelectSite() {\n const sites = this.siteInfo;\n\n if (this.selectedCompnay.value !== null) {\n this.siteInfo = this.siteInfo.filter((item) => {\n return item.company_id === this.selectedCompnay.value;\n });\n this.siteCompnayLinks();\n }\n\n const dialogRef = this.dialog.open(UserSiteLinksSelectDialogComponent, {\n width: \"1000px\",\n data: this.siteInfo,\n });\n dialogRef.componentInstance.checkSiteInfoList = this.checkSiteInfoList;\n dialogRef.componentInstance.siteInfo = this.siteInfoList;\n dialogRef.componentInstance.company = this.company;\n dialogRef.afterClosed().subscribe((result) => {\n if (result !== undefined) {\n if (this.siteInfo !== sites) {\n this.siteInfo = sites;\n this.siteCompnayLinks();\n }\n\n // 閉じるボタンの処理\n if (result === \"\") {\n return;\n }\n // 選択した施設を表示\n if (result.length === 1) {\n // 表示施設\n this.selectSite = result[0].siteName;\n this.selectSiteInfoList = result as UserSite[];\n this.checkSiteInfoList = result;\n }\n if (result.length > 1) {\n // 表示施設\n this.selectSite =\n result[0].siteName + \"他(\" + (result.length - 1) + \")\";\n this.selectSiteInfoList = result as UserSite[];\n this.checkSiteInfoList = result;\n }\n if (result.length === 0) {\n // 表示施設\n this.selectSite = \"施設選択\";\n this.selectSiteInfoList.splice(0);\n this.checkSiteInfoList.splice(0);\n }\n }\n });\n }\n\n siteCompnayLinks() {\n this.siteInfoList.splice(0);\n for (const site of this.siteInfo) {\n const siteInfo = new UserSite();\n const companyItem = this.company.filter((item) => {\n return item.id === site.company_id;\n });\n siteInfo.siteId = site.id;\n siteInfo.siteName = site.name;\n siteInfo.siteAddress = site.address;\n siteInfo.companyName = companyItem[0].name;\n this.siteInfoList.push(siteInfo);\n }\n }\n\n // 登録ボタンの活性化制御\n checkIfReadyToGo() {\n this.isFormReady =\n this.loginId !== undefined &&\n this.loginId !== \"\" &&\n this.password !== undefined &&\n this.password !== \"\" &&\n this.confirmPassword !== undefined &&\n this.confirmPassword !== \"\" &&\n this.userName !== undefined &&\n this.userName !== \"\" &&\n this.selectedCompnay.value !== null &&\n this.selectedUserType.value !== null;\n return this.isFormReady;\n }\n\n // ユーザー登録\n onClickConfirm() {\n if (!navigator.onLine) {\n alert(\"ネットワーク接続を確認してください\");\n return;\n }\n // 入力チェック\n this.errorMessage = this.checkValue();\n if (this.errorMessage.length > 0) {\n return;\n }\n\n // 施設選択をしていない場合エラー\n if (this.selectSite === \"施設選択\") {\n alert(\"施設は1つ以上選択してください。\");\n return;\n }\n\n // 確認ダイアログ\n const messageInfo = new UserConfirmDialogInfo(\n \"新規登録確認\",\n \"ユーザーを新規登録します。よろしいですか。\"\n );\n const confirmDialog = this.userConfirmDialog.open(\n CommonConfirmDialogComponent,\n {\n width: \"400px\",\n data: messageInfo,\n }\n );\n\n confirmDialog.afterClosed().subscribe(async (result) => {\n if (result === \"Yes\") {\n // ユーザー作成\n await this.createCognitoUser();\n }\n });\n }\n\n // ユーザー施設紐付け情報の登録\n postUserSitelinks(user: any) {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n for (const site of this.selectSiteInfoList) {\n let params = new HttpParams();\n params = params.set(\"user_id\", user.id);\n params = params.set(\"site_id\", site.siteId);\n this.httpClient\n .post(posthUserUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {},\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"close\");\n } else {\n alert(\"施設の紐付けに失敗しました\");\n }\n }\n );\n }\n }\n\n // 入力チェック\n checkValue(): string {\n let errorMessage = \"を入力してください\";\n if (this.loginId === undefined || this.loginId === \"\") {\n errorMessage = \"ユーザーID\" + errorMessage;\n return errorMessage;\n }\n const loginIdPolicy = new RegExp(/^([a-zA-Z0-9!-/:-@¥[-`{-~]{8,32})+$/);\n const passwordPolicy = new RegExp(\n /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,99}$/\n );\n\n // ログインIDポリシーチェック\n if (this.loginId.match(loginIdPolicy) === null) {\n return (errorMessage =\n \"ログインIDは半角英数記号を含む8文字以上32文字以内で入力してください\");\n }\n // 空白チェック\n if (this.loginId.match(/\\s+/g) !== null) {\n return (errorMessage =\n \"ログインIDは半角英数記号を含む8文字以上32文字以内で入力してください\");\n }\n\n if (this.password === undefined || this.password === \"\") {\n errorMessage = \"パスワード\" + errorMessage;\n return errorMessage;\n }\n // パスワードポリシーチェック\n if (this.password.match(passwordPolicy) === null) {\n return (errorMessage =\n \"パスワードは、半角英数の大文字と小文字、記号を含む12文字以上99文字以内で入力してください\");\n }\n // 空白チェック\n if (this.password.match(/\\s+/g) !== null) {\n return (errorMessage =\n \"パスワードは、半角英数の大文字と小文字、記号を含む12文字以上99文字以内で入力してください\");\n }\n\n if (this.confirmPassword === undefined || this.confirmPassword === \"\") {\n errorMessage = \"パスワード(確認)\" + errorMessage;\n return errorMessage;\n }\n\n if (this.password !== this.confirmPassword) {\n errorMessage = \"パスワードとパスワード(確認)が異なっています\";\n return errorMessage;\n }\n\n if (this.userName === undefined || this.userName === \"\") {\n errorMessage = \"ユーザー名\" + errorMessage;\n return errorMessage;\n }\n if (this.selectedCompnay.value === null) {\n errorMessage = \"所属会社\" + errorMessage;\n return errorMessage;\n }\n if (this.selectedUserType.value === null) {\n errorMessage = \"ユーザー権限\" + errorMessage;\n return errorMessage;\n }\n\n // すべて通り抜けたら空文字をリターン\n return \"\"\n }\n\n // forbiddenCharactersValidator(inputValue: string): ValidatorFn {\n // return (control: AbstractControl): { [key: string]: any } | null => {\n // const forbiddenCharacters = [\"¥\", '\"', \",\"];\n // //const value:string = control.value;\n // const forbidden = forbiddenCharacters.some((char) =>\n // inputValue.includes(char)\n // );\n // return forbidden\n // ? {\n // forbiddenCharacters: { value: control.value },\n // }\n // : null;\n // };\n // }\n\n // onInput(event: Event): void {\n // const value: string = this.el.nativeElement.value;\n // if (this.forbiddenCharactersValidator(value)) {\n // const errorMessage = \"forbidden \";\n // alert(errorMessage);\n // }\n // }\n\n // Cognitoへの登録\n async createCognitoUser() {\n try {\n await Auth.signUp({\n username: this.loginId,\n password: this.password,\n }).then(() => {\n // Cognitoユーザーの確認ステータスを確認済に変更\n const postActivateCognitoUserUrl = `${environment.apiUrl}/cognito/activate_cognito_user`;\n let params = new HttpParams();\n params = params.set(\n \"user_pool_id\",\n environment.amplify.Auth.aws_user_pools_id\n );\n params = params.set(\"user_name\", this.loginId);\n params = params.set(\"password\", this.password);\n this.httpClient\n .post(postActivateCognitoUserUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n }),\n })\n .subscribe(\n async (response: GetLoginUserResponse) => {\n await this.createUser();\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"close\");\n } else {\n alert(\"ユーザー情報の登録に失敗しました。\");\n }\n }\n );\n });\n } catch (error) {\n if (error.code == \"UsernameExistsException\") {\n alert(\"ログインIDが既に存在します。\");\n }\n }\n }\n\n // 作成したユーザーのユーザーIDを取得しユーザー情報を登録する\n async createUser() {\n // Cognitoユーザーを取得\n const postActivateCognitoUserUrl = `${environment.apiUrl}/cognito/get_cognito_user/${environment.amplify.Auth.aws_user_pools_id}/${this.loginId}`;\n this.httpClient\n .get(postActivateCognitoUserUrl, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (response) => {\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.cognito;\n // APIコールして登録処理\n const postUserUrl = `${environment.apiUrl}/users/users_info`;\n let params = new HttpParams();\n params = params.set(\"id\", data.UserAttributes[0].Value);\n params = params.set(\"login_id\", this.loginId);\n params = params.set(\"name\", this.userName);\n params = params.set(\"company_id\", this.selectedCompnay.value);\n params = params.set(\"user_type\", this.selectedUserType.value);\n this.httpClient\n .post(postUserUrl, params, {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n }),\n })\n .subscribe(\n (res) => {\n const jsonUserStr = JSON.stringify(res);\n const jsonUserObj = JSON.parse(jsonUserStr);\n const userData = jsonUserObj.result.user;\n if (this.selectSiteInfoList.length > 0) {\n // ユーザー施設紐付けを行う\n this.postUserSitelinks(userData);\n }\n this.dialogRef.close(\"close\");\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\n \"アカウントがロックされました。管理者までお問合せください\"\n );\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"close\");\n }\n }\n );\n },\n (err) => {\n if (err.error.code == \"AccountLockError\") {\n alert(\"アカウントがロックされました。管理者までお問合せください\");\n Const.release();\n this.auth.signOut();\n this.dialogRef.close(\"close\");\n }\n }\n );\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { GetUserWithSitesLinksInfo } from '../entity/get-user-with-sites-links-info';\nimport { LoginUser } from '../entity/login-user';\nimport { UserConfirmDialogInfo } from '../entity/user-confirm-dialog-info';\nimport { UserCompleteDialogComponent } from '../user-complete-dialog/user-complete-dialog.component';\n\ninterface UserType {\n value: string;\n viewValue: string;\n}\n\n@Component({\n selector: 'app-user-change-password-dialog',\n templateUrl: './user-change-password-dialog.component.html',\n styleUrls: ['./user-change-password-dialog.component.scss']\n})\nexport class UserChangePasswordDialogComponent implements OnInit {\n idToken: string;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n\n // 入力項目\n loginId: string;\n password: string;\n confirmPassword: string;\n userName: string;\n\n errorMessage: string;\n hasError = false;\n isFormReady = false;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public user: GetUserWithSitesLinksInfo,\n private httpClient: HttpClient,\n private router: Router,\n public dialogRef: MatDialogRef,\n public userConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService,\n ) {}\n\n ngOnInit() {\n this.hasError = false;\n this.errorMessage = '';\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release();\n this.auth.signOut();\n this.dialogRef.close('lockedAccount');\n }else{\n alert('ログイン名が取得できませんでした。再度ログインしてください。');\n Const.release();\n this.auth.signOut();\n this.dialogRef.close('failed');\n }\n }\n );\n }\n\n // パスワード変更ボタンの活性化制御\n checkIfReadyToGo() {\n this.isFormReady = this.password !== undefined && this.password !== '' &&\n this.confirmPassword !== undefined && this.confirmPassword !== '';\n return this.isFormReady;\n }\n\n // パスワード変更\n onClickChangePassword() {\n if (!navigator.onLine) {\n alert('ネットワーク接続を確認してください');\n return;\n }\n // 入力チェック\n this.errorMessage = this.checkValue();\n if (this.errorMessage.length > 0) {\n return;\n }\n\n // 確認ダイアログ\n const messageInfo = new UserConfirmDialogInfo('パスワード変更確認', 'パスワードを変更します。よろしいですか。');\n const confirmDialog = this.userConfirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(async result => {\n if (result === 'Yes') {\n this.changePassword();\n }\n });\n }\n\n // 入力チェック\n checkValue(): string {\n let errorMessage = 'を入力してください';\n const passwordPolicy = new RegExp(/^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,99}$/);\n\n if (this.password === undefined || this.password === '') {\n errorMessage = 'パスワード' + errorMessage;\n return errorMessage;\n }\n // パスワードポリシーチェック\n if (this.password.match(passwordPolicy) === null) {\n return errorMessage = 'パスワードは、半角英数の大文字と小文字、記号を含む12文字以上99文字以内で入力してください';\n }\n // 空白チェック\n if (this.password.match(/\\s+/g) !== null) {\n return errorMessage = 'パスワードは、半角英数の大文字と小文字、記号を含む12文字以上99文字以内で入力してください';\n }\n\n if (this.confirmPassword === undefined || this.confirmPassword === '') {\n errorMessage = 'パスワード(確認)' + errorMessage;\n return errorMessage;\n }\n if (this.password !== this.confirmPassword) {\n errorMessage = 'パスワードとパスワード(確認)が異なっています';\n return errorMessage;\n }\n\n return '';\n }\n\n // Cognitoへの登録\n async changePassword() {\n try {\n // Cognitoユーザーのパスワードを変更し確認ステータスを確認済に変更\n const postActivateCognitoUserUrl = `${environment.apiUrl}/cognito/activate_cognito_user`;\n let params = new HttpParams();\n params = params.set('user_pool_id', environment.amplify.Auth.aws_user_pools_id);\n params = params.set('user_name', this.user.loginId);\n params = params.set('password', this.password);\n this.httpClient.post(postActivateCognitoUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n 'Content-Type': 'application/x-www-form-urlencoded'\n })\n }\n ).subscribe(async (response) => {\n const dialogRef = this.dialog.open(UserCompleteDialogComponent, {\n width: '600px',\n data: 'パスワードを変更しました。'\n });\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.dialogRef.close('lockedAccount');\n }else{\n alert('パスワード変更に失敗しました。');\n }\n });\n } catch (error) {\n alert(\"パスワード変更に失敗しました。\");\n }\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-user-confirm-dialog',\n templateUrl: './user-complete-dialog.component.html',\n styleUrls: ['./user-complete-dialog.component.scss']\n})\n\nexport class UserCompleteDialogComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public message: string) { }\n\n ngOnInit() {}\n\n}\n","import { Component, OnInit, Inject} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { UserConfirmDialogInfo } from '../entity/user-confirm-dialog-info';\n\n@Component({\n selector: 'app-user-confirm-dialog',\n templateUrl: './user-confirm-dialog.component.html',\n styleUrls: ['./user-confirm-dialog.component.scss']\n})\nexport class UserConfirmDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public dialogInfo: UserConfirmDialogInfo\n ) { }\n\n ngOnInit() {\n }\n\n onClickYes() {\n this.dialogRef.close('Yes');\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { LoginUser } from '../entity/login-user';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { UserConfirmDialogInfo } from '../entity/user-confirm-dialog-info';\nimport { GetUserWithSitesLinksInfo } from '../entity/get-user-with-sites-links-info';\nimport { Const } from '../const/const';\n\n@Component({\n selector: 'app-user-delete-dialog',\n templateUrl: './user-delete-dialog.component.html',\n styleUrls: ['./user-delete-dialog.component.scss']\n})\nexport class UserDeleteDialogComponent implements OnInit {\n\n idToken: string;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public user: GetUserWithSitesLinksInfo,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n private router: Router,\n public auth: AuthService,\n ) { }\n\n ngOnInit() {\n\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n }else{\n alert('ログイン名が取得できませんでした。再度ログインしてください。');\n }\n this.onClickLogout();\n }\n );\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n\n // ユーザー削除\n onClickConfirm() {\n if (!navigator.onLine) {\n alert('ネットワーク接続を確認してください');\n return;\n }\n\n let message = 'ユーザーを削除します。よろしいですか?';\n if (this.loginUser.id === this.user.id) {\n message = '自身を削除するとログイン出来なくなりますがよろしいですか?';\n }\n const messageInfo = new UserConfirmDialogInfo('ユーザー削除', message);\n const userConfirmDialogRef = this.confirmDialog.open(CommonConfirmDialogComponent, {\n width: '600px',\n data: messageInfo\n });\n\n userConfirmDialogRef.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n this.deleteUser();\n }\n });\n\n }\n\n // Cognitoユーザーのステータスを無効化し、ユーザーを論理削除する。\n deleteUser() {\n try {\n // Cognitoユーザーのステータスを無効に変更\n const postActivateCognitoUserUrl = `${environment.apiUrl}/cognito/disable_user`;\n let cognitoParams = new HttpParams();\n cognitoParams = cognitoParams.set('user_pool_id', environment.amplify.Auth.aws_user_pools_id);\n cognitoParams = cognitoParams.set('user_name', this.user.loginId);\n this.httpClient.post(postActivateCognitoUserUrl, cognitoParams,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n 'Content-Type': 'application/x-www-form-urlencoded'\n })\n }\n ).subscribe((response: any) => {\n // ユーザー削除\n const patchUserUrl = `${environment.apiUrl}/users/users_info/0/${this.user.id}`;\n const params = new HttpParams();\n this.httpClient.patch(patchUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n ).subscribe((responseb) => {},\n err => {\n alert('ユーザー情報の更新に失敗しました。');\n });\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n Const.release()\n this.auth.signOut()\n this.dialogRef.close('lockedAccount');\n }else{\n alert('ユーザー削除に失敗しました。');\n }\n }\n );\n } catch (error) {\n alert(\"ユーザー削除に失敗しました。\");\n }\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { AuthService } from '../auth/auth.service';\nimport { UserSiteLinksDialogComponent } from '../user-site-links-dialog/user-site-links-dialog.component';\nimport { GetUserSiteLinksInfo } from '../entity/get-user-site-links-info';\nimport { GetUserWithSitesLinksInfo, UserSite } from '../entity/get-user-with-sites-links-info';\nimport { SiteInfo } from '../entity/get-site-info';\nimport { CompanyInfo } from '../entity/get-company-info';\n\n@Component({\n selector: 'app-user-detail-dialog',\n templateUrl: './user-detail-dialog.component.html',\n styleUrls: ['./user-detail-dialog.component.scss']\n})\nexport class UserDetailDialogComponent implements OnInit {\n\n idToken: string;\n // 施設情報\n siteData: SiteInfo[];\n // 会社情報\n companyData: CompanyInfo[] = new Array();\n siteInfoList: UserSite[] = new Array();\n\n @Input() public userSiteLinksInfo: GetUserSiteLinksInfo[];\n\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public user: GetUserWithSitesLinksInfo,\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n private router: Router,\n public auth: AuthService,\n ) { }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n onClickSelectSite() {\n const dialogRef = this.dialog.open(UserSiteLinksDialogComponent, {\n width: '1000px',\n data: this.user.sites\n });\n }\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { CompanyInfo } from '../entity/get-company-info';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { SiteInfo } from '../entity/get-site-info';\nimport { GetUserWithSitesLinksInfo, UserSite } from '../entity/get-user-with-sites-links-info';\nimport { LoginUser } from '../entity/login-user';\nimport { UserConfirmDialogInfo } from '../entity/user-confirm-dialog-info';\nimport { UserChangePasswordDialogComponent } from '../user-change-password-dialog/user-change-password-dialog.component';\nimport { UserSiteLinksSelectDialogComponent } from '../user-site-links-select-dialog/user-site-links-select-dialog.component';\n\ninterface UserType {\n value: number;\n viewValue: string;\n}\n\nexport class CheckSiteInfo {\n checked = false;\n siteId: string;\n siteName: string;\n siteAddress: string;\n companyName: string;\n}\n\n@Component({\n selector: 'app-user-edit-dialog',\n templateUrl: './user-edit-dialog.component.html',\n styleUrls: ['./user-edit-dialog.component.scss']\n})\nexport class UserEditDialogComponent implements OnInit {\n\n idToken: string;\n getLoginUserResponse: GetLoginUserResponse;\n getLoginUserUrl: string;\n loginUser: LoginUser;\n\n userTypeList: UserType[] = [\n {value: 1, viewValue: '管理者'},\n {value: 2, viewValue: '一般'},\n ];\n\n // 施設情報\n siteData: SiteInfo[];\n isReadySiteData = false;\n // ユーザー施設紐付情報\n userSiteLinksData: UserSite[] = new Array();\n isReadyUserSiteLinksData = false;\n // 会社情報\n companyData: CompanyInfo[] = new Array();\n isReadyCompanyData = false;\n // 施設選択情報\n selectSite: string;\n selectSiteInfoList: UserSite[] = new Array();\n siteInfoList: UserSite[] = new Array();\n checkSiteInfoList: CheckSiteInfo[] = new Array();\n // 入力項目\n userName: string;\n selectedCompnay = new UntypedFormControl({value: '', disabled: true});\n selectedUserType = new UntypedFormControl();\n errorMessage: string;\n hasError = false;\n isFormReady = false;\n isUserLocked = false;\n\n userTypeSysAdmin = '0';\n userTypeAdmin = '1';\n userTypeUser = '2';\n\n @Input() public company: CompanyInfo[];\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public user: GetUserWithSitesLinksInfo,\n private httpClient: HttpClient,\n private router: Router,\n public dialogRef: MatDialogRef,\n public userConfirmDialog: MatDialog,\n public dialog: MatDialog,\n public auth: AuthService) { }\n\n ngOnInit() {\n this.selectSite = '施設選択';\n if (this.user.sites.length > 1) {\n this.selectSite = this.user.sites[0].siteName + '他' + (this.user.sites.length - 1) + '件';\n } else if (this.user.sites.length === 1) {\n this.selectSite = this.user.sites[0].siteName;\n }\n this.selectSiteInfoList = [];\n this.checkSiteInfoList = [];\n this.companyData = [];\n this.selectedCompnay.setValue(this.user.companyId);\n this.selectedUserType.setValue(this.user.userType);\n this.userName = this.user.name;\n this.isUserLocked = this.user.lockStatus;\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n this.doGetLoginUser();\n this.loadCompany();\n this.loadUserSiteLinks();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n // ログインユーザーの取得処理(区画一覧の取得に施設IDが必要)\n // リファクタで呼び出し元(レポート画面)から施設IDは連携してくるようにする\n doGetLoginUser() {\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n if (response.result.login_user.user_type == this.userTypeSysAdmin) {\n this.userTypeList.push({value: 0, viewValue: 'MJIT'});\n }\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout();\n }else{\n alert('ログイン名が取得できませんでした。再度ログインしてください。');\n Const.release();\n this.auth.signOut();\n this.dialogRef.close('failed');\n }\n \n }\n );\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n this.dialogRef.close('lockedAccount');\n }\n\n // 施設選択\n onClickSelectSite() {\n const dialogRef = this.dialog.open(UserSiteLinksSelectDialogComponent, {\n width: '1000px',\n data: this.user.sites // ユーザーに紐づいている施設\n });\n dialogRef.componentInstance.checkSiteInfoList = this.checkSiteInfoList;\n dialogRef.componentInstance.siteInfo = this.siteInfoList; // ユーザーが選択可能な施設の全量\n dialogRef.componentInstance.company = this.company;\n dialogRef.afterClosed().subscribe(result => {\n if (result !== undefined) {\n // 閉じるボタンの処理\n if (result === '') {\n return;\n }\n // 選択した施設を表示\n if (result.length === 1) {\n // 表示施設\n this.selectSite = result[0].siteName;\n this.selectSiteInfoList = result as UserSite[];\n this.checkSiteInfoList = result;\n }\n if (result.length > 1) {\n // 表示施設\n this.selectSite = result[0].siteName + '他(' + (result.length - 1) + ')';\n this.selectSiteInfoList = result as UserSite[];\n this.checkSiteInfoList = result;\n }\n if (result.length === 0) {\n this.checkSiteInfoList = [];\n this.selectSiteInfoList = [];\n // 表示施設 1:nの紐付きが前提の為元々の紐付きデータを表示する\n for (const site of this.user.sites) {\n const checkSiteInfoItem = new CheckSiteInfo();\n checkSiteInfoItem.checked = true;\n checkSiteInfoItem.siteId = site.siteId;\n checkSiteInfoItem.siteName = site.siteName;\n checkSiteInfoItem.siteAddress = site.siteAddress;\n checkSiteInfoItem.companyName = site.companyName;\n this.checkSiteInfoList.push(checkSiteInfoItem);\n this.selectSiteInfoList.push(checkSiteInfoItem);\n }\n if (this.selectSiteInfoList.length === 1) {\n // 表示施設\n this.selectSite = this.selectSiteInfoList[0].siteName;\n }\n if (this.selectSiteInfoList.length > 1) {\n // 表示施設\n this.selectSite = this.selectSiteInfoList[0].siteName + '他(' + (this.selectSiteInfoList.length - 1) + ')';\n }\n }\n }\n });\n }\n\n // 所管会社の取得(UserType:0はシステム管理者として登録されている会社を全件取得する。UserType:1また2は自身の所属会社のみ)\n loadCompany() {\n this.isReadyCompanyData = false;\n let companyId = 'all';\n if (this.user.userType === 1 || this.user.userType === 2) { // 1:Admin 2:一般ユーザ\n companyId = this.user.companyId;\n }\n // 会社を取得する(allの場合全会社)\n const url = `${environment.apiUrl}/company/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.companies;\n this.companyData.push(data);\n this.isReadyCompanyData = true;\n this.loadSite();\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout();\n }else{\n alert('会社情報が取得できませんでした。');\n }\n });\n }\n\n // 施設の取得(UserType:0はシステム管理者として登録されている施設を全件取得する。UserType:1また2は自身の所属会社の所管施設のみ)\n loadSite() {\n this.isReadySiteData = false;\n let companyId = 'all';\n if (this.user.userType === 1 || this.user.userType === 2 ) { // 1:Admin 2:一般ユーザ\n companyId = this.user.companyId;\n }\n // 施設を取得する(allの場合全施設)\n const url = `${environment.apiUrl}/sites/sites_info_all/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.sites;\n this.siteData = data;\n this.isReadySiteData = true;\n this.siteCompnayLinks();\n },\n () => {\n alert('施設情報が取得できませんでした。');\n });\n }\n\n siteCompnayLinks() {\n for (const site of this.siteData) {\n const siteInfo = new UserSite();\n const companyItem = this.companyData.filter(item => {\n return item.id === site.company_id;\n });\n if (this.user.userType !== 0 && this.user.companyId === companyItem[0].id ) {\n siteInfo.siteId = site.id;\n siteInfo.siteName = site.name;\n siteInfo.siteAddress = site.address;\n siteInfo.companyName = companyItem[0].name;\n this.siteInfoList.push(siteInfo);\n }\n }\n }\n\n // ユーザーの紐付情報を取得\n loadUserSiteLinks() {\n this.isReadyUserSiteLinksData = false;\n // 施設を取得する(allの場合全施設)\n const url = `${environment.apiUrl}/user_site_links/1/${this.user.id}/user_site_links_info`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.user_site_links;\n for (const dataItem of data) {\n const siteInfo = new UserSite();\n siteInfo.siteId = dataItem.site.id;\n siteInfo.siteName = dataItem.site.name;\n this.userSiteLinksData.push(siteInfo);\n }\n if (this.userSiteLinksData.length > 0) {\n this.selectSiteInfoList = this.userSiteLinksData;\n }\n this.isReadyUserSiteLinksData = true;\n });\n }\n\n // 更新ボタンの活性化制御\n checkIfReadyToGo() {\n this.isFormReady = this.userName !== undefined && this.userName !== '' &&\n this.selectedUserType.value !== null;\n return !this.hasError && this.isFormReady;\n }\n\n // ユーザーのLockStatus 更新\n onClickUnlockUser(){\n // 確認ダイアログ\n const messageInfo = new UserConfirmDialogInfo('ロック解除確認', 'ユーザーロック解除します。よろしいですか。');\n const confirmDialog = this.userConfirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n // APIコールして更新処理\n const userID = this.user.loginId;\n const url = `${environment.apiUrl}/account_lock/${userID}/0`;\n this.httpClient.patch(url, '',\n {\n headers: new HttpHeaders({\n 'x-api-key': environment.apiKey,\n 'Content-Type': 'application/json'\n })\n }\n )\n .subscribe((response) => {\n this.dialogRef.close('close');\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }\n });\n }\n });\n }\n\n // パスワード変更\n onClickChangePassword() {\n const dialogRef = this.dialog.open(UserChangePasswordDialogComponent, {\n width: '800px',\n data: this.user\n });\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'lockedAccount') {\n this.onClickLogout()\n }\n });\n }\n\n // ユーザー更新\n onClickConfirm() {\n if (!navigator.onLine) {\n alert('ネットワーク接続を確認してください');\n return;\n }\n\n // 入力チェック\n this.errorMessage = this.checkValue();\n if (this.errorMessage.length > 0) {\n this.hasError = true;\n } else {\n this.hasError = false;\n }\n\n // if (!checkUserTypeResult) {\n // return;\n // }\n\n // 施設選択をしていない場合エラー\n if (this.selectSite === '施設選択') {\n alert('施設は1つ以上選択してください。');\n return;\n }\n\n // 自身を変更する際ユーザー権限を一般ユーザーにした場合のチェック\n if (this.loginUser.id === this.user.id && this.selectedUserType.value === 2) {\n // 権限変更確認ダイアログ\n const userTypeMessageInfo = new UserConfirmDialogInfo('権限変更確認', '自身のユーザー権限を一般に変更すると管理機能が使用できなくなります。よろしいですか。');\n const userTypeConfirmDialog = this.userConfirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: userTypeMessageInfo\n });\n userTypeConfirmDialog.afterClosed().subscribe(userTypeConfirmDialogResult => {\n if (userTypeConfirmDialogResult === 'No') {\n return;\n } else {\n // 確認ダイアログ\n const messageInfo = new UserConfirmDialogInfo('更新確認', 'ユーザーを更新します。よろしいですか。');\n const confirmDialog = this.userConfirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n // APIコールして更新処理\n const patchUserUrl = `${environment.apiUrl}/users/users_info/1/${this.user.id}`;\n let params = new HttpParams();\n params = params.set('name', this.userName);\n params = params.set('company_id', this.user.companyId);\n params = params.set('user_type', this.selectedUserType.value);\n this.httpClient.patch(patchUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.user;\n // ユーザー施設紐付けを行う\n this.updateUserSitelinks();\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }else{\n alert('ユーザー情報の更新に失敗しました。');\n }\n });\n }\n });\n }\n });\n } else {\n // 確認ダイアログ\n const messageInfo = new UserConfirmDialogInfo('更新確認', 'ユーザーを更新します。よろしいですか。');\n const confirmDialog = this.userConfirmDialog.open(CommonConfirmDialogComponent, {\n width: '400px',\n data: messageInfo\n });\n\n confirmDialog.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n // APIコールして更新処理\n const patchUserUrl = `${environment.apiUrl}/users/users_info/1/${this.user.id}`;\n let params = new HttpParams();\n params = params.set('name', this.userName);\n params = params.set('company_id', this.user.companyId);\n params = params.set('user_type', this.selectedUserType.value);\n this.httpClient.patch(patchUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.user;\n // ユーザー施設紐付けを行う\n this.updateUserSitelinks();\n this.dialogRef.close('close');\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }else{\n alert('ユーザー情報の更新に失敗しました。');\n }\n });\n }\n });\n }\n }\n\n // 入力チェック\n checkValue(): string {\n let errorMessage = 'を入力してください';\n if (this.userName === undefined || this.userName === '') {\n errorMessage = 'ユーザー名' + errorMessage;\n return errorMessage;\n }\n if (this.selectedUserType.value === null) {\n errorMessage = 'ユーザー権限' + errorMessage;\n return errorMessage;\n }\n return '';\n }\n\n // 取得時のの紐付け情報と比較を行い、増減によりユーザーサイト紐付けの更新を行う\n updateUserSitelinks() {\n // 元々の紐付けと更新時の紐付けを比較\n const selectedList: UserSite[] = new Array();\n for (const selectSiteInfoListItem of this.selectSiteInfoList) {\n const siteInfo = new UserSite();\n siteInfo.siteId = selectSiteInfoListItem.siteId;\n siteInfo.siteName = selectSiteInfoListItem.siteName;\n selectedList.push(siteInfo);\n }\n let updateDelteList: UserSite[] = new Array();\n let updateAddList: UserSite[] = new Array();\n // selectSiteInfoList > 0 必ず成立なので、selectedList > 0\n // userSiteLinksData < selectedList部分 --> 差分検出してselectedListに差分がある場合 --> 差分追加\n // A | A,B and - | A\n updateAddList = selectedList.filter(i => JSON.stringify(this.userSiteLinksData).indexOf(JSON.stringify(i)) === -1);\n if (updateAddList.length > 0) {\n for (const updateAddItem of updateAddList) {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n let params = new HttpParams();\n params = params.set('user_id', this.user.id);\n params = params.set('site_id', updateAddItem.siteId);\n this.httpClient.post(\n posthUserUrl,\n params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }else{\n alert('施設の紐付けに失敗しました');\n }\n });\n }\n }\n // userSiteLinksData > selectedList部分 --> 差分検出してuserSiteLinksDataに差分がある場合 --> 差分削除\n // A,B | A\n updateDelteList = this.userSiteLinksData.filter(i => JSON.stringify(selectedList).indexOf(JSON.stringify(i)) === -1);\n if (updateDelteList.length > 0) {\n for (const updateDelteItem of updateDelteList) {\n const patchUserUrl = `${environment.apiUrl}/user_site_links/delete_user_site_links_info`;\n let updateDelteParams = new HttpParams();\n updateDelteParams = updateDelteParams.set('user_id', this.user.id);\n updateDelteParams = updateDelteParams.set('site_id', updateDelteItem.siteId);\n this.httpClient.patch(\n patchUserUrl,\n updateDelteParams,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n }else{\n alert('施設の紐付削除に失敗しました');\n }\n });\n }\n }\n\n // userSiteLinksData === selectedList --> 何もしない\n // - | -\n // A | A\n \n return;\n }\n}\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Component, Inject, LOCALE_ID, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MatSpinner } from '@angular/material/progress-spinner';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { Auth } from 'aws-amplify';\nimport Encoding from 'encoding-japanese';\nimport Papa from 'papaparse';\nimport { Subject } from 'rxjs';\nimport 'rxjs/add/operator/debounceTime';\nimport { environment } from 'src/environments/environment';\nimport { AuthService } from '../auth/auth.service';\nimport { CommonConfirmDialogComponent } from '../common-confirm-dialog/common-confirm-dialog.component';\nimport { Const } from '../const/const';\nimport { CsvUserInfo } from '../entity/csv-user-info';\nimport { CompanyInfo } from '../entity/get-company-info';\nimport { GetLoginUserResponse } from '../entity/get-login-user-response';\nimport { SiteInfo } from '../entity/get-site-info';\nimport { GetUserSiteLinksInfo } from '../entity/get-user-site-links-info';\nimport { GetUserWithSitesLinksInfo, UserSite } from '../entity/get-user-with-sites-links-info';\nimport { LoginUser } from '../entity/login-user';\nimport { LoginUserSite } from '../entity/login-user-site';\nimport { UserConfirmDialogInfo } from '../entity/user-confirm-dialog-info';\nimport { UserAddDialogComponent } from '../user-add-dialog/user-add-dialog.component';\nimport { UserCompleteDialogComponent } from '../user-complete-dialog/user-complete-dialog.component';\nimport { UserDeleteDialogComponent } from '../user-delete-dialog/user-delete-dialog.component';\nimport { UserDetailDialogComponent } from '../user-detail-dialog/user-detail-dialog.component';\nimport { UserEditDialogComponent } from '../user-edit-dialog/user-edit-dialog.component';\nimport { UserSiteLinksDialogComponent } from '../user-site-links-dialog/user-site-links-dialog.component';\n\n@Component({\n selector: 'app-user-management',\n templateUrl: './user-management.component.html',\n styleUrls: ['./user-management.component.scss']\n})\n\nexport class UserManagementComponent implements OnInit {\n selectedSite = new UntypedFormControl();\n\n monthArray: string[];\n siteArray: LoginUserSite[];\n\n companyInfo: CompanyInfo[];\n userSiteLinksInfo: GetUserSiteLinksInfo[];\n\n loginUser: LoginUser;\n formControl: UntypedFormGroup;\n siteId: string;\n\n filtredUserData: GetUserWithSitesLinksInfo[];\n\n // ユーザー情報\n userData: GetUserWithSitesLinksInfo[] = new Array();\n // 会社情報\n companyData: CompanyInfo[] = new Array();\n isReadyCompanyData = false;\n // 施設情報\n siteData: SiteInfo[] = new Array();\n isReadySiteData = false;\n\n // ユーザー施設紐付情報\n userSiteLinksData: GetUserSiteLinksInfo[];\n isReadyUserSiteLinksData = false;\n\n // テーブル生成用\n displayedColumns: string[];\n\n idToken: string;\n\n // APIのURL\n getLoginUserUrl: string;\n getValueDetectionsUrl: string;\n getFloorsUrl: string;\n postValueConfirmationUrl: string;\n // APIのレスポンス\n getLoginUserResponse: GetLoginUserResponse;\n\n // フラグ類\n getUserFinished: boolean;\n isLoadingData: boolean;\n mjitUserFlag = false;\n adminUserFlag = false;\n\n searchOptionKey = '';\n searchOptionsArray: string[] = ['ユーザー名', '所属会社', 'ユーザー権限'];\n\n userTypeSysAdmin = 0;\n userTypeAdmin = 1;\n userTypeUser = 2;\n\n searchKeyString = '';\n searchKeyChanged: Subject = new Subject();\n\n // for csv import\n csvUserData: CsvUserInfo[] = [];\n csvAllUserData: CsvUserInfo[] = [];\n csvAddUserData: CsvUserInfo[] = [];\n csvUpdateUserData: CsvUserInfo[] = [];\n csvErrorUserData: CsvUserInfo[] = [];\n csvDeleteUserData: CsvUserInfo[] = [];\n tsvFlg = false;\n csvImportAccountLockError = false\n csvImportUnexpectedError = false\n addResults: any[] = []\n updateResults: any[] = []\n deleteResults: any[] = []\n\n overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay\n .position().global().centerHorizontally().centerVertically()\n });\n\n constructor(\n private httpClient: HttpClient,\n private router: Router,\n public auth: AuthService,\n public dialog: MatDialog,\n @Inject(LOCALE_ID) private locale: string,\n private overlay: Overlay,\n ) {\n localStorage.setItem(\"path\", router.url)\n }\n\n ngOnInit() {\n this.isLoadingData = false;\n this.loginUser = new LoginUser();\n this.siteArray = [];\n this.siteData.splice(0);\n this.getLoginUserResponse = new GetLoginUserResponse();\n this.getUserFinished = false;\n this.searchOptionKey = this.searchOptionsArray[0];\n this.searchKeyChanged\n .debounceTime(300) // wait 300ms after the last event before emitting last event\n .subscribe(str => {this.searchKeyString = str; this.filterResult(); });\n this.getToken();\n }\n\n getToken() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n this.getLoginUserUrl = `${environment.apiUrl}/login_user`;\n this.doGetLoginUser();\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n // idトークン利用してログインユーザー情報の取得を行う\n doGetLoginUser() {\n this.httpClient.get(this.getLoginUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response: GetLoginUserResponse) => {\n this.loginUser = response.result.login_user;\n if (Number(response.result.login_user.user_type) === this.userTypeUser) {\n return\n }\n Const.loginUser = response.result.login_user;\n if (Const.mjitUser) {\n Const.site_id = localStorage.getItem(\"siteId\")\n } else {\n for (const site of response.result.login_user.sites) {\n if (site.id === localStorage.getItem(\"siteId\")) {\n Const.site_id = site.id\n }\n }\n }\n\n if (Const.site_id === null) {\n alert('前回選択した施設が見つかりませんでした。');\n Const.site_id = response.result.login_user.sites[0].id;\n }\n\n Const.mjitUser = Number(response.result.login_user.user_type) === 0;\n this.mjitUserFlag = Const.mjitUser;\n Const.adminUser = Number(response.result.login_user.user_type) === 1;\n this.adminUserFlag = Const.adminUser;\n this.selectedSite = new UntypedFormControl(Const.site_id);\n for (const site of response.result.login_user.sites) {\n this.siteArray.push(site);\n }\n this.loadCompany();\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n alert('アカウントがロックされました。管理者までお問合せください');\n }else{\n alert('ログイン情報が取得できませんでした。再度ログインしてください。');\n }\n this.onClickLogout();\n }\n );\n }\n\n // 紐付情報を含むユーザー情報取得\n loadUserData() {\n this.csvUserData = [];\n this.isReadyUserSiteLinksData = false;\n this.userData.splice(0);\n let companyId = 'all';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n companyId = this.loginUser.company.id;\n }\n // 会社IDに紐づくユーザーを取得する(allの場合全ユーザー)\n const url = `${environment.apiUrl}/users/user_site_links_info_all/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.users;\n for (const dataItem of data) {\n if (!Const.mjitUser && dataItem.user_type == 0) {\n continue\n }\n const userInfo = new GetUserWithSitesLinksInfo();\n const siteInfoList: UserSite[] = new Array();\n userInfo.id = dataItem.id;\n userInfo.loginId = dataItem.login_id;\n userInfo.name = dataItem.name;\n userInfo.companyId = dataItem.company.id;\n userInfo.companyName = dataItem.company.name;\n userInfo.userType = dataItem.user_type;\n userInfo.created_by = dataItem.created_by;\n userInfo.updated_by = dataItem.updated_by;\n switch (dataItem.user_type) {\n case 0:\n userInfo.userTypeName = 'システム管理者';\n break;\n case 1:\n userInfo.userTypeName = '管理者';\n break;\n case 2:\n userInfo.userTypeName = '一般';\n break;\n default:\n userInfo.userTypeName = '-';\n }\n\n for (const site of dataItem.sites) {\n const siteInfo = new UserSite();\n const siteItem = this.siteData.filter(item => {\n return item.id === site.id;\n });\n // 不正データ排除(別会社データが存在する場合エラー)\n if (siteItem.length === 0) {\n this.isLoadingData = true;\n throw new Error('bad data');\n }\n const companyItem = this.companyData.filter(item => {\n return item.id === siteItem[0].company_id;\n });\n // 不正データ排除(別会社データが存在する場合エラー)\n if (companyItem.length === 0) {\n this.isLoadingData = true;\n throw new Error('bad data');\n }\n siteInfo.siteId = siteItem[0].id;\n siteInfo.siteName = siteItem[0].name;\n siteInfo.siteAddress = siteItem[0].address;\n siteInfo.companyName = companyItem[0].name;\n siteInfoList.push(siteInfo);\n }\n userInfo.sites = siteInfoList;\n userInfo.createdAt = dataItem.created_at;\n userInfo.updatedAt = dataItem.updated_at;\n userInfo.lockStatus = dataItem.account_lock.lock_status;\n\n this.userData.push(userInfo);\n // CSV比較用データ生成\n const csvUserItem = new CsvUserInfo();\n csvUserItem.userId = userInfo.id;\n csvUserItem.loginId = userInfo.loginId;\n csvUserItem.password = '';\n csvUserItem.userName = userInfo.name;\n csvUserItem.companyId = userInfo.companyId;\n csvUserItem.userType = userInfo.userType;\n csvUserItem.siteIdList = [];\n for (const site of userInfo.sites) {\n csvUserItem.siteIdList.push(site.siteId);\n }\n this.csvUserData.push(csvUserItem);\n\n this.isReadyUserSiteLinksData = true;\n this.isLoadingData = true;\n }\n this.filtredUserData = this.userData;\n this.displayedColumns = ['detailButton', 'userName', 'loginId', 'companyName', 'userType','sitesList', 'editButton', 'deleteButton'];\n },\n () => {\n alert('ユーザー情報が取得できませんでした。');\n this.onClickLogout();\n });\n }\n\n // 所管会社の取得(UserType:0はシステム管理者として登録されている会社を全件取得する。UserType:1は自身の所属会社のみ)\n loadCompany() {\n this.isReadyCompanyData = false;\n this.companyData.splice(0);\n let companyId = 'all';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n companyId = this.loginUser.company.id;\n }\n // 会社を取得する(allの場合全会社)\n const url = `${environment.apiUrl}/company/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.companies;\n if (Array.isArray(data)) {\n this.companyData = data;\n } else {\n this.companyData.push(data);\n }\n this.isReadyCompanyData = true;\n this.loadSite();\n },\n () => {\n alert('会社情報が取得できませんでした。');\n });\n }\n\n // 施設詳細の取得\n loadSite() {\n this.isReadySiteData = false;\n this.siteData.splice(0);\n let companyId = 'all';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n companyId = this.loginUser.company.id;\n }\n // 会社を取得する(allの場合全会社)\n const url = `${environment.apiUrl}/sites/sites_info_all/${companyId}`;\n\n this.httpClient.get(url, {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }).subscribe( res => {\n const jsonStr = JSON.stringify(res);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.sites;\n for (const dataItem of data) {\n const getSiteInfo = new SiteInfo();\n getSiteInfo.id = dataItem.id;\n getSiteInfo.name = dataItem.name;\n getSiteInfo.address = dataItem.address;\n getSiteInfo.company_id = dataItem.company_id;\n this.siteData.push(getSiteInfo);\n }\n this.isReadySiteData = false;\n this.loadUserData();\n },\n () => {\n alert('会社情報が取得できませんでした。');\n });\n }\n\n // 詳細表示\n onClickDetailUser(user: GetUserWithSitesLinksInfo) {\n for (const site of user.sites) {\n this.loadSite();\n }\n this.dialog.open(UserDetailDialogComponent, {\n width: '600px',\n data: user\n });\n }\n\n // 登録処理\n onClickAddUser() {\n const dialogRef = this.dialog.open(UserAddDialogComponent, {\n width: '800px',\n });\n dialogRef.componentInstance.company = this.companyData;\n dialogRef.componentInstance.siteInfo = this.siteData;\n dialogRef.componentInstance.userInfo = this.userData;\n\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n this.ngOnInit();\n }\n });\n }\n\n // 更新処理\n onClickUserEdit(user: GetUserWithSitesLinksInfo) {\n const dialogRef = this.dialog.open(UserEditDialogComponent, {\n width: '800px',\n data: user\n });\n dialogRef.componentInstance.company = this.companyData;\n\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n this.ngOnInit();\n }\n });\n }\n\n // 削除処理\n onClickUserDelete(user: GetUserWithSitesLinksInfo) {\n const dialogRef = this.dialog.open(UserDeleteDialogComponent, {\n width: '800px',\n data: user\n });\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n this.ngOnInit();\n }\n });\n }\n\n // CSV出力\n onClickExportUserCSV() {\n const companyID = this.loginUser.company.id;\n // CSVの項目:user_id(db),login_id,password,user_name,company_id,user_type,site_id(n)\n // 操作タイプ、ユーザーID、ログインID、パスワード、ユーザー名、会社ID、ユーザー権限、施設ID(N件。紐づくもの全て)\n let csvData = 'user_id' + ',' +\n 'login_id' + ',' +\n 'password' + ',' +\n 'user_name' + ',' +\n 'company_id' + ',' +\n 'user_type' + ',' +\n 'site_id\\r\\n';\n\n for (const row of this.filtredUserData) {\n const siteIdList = [];\n for (const site of row.sites) {\n siteIdList.push(site.siteId);\n }\n const rowData =\n row.id + ',' +\n row.loginId + ',' +\n ',' + // passwordは空で出力\n row.name + ',' +\n row.companyId + ',' +\n row.userType + ',' +\n siteIdList +\n '\\r\\n';\n const rowDataFormated = rowData.replace(/\\*/g, '').replace(/N\\/A/g, '');\n csvData = csvData + rowDataFormated;\n }\n const strArray = Encoding.stringToCode(csvData);\n const sjisArray = Encoding.convert(strArray, 'SJIS', 'UNICODE');\n const uint8Array = new Uint8Array(sjisArray);\n const blob = new Blob([uint8Array], {type: 'text/tab-separated-values'});\n const link = document.createElement('a');\n link.href = window.URL.createObjectURL(blob);\n\n let fileName = 'ユーザー一覧.csv';\n if (Number(this.loginUser.user_type) === this.userTypeAdmin) {\n fileName = this.loginUser.company.name + 'ユーザー一覧.csv';\n }\n link.download = fileName;\n link.click();\n\n }\n\n // CSVインポート(ペンディング)\n onClickImportUserCSV() {\n document.querySelector('input').click();\n // 読み込み完了イベントをトリガーにchangeListenerが起動\n }\n\n public changeListener(event) {\n const files = event.target.files;\n if (files && files.length > 0) {\n const file: File = files.item(0);\n const reader: FileReader = new FileReader();\n reader.readAsText(file, 'Shift_JIS');\n reader.onload = async (_) => {\n const csv: string = reader.result as string;\n const results = Papa.parse(csv);\n if (results.meta.delimiter === '\\t') {\n this.tsvFlg = true;\n }\n let messageContents = 'ユーザー情報をインポートします。よろしいですか?';\n const rows = csv.split('\\r\\n');\n if (rows.length > 1000) {\n messageContents = messageContents + `\\n※1000件を超えています。処理に時間がかかる可能性があります。`;\n }\n const messageInfo = new UserConfirmDialogInfo('CSVインポート', messageContents );\n const userConfirmDialogRef = this.dialog.open(CommonConfirmDialogComponent, {\n width: '650px',\n data: messageInfo\n });\n\n userConfirmDialogRef.afterClosed().subscribe(result => {\n if (result === 'Yes') {\n this.handleCSVStringToUserArray(csv);\n }\n });\n };\n }\n }\n\n handleCSVStringToUserArray(csvString: string) {\n this.overlayRef.attach(new ComponentPortal(MatSpinner));\n\n this.csvAllUserData = [];\n this.csvAddUserData = [];\n this.csvUpdateUserData = [];\n this.csvErrorUserData = [];\n let splitString = ',';\n if (this.tsvFlg) {\n splitString = '\\t';\n }\n\n const rows = csvString.split('\\r\\n');\n const headerRowTitles = rows[0].trim().split(splitString);\n if (this.checkHeaderTitle(headerRowTitles)) {\n alert('csvファイルのフォーマットが正しいか確認してください。');\n this.overlayRef.detach();\n return;\n }\n\n // CSVの項目:user_id,login_id,password,user_name,company_id,user_type,site_id(n)\n for (let i = 1; i < rows.length; i++) {\n const csvuserInfo = new CsvUserInfo();\n const jsonStr = rows[i];\n const strArr = jsonStr.split(splitString);\n // 項目の足りないレコードはスキップ\n if (strArr.length < 7) {\n continue;\n }\n csvuserInfo.userId = strArr[0].trim();\n csvuserInfo.loginId = strArr[1].trim();\n csvuserInfo.password = strArr[2].trim();\n csvuserInfo.userName = strArr[3].trim();\n csvuserInfo.companyId = strArr[4].trim();\n csvuserInfo.userType = Number(strArr[5].trim());\n const csvSiteIdList = strArr.slice(-(strArr.length - 6));\n csvuserInfo.siteIdList = [];\n for (const csvSiteId of csvSiteIdList) {\n if (csvSiteId.length > 0) {\n csvuserInfo.siteIdList.push(csvSiteId);\n }\n }\n // idが空の場合登録\n if (csvuserInfo.userId === '') {\n // 項目チェックを行い不正データは振り分ける\n this.checkAddCSVData(csvuserInfo);\n }\n // idが存在する場合更新\n const userItem = this.userData.filter(item => {\n return item.id === csvuserInfo.userId;\n });\n if (userItem.length > 0) {\n // 項目チェックを行い不正データは振り分ける\n this.checkUpdateCSVData(csvuserInfo);\n }\n this.csvAllUserData.push(csvuserInfo);\n }\n // DBのユーザー - CSVのユーザーの差分が削除対象\n const difference = this.csvUserData.filter(item => {\n return JSON.stringify(this.csvAllUserData).indexOf(JSON.stringify(item)) === -1;\n });\n this.csvDeleteUserData = difference.filter(item => {\n return !this.csvAllUserData.some(csvData => {\n return csvData.userId === item.userId;\n });\n });\n // 重複削除\n this.csvAddUserData = this.csvAddUserData.filter((element, index, self) =>\n self.findIndex(e => e.loginId === element.loginId ) === index\n );\n this.csvUpdateUserData = this.csvUpdateUserData.filter((element, index, self) =>\n self.findIndex(e => e.userId === element.userId ) === index\n );\n this.beginToUploadCSVUser();\n }\n\n checkHeaderTitle(headerRowTitles): boolean {\n if (headerRowTitles[0] !== 'user_id') {\n return true;\n }\n if (headerRowTitles[1] !== 'login_id') {\n return true;\n }\n if (headerRowTitles[2] !== 'password') {\n return true;\n }\n if (headerRowTitles[3] !== 'user_name') {\n return true;\n }\n if (headerRowTitles[4] !== 'company_id') {\n return true;\n }\n if (headerRowTitles[5] !== 'user_type') {\n return true;\n }\n if (headerRowTitles[6] !== 'site_id') {\n return true;\n }\n return false;\n }\n\n checkAddCSVData(csvuserInfo: CsvUserInfo) {\n const loginIdPolicy = new RegExp(/^([a-zA-Z0-9!-/:-@¥[-`{-~]{8,32})+$/);\n // const passwordPolicy = new RegExp(/^([a-zA-Z0-9!-/:-@¥[-`{-~]{8,32})+$/);\n const passwordPolicy = new RegExp(/^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,99}$/);\n\n // ログインIDのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.loginId)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // ログインIDポリシーチェック\n if (csvuserInfo.loginId.match(loginIdPolicy) === null) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // ログインIDの重複チェック\n const isUserData = this.userData.filter(item => {\n return item.loginId === csvuserInfo.loginId;\n });\n if (isUserData.length > 0) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n\n // パスワードのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.password)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // パスワードポリシーチェック\n if (csvuserInfo.password.match(passwordPolicy) === null) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n\n // userNameのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.userName)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n\n // companyIDのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.companyId)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // companyIDの妥当性チェック\n if (Number(this.loginUser.user_type) === this.userTypeAdmin && this.loginUser.company.id !== csvuserInfo.companyId) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n\n // userTypeのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.userType)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // userTypeの妥当性チェック\n // 操作者が管理者の場合、管理者OR一般\n const userTypeList = [1, 2];\n if (Number(this.loginUser.user_type) === this.userTypeAdmin && !userTypeList.includes(csvuserInfo.userType)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n\n // siteのCSV存在チェック\n if (csvuserInfo.siteIdList.length === 0) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // site情報がDB上に存在するか\n for (const siteId of csvuserInfo.siteIdList) {\n const siteInfo = this.siteData.filter(item => {\n return item.id === siteId;\n });\n if (siteInfo.length === 0) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n }\n this.csvAddUserData.push(csvuserInfo);\n }\n\n checkUpdateCSVData(csvuserInfo: CsvUserInfo) {\n let updateFlg = false;\n const passwordPolicy = new RegExp(/^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,99}$/);\n // idは存在するのでこれを元にユーザー情報がDB上に存在するかチェック\n const userInfo = this.userData.filter(item => {\n return item.id === csvuserInfo.userId;\n });\n if (userInfo.length === 0) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n\n // loginID同一チェック(CSV存在もここでチェック)\n if (userInfo[0].loginId !== csvuserInfo.loginId) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // パスワードチェック(値がセットされている場合更新)\n if (csvuserInfo.password.length > 0) {\n // パスワードポリシーチェック\n if (csvuserInfo.password.match(passwordPolicy) === null) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n } else {\n updateFlg = true;\n }\n }\n\n // userNameのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.userName)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n if (userInfo[0].name !== csvuserInfo.userName) {\n updateFlg = true;\n }\n\n // companyIDのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.companyId)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // companyIDの妥当性チェック\n if (Number(this.loginUser.user_type) === this.userTypeAdmin && this.loginUser.company.id !== csvuserInfo.companyId) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n\n // userTypeのCSV存在チェック\n if (!this.checkValueIsInvalid(csvuserInfo.userType)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // userTypeの妥当性チェック\n // 操作者が管理者の場合、管理者OR一般\n const userTypeList = [1, 2];\n if (Number(this.loginUser.user_type) === this.userTypeAdmin && !userTypeList.includes(csvuserInfo.userType)) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n if (userInfo[0].userType !== csvuserInfo.userType) {\n updateFlg = true;\n }\n\n // siteのCSV存在チェック\n if (csvuserInfo.siteIdList.length === 0) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n const dbUserSiteList: string[] = new Array();\n for (const site of userInfo[0].sites) {\n dbUserSiteList.push(site.siteId);\n }\n if (dbUserSiteList.length !== csvuserInfo.siteIdList.length) {\n updateFlg = true;\n }\n // site情報がDB上に存在するか\n for (const siteId of csvuserInfo.siteIdList) {\n const siteInfo = this.siteData.filter(item => {\n return item.id === siteId;\n });\n if (siteInfo.length === 0) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n // CSVのuser_typeが管理者、一般の場合取得したsiteのcompanyIDがCSVのCompanyIDと同一かチェック\n if (userTypeList.includes(csvuserInfo.userType)) {\n if (siteInfo[0].company_id !== csvuserInfo.companyId) {\n this.csvErrorUserData.push(csvuserInfo);\n return;\n }\n }\n }\n if (updateFlg) {\n csvuserInfo.dbuserData = userInfo[0];\n this.csvUpdateUserData.push(csvuserInfo);\n }\n }\n\n checkValueIsInvalid(val: any) {\n return !(val === '' || val === null || val === undefined);\n }\n\n async beginToUploadCSVUser() {\n if (!navigator.onLine) {\n alert('ネットワーク接続を確認してください');\n return;\n }\n // for add\n this.addResults = await this.addUsers();\n const addSuccessCount = this.addResults.filter(item => item === 1).length;\n const addFailedCount = this.addResults.filter(item => item === 3).length;\n\n // for update\n if (!this.csvImportAccountLockError && !this.csvImportUnexpectedError){\n this.updateResults = await this.updateUsers();\n }\n const updateSuccessCount = this.updateResults.filter(item => item === 1).length;\n const updateFailedCount = this.updateResults.filter(item => item === 3).length;\n\n // for delete\n if (!this.csvImportAccountLockError && !this.csvImportUnexpectedError){\n this.deleteResults = await this.deleteUsers();\n }\n const deleteSuccessCount = this.deleteResults.filter(item => item === 1).length;\n const deleteFailedCount = this.deleteResults.filter(item => item === 3).length;\n\n this.overlayRef.detach();\n\n if(this.csvImportAccountLockError){\n alert('アカウントがロックされました。管理者までお問合せください');\n this.onClickLogout()\n } else {\n const successCount = updateSuccessCount + addSuccessCount + deleteSuccessCount;\n const failCount = addFailedCount + updateFailedCount + deleteFailedCount;\n\n const resultString = `インポートが完了しました。\\n成功${successCount}件/失敗${failCount}件`;\n const dialogRef = this.dialog.open(UserCompleteDialogComponent, {\n width: '600px',\n data: resultString\n });\n\n dialogRef.afterClosed().subscribe(_ => {\n this.ngOnInit();\n });\n }\n }\n\n async addUsers() {\n const addResults: any[] = [];\n for await (const user of this.csvAddUserData) {\n // 戻り値1:正常、2:処理なし、3:異常、4:予期せぬエラー&アカウントロック\n const res = await this.createCognitoUser(user);\n if (res === 4){\n this.csvImportUnexpectedError = true\n break;\n }\n if (res === 1 || res === 3){\n addResults.push(res);\n }\n }\n return addResults;\n }\n\n // Cognitoへの登録後DBにユーザーを作成する\n async createCognitoUser(user: CsvUserInfo): Promise {\n return new Promise(async (resolve, _) => {\n try {\n await Auth.signUp({\n username: user.loginId,\n password: user.password,\n }).then(() => {\n // Cognitoユーザーの確認ステータスを確認済に変更\n const postActivateCognitoUserUrl = `${environment.apiUrl}/cognito/activate_cognito_user`;\n let params = new HttpParams();\n params = params.set('user_pool_id', environment.amplify.Auth.aws_user_pools_id);\n params = params.set('user_name', user.loginId);\n params = params.set('password', user.password);\n this.httpClient.post(postActivateCognitoUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n 'Content-Type': 'application/x-www-form-urlencoded'\n })\n }\n )\n .subscribe(async (response) => {\n resolve(await this.createUser(user));\n }, err => {\n if (err.error.code = 'AccountLockError'){\n this.csvImportAccountLockError = true\n resolve(4)\n }else{\n resolve(3);\n }\n });\n });\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n\n\n // 作成したユーザーのユーザーIDを取得しユーザー情報を登録する\n async createUser(user: CsvUserInfo): Promise {\n return new Promise((resolve, _) => {\n try {\n // Cognitoユーザーを取得\n const postActivateCognitoUserUrl =\n `${environment.apiUrl}/cognito/get_cognito_user/${environment.amplify.Auth.aws_user_pools_id}/${user.loginId}`;\n this.httpClient.get(postActivateCognitoUserUrl,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.cognito;\n // APIコールして登録処理\n const postUserUrl = `${environment.apiUrl}/users/users_info`;\n let params = new HttpParams();\n params = params.set('id', data.UserAttributes[0].Value);\n params = params.set('login_id', user.loginId);\n params = params.set('name', user.userName);\n params = params.set('company_id', user.companyId);\n params = params.set('user_type', String(user.userType));\n this.httpClient.post(postUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe(async (res) => {\n const jsonUserStr = JSON.stringify(res);\n const jsonUserObj = JSON.parse(jsonUserStr);\n const userData = jsonUserObj.result.user;\n // ユーザー施設紐付けを行う\n resolve(await this.postUserSitelinks(userData.id, user));\n }, err => {\n if (err.error.code = 'AccountLockError'){\n this.csvImportAccountLockError = true\n resolve(4)\n }else{\n resolve(3)\n }\n });\n });\n } catch (error) {\n resolve(4)\n }\n });\n }\n\n // ユーザー施設紐付け情報の登録\n async postUserSitelinks(userID: string, user: CsvUserInfo): Promise {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n return new Promise((resolve, _) => {\n try {\n for (const siteId of user.siteIdList) {\n let params = new HttpParams();\n params = params.set('user_id', userID);\n params = params.set('site_id', siteId);\n this.httpClient.post(\n posthUserUrl,\n params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n const jsonUserSitelinks = JSON.stringify(response);\n const jsonUserObj = JSON.parse(jsonUserSitelinks);\n resolve(1);\n }, err => {\n if (err.error.code = 'AccountLockError'){\n this.csvImportAccountLockError = true\n resolve(4)\n }else{\n resolve(3)\n }\n });\n }\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n async updateUsers() {\n const dupdateResults: any[] = [];\n for await (const user of this.csvUpdateUserData) {\n // 戻り値1:正常、3:異常、4:予期せぬエラー&アカウントロック\n const res = await this.updateCSVUser(user);\n if (res === 1 || res === 3) {\n dupdateResults.push(res);\n }\n if (res === 4){\n this.csvImportUnexpectedError = true\n break\n }\n }\n return dupdateResults;\n }\n\n async updateCSVUser(user: CsvUserInfo): Promise {\n return new Promise((resolve, _) => {\n try {\n // APIコールして更新処理\n const patchUserUrl = `${environment.apiUrl}/users/users_info/1/${user.userId}`;\n let params = new HttpParams();\n params = params.set('name', user.userName);\n params = params.set('company_id', user.companyId);\n params = params.set('user_type', String(user.userType));\n this.httpClient.patch(patchUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe(async (response) => {\n const jsonStr = JSON.stringify(response);\n const jsonObj = JSON.parse(jsonStr);\n const data = jsonObj.result.user;\n // パスワード変更\n if (user.password.length > 0) {\n const result = await this.changePassword(user);\n resolve(result)\n \n }\n // ユーザー施設紐付けを行う\n const resultUpdateUserSitelinks = await this.updateUserSitelinks(user);\n resolve(resultUpdateUserSitelinks);\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }else{\n resolve(3);\n }\n });\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n async changePassword(user: CsvUserInfo): Promise {\n return new Promise((resolve, _) => {\n try {\n // パスワード更新 パスワードの設定がある場合Cognitoのパスワード変更を行い、確認ステータスを確認済に変更\n const postActivateCognitoUserUrl = `${environment.apiUrl}/cognito/activate_cognito_user`;\n let cognitoParams = new HttpParams();\n cognitoParams = cognitoParams.set('user_pool_id', environment.amplify.Auth.aws_user_pools_id);\n cognitoParams = cognitoParams.set('user_name', user.loginId);\n cognitoParams = cognitoParams.set('password', user.password);\n this.httpClient.post(postActivateCognitoUserUrl, cognitoParams,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n 'Content-Type': 'application/x-www-form-urlencoded'\n })\n }\n ).subscribe(async (result) => {\n resolve(1);\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }else{\n resolve(3);\n }\n });\n }catch (error) {\n resolve(4);\n }\n });\n }\n\n // 取得時のの紐付け情報と比較を行い、増減によりユーザーサイト紐付けの更新を行う\n async updateUserSitelinks(user: CsvUserInfo): Promise {\n return new Promise((resolve, _) => {\n try {\n // 元々の紐付けと更新時の紐付けを比較\n const dbUserSiteList: string[] = new Array();\n for (const site of user.dbuserData.sites) {\n dbUserSiteList.push(site.siteId);\n }\n let updateDelteList: string[] = new Array();\n let updateAddList: string[] = new Array();\n // dbUserSiteList > 0 && user.siteIdList > 0 --> 差分検出してuser.siteIdListに差分がある場合 --> 差分追加\n // A | A,B\n if (dbUserSiteList.length > 0 && user.siteIdList.length > 0) {\n updateAddList = user.siteIdList.filter(i => JSON.stringify(dbUserSiteList).indexOf(JSON.stringify(i)) === -1);\n if (updateAddList.length > 0) {\n for (const updateAddSiteId of updateAddList) {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n let params = new HttpParams();\n params = params.set('user_id', user.userId);\n params = params.set('site_id', updateAddSiteId);\n this.httpClient.post(\n posthUserUrl,\n params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n resolve(1);\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }\n });\n }\n }\n // dbUserSiteList > 0 && user.siteIdList > 0 --> 差分検出してdbUserSiteListに差分がある場合 --> 差分削除\n // A,B | A\n updateDelteList = dbUserSiteList.filter(i => JSON.stringify(user.siteIdList).indexOf(JSON.stringify(i)) === -1);\n if (updateDelteList.length > 0) {\n for (const updateDelteSiteId of updateDelteList) {\n const patchUserUrl = `${environment.apiUrl}/user_site_links/delete_user_site_links_info`;\n let updateDelteParams = new HttpParams();\n updateDelteParams = updateDelteParams.set('user_id', user.userId);\n updateDelteParams = updateDelteParams.set('site_id', updateDelteSiteId);\n this.httpClient.patch(\n patchUserUrl,\n updateDelteParams,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n resolve(1);\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }\n });\n }\n }\n }\n\n // dbUserSiteList === 0 && user.siteIdList > 0 --> user.siteIdList追加\n // - | A\n if (dbUserSiteList.length === 0 && user.siteIdList.length > 0) {\n for (const siteId of user.siteIdList) {\n const posthUserUrl = `${environment.apiUrl}/user_site_links/user_site_links_info`;\n let params = new HttpParams();\n params = params.set('user_id', user.userId);\n params = params.set('site_id', siteId);\n this.httpClient.post(\n posthUserUrl,\n params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n )\n .subscribe((response) => {\n resolve(1);\n }, err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }else{\n resolve(3);\n alert('施設の紐付けに失敗しました');\n }\n });\n }\n }\n\n // dbUserSiteList === user.siteIdList --> チェック済みの為処理なし\n // - | -\n // A | A\n\n // dbUserSiteList > 0 && user.siteIdList === 0 --> チェック済みの為処理なし\n // A | -\n // A,B | -\n resolve(1);\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n async deleteUsers() {\n const deleteResults: any[] = [];\n for await (const user of this.csvDeleteUserData) {\n // 戻り値1:正常、2:処理なし、3:異常、4:予期せぬエラー&アカウントロック\n const res = await this.deleteCSVUser(user);\n if (res === 4){\n this.csvImportUnexpectedError = true\n break;\n }\n if (res === 1 || res === 3){\n deleteResults.push(res);\n }\n }\n return deleteResults;\n }\n\n async deleteCSVUser(user: CsvUserInfo): Promise {\n return new Promise((resolve, _) => {\n try {\n // Cognitoユーザーのステータスを無効に変更\n const postActivateCognitoUserUrl = `${environment.apiUrl}/cognito/disable_user`;\n let cognitoParams = new HttpParams();\n cognitoParams = cognitoParams.set('user_pool_id', environment.amplify.Auth.aws_user_pools_id);\n cognitoParams = cognitoParams.set('user_name', user.loginId);\n this.httpClient.post(postActivateCognitoUserUrl, cognitoParams,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken,\n 'Content-Type': 'application/x-www-form-urlencoded'\n })\n }\n ).subscribe((response: any) => {\n // ユーザー削除\n const patchUserUrl = `${environment.apiUrl}/users/users_info/0/${user.userId}`;\n const params = new HttpParams();\n this.httpClient.patch(patchUserUrl, params,\n {\n headers: new HttpHeaders({\n Authorization: this.idToken\n })\n }\n ).subscribe((responseb) => {\n resolve(1);\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }else{\n resolve(3);\n }\n \n });\n },\n err => {\n if(err.error.code == \"AccountLockError\"){\n this.csvImportAccountLockError = true\n resolve(4);\n }else{\n resolve(3);\n }\n }\n );\n } catch (error) {\n resolve(4);\n }\n });\n }\n\n onClickSelectSite(user: GetUserWithSitesLinksInfo) {\n const dialogRef = this.dialog.open(UserSiteLinksDialogComponent, {\n width: '1000px',\n data: user.sites\n });\n dialogRef.afterClosed().subscribe(makeResult => {\n if (makeResult === 'close') {\n }\n });\n }\n\n // 検索ボックス\n search(text: string) {\n this.searchKeyChanged.next(text);\n }\n\n filterResult() {\n if (this.searchKeyString === '') {\n this.filtredUserData = this.userData;\n return;\n }\n switch (this.searchOptionKey) {\n case this.searchOptionsArray[0]:\n this.filtredUserData = this.userData.filter(item => item.name.includes(this.searchKeyString));\n break;\n case this.searchOptionsArray[1]:\n this.filtredUserData = this.userData.filter(item => item.companyName.includes(this.searchKeyString));\n break;\n case this.searchOptionsArray[2]:\n this.filtredUserData = this.userData.filter(item => item.userTypeName.includes(this.searchKeyString));\n break;\n default:\n break;\n }\n }\n\n onChangeOption() {\n this.searchKeyChanged.next(this.searchKeyString);\n }\n\n // ログアウト\n onClickLogout() {\n Const.release();\n this.auth.signOut();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { AuthService } from '../auth/auth.service';\nimport { UserSite } from '../entity/get-user-with-sites-links-info';\n\nexport interface PeriodicElement {\n siteAddress: string;\n siteName: string;\n companyName: string;\n}\n\n@Component({\n selector: 'app-user-site-links-dialog',\n templateUrl: './user-site-links-dialog.component.html',\n styleUrls: ['./user-site-links-dialog.component.scss']\n})\n\nexport class UserSiteLinksDialogComponent implements OnInit {\n\n idToken: string;\n\n displayedColumns: string[] = ['siteName', 'siteAddress', 'companyName'];\n\n @Input() public siteInfo: UserSite[];\n\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public sites: UserSite[],\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n private router: Router,\n public auth: AuthService,\n ) { }\n\n ngOnInit() {\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n }\n\n // 施設選択\n onClickSelectSite() {\n if (!navigator.onLine) {\n alert('ネットワーク接続を確認してください');\n return;\n }\n }\n\n}\n","import { SelectionModel } from '@angular/cdk/collections';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, Inject, Input, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { AuthService } from '../auth/auth.service';\nimport { CompanyInfo } from '../entity/get-company-info';\nimport { UserSite } from '../entity/get-user-with-sites-links-info';\n\nexport interface PeriodicElement {\n checked: boolean;\n siteId: string;\n siteName: string;\n siteAddress: string;\n companyName: string;\n}\n\nexport class CheckSiteInfo {\n checked = false;\n siteId: string;\n siteName: string;\n siteAddress: string;\n companyName: string;\n}\n\n@Component({\n selector: 'app-user-site-links-select-dialog',\n templateUrl: './user-site-links-select-dialog.component.html',\n styleUrls: ['./user-site-links-select-dialog.component.scss']\n})\n\nexport class UserSiteLinksSelectDialogComponent implements OnInit {\n\n idToken: string;\n sitesWithLinksList: CheckSiteInfo[] = new Array();\n\n displayedColumns: string[] = ['select', 'siteName', 'siteAddress', 'companyName'];\n // dataSource = new MatTableDataSource(ELEMENT_DATA);\n selection = new SelectionModel(true, []);\n @Input() public siteInfo: UserSite[];\n @Input() public company: CompanyInfo[];\n @Input() public checkSiteInfoList: CheckSiteInfo[];\n\n constructor(\n public confirmDialog: MatDialog,\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public sites: UserSite[],\n public dialogRef: MatDialogRef,\n private httpClient: HttpClient,\n private router: Router,\n public auth: AuthService,\n ) { }\n\n ngOnInit() {\n this.sitesWithLinksList.splice(0);\n this.auth.getIdToken()\n .subscribe(\n result => {\n if (result) {\n this.idToken = result;\n } else {\n // idトークンがnullの場合はログイン画面へ遷移\n alert('セッションが切れています。再度ログインしてください。');\n this.router.navigate(['login']);\n }\n }\n );\n this.checkSelectSite();\n }\n\n checkSelectSite() {\n if (this.checkSiteInfoList.length > 0) {\n for (const site of this.siteInfo) {\n const siteItem = this.checkSiteInfoList.filter(item => item.siteId === site.siteId);\n const checkSiteInfo = new CheckSiteInfo();\n checkSiteInfo.siteId = site.siteId;\n checkSiteInfo.siteName = site.siteName;\n checkSiteInfo.siteAddress = site.siteAddress;\n checkSiteInfo.companyName = site.companyName;\n if (siteItem.length > 0) {\n checkSiteInfo.checked = true;\n this.selection.toggle(checkSiteInfo);\n }\n this.sitesWithLinksList.push(checkSiteInfo);\n }\n } else {\n for (const site of this.siteInfo) {\n const siteItem = this.sites.filter(item => item.siteId === site.siteId);\n const checkSiteInfo = new CheckSiteInfo();\n checkSiteInfo.siteId = site.siteId;\n checkSiteInfo.siteName = site.siteName;\n checkSiteInfo.siteAddress = site.siteAddress;\n checkSiteInfo.companyName = site.companyName;\n if (siteItem.length > 0) {\n checkSiteInfo.checked = true;\n this.selection.toggle(checkSiteInfo);\n }\n this.sitesWithLinksList.push(checkSiteInfo);\n }\n }\n }\n\n // 施設選択\n onClickSelectSite() {\n if (!navigator.onLine) {\n alert('ネットワーク接続を確認してください');\n return;\n }\n this.dialogRef.close(this.selection.selected);\n }\n\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.sitesWithLinksList.length;\n return numSelected === numRows;\n }\n\n /** Selects all rows if they are not all selected; otherwise clear selection. */\n masterToggle() {\n this.isAllSelected() ?\n this.selection.clear() :\n this.sitesWithLinksList.forEach(row => this.selection.select(row));\n }\n\n}\n","import { Component, OnInit, Inject } from \"@angular/core\";\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from \"@angular/material/dialog\";\nimport { CompareDialogData } from \"../entity/compare-dialog-data\";\nimport { BigNumber } from \"bignumber.js\";\n\n@Component({\n selector: \"app-value-compare-dialog\",\n templateUrl: \"./value-compare-dialog.component.html\",\n styleUrls: [\"./value-compare-dialog.component.scss\"],\n})\nexport class ValueCompareDialogComponent implements OnInit {\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: CompareDialogData\n ) {}\n\n ngOnInit() {}\n\n //指定した小数点まで切り捨てる\n confirmedValueFormat(val: string, point: number) {\n let formatedNum = \"\";\n\n let ten = new BigNumber(Math.pow(10, point));\n let tmpNum = new BigNumber(val);\n let result = tmpNum.times(ten);\n result = new BigNumber(Math.floor(Number(result)));\n let endRes = result.dividedBy(ten);\n formatedNum = endRes.toString();\n\n return formatedNum;\n }\n\n onClickClose(): void {\n this.dialogRef.close();\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n\n@Component({\n selector: 'app-value-correct-dialog',\n templateUrl: './value-correct-dialog.component.html',\n styleUrls: ['./value-correct-dialog.component.scss']\n})\nexport class ValueCorrectDialogComponent implements OnInit {\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any) {}\n\n ngOnInit() {\n }\n\n onClickClose() {\n this.dialogRef.close('dialog close');\n }\n}\n","/**\n * Alertに対するメッセージ定数\n * - オブジェクトリテラル\n * - プレースホルダーはキー指定式\n * - 例)\"こんにちは、{name}さん\"\n */\nexport const AlertMessage = {\n // 汎用\n UNEXPECTED_ERROR_MESSAGE: \"予期せぬエラーが起こりました。\",\n NET_ERROR_MESSAGE: \"ネットワーク接続を確認してください。\",\n\n // ログイン・ログアウト関連\n LOGIN_FAILED_MESSAGE: \"ユーザーID、またはパスワードが間違っています。\", // パスワードミスなどによるログイン失敗時の共通メッセージ、脆弱性対策のためにも統一させる\n ACCOUNT_LOCKED_MESSAGE: \"アカウントがロックされました。\\n管理者までお問合せください。\",\n SESSION_BREAK_MESSAGE: \"セッションが切れています。\\n再度ログインしてください。\",\n LOGIN_ERROR_MESSAGE: \"ログインに失敗しました。\",\n NOTFOUND_ACCOUNT_INFO_MESSAGE: \"ログイン情報が取得できませんでした。\\n再度ログインしてください。\",\n\n // 施設(site)関連\n NOTFOUND_SITE_INFO_MESSAGE: \"施設情報が取得できませんでした。\",\n};\n","export const environment = {\n production: true,\n // production: false,\n amplify: {\n Auth: {\n aws_cognito_region: 'ap-northeast-1',\n aws_user_pools_id: 'ap-northeast-1_ychMOZdRY',\n aws_user_pools_web_client_id: '7fjcrqd8appu5ip5ifp35lh3b9',\n }\n },\n apiUrl: 'https://api.rakusugikenshin.com',\n apiKey: 'ixzdsZGbxv3xxRKHjcUIV7NY790NVwrV7GIoosDp',\n apiEnv: 'prd',\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport 'hammerjs';\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\nimg {\n position: relative;\n width: 300px;\n}\n\ntr {\n padding: 0;\n}\n\ntd {\n padding: 0;\n}\n\n.card {\n padding-bottom: 6vh;\n}\n\n.meter_card {\n padding: 10px 15px;\n}\n\n.meter_card h4 {\n font-weight: inherit;\n}\n\n.mat-card-content {\n padding: 0;\n max-width: 100%;\n}\n\n.divider {\n border-right: 1.5px solid lightgrey;\n width: 150px;\n border-spacing: 0;\n}\n\n.meter_card button {\n background-color: #90CAFC;\n height: 30px;\n padding: 0;\n width: -moz-fit-content;\n width: fit-content;\n}\n\n.meter_card button span {\n position: relative;\n}\n\n.meter_type {\n color: black;\n font-size: 17px;\n font-weight: 100;\n}\n\n.iferror_message {\n position: relative;\n display: none;\n display: block;\n color: red;\n font-size: small;\n margin: 0em auto;\n padding: 1em;\n width: 60%;\n background-color: #fff; /* 背景色 */\n border: 1px solid #ccc; /* 枠線 */\n border-color: red;\n}\n\n.textarea_error {\n color: orange;\n}\n\n.detected_value {\n color: black;\n background-color: rgb(225, 242, 255);\n font-size: 12px;\n}\n\n.last_month_value {\n color: black;\n font-size: 20px;\n font-weight: 600;\n}\n\n.final_value {\n color: #3399FF;\n font-size: 20px;\n font-weight: 600;\n}\n\n.reading_failure {\n color: red;\n font-size: 20px;\n display: none;\n display: block;\n}\n\n.recheck_button_img {\n width: 20px;\n}\n\n.bookmark_img {\n width: 16px;\n margin-left: 1px;\n vertical-align: middle;\n cursor: pointer;\n}\n\n.qrcode_img {\n width: 25px;\n vertical-align: middle;\n cursor: pointer;\n}\n\n.content {\n display: flex;\n justify-content: space-between;\n max-width: 310px;\n margin: 0 auto;\n align-items: center;\n}\n\n.qrcode_edit_img {\n width: 25px;\n margin-left: 7px;\n vertical-align: middle;\n cursor: pointer;\n}\n\n::placeholder {\n font-size: 8px;\n}\n\n.notConfirm {\n background-color: gray;\n}\n\n.button-text {\n font-size: 8pt;\n padding: 3px;\n}\n\n.confirmed_report {\n color: darkolivegreen;\n}\n\n.meter-label {\n font-size: 14pt;\n font-weight: bold;\n}\n\n.last_month-date {\n font-size: 9pt;\n font-weight: lighter;\n color: #5a5a5a;\n padding-top: 2px;\n}\n\n.this_month-date {\n font-size: 9pt;\n font-weight: lighter;\n color: #5a5a5a;\n}\n\n.placeholder {\n size: 31px;\n width: 55%;\n margin: 0px 5px;\n}\n\n.edit-form {\n max-width: 100%;\n white-space: nowrap;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/card/card.component.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAAhB;EACC,kBAAA;EACA,YAAA;AAED;;AACA;EACC,UAAA;AAED;;AACA;EACC,UAAA;AAED;;AACA;EACC,mBAAA;AAED;;AACA;EACC,kBAAA;AAED;;AACA;EACE,oBAAA;AAEF;;AACA;EACC,UAAA;EACA,eAAA;AAED;;AACA;EACC,mCAAA;EACA,YAAA;EACA,iBAAA;AAED;;AACA;EACC,yBAAA;EAEA,YAAA;EACA,UAAA;EACA,uBAAA;EAAA,kBAAA;AACD;;AACA;EACC,kBAAA;AAED;;AACA;EACC,YAAA;EACA,eAAA;EACA,gBAAA;AAED;;AAEA;EACC,kBAAA;EACA,aAAA;EACA,cAAA;EACA,UAAA;EACA,gBAAA;EACA,gBAAA;EACC,YAAA;EACA,UAAA;EACA,sBAAA,EAAA,QAAA;EACA,sBAAA,EAAA,OAAA;EACA,iBAAA;AACF;;AAEA;EACC,aAAA;AACD;;AAGA;EACC,YAAA;EACA,oCAAA;EACA,eAAA;AAAD;;AAGA;EACC,YAAA;EACA,eAAA;EACA,gBAAA;AAAD;;AAGA;EACC,cAAA;EACA,eAAA;EACA,gBAAA;AAAD;;AAIA;EACC,UAAA;EACA,eAAA;EACA,aAAA;EACA,cAAA;AADD;;AAIA;EACC,WAAA;AADD;;AAIA;EACC,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,eAAA;AADD;;AAIA;EACC,WAAA;EACA,sBAAA;EACA,eAAA;AADD;;AAIA;EACC,aAAA;EACA,8BAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;AADD;;AAIA;EACC,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,eAAA;AADD;;AAKA;EACC,cAAA;AAFD;;AAKA;EACC,sBAAA;AAFD;;AAKA;EACC,cAAA;EACA,YAAA;AAFD;;AAKA;EACC,qBAAA;AAFD;;AAKA;EACC,eAAA;EACA,iBAAA;AAFD;;AAKA;EACC,cAAA;EACA,oBAAA;EACA,cAAA;EACA,gBAAA;AAFD;;AAKA;EACC,cAAA;EACA,oBAAA;EACA,cAAA;AAFD;;AAKA;EACC,UAAA;EACA,UAAA;EACA,eAAA;AAFD;;AAKA;EACC,eAAA;EACA,mBAAA;AAFD\",\"sourcesContent\":[\"img{\\n\\tposition: relative;\\n\\twidth: 300px;\\n}\\n\\ntr {\\n\\tpadding: 0;\\n}\\n\\ntd {\\n\\tpadding: 0;\\n}\\n\\n.card {\\n\\tpadding-bottom: 6vh;//footerと同じ高さにすることでコンテンツと被らなくなる\\n}\\n\\n.meter_card {\\n\\tpadding: 10px 15px;\\n}\\n\\n.meter_card h4{\\n font-weight: inherit;\\n}\\n\\n.mat-card-content{\\n\\tpadding: 0;\\n\\tmax-width: 100%;\\n}\\n\\n.divider {\\n\\tborder-right: 1.5px solid lightgrey;\\n\\twidth: 150px;\\n\\tborder-spacing: 0;\\n}\\n\\n.meter_card button{\\n\\tbackground-color: #90CAFC;\\n\\t// margin: 0 5px 0 0;\\n\\theight: 30px;\\n\\tpadding: 0;\\n\\twidth: fit-content;\\n}\\n.meter_card button span{\\n\\tposition: relative;\\n}\\n\\n.meter_type{\\n\\tcolor:black;\\n\\tfont-size: 17px;\\n\\tfont-weight: 100;\\n}\\n\\n//検針値未確定\\n.iferror_message{\\n\\tposition: relative;\\n\\tdisplay:none;//正常処理なら非表示\\n\\tdisplay:block;//エラーなら表示\\n\\tcolor: red;\\n\\tfont-size: small;//0915追加\\n\\tmargin: 0em auto;\\n \\tpadding: 1em;\\n \\twidth: 60%;//0915変更\\n \\tbackground-color: #fff; /* 背景色 */\\n \\tborder: 1px solid #ccc; /* 枠線 */\\n \\tborder-color: red;\\n}\\n//検針値を数値で入力してくださいメッセージ\\n.textarea_error{\\n\\tcolor:orange;\\n}\\n\\n//解析値表示\\n.detected_value{\\n\\tcolor:black;\\n\\tbackground-color:rgb(225, 242, 255);\\n\\tfont-size: 12px;\\n}\\n//確定値表示\\n.last_month_value{\\n\\tcolor: black;\\n\\tfont-size: 20px;\\n\\tfont-weight: 600;\\n}\\n\\n.final_value{\\n\\tcolor: #3399FF;\\n\\tfont-size: 20px;\\n\\tfont-weight: 600;\\n}\\n\\n//読取失敗\\n.reading_failure{\\n\\tcolor: red;\\n\\tfont-size: 20px;\\n\\tdisplay:none;//正常処理なら非表示\\n\\tdisplay:block;//エラーなら表示\\n}\\n\\n.recheck_button_img{\\n\\twidth: 20px;\\n}\\n\\n.bookmark_img{\\n\\twidth: 16px;\\n\\tmargin-left: 1px;\\n\\tvertical-align: middle;\\n\\tcursor:pointer;\\n}\\n\\n.qrcode_img{\\n\\twidth: 25px;\\n\\tvertical-align: middle;\\n\\tcursor:pointer;\\n}\\n\\n.content {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\tmax-width: 310px;\\n\\tmargin: 0 auto;\\n\\talign-items: center;//上下の配置の指定(中央)\\n }\\n\\n.qrcode_edit_img{\\n\\twidth: 25px;\\n\\tmargin-left: 7px;\\n\\tvertical-align: middle;\\n\\tcursor:pointer;\\n}\\n\\n\\n::placeholder{\\n\\tfont-size: 8px;\\n}\\n\\n.notConfirm {\\n\\tbackground-color: gray;\\n}\\n\\n.button-text{\\n\\tfont-size: 8pt;\\n\\tpadding: 3px;\\n}\\n\\n.confirmed_report{\\n\\tcolor: darkolivegreen;\\n}\\n\\n.meter-label{\\n\\tfont-size: 14pt;\\n\\tfont-weight: bold;\\n}\\n\\n.last_month-date{\\n\\tfont-size: 9pt;\\n\\tfont-weight: lighter;\\n\\tcolor: #5a5a5a;\\n\\tpadding-top: 2px;\\n}\\n\\n.this_month-date{\\n\\tfont-size: 9pt;\\n\\tfont-weight: lighter;\\n\\tcolor: #5a5a5a;\\n}\\n\\n.placeholder{\\n\\tsize: 31px;\\n\\twidth: 55%;\\n\\tmargin: 0px 5px;\\n}\\n\\n.edit-form {\\n\\tmax-width: 100%;\\n\\twhite-space: nowrap;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.message {\n white-space: pre-line;\n text-align-last: center;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/common-confirm-dialog/common-confirm-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,qBAAA;EACA,uBAAA;AACJ\",\"sourcesContent\":[\".message {\\n white-space: pre-line;\\n text-align-last: center;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/company-add-edit-dialog/company-add-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,aAAA;AACJ;;AACA;EACI,yBAAA;AAEJ\",\"sourcesContent\":[\"table{\\n padding: 50px ;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/company-delete-dialog/company-delete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,aAAA;AACJ;;AACA;EACI,yBAAA;AAEJ\",\"sourcesContent\":[\"table{\\n padding: 50px ;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n box-shadow: none;\n}\n\nfooter {\n background-color: #90CAFC;\n}\n\n.header {\n background-color: #90CAFC;\n color: black;\n}\n\n.app-name {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.page-title {\n font-size: large;\n}\n\n.searchBar {\n outline-style: none;\n border: 1px solid #ccc;\n border-radius: 8px;\n padding: 12px 14px;\n width: 350px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.searchBar:focus {\n border-color: #66afe9;\n outline: 0;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.main-area {\n background-color: azure;\n}\n\n.company-name-header,\n.company-name,\n.created-date-header,\n.created-date,\n.updated-date-header,\n.updated-date {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.createBy-header,\n.createBy,\n.updateBy-header,\n.updateBy {\n background-color: white;\n width: 15%;\n text-align: center;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.delete-button {\n background-color: lightcoral;\n}\n\n.pull-down {\n padding-top: 10px;\n}\n\n.textbox {\n padding-top: 20px;\n}\n\n.company-management-component-all {\n flex-flow: column;\n flex-wrap: wrap;\n}\n\n.company-management-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.no-tenant {\n color: darkorange;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/company-management/company-management.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,mBAAA;EACA,gBAAA;AACJ;;AAEA;EACI,yBCRa;ADSjB;;AAEA;EACI,yBCZa;EDab,YAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,mBAAA;EACA,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;AACJ;;AAEA;EACI,qBAAA;EACA,UAAA;EAEA,kFAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAGA;;;;;;EAOA,4BAAA;EACA,UAAA;EACA,kBAAA;AADA;;AAIA;;;;EAII,uBAAA;EACA,UAAA;EACA,kBAAA;AADJ;;AAIA;EACI,kBAAA;EACA,4BAAA;AADJ;;AAIA;EACI,kBAAA;EACA,4BAAA;AADJ;;AAIA;EACI,4BAAA;AADJ;;AAIA;EACI,iBAAA;AADJ;;AAIA;EACI,iBAAA;AADJ;;AAIA;EACI,iBAAA;EACA,eAAA;AADJ;;AAIA;EACI,OAAA;EACA,YAAA;AADJ;;AAIA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AADJ;;AAIA;EACI,iBAAA;AADJ;;AAIA;EACI,YAAA;AADJ;;AAIA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;AAFJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable{\\n width: 100%;\\n align-items: center;\\n box-shadow: none;\\n}\\n\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.header{\\n background-color: $main-backgroud;\\n color: black;\\n}\\n\\n.app-name{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.page-title{\\n font-size: large;\\n}\\n\\n.searchBar{\\n outline-style: none ;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n padding: 12px 14px;\\n width: 350px;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n\\n.searchBar:focus{\\n border-color: #66afe9;\\n outline: 0;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\\n}\\n\\n.main-area{\\n background-color:azure;\\n\\n}\\n\\n.company-name-header,\\n.company-name,\\n.created-date-header,\\n.created-date,\\n.updated-date-header,\\n.updated-date\\n{\\nbackground-color: whitesmoke;\\nwidth: 15%;\\ntext-align: center;\\n}\\n\\n.createBy-header,\\n.createBy,\\n.updateBy-header,\\n.updateBy{\\n background-color: white;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.delete-button{\\n background-color: lightcoral;\\n}\\n\\n.pull-down {\\n padding-top: 10px;\\n}\\n\\n.textbox {\\n padding-top: 20px;\\n}\\n\\n.company-management-component-all {\\n flex-flow: column;\\n flex-wrap: wrap;\\n}\\n\\n.company-management-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.no-tenant{\\n color: darkorange;\\n}\\n\\n.menu-list{\\n height: 100%;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\nth {\n text-align: left;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/floor-add-dialog/floor-add-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;AAAJ;;AAEA;EACI,gBAAA;AACJ;;AACA;EACI,yBAAA;AAEJ;;AACA;EACI,UAAA;AAEJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n}\\nth {\\n text-align: left;\\n}\\n.confirm-button {\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\nth {\n text-align: left;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/floor-delete-dialog/floor-delete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,aAAA;AACJ;;AACA;EACI,gBAAA;AAEJ;;AAAA;EACI,yBAAA;AAGJ\",\"sourcesContent\":[\"table {\\n padding: 50px ;\\n}\\nth {\\n text-align: left;\\n}\\n.confirm-button {\\n background-color: #90CAFC;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\nth {\n text-align: left;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/floor-edit-dialog/floor-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,aAAA;AACJ;;AACA;EACI,gBAAA;AAEJ;;AAAA;EACI,yBAAA;AAGJ;;AAAA;EACI,UAAA;AAGJ\",\"sourcesContent\":[\"table {\\n padding: 50px ;\\n}\\nth {\\n text-align: left;\\n}\\n.confirm-button {\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n box-shadow: none;\n}\n\nheader,\nfooter {\n background-color: #90CAFC;\n}\n\n.page-title {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.edit-mode {\n color: blue;\n}\n\n.report-button {\n background-color: #90CAFC;\n}\n\n.main-area {\n background-color: white;\n}\n\n.loading {\n background-color: white;\n}\n\n.all-partitions {\n background-color: whitesmoke;\n}\n\n.floor-name-header,\n.floor-name {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.create-date-header,\n.create-date {\n text-align: center;\n background-color: white;\n width: 15%;\n}\n\n.createBy-header,\n.createBy,\n.updateBy-header,\n.updateBy {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.update-date-header,\n.update-date {\n text-align: center;\n background-color: white;\n width: 15%;\n}\n\n.number-header,\n.number {\n text-align: center;\n width: 10%;\n background-color: white;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.edit-button {\n text-align: center;\n background-color: ghostwhite;\n color: black;\n}\n\n.delete-button {\n text-align: center;\n background-color: lightcoral;\n color: black;\n}\n\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.pull-down {\n padding-top: 20px;\n min-width: auto;\n}\n\n.floor-management-list-component-all {\n flex-flow: column wrap;\n}\n\n.floor-management-list-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.main-area {\n height: 100vh;\n overflow-y: auto;\n background-color: white;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n overflow: hidden;\n white-space: nowrap;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/floor-management-list/floor-management-list.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,mBAAA;EACA,gBAAA;AACJ;;AAEA;;EAEI,yBCTa;ADUjB;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,WAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAEA;EACI,4BAAA;AACJ;;AAEA;;EAEI,kBAAA;EACA,4BAAA;EACA,UAAA;AACJ;;AAEA;;EAEI,kBAAA;EACA,uBAAA;EACA,UAAA;AACJ;;AAEA;;;;EAII,4BAAA;EACA,UAAA;EACA,kBAAA;AACJ;;AAEA;;EAEI,kBAAA;EACA,uBAAA;EACA,UAAA;AACJ;;AACA;;EAEI,kBAAA;EACA,UAAA;EACA,uBAAA;AAEJ;;AAAA;EACI,kBAAA;EACA,4BAAA;AAGJ;;AAAA;EACI,kBAAA;EACA,4BAAA;AAGJ;;AAAA;EACI,kBAAA;EACA,4BAAA;EACA,YAAA;AAGJ;;AAAA;EACI,kBAAA;EACA,4BAAA;EACA,YAAA;AAGJ;;AAAA;EACI,mBAAA;AAGJ;;AAAA;EACI,iBAAA;EACA,eAAA;AAGJ;;AACA;EACI,sBAAA;AAEJ;;AACA;EACI,OAAA;EACA,YAAA;AAEJ;;AACA;EACI,YAAA;AAEJ;;AACA;EACI,aAAA;EACA,gBAAA;EACA,uBAAA;AAEJ;;AACA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;AACJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable {\\n width: 100%;\\n align-items: center;\\n box-shadow: none;\\n}\\n\\nheader,\\nfooter {\\n background-color: $main-backgroud;\\n}\\n\\n.page-title {\\n font-size: large;\\n}\\n\\n.sub-header {\\n background-color: #CCE2F5;\\n}\\n\\n.edit-mode {\\n color: blue;\\n}\\n\\n.report-button {\\n background-color: #90CAFC;\\n}\\n\\n.main-area {\\n background-color:white;\\n}\\n\\n.loading {\\n background-color:white;\\n}\\n\\n.all-partitions {\\n background-color: whitesmoke;\\n}\\n\\n.floor-name-header,\\n.floor-name {\\n text-align: center;\\n background-color: whitesmoke;\\n width: 10%;\\n}\\n\\n.create-date-header,\\n.create-date {\\n text-align: center;\\n background-color: white;\\n width: 15%;\\n}\\n\\n.createBy-header,\\n.createBy,\\n.updateBy-header,\\n.updateBy{\\n background-color: whitesmoke;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.update-date-header,\\n.update-date {\\n text-align: center;\\n background-color: white;\\n width: 15%;\\n}\\n.number-header,\\n.number{\\n text-align: center;\\n width: 10%;\\n background-color: white;\\n}\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.edit-button {\\n text-align: center;\\n background-color:ghostwhite;\\n color: black;\\n}\\n\\n.delete-button {\\n text-align: center;\\n background-color: lightcoral;\\n color: black;\\n}\\n\\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.pull-down {\\n padding-top: 20px;\\n min-width: auto;\\n}\\n\\n// フッターを下に固定するための修正\\n.floor-management-list-component-all {\\n flex-flow: column wrap;\\n}\\n\\n.floor-management-list-component-main {\\n flex: 1;\\n height: 94vh\\n}\\n\\n.menu-list {\\n height: 100%;\\n}\\n\\n.main-area {\\n height: 100vh;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n overflow: hidden;\\n white-space: nowrap;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button {\n text-align: right;\n}\n\n.close-button {\n background-color: white;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/footer-numbering-explain-dialog/footer-numbering-explain-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;AACJ;;AAEA;EACI,uBAAA;AACJ\",\"sourcesContent\":[\".button {\\n text-align: right;\\n}\\n\\n.close-button {\\n background-color: white;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mat-mdc-raised-button {\n height: 50%;\n text-align: center;\n line-height: 50%;\n}\n\n.footer {\n height: 32px;\n margin-top: auto;\n margin-bottom: auto;\n}\n\n.info-button {\n background-color: transparent;\n border: transparent;\n}\n\n.mat-icon {\n color: white;\n cursor: pointer;\n margin-top: auto;\n margin-bottom: auto;\n}\n\n.manualText {\n font-size: 13px;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/footer/footer.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,WAAA;EACA,kBAAA;EACA,gBAAA;AACJ;;AAEA;EACI,YAAA;EACA,gBAAA;EACA,mBAAA;AACJ;;AAEA;EACI,6BAAA;EACA,mBAAA;AACJ;;AAEA;EACI,YAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;AACJ;;AAEA;EACI,eAAA;AACJ\",\"sourcesContent\":[\".mat-mdc-raised-button {\\n height: 50%;\\n text-align: center;\\n line-height: 50%;\\n}\\n\\n.footer {\\n height: 32px;\\n margin-top: auto;\\n margin-bottom: auto;\\n}\\n\\n.info-button {\\n background-color: transparent;\\n border: transparent;\\n}\\n\\n.mat-icon {\\n color: white;\\n cursor: pointer;\\n margin-top: auto;\\n margin-bottom: auto;\\n}\\n\\n.manualText{\\n font-size: 13px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login_component {\n width: 100%;\n height: 100%;\n}\n\n.icon_image {\n width: 300px;\n height: 200px;\n}\n\n.matError_style {\n width: 120%;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/login/login.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,WAAA;EACA,YAAA;AACF;;AAEA;EACE,YAAA;EACA,aAAA;AACF;;AAEA;EACE,WAAA;AACF\",\"sourcesContent\":[\".login_component {\\n width: 100%;\\n height: 100%;\\n}\\n\\n.icon_image {\\n width: 300px;\\n height: 200px;\\n}\\n\\n.matError_style {\\n width: 120%;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n}\n\nfooter {\n background-color: #90CAFC;\n}\n\n.header {\n background-color: #90CAFC;\n color: black;\n}\n\n.app-name {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.page-title {\n font-size: large;\n}\n\n.main-area {\n background-color: azure;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.tenant-name-header,\n.tenant-name {\n text-align: center;\n background-color: white;\n width: 15%;\n}\n\n.partition-name-header,\n.partition-name {\n text-align: center;\n background-color: whitesmoke;\n width: 8%;\n}\n\n.updateBy-header,\n.updateBy {\n background-color: whitesmoke;\n text-align: center;\n width: 10%;\n}\n\n.updateAt-header,\n.updateAt {\n background-color: white;\n text-align: center;\n width: 10%;\n}\n\n.note {\n text-align: left;\n padding-left: 20px;\n background-color: whitesmoke;\n width: 18%;\n overflow: hidden; /* 超出一行文字自动隐藏 */\n text-overflow: ellipsis; /*文字隐藏后添加省略号*/\n word-break: break-all;\n}\n\n.note-header {\n text-align: center;\n background-color: whitesmoke;\n width: 15%;\n}\n\n.contractedAt-header,\n.contractedAt {\n text-align: center;\n background-color: white;\n width: 8%;\n}\n\n.cancelledAt-header,\n.cancelledAt {\n text-align: center;\n background-color: white;\n width: 8%;\n}\n\n.is-card-header,\n.is-card {\n text-align: center;\n background-color: whitesmoke;\n width: 5%;\n}\n\n.edit-button {\n min-width: max-content;\n}\n\n.delete-button {\n background-color: lightcoral;\n min-width: max-content;\n}\n\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.pull-down {\n padding-top: 20px;\n min-width: auto;\n}\n\n.textbox {\n padding-top: 20px;\n}\n\n.master-edit-component-all {\n flex-wrap: wrap;\n}\n\n.master-edit-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.no-tenant {\n color: darkorange;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/master-edit/master-edit.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,mBAAA;AACJ;;AAEA;EACI,yBCPa;ADQjB;;AAEA;EACI,yBCXa;EDYb,YAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,4BAAA;AACJ;;AAEA;EACI,kBAAA;EACA,4BAAA;AACJ;;AAEA;;EAEI,kBAAA;EACA,uBAAA;EACA,UAAA;AACJ;;AACA;;EAEI,kBAAA;EACA,4BAAA;EACA,SAAA;AAEJ;;AACA;;EAEI,4BAAA;EACA,kBAAA;EACA,UAAA;AAEJ;;AACA;;EAEI,uBAAA;EACA,kBAAA;EACA,UAAA;AAEJ;;AACA;EACI,gBAAA;EACA,kBAAA;EACA,4BAAA;EACA,UAAA;EACA,gBAAA,EAAA,eAAA;EACA,uBAAA,EAAA,aAAA;EACA,qBAAA;AAEJ;;AAAA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAGJ;;AAAA;;EAEI,kBAAA;EACA,uBAAA;EACA,SAAA;AAGJ;;AAAA;;EAEI,kBAAA;EACA,uBAAA;EACA,SAAA;AAGJ;;AAAA;;EAEI,kBAAA;EACA,4BAAA;EACA,SAAA;AAGJ;;AAAA;EACI,sBAAA;AAGJ;;AAAA;EACI,4BAAA;EACA,sBAAA;AAGJ;;AACA;EACI,mBAAA;AAEJ;;AACA;EACI,iBAAA;EACA,eAAA;AAEJ;;AACA;EACI,iBAAA;AAEJ;;AAEA;EACI,eAAA;AACJ;;AAEA;EACI,OAAA;EACA,YAAA;AACJ;;AAEA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AACJ;;AAEA;EACI,YAAA;AACJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;AAAJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable{\\n width: 100%;\\n align-items: center\\n}\\n\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.header{\\n background-color: $main-backgroud;\\n color: black;\\n}\\n\\n.app-name{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.page-title{\\n font-size: large;\\n}\\n\\n.main-area{\\n background-color:azure;\\n}\\n\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.tenant-name-header,\\n.tenant-name{\\n text-align: center;\\n background-color:white;\\n width: 15%;\\n}\\n.partition-name-header,\\n.partition-name{\\n text-align: center;\\n background-color:whitesmoke;\\n width: 8%;\\n}\\n\\n.updateBy-header,\\n.updateBy{\\n background-color: whitesmoke;\\n text-align: center;\\n width: 10%;\\n}\\n\\n.updateAt-header,\\n.updateAt{\\n background-color: white;\\n text-align: center;\\n width: 10%;\\n}\\n\\n.note{\\n text-align: left;\\n padding-left: 20px;\\n background-color:whitesmoke;\\n width: 18%;\\n overflow: hidden; /* 超出一行文字自动隐藏 */\\n text-overflow: ellipsis; /*文字隐藏后添加省略号*/\\n word-break:break-all;\\n}\\n.note-header{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 15%;\\n}\\n\\n.contractedAt-header,\\n.contractedAt{\\n text-align: center;\\n background-color: white;\\n width: 8%;\\n}\\n\\n.cancelledAt-header,\\n.cancelledAt{\\n text-align: center;\\n background-color: white;\\n width: 8%;\\n}\\n\\n.is-card-header,\\n.is-card{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 5%;\\n}\\n\\n.edit-button{\\n min-width: max-content;\\n}\\n\\n.delete-button{\\n background-color: lightcoral;\\n min-width: max-content;\\n\\n}\\n\\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.pull-down {\\n padding-top: 20px;\\n min-width: auto;\\n}\\n\\n.textbox {\\n padding-top: 20px;\\n}\\n\\n// フッターを下に固定するための修正\\n.master-edit-component-all {\\n flex-wrap: wrap;\\n}\\n\\n.master-edit-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.menu-list {\\n height: 100%;\\n}\\n\\n.no-tenant{\\n color: darkorange;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\\n\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntable tbody {\n overflow-y: scroll;\n overflow-x: hidden;\n height: 350px;\n display: block;\n margin: 0 auto;\n padding-left: 20%;\n}\n\ntable tbody .small_row {\n padding-left: 10%;\n}\n\n.mainMeterNameHeader, .subMeterNameHeader {\n padding-left: 10%;\n}\n\n#small_right_field {\n margin-left: -50px;\n}\n\ntable tbody th {\n text-align: left;\n}\n\ntable tbody::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\ntable tbody::-webkit-scrollbar :vertical {\n width: 2px;\n}\n\ntable tbody::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid white;\n background-color: rgba(0, 0, 0, 0.3);\n}\n\ntable thead,\ntable tr {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\ntable thead {\n text-align: center;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\ninput {\n font-size: medium;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n font-size: small;\n}\n\n.numberExist {\n color: red;\n font-size: 12px;\n}\n\n.actualValue {\n color: #333;\n font-size: small;\n font-weight: normal;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-add-dialog/meter-add-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,kBAAA;EAEA,aAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;AAAJ;;AAGA;EACI,iBAAA;AAAJ;;AAGA;EACI,iBAAA;AAAJ;;AAGA;EACI,kBAAA;AAAJ;;AAGA;EACI,gBAAA;AAAJ;;AAGA;EACI,wBAAA;AAAJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,kBAAA;EACA,uBAAA;EACA,oCAAA;AACJ;;AAEA;;EAEI,cAAA;EACA,mBAAA;EACA,WAAA;AACJ;;AACA;EACI,kBAAA;AAEJ;;AACA;EACI,gBAAA;EACA,YAAA;AAEJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,oBAAA;AACJ;;AACA;EACI,yBAAA;AAEJ;;AACA;EACI,UAAA;EACA,gBAAA;AAEJ;;AACA;EACI,UAAA;EACA,eAAA;AAEJ;;AACA;EACI,WAAA;EACA,gBAAA;EACA,mBAAA;AAEJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right;\\n}\\n\\ntable tbody{\\n overflow-y: scroll;\\n overflow-x: hidden;\\n\\n height: 350px;\\n display: block;\\n margin: 0 auto;\\n padding-left: 20%;\\n}\\n\\ntable tbody .small_row{\\n padding-left: 10%;\\n}\\n\\n.mainMeterNameHeader, .subMeterNameHeader {\\n padding-left: 10%;\\n}\\n\\n#small_right_field{\\n margin-left: -50px;\\n}\\n\\ntable tbody th{\\n text-align: left;\\n}\\n\\ntable tbody::-webkit-scrollbar{\\n -webkit-appearance: none;\\n}\\ntable tbody::-webkit-scrollbar :vertical {\\n width: 2px;\\n}\\n\\ntable tbody::-webkit-scrollbar-thumb{\\n border-radius: 8px;\\n border: 2px solid white;\\n background-color: rgba(0,0,0,0.3);\\n}\\n\\ntable thead,\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n}\\ntable thead{\\n text-align: center;\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n font-size: small;\\n}\\n\\n.numberExist{\\n color: red;\\n font-size: 12px;\\n}\\n\\n.actualValue {\\n color: #333;\\n font-size: small;\\n font-weight: normal;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\nheader,\nfooter {\n background-color: #90CAFC;\n}\n\n.current-floor-name {\n padding-right: 20px;\n}\n\n.floor-name-label {\n font-size: small;\n color: rgba(13, 13, 13, 0.591);\n padding-bottom: 15px;\n}\n\n.floor-name {\n padding-top: 5px;\n font-size: medium;\n font-weight: bold;\n color: black;\n}\n\n.page-title {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.edit-mode {\n color: blue;\n}\n\n.bookmark-img {\n width: 16px;\n top: 5px;\n left: 2px;\n cursor: pointer;\n}\n\n.report-button {\n background-color: #90CAFC;\n min-width: max-content;\n}\n\n.main-area {\n background-color: white;\n}\n\n.loading {\n background-color: white;\n}\n\n.all-partitions {\n background-color: whitesmoke;\n}\n\n.tenant-name {\n background-color: skyblue;\n font-size: large;\n}\n\n.wrap {\n display: flex;\n flex-wrap: wrap;\n}\n\n.card {\n padding-left: 10px;\n padding-top: 10px;\n}\n\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.pull-down {\n padding-top: 20px;\n}\n\n.meter-card-list-component-all {\n flex-wrap: wrap;\n}\n\n.meter-card-list-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.menu-list {\n height: 100%;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of tabs that may no longer apply for the MDC version.*/\n::ng-deep .mat-tab-label {\n background-color: azure;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of tabs that may no longer apply for the MDC version.*/\n::ng-deep .mat-tab-labels {\n background-color: azure;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-card-list/meter-card-list.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;EAEI,yBCHa;ADIjB;;AAEA;EACI,mBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,8BAAA;EACA,oBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,iBAAA;EACA,iBAAA;EACA,YAAA;AACJ;;AAGA;EACI,gBAAA;AAAJ;;AAGA;EACI,yBAAA;AAAJ;;AAGA;EACI,WAAA;AAAJ;;AAGA;EACC,WAAA;EACA,QAAA;EACA,SAAA;EACG,eAAA;AAAJ;;AAGA;EACI,yBAAA;EACA,sBAAA;AAAJ;;AAGA;EACI,uBAAA;AAAJ;;AAGA;EACI,uBAAA;AAAJ;;AAGA;EACI,4BAAA;AAAJ;;AAGA;EACI,yBAAA;EACA,gBAAA;AAAJ;;AAGA;EACI,aAAA;EACA,eAAA;AAAJ;;AAGA;EACI,kBAAA;EACA,iBAAA;AAAJ;;AAGA;EACI,mBAAA;AAAJ;;AAGA;EACI,iBAAA;AAAJ;;AAIA;EACI,eAAA;AADJ;;AAIA;EACI,OAAA;EACA,YAAA;AADJ;;AAIA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AADJ;;AAIA;EACI,YAAA;AADJ;;AAIA,0HAAA;AACA;EACI,uBAAA;AADJ;;AAIA,0HAAA;AACA;EACI,uBAAA;AADJ;;AAIA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;AAFJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\nheader,\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.current-floor-name{\\n padding-right: 20px;\\n}\\n\\n.floor-name-label{\\n font-size: small;\\n color: rgba(13, 13, 13, 0.591);\\n padding-bottom: 15px;\\n}\\n\\n.floor-name{\\n padding-top: 5px;\\n font-size: medium;\\n font-weight: bold;\\n color: black;\\n}\\n\\n\\n.page-title{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.edit-mode{\\n color: blue;\\n}\\n\\n.bookmark-img{\\n\\twidth: 16px;\\n\\ttop: 5px;\\n\\tleft: 2px;\\n cursor:pointer;\\n}\\n\\n.report-button{\\n background-color: #90CAFC;\\n min-width: max-content;\\n}\\n\\n.main-area{\\n background-color:white;\\n}\\n\\n.loading{\\n background-color:white;\\n}\\n\\n.all-partitions{\\n background-color: whitesmoke;\\n}\\n\\n.tenant-name{\\n background-color: skyblue;\\n font-size: large;\\n}\\n\\n.wrap {\\n display: flex;\\n flex-wrap: wrap;\\n}\\n\\n.card {\\n padding-left: 10px;\\n padding-top: 10px;\\n}\\n\\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.pull-down {\\n padding-top: 20px\\n}\\n\\n// フッターを下に固定するための修正\\n.meter-card-list-component-all {\\n flex-wrap: wrap;\\n}\\n\\n.meter-card-list-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.menu-list {\\n height: 100%;\\n}\\n\\n/* TODO(mdc-migration): The following rule targets internal classes of tabs that may no longer apply for the MDC version.*/\\n::ng-deep .mat-tab-label {\\n background-color:azure;\\n}\\n\\n/* TODO(mdc-migration): The following rule targets internal classes of tabs that may no longer apply for the MDC version.*/\\n::ng-deep .mat-tab-labels {\\n background-color:azure;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-delete-dialog/meter-delete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,yBAAA;AACJ\",\"sourcesContent\":[\".confirm-button {\\n background-color: #90CAFC;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.headerTitleArea {\n align-self: center;\n}\n\n.tableArea {\n align-self: center;\n}\n\n.footerArea {\n align-self: end;\n}\n\n.meterRed {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-detail-dialog/meter-detail-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,kBAAA;AACJ;;AACA;EACI,kBAAA;AAEJ;;AAAA;EACI,eAAA;AAGJ;;AADA;EACI,UAAA;AAIJ\",\"sourcesContent\":[\".headerTitleArea{\\n align-self: center;\\n}\\n.tableArea{\\n align-self: center;\\n}\\n.footerArea{\\n align-self: end;\\n}\\n.meterRed{\\n color: red\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntable tbody {\n overflow-y: scroll;\n overflow-x: hidden;\n height: 350px;\n display: block;\n padding-left: 20%;\n margin: 0 auto;\n}\n\ntable tbody .small_row {\n padding-left: 10%;\n}\n\n#small_right_field {\n margin-left: -50px;\n}\n\ntable tbody th {\n text-align: left;\n}\n\ntable tbody::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\ntable tbody::-webkit-scrollbar :vertical {\n width: 2px;\n}\n\ntable tbody::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid white;\n background-color: rgba(0, 0, 0, 0.3);\n}\n\ntable thead,\ntable tr {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\ntable thead {\n text-align: center;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\ninput {\n font-size: medium;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}\n\n.numberExist {\n color: red;\n font-size: 12px;\n}\n\n.mainMeterNameHeader, .subMeterNameHeader {\n padding-left: 10%;\n}\n\n.actualValue {\n color: #333;\n font-size: small;\n font-weight: normal;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-edit-dialog/meter-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,kBAAA;EAEA,aAAA;EACA,cAAA;EAEA,iBAAA;EACA,cAAA;AADJ;;AAIA;EAEI,iBAAA;AAFJ;;AAIA;EACI,kBAAA;AADJ;;AAGA;EACI,gBAAA;AAAJ;;AAGA;EACI,wBAAA;AAAJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,kBAAA;EACA,uBAAA;EACA,oCAAA;AACJ;;AAEA;;EAEI,cAAA;EACA,mBAAA;EACA,WAAA;AACJ;;AACA;EACI,kBAAA;AAEJ;;AACA;EACI,gBAAA;EACA,YAAA;AAEJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,oBAAA;AACJ;;AACA;EACI,yBAAA;AAEJ;;AACA;EACI,UAAA;AAEJ;;AACA;EACI,UAAA;EACA,eAAA;AAEJ;;AACA;EACI,iBAAA;AAEJ;;AACA;EACI,WAAA;EACA,gBAAA;EACA,mBAAA;AAEJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right;\\n}\\n\\ntable tbody{\\n overflow-y: scroll;\\n overflow-x: hidden;\\n\\n height: 350px;\\n display: block;\\n\\n padding-left: 20%;\\n margin: 0 auto;\\n}\\n\\ntable tbody .small_row{\\n\\n padding-left: 10%;\\n}\\n#small_right_field{\\n margin-left: -50px;\\n}\\ntable tbody th{\\n text-align: left;\\n}\\n\\ntable tbody::-webkit-scrollbar{\\n -webkit-appearance: none;\\n}\\ntable tbody::-webkit-scrollbar :vertical {\\n width: 2px;\\n}\\n\\ntable tbody::-webkit-scrollbar-thumb{\\n border-radius: 8px;\\n border: 2px solid white;\\n background-color: rgba(0,0,0,0.3);\\n}\\n\\ntable thead,\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n}\\ntable thead{\\n text-align: center;\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n}\\n\\n.numberExist{\\n color: red;\\n font-size: 12px;\\n}\\n\\n.mainMeterNameHeader, .subMeterNameHeader {\\n padding-left: 10%;\\n}\\n\\n.actualValue {\\n color: #333;\\n font-size: small;\\n font-weight: normal;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.navigation-meter-expiration-warning {\n color: red;\n background-color: #90CAFC;\n text-align: center;\n text-decoration: underline;\n cursor: pointer;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-expiration-navigate/meter-expiration-navigate.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAEA;EACI,UAAA;EACA,yBCJa;EDKb,kBAAA;EACA,0BAAA;EACA,eAAA;AADJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\n\\n.navigation-meter-expiration-warning {\\n color:red;\\n background-color: $main-backgroud;\\n text-align: center;\\n text-decoration: underline;\\n cursor: pointer;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n width: 100%;\n}\n\nh2 {\n text-align: center;\n}\n\n.example-container {\n height: 480px;\n background-color: white;\n box-shadow: none;\n overflow: scroll;\n}\n\n.footerArea {\n margin-top: 20px;\n padding-bottom: 12px;\n align-self: end;\n}\n\n.floor-name-header,\n.floor-name {\n text-align: center;\n background-color: whitesmoke;\n width: 20%;\n}\n\n.partition-name-header,\n.partition-name {\n text-align: center;\n width: 20%;\n}\n\n.tenant-name-header,\n.tenant-name {\n text-align: center;\n background-color: whitesmoke;\n width: 20%;\n}\n\n.meter-name-header,\n.meter-name {\n text-align: center;\n width: 20%;\n}\n\n.meter-label-header,\n.meter-label {\n text-align: center;\n background-color: whitesmoke;\n width: 20%;\n}\n\n.expiry-header,\n.expiry {\n text-align: center;\n width: 20%;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-expiration-warning-dialog/meter-expiration-warning-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,WAAA;AACJ;;AACA;EACI,kBAAA;AAEJ;;AAAA;EACI,aAAA;EACA,uBAAA;EACA,gBAAA;EACA,gBAAA;AAGJ;;AADA;EACI,gBAAA;EACA,oBAAA;EACA,eAAA;AAIJ;;AAFA;;EAEI,kBAAA;EACA,4BAAA;EACA,UAAA;AAKJ;;AAHA;;EAEI,kBAAA;EACA,UAAA;AAMJ;;AAJA;;EAEI,kBAAA;EACA,4BAAA;EACA,UAAA;AAOJ;;AALA;;EAEI,kBAAA;EACA,UAAA;AAQJ;;AANA;;EAEI,kBAAA;EACA,4BAAA;EACA,UAAA;AASJ;;AAPA;;EAEI,kBAAA;EACA,UAAA;AAUJ\",\"sourcesContent\":[\"table{\\n width: 100%;\\n}\\nh2 {\\n text-align: center;\\n}\\n.example-container {\\n height: 480px;\\n background-color:white;\\n box-shadow: none;\\n overflow: scroll;\\n }\\n.footerArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n align-self: end;\\n}\\n.floor-name-header,\\n.floor-name {\\n text-align: center;\\n background-color: whitesmoke;\\n width: 20%;\\n}\\n.partition-name-header,\\n.partition-name{\\n text-align: center;\\n width: 20%;\\n}\\n.tenant-name-header,\\n.tenant-name{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 20%;\\n}\\n.meter-name-header,\\n.meter-name{\\n text-align: center;\\n width: 20%;\\n}\\n.meter-label-header,\\n.meter-label{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 20%;\\n}\\n.expiry-header,\\n.expiry{\\n text-align: center;\\n width: 20%;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n box-shadow: none;\n}\n\nheader,\nfooter {\n background-color: #90CAFC;\n}\n\n.searchBar {\n outline-style: none;\n border: 1px solid #ccc;\n border-radius: 8px;\n padding: 12px 14px;\n width: 350px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.searchBar:focus {\n border-color: #66afe9;\n outline: 0;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.current-floor-name {\n padding-right: 20px;\n}\n\n.floor-name-label {\n font-size: small;\n color: rgba(13, 13, 13, 0.591);\n padding-bottom: 15px;\n}\n\n.floor-name {\n padding-top: 5px;\n font-size: medium;\n font-weight: bold;\n color: black;\n}\n\n.page-title {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.edit-mode {\n color: blue;\n}\n\n.report-button {\n background-color: #90CAFC;\n}\n\n.loading {\n background-color: white;\n}\n\n.all-partitions {\n background-color: whitesmoke;\n}\n\n.tenant-name {\n background-color: white;\n width: 15%;\n text-align: left;\n}\n\n.tenant-name-header {\n text-align: left;\n background-color: white;\n width: 15%;\n}\n\n.partition-header {\n text-align: left;\n background-color: whitesmoke !important;\n width: 8%;\n}\n\n.partition-name {\n background-color: whitesmoke;\n width: 8%;\n text-align: left;\n}\n\n.meter-name-header {\n background-color: whitesmoke !important;\n width: 16%;\n text-align: left;\n}\n\n.meter-name {\n background-color: whitesmoke;\n width: 16%;\n text-align: left;\n}\n\n.meter-name-red {\n color: red;\n}\n\n.meter-type-header {\n background-color: white;\n width: 7%;\n text-align: center;\n}\n\n.meter-type {\n background-color: white;\n width: 7%;\n text-align: center;\n}\n\n.meter-label-header,\n.meter-label {\n background-color: whitesmoke !important;\n width: 9%;\n text-align: center;\n}\n\n.detail-button-header,\n.detail-button-name {\n width: 5%;\n text-align: center;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite !important;\n width: 10%;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.delete-button {\n background-color: lightcoral;\n}\n\n.replace-button {\n background-color: #90CAFC;\n}\n\n.wrap {\n display: flex;\n flex-wrap: wrap;\n}\n\n.card {\n padding-left: 10px;\n padding-top: 10px;\n}\n\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.pull-down {\n padding-top: 20px;\n}\n\n.meter-management-list-component-all {\n flex-wrap: wrap;\n}\n\n.meter-management-list-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.searchOptionsRadio {\n padding-left: 20px;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n}\n\ntd.mat-mdc-cell:first-of-type {\n padding-left: 0px;\n}\n\n.blank-value {\n background-color: gray !important;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-management-list/meter-management-list.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EAEA,mBAAA;EACA,gBAAA;AAAJ;;AAGA;;EAEI,yBCVa;ADUjB;;AAGA;EACI,mBAAA;EACA,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;AAAJ;;AAGA;EACI,qBAAA;EACA,UAAA;EAEA,kFAAA;AAAJ;;AAGA;EACI,mBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,8BAAA;EACA,oBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,iBAAA;EACA,iBAAA;EACA,YAAA;AAAJ;;AAGA;EACI,gBAAA;AAAJ;;AAGA;EACI,yBAAA;AAAJ;;AAGA;EACI,WAAA;AAAJ;;AAGA;EACI,yBAAA;AAAJ;;AAGA;EACI,uBAAA;AAAJ;;AAGA;EACI,4BAAA;AAAJ;;AAGA;EACI,uBAAA;EACA,UAAA;EACA,gBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,uBAAA;EACA,UAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,uCAAA;EACA,SAAA;AAAJ;;AAEA;EACI,4BAAA;EACA,SAAA;EACA,gBAAA;AACJ;;AAEA;EACI,uCAAA;EACA,UAAA;EACA,gBAAA;AACJ;;AAEA;EACI,4BAAA;EACA,UAAA;EACA,gBAAA;AACJ;;AACA;EACI,UAAA;AAEJ;;AACA;EACI,uBAAA;EACA,SAAA;EACA,kBAAA;AAEJ;;AAAA;EACI,uBAAA;EACA,SAAA;EACA,kBAAA;AAGJ;;AAAA;;EAEI,uCAAA;EACA,SAAA;EACA,kBAAA;AAGJ;;AAAA;;EAEI,SAAA;EACA,kBAAA;AAGJ;;AADA;EACI,kBAAA;EACA,uCAAA;EACA,UAAA;AAIJ;;AADA;EACI,kBAAA;EACA,4BAAA;AAIJ;;AADA;EACI,4BAAA;AAIJ;;AAFA;EACI,yBAAA;AAKJ;;AAFA;EACI,aAAA;EACA,eAAA;AAKJ;;AAFA;EACI,kBAAA;EACA,iBAAA;AAKJ;;AAFA;EACI,mBAAA;AAKJ;;AAFA;EACI,iBAAA;AAKJ;;AADA;EACI,eAAA;AAIJ;;AADA;EACI,OAAA;EACA,YAAA;AAIJ;;AADA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AAIJ;;AADA;EACI,YAAA;AAIJ;;AADA;EACI,kBAAA;AAIJ;;AADA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;AAGJ;;AADA;EACI,iBAAA;AAIJ;;AADA;EACI,iCAAA;AAIJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable{\\n width: 100%;\\n //height: 100%;\\n align-items: center;\\n box-shadow: none;\\n}\\n\\nheader,\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.searchBar{\\n outline-style: none ;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n padding: 12px 14px;\\n width: 350px;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n\\n.searchBar:focus{\\n border-color: #66afe9;\\n outline: 0;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\\n}\\n\\n.current-floor-name{\\n padding-right: 20px;\\n}\\n\\n.floor-name-label{\\n font-size: small;\\n color: rgba(13, 13, 13, 0.591);\\n padding-bottom: 15px;\\n}\\n\\n.floor-name{\\n padding-top: 5px;\\n font-size: medium;\\n font-weight: bold;\\n color: black;\\n}\\n\\n.page-title{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.edit-mode{\\n color: blue;\\n}\\n\\n.report-button{\\n background-color: #90CAFC;\\n}\\n\\n.loading{\\n background-color:white;\\n}\\n\\n.all-partitions{\\n background-color: whitesmoke;\\n}\\n\\n.tenant-name{\\n background-color:white;\\n width: 15%;\\n text-align: left;\\n}\\n\\n.tenant-name-header{\\n text-align: left;\\n background-color:white;\\n width: 15%;\\n}\\n\\n.partition-header{\\n text-align: left;\\n background-color:whitesmoke !important;\\n width: 8%;\\n}\\n.partition-name{\\n background-color:whitesmoke;\\n width: 8%;\\n text-align: left;\\n}\\n\\n.meter-name-header{\\n background-color: whitesmoke !important;\\n width: 16%;\\n text-align: left;\\n}\\n\\n.meter-name{\\n background-color: whitesmoke;\\n width: 16%;\\n text-align: left;\\n}\\n.meter-name-red{\\n color:red\\n}\\n\\n.meter-type-header{\\n background-color: white;\\n width: 7%;\\n text-align: center;\\n}\\n.meter-type{\\n background-color: white;\\n width: 7%;\\n text-align: center;\\n}\\n\\n.meter-label-header,\\n.meter-label{\\n background-color: whitesmoke !important;\\n width: 9%;\\n text-align: center;\\n}\\n\\n.detail-button-header,\\n.detail-button-name{\\n width: 5%;\\n text-align: center;\\n}\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite !important;\\n width: 10%;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.delete-button{\\n background-color: lightcoral;\\n}\\n.replace-button{\\n background-color: #90CAFC;\\n}\\n\\n.wrap {\\n display: flex;\\n flex-wrap: wrap;\\n}\\n\\n.card {\\n padding-left: 10px;\\n padding-top: 10px;\\n}\\n\\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.pull-down {\\n padding-top: 20px\\n}\\n\\n// フッターを下に固定するための修正\\n.meter-management-list-component-all {\\n flex-wrap: wrap;\\n}\\n\\n.meter-management-list-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.menu-list{\\n height: 100%;\\n}\\n\\n.searchOptionsRadio{\\n padding-left: 20px;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\\ntd.mat-mdc-cell:first-of-type {\\n padding-left: 0px;\\n}\\n\\n.blank-value{\\n background-color:gray !important;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.confirm-button {\n background-color: #90CAFC;\n}\n\n.container {\n display: flex;\n align-items: flex-start;\n}\n\n.rectangle {\n width: 130px;\n height: 150px;\n border: 2px solid black;\n flex-direction: column;\n justify-content: space-between;\n align-items: cneter;\n text-align: center;\n}\n\n.rectangle img {\n max-width: 20%;\n height: auto;\n}\n\n.rectangle p {\n margin: 2px 0 0 0;\n vertical-align: bottom;\n}\n\ntable {\n font-size: 10px;\n}\n\nth {\n width: 120px;\n}\n\ntd {\n width: 300px;\n}\n\np {\n font-size: 10px;\n vertical-align: bottom;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-qrcode-dialog/meter-qrcode-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,yBAAA;AACJ;;AACA;EACI,aAAA;EACA,uBAAA;AAEJ;;AACA;EACI,YAAA;EACA,aAAA;EACA,uBAAA;EACA,sBAAA;EACA,8BAAA;EACA,mBAAA;EACA,kBAAA;AAEJ;;AAAA;EACI,cAAA;EACA,YAAA;AAGJ;;AAAA;EACI,iBAAA;EACA,sBAAA;AAGJ;;AAAA;EACI,eAAA;AAGJ;;AAAA;EAEI,YAAA;AAEJ;;AAEA;EAEI,YAAA;AAAJ;;AAIA;EACI,eAAA;EACA,sBAAA;AADJ\",\"sourcesContent\":[\".confirm-button {\\n background-color: #90CAFC;\\n}\\n.container{\\n display:flex;\\n align-items:flex-start\\n}\\n\\n.rectangle{\\n width:130px;\\n height: 150px;\\n border: 2px solid black;\\n flex-direction: column;\\n justify-content: space-between;\\n align-items: cneter;\\n text-align:center;\\n}\\n.rectangle img{\\n max-width: 20%;\\n height: auto;\\n\\n}\\n.rectangle p{\\n margin: 2px 0 0 0;\\n vertical-align: bottom;\\n} \\n\\ntable{\\n font-size: 10px;\\n\\n}\\nth{\\n\\n width: 120px ;\\n\\n}\\n\\ntd{\\n\\n width: 300px ;\\n\\n}\\n\\np{\\n font-size: 10px;\\n vertical-align: bottom;\\n\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntable tbody {\n overflow-y: scroll;\n overflow-x: hidden;\n height: 350px;\n display: block;\n padding-left: 20%;\n margin: 0 auto;\n}\n\ntable tbody .small_row {\n padding-left: 10%;\n}\n\n#small_right_field {\n margin-left: -50px;\n}\n\ntable tbody th {\n text-align: left;\n}\n\ntable tbody::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\ntable tbody::-webkit-scrollbar :vertical {\n width: 2px;\n}\n\ntable tbody::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid white;\n background-color: rgba(0, 0, 0, 0.3);\n}\n\ntable thead,\ntable tr {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\ntable thead {\n text-align: center;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\ninput {\n font-size: medium;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}\n\n.numberExist {\n color: red;\n font-size: 12px;\n}\n\n.mainMeterNameHeader, .subMeterNameHeader {\n padding-left: 10%;\n}\n\n.actualValue {\n color: #333;\n font-size: small;\n font-weight: normal;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-replace-dialog/meter-replace-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,kBAAA;EAEA,aAAA;EACA,cAAA;EAEA,iBAAA;EACA,cAAA;AADJ;;AAIA;EAEI,iBAAA;AAFJ;;AAIA;EACI,kBAAA;AADJ;;AAGA;EACI,gBAAA;AAAJ;;AAGA;EACI,wBAAA;AAAJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,kBAAA;EACA,uBAAA;EACA,oCAAA;AACJ;;AAEA;;EAEI,cAAA;EACA,mBAAA;EACA,WAAA;AACJ;;AACA;EACI,kBAAA;AAEJ;;AACA;EACI,gBAAA;EACA,YAAA;AAEJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,oBAAA;AACJ;;AACA;EACI,yBAAA;AAEJ;;AACA;EACI,UAAA;AAEJ;;AACA;EACI,UAAA;EACA,eAAA;AAEJ;;AACA;EACI,iBAAA;AAEJ;;AACA;EACI,WAAA;EACA,gBAAA;EACA,mBAAA;AAEJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right;\\n}\\n\\ntable tbody{\\n overflow-y: scroll;\\n overflow-x: hidden;\\n\\n height: 350px;\\n display: block;\\n\\n padding-left: 20%;\\n margin: 0 auto;\\n}\\n\\ntable tbody .small_row{\\n\\n padding-left: 10%;\\n}\\n#small_right_field{\\n margin-left: -50px;\\n}\\ntable tbody th{\\n text-align: left;\\n}\\n\\ntable tbody::-webkit-scrollbar{\\n -webkit-appearance: none;\\n}\\ntable tbody::-webkit-scrollbar :vertical {\\n width: 2px;\\n}\\n\\ntable tbody::-webkit-scrollbar-thumb{\\n border-radius: 8px;\\n border: 2px solid white;\\n background-color: rgba(0,0,0,0.3);\\n}\\n\\ntable thead,\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n}\\ntable thead{\\n text-align: center;\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n}\\n\\n.numberExist{\\n color: red;\\n font-size: 12px;\\n}\\n\\n.mainMeterNameHeader, .subMeterNameHeader {\\n padding-left: 10%;\\n}\\n\\n.actualValue {\\n color: #333;\\n font-size: small;\\n font-weight: normal;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n box-shadow: none;\n}\n\nheader, footer {\n background-color: #90CAFC;\n}\n\n.page-title {\n font-size: large;\n}\n\n.content {\n height: 70vh;\n overflow: auto;\n}\n\n.mat-drawer-content {\n overflow: hidden !important;\n}\n\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.pull-down {\n padding-top: 20px;\n}\n\n.button {\n background-color: #90CAFC;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.edit-mode {\n color: blue;\n}\n\n.loading {\n background-color: white;\n}\n\n.tenant-name-header {\n text-align: left;\n background-color: white;\n width: 22%;\n}\n\n.meter-name-header {\n text-align: left;\n background-color: white;\n width: 15%;\n}\n\n.partition-name-header {\n text-align: left;\n background-color: white;\n width: 10%;\n}\n\n.camera_btn {\n width: 25px !important;\n height: 25px !important;\n margin: 0 !important;\n padding: 0 !important;\n align-items: flex-end;\n}\n\n.cam_btn {\n width: 25px !important;\n height: 25px !important;\n vertical-align: middle !important;\n}\n\n.meter-number-header {\n text-align: center;\n background-color: white;\n width: 10%;\n}\n\n.meter-type-header {\n text-align: center;\n background-color: white;\n width: 7%;\n}\n\n.elec-pow-header {\n text-align: center;\n width: 12%;\n min-width: 160px;\n}\n\n.elec-pow-used-header {\n text-align: center;\n background-color: white;\n width: 12%;\n min-width: 160px;\n}\n\n.water-used-header {\n text-align: center;\n background-color: lightcyan;\n}\n\n.tenant-name {\n background-color: whitesmoke;\n}\n\n.meter-label {\n text-align: center;\n background-color: whitesmoke;\n}\n\n.meter-value {\n text-align: right;\n padding-right: 10px;\n padding-bottom: 7px;\n}\n\n.last-value {\n text-align: right;\n padding-right: 10px;\n}\n\n.elec-pow-value {\n text-align: right;\n background-color: cornsilk;\n padding-right: 10px;\n}\n\n.last-month-value {\n color: darkolivegreen;\n}\n\n.blank-used {\n background-color: none !important;\n text-align: right;\n padding-right: 10px;\n}\n\n.power-used {\n background-color: rgb(190, 240, 155) !important;\n text-align: right;\n padding-right: 10px;\n}\n\n.water-used {\n background-color: lightcyan !important;\n text-align: right;\n padding-right: 10px;\n}\n\n.gas-used {\n background-color: rgb(229, 227, 255) !important;\n text-align: right;\n padding-right: 10px;\n}\n\n.alert-value {\n color: red;\n}\n\n.alert-value-blue {\n color: blue;\n}\n\n.blank-value {\n color: rgb(173, 173, 173);\n padding-right: 10px;\n}\n\n.meter-report-component-all {\n display: flex;\n flex-flow: column;\n}\n\n.meter-report-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.no-tenant {\n color: darkorange;\n}\n\n.footer {\n width: 100%;\n position: absolute; /*←絶対位置*/\n bottom: 0; /*下に固定*/\n}\n\n.mat-mdc-raised-button.mat-confirmed {\n color: green;\n background-color: white;\n}\n\n.mat-mdc-raised-button.mat-not-confirmed {\n color: darkorange;\n background-color: white;\n}\n\n.meter-name {\n background-color: whitesmoke;\n}\n\n.meter-type {\n background-color: whitesmoke;\n text-align: center;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-report/meter-report.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,gBAAA;AACJ;;AAEA;EACI,yBCPa;ADQjB;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,YAAA;EACA,cAAA;AACJ;;AAEA;EACI,2BAAA;AACJ;;AAEA;EACI,mBAAA;AACJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,WAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAGA;EACI,gBAAA;EACA,uBAAA;EACA,UAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,uBAAA;EACA,UAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,uBAAA;EACA,UAAA;AAAJ;;AAIA;EACI,sBAAA;EACA,uBAAA;EACA,oBAAA;EACA,qBAAA;EACA,qBAAA;AADJ;;AAIA;EACI,sBAAA;EACA,uBAAA;EACA,iCAAA;AADJ;;AAKA;EACI,kBAAA;EACA,uBAAA;EACA,UAAA;AAFJ;;AAKA;EACI,kBAAA;EACA,uBAAA;EACA,SAAA;AAFJ;;AAKA;EACI,kBAAA;EACA,UAAA;EACA,gBAAA;AAFJ;;AAKA;EACI,kBAAA;EACA,uBAAA;EACA,UAAA;EACA,gBAAA;AAFJ;;AAKA;EACI,kBAAA;EACA,2BAAA;AAFJ;;AAKA;EACI,4BAAA;AAFJ;;AAKA;EACI,kBAAA;EACA,4BAAA;AAFJ;;AAKA;EACI,iBAAA;EACA,mBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,iBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,iBAAA;EACA,0BAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,qBAAA;AAFJ;;AAKA;EACI,iCAAA;EACA,iBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,+CAAA;EACA,iBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,sCAAA;EACA,iBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,+CAAA;EACA,iBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,UAAA;AAFJ;;AAKA;EACI,WAAA;AAFJ;;AAKA;EACI,yBAAA;EACA,mBAAA;AAFJ;;AAMA;EACI,aAAA;EACA,iBAAA;AAHJ;;AAMA;EACI,OAAA;EACA,YAAA;AAHJ;;AAMA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AAHJ;;AAMA;EACI,YAAA;AAHJ;;AAMA;EACI,iBAAA;AAHJ;;AAMA;EACI,WAAA;EACA,kBAAA,EAAA,QAAA;EACA,SAAA,EAAA,OAAA;AAHJ;;AAMA;EACI,YAAA;EACA,uBAAA;AAHJ;;AAMA;EACI,iBAAA;EACA,uBAAA;AAHJ;;AAMA;EACI,4BAAA;AAHJ;;AAMA;EACI,4BAAA;EACA,kBAAA;AAHJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable {\\n width: 100%;\\n box-shadow: none;\\n}\\n\\nheader, footer{\\n background-color: $main-backgroud;\\n}\\n\\n.page-title{\\n font-size: large\\n}\\n\\n.content{\\n height: 70vh;\\n overflow: auto;\\n}\\n\\n.mat-drawer-content{\\n overflow: hidden !important;\\n}\\n\\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.pull-down {\\n padding-top: 20px\\n}\\n\\n.button{\\n background-color: #90CAFC;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.edit-mode{\\n color: blue;\\n}\\n\\n.loading{\\n background-color: white;\\n}\\n\\n\\n.tenant-name-header{\\n text-align: left;\\n background-color:white;\\n width: 22%\\n}\\n\\n.meter-name-header{\\n text-align: left;\\n background-color:white;\\n width: 15%\\n}\\n\\n.partition-name-header{\\n text-align: left;\\n background-color:white;\\n width: 10%\\n}\\n\\n\\n.camera_btn {\\n width: 25px !important;\\n height: 25px !important;\\n margin: 0 !important;\\n padding: 0 !important;\\n align-items:flex-end;\\n}\\n\\n.cam_btn {\\n width: 25px !important;\\n height: 25px !important;\\n vertical-align: middle !important;\\n // padding-top: 10px;\\n}\\n\\n.meter-number-header{\\n text-align: center;\\n background-color:white;\\n width: 10%\\n}\\n\\n.meter-type-header{\\n text-align: center;\\n background-color:white;\\n width: 7%\\n}\\n\\n.elec-pow-header{\\n text-align: center;\\n width: 12%;\\n min-width: 160px;\\n}\\n\\n.elec-pow-used-header{\\n text-align: center;\\n background-color:white;\\n width: 12%;\\n min-width: 160px;\\n}\\n\\n.water-used-header{\\n text-align: center;\\n background-color:lightcyan;\\n}\\n\\n.tenant-name{\\n background-color:whitesmoke;\\n}\\n\\n.meter-label{\\n text-align: center;\\n background-color:whitesmoke;\\n}\\n\\n.meter-value{\\n text-align: right;\\n padding-right: 10px;\\n padding-bottom: 7px;\\n}\\n\\n.last-value{\\n text-align: right;\\n padding-right: 10px;\\n}\\n\\n.elec-pow-value{\\n text-align: right;\\n background-color:cornsilk;\\n padding-right: 10px;\\n}\\n\\n.last-month-value{\\n color: darkolivegreen\\n}\\n\\n.blank-used{\\n background-color: none !important;\\n text-align: right;\\n padding-right: 10px;\\n}\\n\\n.power-used{\\n background-color: rgb(190, 240, 155) !important;\\n text-align: right;\\n padding-right: 10px;\\n}\\n\\n.water-used{\\n background-color: lightcyan !important;\\n text-align: right;\\n padding-right: 10px;\\n}\\n\\n.gas-used{\\n background-color: rgb(229, 227, 255) !important;\\n text-align: right;\\n padding-right: 10px;\\n}\\n\\n.alert-value{\\n color: red;\\n}\\n\\n.alert-value-blue{\\n color: blue;\\n}\\n\\n.blank-value{\\n color:rgb(173, 173, 173);\\n padding-right: 10px;\\n}\\n\\n// フッターを下に固定するための修正\\n.meter-report-component-all {\\n display: flex;\\n flex-flow: column;\\n}\\n\\n.meter-report-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.menu-list{\\n height: 100%;\\n}\\n\\n.no-tenant{\\n color: darkorange;\\n}\\n\\n.footer {\\n width: 100%;\\n position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n}\\n\\n.mat-mdc-raised-button.mat-confirmed {\\n color: green;\\n background-color: white;\\n}\\n\\n.mat-mdc-raised-button.mat-not-confirmed {\\n color: darkorange;\\n background-color: white;\\n}\\n\\n.meter-name{\\n background-color:whitesmoke;\\n}\\n\\n.meter-type{\\n background-color:whitesmoke;\\n text-align: center;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-type-add-dialog/meter-type-add-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;AAAJ;;AAGA;EACI,yBAAA;AAAJ;;AAGA;EACI,UAAA;AAAJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n}\\n\\n.confirm-button {\\n background-color: #90CAFC;\\n}\\n\\n.error {\\n color: red;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-type-edit-dialog/meter-type-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;AAAJ;;AAGA;EACI,yBAAA;AAAJ;;AAGA;EACI,UAAA;AAAJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n}\\n\\n.confirm-button {\\n background-color: #90CAFC;\\n}\\n\\n.error {\\n color: red;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n box-shadow: none;\n}\n\nfooter {\n background-color: #90CAFC;\n}\n\n.header {\n background-color: #90CAFC;\n color: black;\n}\n\n.app-name {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.page-title {\n font-size: large;\n}\n\n.searchBar {\n outline-style: none;\n border: 1px solid #ccc;\n border-radius: 8px;\n padding: 12px 14px;\n width: 350px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.searchBar:focus {\n border-color: #66afe9;\n outline: 0;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.main-area {\n background-color: azure;\n}\n\n.type-name-header,\n.type-name,\n.created-date-header,\n.created-date,\n.updated-date-header,\n.updated-date {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.createBy-header,\n.createBy,\n.updateBy-header,\n.updateBy {\n background-color: white;\n width: 15%;\n text-align: center;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.delete-button {\n background-color: lightcoral;\n}\n\n.pull-down {\n padding-top: 10px;\n}\n\n.textbox {\n padding-top: 20px;\n}\n\n.master-type-component-all {\n flex-wrap: wrap;\n}\n\n.master-type-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.no-tenant {\n color: darkorange;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.footer {\n width: 100%;\n position: absolute; /*←絶対位置*/\n bottom: 0; /*下に固定*/\n position: fixed;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-type-management-list/meter-type-management-list.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,mBAAA;EACA,gBAAA;AACJ;;AAEA;EACI,yBCRa;ADSjB;;AAEA;EACI,yBCZa;EDab,YAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AACA;EACI,mBAAA;EACA,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;AAEJ;;AACA;EACI,qBAAA;EACA,UAAA;EAEA,kFAAA;AAEJ;;AACA;EACI,uBAAA;AAEJ;;AAIA;;;;;;EAOA,4BAAA;EACA,UAAA;EACA,kBAAA;AAFA;;AAKA;;;;EAII,uBAAA;EACA,UAAA;EACA,kBAAA;AAFJ;;AAKA;EACI,kBAAA;EACA,4BAAA;AAFJ;;AAKA;EACI,kBAAA;EACA,4BAAA;AAFJ;;AAKA;EACI,4BAAA;AAFJ;;AAKA;EACI,iBAAA;AAFJ;;AAKA;EACI,iBAAA;AAFJ;;AAMA;EACI,eAAA;AAHJ;;AAMA;EACI,OAAA;EACA,YAAA;AAHJ;;AAMA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AAHJ;;AAMA;EACI,iBAAA;AAHJ;;AAMA;EACI,YAAA;AAHJ;;AAMA;EACI,WAAA;EACA,kBAAA,EAAA,QAAA;EACA,SAAA,EAAA,OAAA;EACA,eAAA;AAHJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable{\\n width: 100%;\\n align-items: center;\\n box-shadow: none;\\n}\\n\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.header{\\n background-color: $main-backgroud;\\n color: black;\\n}\\n\\n.app-name{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.page-title{\\n font-size: large;\\n}\\n.searchBar{\\n outline-style: none ;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n padding: 12px 14px;\\n width: 350px;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n\\n.searchBar:focus{\\n border-color: #66afe9;\\n outline: 0;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\\n}\\n\\n.main-area{\\n background-color:azure;\\n\\n}\\n\\n\\n\\n.type-name-header,\\n.type-name,\\n.created-date-header,\\n.created-date,\\n.updated-date-header,\\n.updated-date\\n{\\nbackground-color: whitesmoke;\\nwidth: 15%;\\ntext-align: center;\\n}\\n\\n.createBy-header,\\n.createBy,\\n.updateBy-header,\\n.updateBy{\\n background-color: white;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n // padding-left: 20px;\\n}\\n.delete-button{\\n background-color: lightcoral;\\n}\\n\\n.pull-down {\\n padding-top: 10px;\\n}\\n\\n.textbox {\\n padding-top: 20px;\\n}\\n\\n// フッターを下に固定するための修正\\n.master-type-component-all {\\n flex-wrap: wrap;\\n}\\n\\n.master-type-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.no-tenant{\\n color: darkorange;\\n}\\n\\n.menu-list{\\n height: 100%;\\n}\\n\\n.footer {\\n width: 100%;\\n position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-unit-add-dialog/meter-unit-add-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;AAAJ;;AAGA;EACI,yBAAA;AAAJ;;AAGA;EACI,UAAA;AAAJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n}\\n\\n.confirm-button {\\n background-color: #90CAFC;\\n}\\n\\n.error {\\n color: red;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-unit-edit-dialog/meter-unit-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;AAAJ;;AAMA;EACI,yBAAA;AAHJ;;AAMA;EACI,UAAA;AAHJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n}\\n\\n// table th{\\n// text-align: left;\\n// }\\n.confirm-button {\\n background-color: #90CAFC;\\n}\\n\\n.error {\\n color: red;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n box-shadow: none;\n}\n\nfooter {\n background-color: #90CAFC;\n}\n\n.header {\n background-color: #90CAFC;\n color: black;\n}\n\n.app-name {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.page-title {\n font-size: large;\n}\n\n.searchBar {\n outline-style: none;\n border: 1px solid #ccc;\n border-radius: 8px;\n padding: 12px 14px;\n width: 350px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.searchBar:focus {\n border-color: #66afe9;\n outline: 0;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.main-area {\n background-color: white;\n height: 100%;\n overflow-y: auto;\n}\n\n.type-name-header,\n.type-name,\n.created-date-header,\n.created-date,\n.updated-date-header,\n.updated-date {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.createBy-header,\n.createBy,\n.updateBy-header,\n.updateBy {\n background-color: white;\n width: 15%;\n text-align: center;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.delete-button {\n background-color: lightcoral;\n}\n\n.pull-down {\n padding-top: 10px;\n}\n\n.textbox {\n padding-top: 20px;\n}\n\n.master-unit-component-all {\n flex-wrap: wrap;\n}\n\n.master-unit-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.no-tenant {\n color: darkorange;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/meter-unit/meter-unit.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,mBAAA;EACA,gBAAA;AACJ;;AAEA;EACI,yBCRa;ADSjB;;AAEA;EACI,yBCZa;EDab,YAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AACA;EACI,mBAAA;EACA,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;AAEJ;;AACA;EACI,qBAAA;EACA,UAAA;EAEA,kFAAA;AAEJ;;AACA;EACI,uBAAA;EACA,YAAA;EACA,gBAAA;AAEJ;;AAGA;;;;;;EAOA,4BAAA;EACA,UAAA;EACA,kBAAA;AADA;;AAIA;;;;EAII,uBAAA;EACA,UAAA;EACA,kBAAA;AADJ;;AAIA;EACI,kBAAA;EACA,4BAAA;AADJ;;AAIA;EACI,kBAAA;EACA,4BAAA;AADJ;;AAGA;EACI,4BAAA;AAAJ;;AAGA;EACI,iBAAA;AAAJ;;AAGA;EACI,iBAAA;AAAJ;;AAIA;EACI,eAAA;AADJ;;AAIA;EACI,OAAA;EACA,YAAA;AADJ;;AAIA;EACI,iBAAA;AADJ;;AAIA;EACI,YAAA;AADJ;;AAIA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;AAFJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable{\\n width: 100%;\\n align-items: center;\\n box-shadow: none;\\n}\\n\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.header{\\n background-color: $main-backgroud;\\n color: black;\\n}\\n\\n.app-name{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.page-title{\\n font-size: large;\\n}\\n.searchBar{\\n outline-style: none ;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n padding: 12px 14px;\\n width: 350px;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n\\n.searchBar:focus{\\n border-color: #66afe9;\\n outline: 0;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\\n}\\n\\n.main-area{\\n background-color:white;\\n height: 100%;\\n overflow-y: auto;\\n}\\n\\n\\n\\n.type-name-header,\\n.type-name,\\n.created-date-header,\\n.created-date,\\n.updated-date-header,\\n.updated-date\\n{\\nbackground-color: whitesmoke;\\nwidth: 15%;\\ntext-align: center;\\n}\\n\\n.createBy-header,\\n.createBy,\\n.updateBy-header,\\n.updateBy{\\n background-color: white;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n.delete-button{\\n background-color: lightcoral;\\n}\\n\\n.pull-down {\\n padding-top: 10px;\\n}\\n\\n.textbox {\\n padding-top: 20px;\\n}\\n\\n// フッターを下に固定するための修正\\n.master-unit-component-all {\\n flex-wrap: wrap;\\n}\\n\\n.master-unit-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.no-tenant{\\n color: darkorange;\\n}\\n\\n.menu-list{\\n height: 100%;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n box-shadow: none;\n}\n\nheader,\nfooter {\n background-color: #90CAFC;\n}\n\n.page-title {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.main-area {\n background-color: white;\n}\n\n.loading {\n background-color: white;\n}\n\n.is-card-display-header,\n.is-card-display,\n.floor-name-header,\n.floor-name {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.report-type-header,\n.report-type,\n.partition-name-header,\n.partition-name {\n background-color: white;\n width: 25%;\n text-align: center;\n}\n\n.d-button-header,\n.d-button {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.button-header,\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.detail-button,\n.edit-button {\n text-align: center;\n background-color: ghostwhite;\n color: black;\n}\n\n.delete-button {\n text-align: center;\n background-color: lightcoral;\n color: black;\n}\n\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.pull-down {\n padding-top: 20px;\n}\n\n.partition-management-list-component-all {\n flex-wrap: wrap;\n}\n\n.partition-management-list-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100vh;\n overflow-y: auto;\n background-color: white;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.mat-drawer-content {\n overflow: hidden !important;\n}\n\ntd.mat-mdc-cell:first-of-type {\n padding-left: 0px;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/partition-management-list/partition-management-list.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,mBAAA;EACA,gBAAA;AACJ;;AAEA;;EAEI,yBCTa;ADUjB;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAEA;;;;EAII,4BAAA;EACA,UAAA;EACA,kBAAA;AACJ;;AAEA;;;;EAII,uBAAA;EACA,UAAA;EACA,kBAAA;AACJ;;AAEA;;EAEI,4BAAA;EACA,UAAA;EACA,kBAAA;AACJ;;AAEA;;EAEI,kBAAA;EACA,4BAAA;AACJ;;AAGA;;EAEI,kBAAA;EACA,4BAAA;EACA,YAAA;AAAJ;;AAGA;EACI,kBAAA;EACA,4BAAA;EACA,YAAA;AAAJ;;AAGA;EACI,mBAAA;AAAJ;;AAGA;EACI,iBAAA;AAAJ;;AAIA;EACI,eAAA;AADJ;;AAIA;EACI,OAAA;EACA,YAAA;AADJ;;AAIA;EACI,aAAA;EACA,gBAAA;EACA,uBAAA;AADJ;;AAIA;EACI,YAAA;AADJ;;AAIA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,2BAAA;AAFJ;;AAKA;EACI,iBAAA;AAFJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable {\\n width: 100%;\\n align-items: center;\\n box-shadow: none;\\n}\\n\\nheader,\\nfooter {\\n background-color: $main-backgroud;\\n}\\n\\n.page-title {\\n font-size: large;\\n}\\n\\n.sub-header {\\n background-color: #CCE2F5;\\n}\\n\\n.main-area {\\n background-color:white;\\n}\\n\\n.loading {\\n background-color:white;\\n}\\n\\n.is-card-display-header,\\n.is-card-display,\\n.floor-name-header,\\n.floor-name {\\n background-color:whitesmoke;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.report-type-header,\\n.report-type,\\n.partition-name-header,\\n.partition-name {\\n background-color: white;\\n width: 25%;\\n text-align: center;\\n}\\n\\n.d-button-header,\\n.d-button{\\n background-color:whitesmoke;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.button-header,\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n // padding-left: 20px;\\n}\\n\\n.detail-button,\\n.edit-button {\\n text-align: center;\\n background-color:ghostwhite;\\n color: black;\\n}\\n\\n.delete-button {\\n text-align: center;\\n background-color: lightcoral;\\n color: black;\\n}\\n\\n::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.pull-down {\\n padding-top: 20px\\n}\\n\\n// フッターを下に固定するための修正\\n.partition-management-list-component-all {\\n flex-wrap: wrap;\\n}\\n\\n.partition-management-list-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100vh;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.menu-list {\\n height: 100%;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n overflow: hidden;\\n white-space: nowrap;\\n}\\n\\n.mat-drawer-content {\\n overflow: hidden !important;\\n}\\n\\ntd.mat-mdc-cell:first-of-type {\\n padding-left: 0px;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n text-align: center;\n}\n\nth,\ntd {\n text-align: left;\n font-weight: normal;\n font-size: 100%;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/partittion-add-dialog/partition-add-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;EACA,kBAAA;AAAJ;;AAGA;;EAEI,gBAAA;EACA,mBAAA;EACA,eAAA;AAAJ;;AAGA;EACI,UAAA;AAAJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n text-align: center;\\n}\\n\\nth,\\ntd {\\n text-align: left;\\n font-weight: normal;\\n font-size: 100%;\\n}\\n\\n.error {\\n color: red;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n text-align: center;\n}\n\nth,\ntd {\n text-align: left;\n font-weight: normal;\n font-size: 100%;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/partittion-delete-dialog/partition-delete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;EACA,kBAAA;AAAJ;;AAGA;;EAEI,gBAAA;EACA,mBAAA;EACA,eAAA;AAAJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n text-align: center;\\n}\\n\\nth,\\ntd {\\n text-align: left;\\n font-weight: normal;\\n font-size: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n text-align: center;\n}\n\nth,\ntd {\n text-align: left;\n font-weight: normal;\n font-size: 100%;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/partittion-detail-dialog/partition-detail-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;EACA,kBAAA;AAAJ;;AAGA;;EAEI,gBAAA;EACA,mBAAA;EACA,eAAA;AAAJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n text-align: center;\\n}\\n\\nth,\\ntd {\\n text-align: left;\\n font-weight: normal;\\n font-size: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n padding: 50px;\n text-align: center;\n}\n\nth,\ntd {\n text-align: left;\n font-weight: normal;\n font-size: 100%;\n}\n\n.error {\n color: red;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/partittion-edit-dialog/partition-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,aAAA;EACA,kBAAA;AAAJ;;AAGA;;EAEI,gBAAA;EACA,mBAAA;EACA,eAAA;AAAJ;;AAGA;EACI,UAAA;AAAJ\",\"sourcesContent\":[\"\\ntable {\\n padding: 50px ;\\n text-align: center;\\n}\\n\\nth,\\ntd {\\n text-align: left;\\n font-weight: normal;\\n font-size: 100%;\\n}\\n\\n.error {\\n color: red;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.alert-button {\n background-color: lightcoral;\n}\n\n.report-area {\n margin: 5px;\n}\n\nbutton {\n margin: 5px;\n padding-top: 25px;\n padding-bottom: 25px;\n}\n\n.alert-area {\n padding-bottom: 25px;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/report-list-dialog/report-list-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,4BAAA;AACJ;;AACA;EACI,WAAA;AAEJ;;AAAA;EACI,WAAA;EACA,iBAAA;EACA,oBAAA;AAGJ;;AAAA;EACI,oBAAA;AAGJ\",\"sourcesContent\":[\".alert-button{\\n background-color: lightcoral;\\n}\\n.report-area{\\n margin:5px;\\n}\\nbutton {\\n margin: 5px;\\n padding-top: 25px;\\n padding-bottom: 25px;\\n}\\n\\n.alert-area{\\n padding-bottom: 25px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.side-bar {\n padding-top: 0;\n}\n\n.side-bar .selected {\n color: #90CAFC;\n background-color: whitesmoke;\n}\n\n.side-bar section {\n min-height: 150px;\n}\n\n.side-bar section .title {\n font-size: 14pt;\n font-weight: 300;\n margin: 0;\n padding: 0;\n padding-left: 10px;\n}\n\n.side-bar .blue {\n background-color: #90CAFC;\n}\n\n.side-bar .red {\n background-color: lightcoral;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/side-nav/side-nav.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,cAAA;AAAJ;;AAGA;EACI,cAAA;EACA,4BAAA;AAAJ;;AAGA;EACI,iBAAA;AAAJ;;AAGA;EACI,eAAA;EACA,gBAAA;EACA,SAAA;EACA,UAAA;EACA,kBAAA;AAAJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,4BAAA;AACJ\",\"sourcesContent\":[\"\\n.side-bar{\\n padding-top: 0;\\n}\\n\\n.side-bar .selected{\\n color: #90CAFC;\\n background-color: whitesmoke;\\n}\\n\\n.side-bar section{\\n min-height: 150px;\\n}\\n\\n.side-bar section .title{\\n font-size: 14pt;\\n font-weight: 300;\\n margin: 0;\\n padding: 0;\\n padding-left: 10px;\\n}\\n.side-bar .blue{\\n background-color: #90CAFC;\\n}\\n\\n.side-bar .red{\\n background-color: lightcoral;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: small;\n text-align: right;\n}\n\ntable thead {\n align-self: center;\n}\n\ntable tbody {\n overflow-y: scroll;\n overflow-x: hidden;\n height: 250px;\n display: block;\n text-align: center;\n}\n\ntable thead,\ntable tr {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\ntable thead {\n text-align: center;\n}\n\nth {\n text-align: left;\n padding-left: 20%;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\nmat-form-field {\n min-width: 200px;\n}\n\ninput {\n font-size: medium;\n}\n\n:host ::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.user-button {\n border: none;\n background-color: white;\n color: rgb(57, 57, 230);\n font-size: small;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}\n\n.user-button:focus {\n box-shadow: 0 0 rgb(255, 255, 255) !important;\n transition: none !important;\n background-color: rgb(255, 255, 255) !important;\n -webkit-tap-highlight-color: rgb(255, 255, 255) !important;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/site-add-edit-dialog/site-add-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,gBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,kBAAA;EAEA,aAAA;EACA,cAAA;EAEA,kBAAA;AADJ;;AAIA;;EAEI,cAAA;EACA,mBAAA;EACA,WAAA;AADJ;;AAGA;EACI,kBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,iBAAA;AAAJ;;AAEA;EACI,gBAAA;EACA,YAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,mBAAA;AACJ;;AAEA;EACI,YAAA;EACA,uBAAA;EACA,uBAAA;EACA,gBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,oBAAA;AACJ;;AACA;EACI,yBAAA;AAEJ;;AACA;EACI,UAAA;AAEJ;;AACA;EACI,6CAAA;EACA,2BAAA;EACA,+CAAA;EACA,0DAAA;AAEJ\",\"sourcesContent\":[\"table{\\n font-size: small;\\n text-align: right; \\n}\\n\\ntable thead{\\n align-self: center;\\n}\\n\\ntable tbody{\\n overflow-y: scroll;\\n overflow-x: hidden;\\n\\n height: 250px;\\n display: block;\\n\\n text-align: center;\\n}\\n\\ntable thead,\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n}\\ntable thead{\\n text-align: center;\\n}\\n\\nth{\\n text-align: left;\\n padding-left: 20%;\\n}\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\nmat-form-field{\\n min-width: 200px;\\n}\\n\\ninput{\\n font-size: medium;\\n}\\n\\n:host ::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.user-button{\\n border: none;\\n background-color: white;\\n color: rgb(57, 57, 230);\\n font-size: small;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n}\\n\\n.user-button:focus{\\n box-shadow: 0 0 rgba(255, 255, 255, 1) !important;\\n transition:none !important;\\n background-color: rgba(255, 255, 255, 1) !important;\\n -webkit-tap-highlight-color:rgba(255, 255, 255, 1) !important;\\n}\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.message {\n white-space: pre-line;\n text-align-last: center;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/site-complete-dialog/site-complete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,qBAAA;EACA,uBAAA;AACJ\",\"sourcesContent\":[\".message {\\n white-space: pre-line;\\n text-align-last: center;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: small;\n text-align: right;\n}\n\ntable thead {\n align-self: center;\n}\n\ntable thead,\ntable tr {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\ntable thead {\n text-align: center;\n}\n\nth {\n text-align: left;\n padding-left: 20%;\n width: 40%;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\n.user-button {\n border: none;\n background-color: white;\n color: rgb(57, 57, 230);\n font-size: small;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/site-delete-dialog/site-delete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,gBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AAGA;;EAEI,cAAA;EACA,mBAAA;EACA,WAAA;AAAJ;;AAEA;EACI,kBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,iBAAA;EACA,UAAA;AACJ;;AACA;EACI,gBAAA;EACA,YAAA;AAEJ;;AACA;EACI,YAAA;EACA,uBAAA;EACA,uBAAA;EACA,gBAAA;AAEJ;;AACA;EACI,gBAAA;EACA,oBAAA;AAEJ;;AAAA;EACI,yBAAA;AAGJ\",\"sourcesContent\":[\"table{\\n font-size: small;\\n text-align: right; \\n}\\n\\ntable thead{\\n align-self: center;\\n}\\n\\n\\ntable thead,\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n}\\ntable thead{\\n text-align: center;\\n}\\n\\nth{\\n text-align: left;\\n padding-left: 20%;\\n width: 40%;\\n}\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\n.user-button{\\n border: none;\\n background-color: white;\\n color: rgb(57, 57, 230);\\n font-size: small;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n width: 100%;\n align-items: center;\n box-shadow: none;\n}\n\nheader,\nfooter {\n background-color: #90CAFC;\n}\n\n.searchBar {\n outline-style: none;\n border: 1px solid #ccc;\n border-radius: 8px;\n padding: 12px 14px;\n width: 350px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.searchBar:focus {\n border-color: #66afe9;\n outline: 0;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.page-title {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.main-area {\n background-color: white;\n}\n\n.loading {\n background-color: white;\n}\n\n.all-partitions {\n background-color: whitesmoke;\n}\n\n.site-name {\n background-color: whitesmoke;\n width: 10%;\n text-align: center;\n padding-left: 0 !important;\n}\n\n.site-name-header {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n padding-left: 0 !important;\n}\n\n.site-address-header {\n text-align: center;\n background-color: white;\n width: 24%;\n}\n\n.site-address {\n background-color: white;\n width: 24%;\n text-align: center;\n}\n\n.company-name-header {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.company-name {\n background-color: whitesmoke;\n width: 15%;\n text-align: center;\n}\n\n.updateAt-header {\n background-color: whitesmoke;\n width: 10%;\n text-align: center;\n}\n\n.updateAt {\n background-color: whitesmoke;\n width: 10%;\n text-align: center;\n}\n\n.date {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.date-header {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n padding-left: 20px;\n}\n\n.edit-button {\n min-width: max-content;\n}\n\n.delete-button {\n background-color: lightcoral;\n min-width: max-content;\n}\n\n.createBy-header,\n.createBy,\n.updateBy-header,\n.updateBy {\n background-color: white;\n width: 10%;\n text-align: center;\n}\n\n.site-management-component-all {\n flex-flow: column wrap;\n}\n\n.site-management-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.searchOptionsRadio {\n padding-left: 20px;\n}\n\n.footer {\n width: 100%;\n position: absolute; /*←絶対位置*/\n bottom: 0; /*下に固定*/\n position: fixed;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/site-management/site-management.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,WAAA;EACA,mBAAA;EACA,gBAAA;AACJ;;AAEA;;EAEI,yBCTa;ADUjB;;AAEA;EACI,mBAAA;EACA,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;AACJ;;AAEA;EACI,qBAAA;EACA,UAAA;EAEA,kFAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAGA;EACI,uBAAA;AAAJ;;AAGA;EACI,uBAAA;AAAJ;;AAGA;EACI,4BAAA;AAAJ;;AAIA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;EACA,0BAAA;AADJ;;AAIA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;EACA,0BAAA;AADJ;;AAIA;EACI,kBAAA;EACA,uBAAA;EACA,UAAA;AADJ;;AAGA;EACI,uBAAA;EACA,UAAA;EACA,kBAAA;AAAJ;;AAIA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;AADJ;;AAGA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;AAAJ;;AAGA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;AAAJ;;AAGA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;AAAJ;;AAGA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAAJ;;AAGA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAAJ;;AAGA;EACI,kBAAA;EACA,4BAAA;AAAJ;;AAGA;EACI,kBAAA;EACA,4BAAA;EACA,kBAAA;AAAJ;;AAEA;EACI,sBAAA;AACJ;;AAEA;EACI,4BAAA;EACA,sBAAA;AACJ;;AAEA;;;;EAII,uBAAA;EACA,UAAA;EACA,kBAAA;AACJ;;AAGA;EACI,sBAAA;AAAJ;;AAGA;EACI,OAAA;EACA,YAAA;AAAJ;;AAGA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AAAJ;;AAGA;EACI,YAAA;AAAJ;;AAGA;EACI,kBAAA;AAAJ;;AAGA;EACI,WAAA;EACA,kBAAA,EAAA,QAAA;EACA,SAAA,EAAA,OAAA;EACA,eAAA;AAAJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable{\\n width: 100%;\\n align-items: center;\\n box-shadow: none;\\n}\\n\\nheader,\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.searchBar{\\n outline-style: none ;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n padding: 12px 14px;\\n width: 350px;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n\\n.searchBar:focus{\\n border-color: #66afe9;\\n outline: 0;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\\n}\\n\\n.page-title{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n\\n.main-area{\\n background-color:white;\\n}\\n\\n.loading{\\n background-color:white;\\n}\\n\\n.all-partitions{\\n background-color: whitesmoke;\\n}\\n\\n\\n.site-name{\\n background-color:whitesmoke;\\n width: 10%;\\n text-align: center;\\n padding-left: 0 !important;\\n}\\n\\n.site-name-header{\\n text-align: center;\\n background-color:whitesmoke;\\n width: 10%;\\n padding-left: 0 !important;\\n}\\n\\n.site-address-header{\\n text-align: center;\\n background-color:white;\\n width: 24%;\\n}\\n.site-address{\\n background-color:white;\\n width: 24%;\\n text-align: center;\\n}\\n\\n\\n.company-name-header{\\n background-color: whitesmoke;\\n width: 15%;\\n text-align: center;\\n}\\n.company-name{\\n background-color: whitesmoke;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.updateAt-header{\\n background-color: whitesmoke;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.updateAt{\\n background-color: whitesmoke;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.date{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 10%;\\n}\\n\\n.date-header{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 10%;\\n}\\n\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n padding-left: 20px;\\n}\\n.edit-button{\\n min-width: max-content;\\n}\\n\\n.delete-button{\\n background-color: lightcoral;\\n min-width: max-content;\\n}\\n\\n.createBy-header,\\n.createBy,\\n.updateBy-header,\\n.updateBy{\\n background-color: white;\\n width: 10%;\\n text-align: center;\\n}\\n\\n// フッターを下に固定するための修正\\n.site-management-component-all {\\n flex-flow: column wrap;\\n}\\n\\n.site-management-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.menu-list{\\n height: 100%;\\n}\\n\\n.searchOptionsRadio{\\n padding-left: 20px;\\n}\\n\\n.footer {\\n width: 100%;\\n position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login_component {\n width: 100%;\n height: 100%;\n}\n\n.icon_image {\n width: 300px;\n height: 200px;\n}\n\n.site-name {\n text-align: center;\n}\n\ntable {\n width: 100%;\n align-items: center;\n cursor: pointer;\n}\n\n.main-area {\n width: 400px;\n height: 400px;\n overflow-y: auto;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/site-select/site-select.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,WAAA;EACA,YAAA;AACJ;;AAEA;EACI,YAAA;EACA,aAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AAEA;EACI,WAAA;EACA,mBAAA;EACA,eAAA;AACJ;;AAEA;EACI,YAAA;EACA,aAAA;EACA,gBAAA;AACJ\",\"sourcesContent\":[\".login_component {\\n width: 100%;\\n height: 100%;\\n}\\n \\n.icon_image {\\n width: 300px;\\n height: 200px;\\n}\\n\\n.site-name {\\n text-align: center;\\n}\\n\\ntable {\\n width: 100%;\\n align-items: center;\\n cursor: pointer;\\n}\\n\\n.main-area {\\n width: 400px;\\n height: 400px;\\n overflow-y: auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.title {\n text-align: center;\n font-size: large;\n}\n\ntable {\n font-size: small;\n text-align: center;\n max-height: 300px;\n overflow: auto;\n width: 620px;\n}\n\n.table-container {\n max-height: 300px;\n overflow: auto;\n}\n\ntable tbody::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\ntable tbody::-webkit-scrollbar :vertical {\n width: 2px;\n}\n\ntable tbody::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid white;\n background-color: rgba(0, 0, 0, 0.3);\n}\n\nth {\n text-align: left;\n}\n\ntd {\n text-align: left;\n}\n\n.user-name-header {\n width: 40%;\n}\n\n.company-name-header {\n width: 40%;\n}\n\n.permission-header {\n width: 20%;\n}\n\ninput {\n font-size: medium;\n}\n\n.user-button {\n border: none;\n background-color: white;\n color: rgb(57, 57, 230);\n font-size: small;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/site-user-selection-dialog/site-user-selection-dialog.component.scss\"],\"names\":[],\"mappings\":\"AACA;EACI,kBAAA;EACA,gBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,cAAA;EACA,YAAA;AAAJ;;AAGA;EACI,iBAAA;EACA,cAAA;AAAJ;;AAGA;EACI,wBAAA;AAAJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,kBAAA;EACA,uBAAA;EACA,oCAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AACA;EACI,UAAA;AAEJ;;AAAA;EACI,UAAA;AAGJ;;AADA;EACI,UAAA;AAIJ;;AADA;EACI,iBAAA;AAIJ;;AADA;EACI,YAAA;EACA,uBAAA;EACA,uBAAA;EACA,gBAAA;AAIJ;;AADA;EACI,gBAAA;EACA,oBAAA;AAIJ;;AADA;EACI,yBAAA;AAIJ\",\"sourcesContent\":[\"\\n.title{\\n text-align: center;\\n font-size: large;\\n}\\n\\ntable{\\n font-size: small;\\n text-align: center;\\n max-height: 300px;\\n overflow: auto;\\n width: 620px;\\n}\\n\\n.table-container{\\n max-height: 300px;\\n overflow: auto;\\n}\\n\\ntable tbody::-webkit-scrollbar{\\n -webkit-appearance: none;\\n}\\ntable tbody::-webkit-scrollbar :vertical {\\n width: 2px;\\n}\\n\\ntable tbody::-webkit-scrollbar-thumb{\\n border-radius: 8px;\\n border: 2px solid white;\\n background-color: rgba(0,0,0,0.3);\\n}\\n\\nth{\\n text-align: left;\\n}\\n\\ntd{\\n text-align: left;\\n}\\n.user-name-header{\\n width: 40%;\\n}\\n.company-name-header{\\n width: 40%;\\n}\\n.permission-header{\\n width: 20%;\\n}\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.user-button{\\n border: none;\\n background-color: white;\\n color: rgb(57, 57, 230);\\n font-size: small;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\n.meter-name {\n text-align: left;\n height: 20px;\n width: 190px;\n}\n\n.meter-label {\n text-align: left;\n height: 20px;\n width: 135px;\n}\n\ntextarea {\n font-size: medium;\n}\n\ninput {\n font-size: medium;\n}\n\n.confirm-button {\n background-color: lightcoral;\n}\n\n.cancell-button {\n background-color: lightskyblue;\n}\n\n.meter-val {\n width: 127px;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/tenant-delete-dialog/tenant-delete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,YAAA;AACJ;;AAEA;EACI,gBAAA;EACA,YAAA;EACA,YAAA;AACJ;;AACA;EACI,gBAAA;EACA,YAAA;EACA,YAAA;AAEJ;;AACA;EACI,iBAAA;AAEJ;;AACA;EACI,iBAAA;AAEJ;;AACA;EACI,4BAAA;AAEJ;;AACA;EACI,8BAAA;AAEJ;;AACA;EACI,YAAA;AAEJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px;\\n}\\n\\n.meter-name{\\n text-align: left;\\n height: 20px;\\n width: 190px;\\n}\\n.meter-label{\\n text-align: left;\\n height: 20px;\\n width: 135px;\\n}\\n\\ntextarea{\\n font-size: medium;\\n}\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.confirm-button{\\n background-color: lightcoral;\\n}\\n\\n.cancell-button{\\n background-color: lightskyblue;\\n}\\n\\n.meter-val{\\n width: 127px;\\n }\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\ntextarea {\n font-size: medium;\n}\n\ninput {\n font-size: medium;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/tenant-edit-dialog/tenant-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,YAAA;AACJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\ntextarea{\\n font-size: medium;\\n}\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.confirm-button{\\n background-color: #90CAFC;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\ntextarea {\n font-size: medium;\n}\n\ninput {\n font-size: medium;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}\n\n.tenantExist {\n color: red;\n font-size: small;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/tenant-make-dialog/tenant-make-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,YAAA;AACJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,iBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,UAAA;EACA,gBAAA;AACJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\ntextarea{\\n font-size: medium;\\n}\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n}\\n\\n.tenantExist{\\n color: red;\\n font-size: small;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntable tbody {\n overflow-y: scroll;\n overflow-x: hidden;\n display: block;\n margin: 0 auto;\n padding-left: 20%;\n}\n\ntable tbody .small_row {\n padding-left: 10%;\n}\n\n#small_right_field {\n margin-left: -50px;\n}\n\ntable tbody th {\n text-align: left;\n width: 60%;\n}\n\ntable tbody::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\ntable tbody::-webkit-scrollbar :vertical {\n width: 2px;\n}\n\ntable tbody::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid white;\n background-color: rgba(0, 0, 0, 0.3);\n}\n\ntable thead {\n display: table;\n table-layout: fixed;\n text-align: center;\n width: 100%;\n}\n\ntable tr {\n display: table;\n table-layout: fixed;\n width: 50%;\n}\n\n.table-container {\n margin-top: 10px;\n max-height: 300px;\n overflow: auto;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\ninput {\n font-size: medium;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n font-size: small;\n}\n\n.mat-mdc-form-field {\n width: 300px;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n::ng-deep .mat-form-field-flex > .mat-form-field-infix {\n padding: 0.4em 0px !important;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n::ng-deep .mat-form-field-label-wrapper {\n top: -1.5em;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {\n transform: translateY(-1.1em) scale(0.75);\n width: 300px;\n}\n\n:host ::ng-deep .mat-mdc-form-field-hint-wrapper {\n display: contents;\n}\n\n:host ::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.selectSite {\n color: #5F58FF;\n text-decoration: underline;\n}\n\n.userName {\n width: 300px;\n}\n\n.tr {\n vertical-align: baseline;\n}\n\n.loginIDFormTitle, .passwordTitle, .confirmPasswordTitle {\n padding-bottom: 1.34375em;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-add-dialog/user-add-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,kBAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;AACJ;;AAEA;EAEI,iBAAA;AAAJ;;AAGA;EACI,kBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,UAAA;AAAJ;;AAGA;EACI,wBAAA;AAAJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,kBAAA;EACA,uBAAA;EACA,oCAAA;AACJ;;AAEA;EACI,cAAA;EACA,mBAAA;EACA,kBAAA;EACA,WAAA;AACJ;;AAEA;EACI,cAAA;EACA,mBAAA;EACA,UAAA;AACJ;;AAEA;EACI,gBAAA;EACA,iBAAA;EACA,cAAA;AACJ;;AAEA;EACI,gBAAA;EACA,YAAA;AACJ;;AAGA;EACI,iBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,oBAAA;AAAJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,UAAA;EACA,gBAAA;AACJ;;AAGA;EACI,YAAA;AAAJ;;AAEA,iIAAA;AACA;EAAyD,6BAAA;AAEzD;;AADA,iIAAA;AACA;EAA0C,WAAA;AAK1C;;AAHA,iIAAA;AACA;EACI,yCAAA;EACA,YAAA;AAMJ;;AAHA;EACI,iBAAA;AAMJ;;AAHA;EACI,mBAAA;AAMJ;;AAHA;EACI,cAAA;EACA,0BAAA;AAMJ;;AAHA;EACI,YAAA;AAMJ;;AAHA;EACI,wBAAA;AAMJ;;AAHA;EACI,yBAAA;AAMJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right; \\n}\\n\\ntable tbody{\\n overflow-y: scroll;\\n overflow-x: hidden;\\n display: block;\\n margin: 0 auto;\\n padding-left: 20%;\\n}\\n\\ntable tbody .small_row{\\n\\n padding-left: 10%;\\n}\\n\\n#small_right_field{\\n margin-left: -50px;\\n}\\n\\ntable tbody th{\\n text-align: left;\\n width: 60%;\\n}\\n\\ntable tbody::-webkit-scrollbar{\\n -webkit-appearance: none;\\n}\\ntable tbody::-webkit-scrollbar :vertical {\\n width: 2px;\\n}\\n\\ntable tbody::-webkit-scrollbar-thumb{\\n border-radius: 8px;\\n border: 2px solid white;\\n background-color: rgba(0,0,0,0.3);\\n}\\n\\ntable thead{\\n display: table;\\n table-layout: fixed;\\n text-align: center;\\n width: 100%; \\n}\\n\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 50%;\\n}\\n\\n.table-container {\\n margin-top: 10px;\\n max-height: 300px;\\n overflow: auto;\\n }\\n\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n font-size: small;\\n\\n}\\n\\n.mat-mdc-form-field {\\n width: 300px;\\n}\\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\\n::ng-deep .mat-form-field-flex > .mat-form-field-infix { padding: 0.4em 0px !important;}\\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\\n::ng-deep .mat-form-field-label-wrapper { top: -1.5em; }\\n\\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\\n::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {\\n transform: translateY(-1.1em) scale(.75);\\n width: 300px;\\n}\\n\\n:host ::ng-deep .mat-mdc-form-field-hint-wrapper {\\n display: contents;\\n}\\n\\n:host ::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.selectSite{\\n color: #5F58FF;\\n text-decoration: underline;\\n}\\n\\n.userName{\\n width: 300px;\\n}\\n\\n.tr{\\n vertical-align: baseline;\\n}\\n\\n.loginIDFormTitle, .passwordTitle, .confirmPasswordTitle{\\n padding-bottom: 1.34375em;\\n}\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntable tbody {\n overflow-y: scroll;\n overflow-x: hidden;\n display: block;\n margin: 0 auto;\n text-align: -webkit-center;\n}\n\ntable tbody .small_row {\n padding-left: 10%;\n}\n\n#small_right_field {\n margin-left: -50px;\n}\n\ntable tbody th {\n text-align: left;\n width: 100%;\n}\n\ntable tbody::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\ntable tbody::-webkit-scrollbar :vertical {\n width: 2px;\n}\n\ntable tbody::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid white;\n background-color: rgba(0, 0, 0, 0.3);\n}\n\ntable thead {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\ntable tr {\n display: table;\n table-layout: fixed;\n width: 50%;\n}\n\n.table-container {\n margin-top: 10px;\n max-height: 300px;\n overflow: auto;\n}\n\ntable thead {\n text-align: center;\n}\n\ntd {\n text-align: left;\n height: 45px;\n width: 100%;\n}\n\ninput {\n font-size: medium;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n font-size: small;\n}\n\n.mat-mdc-form-field {\n width: 300px;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n::ng-deep .mat-form-field-flex > .mat-form-field-infix {\n padding: 0.4em 0px !important;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n::ng-deep .mat-form-field-label-wrapper {\n top: -1.5em;\n}\n\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\n::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {\n transform: translateY(-1.1em) scale(0.75);\n width: 300px;\n}\n\n.selectSite {\n color: #5F58FF;\n text-decoration: underline;\n}\n\n.userName {\n width: 300px;\n}\n\n.passwordTitle, .confirmPasswordTitle {\n padding-bottom: 1.34375em;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-change-password-dialog/user-change-password-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,kBAAA;EACA,cAAA;EACA,cAAA;EACA,0BAAA;AACJ;;AAEA;EAEI,iBAAA;AAAJ;;AAGA;EACI,kBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,WAAA;AAAJ;;AAGA;EACI,wBAAA;AAAJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,kBAAA;EACA,uBAAA;EACA,oCAAA;AACJ;;AAEA;EACI,cAAA;EACA,mBAAA;EACA,WAAA;AACJ;;AAEA;EACI,cAAA;EACA,mBAAA;EACA,UAAA;AACJ;;AAEA;EACI,gBAAA;EACA,iBAAA;EACA,cAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AAEA;EACI,gBAAA;EACA,YAAA;EACA,WAAA;AACJ;;AAGA;EACI,iBAAA;AAAJ;;AAGA;EACI,gBAAA;EACA,oBAAA;AAAJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,UAAA;EACA,gBAAA;AACJ;;AAGA;EACI,YAAA;AAAJ;;AAEA,iIAAA;AACA;EAAyD,6BAAA;AAEzD;;AADA,iIAAA;AACA;EAA0C,WAAA;AAK1C;;AAHA,iIAAA;AACA;EACI,yCAAA;EACA,YAAA;AAMJ;;AAHA;EACI,cAAA;EACA,0BAAA;AAMJ;;AAHA;EACI,YAAA;AAMJ;;AAHA;EACI,yBAAA;AAMJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right; \\n}\\n\\ntable tbody{\\n overflow-y: scroll;\\n overflow-x: hidden;\\n display: block;\\n margin: 0 auto;\\n text-align: -webkit-center;\\n}\\n\\ntable tbody .small_row{\\n\\n padding-left: 10%;\\n}\\n\\n#small_right_field{\\n margin-left: -50px;\\n}\\n\\ntable tbody th{\\n text-align: left;\\n width: 100%;\\n}\\n\\ntable tbody::-webkit-scrollbar{\\n -webkit-appearance: none;\\n}\\ntable tbody::-webkit-scrollbar :vertical {\\n width: 2px;\\n}\\n\\ntable tbody::-webkit-scrollbar-thumb{\\n border-radius: 8px;\\n border: 2px solid white;\\n background-color: rgba(0,0,0,0.3);\\n}\\n\\ntable thead{\\n display: table;\\n table-layout: fixed;\\n width: 100%; \\n}\\n\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 50%;\\n}\\n\\n.table-container {\\n margin-top: 10px;\\n max-height: 300px;\\n overflow: auto;\\n }\\n\\ntable thead{\\n text-align: center;\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px;\\n width: 100%;\\n}\\n\\n\\ninput{\\n font-size: medium;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n font-size: small;\\n\\n}\\n\\n.mat-mdc-form-field {\\n width: 300px;\\n}\\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\\n::ng-deep .mat-form-field-flex > .mat-form-field-infix { padding: 0.4em 0px !important;}\\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\\n::ng-deep .mat-form-field-label-wrapper { top: -1.5em; }\\n\\n/* TODO(mdc-migration): The following rule targets internal classes of form-field that may no longer apply for the MDC version. */\\n::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {\\n transform: translateY(-1.1em) scale(.75);\\n width: 300px;\\n}\\n\\n.selectSite{\\n color: #5F58FF;\\n text-decoration: underline;\\n}\\n\\n.userName{\\n width: 300px;\\n}\\n\\n.passwordTitle, .confirmPasswordTitle{\\n padding-bottom: 1.34375em;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.message {\n white-space: pre-line;\n text-align-last: center;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-complete-dialog/user-complete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,qBAAA;EACA,uBAAA;AACJ\",\"sourcesContent\":[\".message {\\n white-space: pre-line;\\n text-align-last: center;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.footerArea {\n padding-top: 50px;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-delete-dialog/user-delete-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;AACJ;;AACA;EACI,yBAAA;AAEJ\",\"sourcesContent\":[\".footerArea{\\n padding-top: 50px;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.headerTitleArea {\n align-self: center;\n}\n\n.tableArea {\n align-self: center;\n}\n\n.footerArea {\n align-self: end;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-detail-dialog/user-detail-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,kBAAA;AACJ;;AACA;EACI,kBAAA;AAEJ;;AAAA;EACI,eAAA;AAGJ\",\"sourcesContent\":[\".headerTitleArea{\\n align-self: center;\\n}\\n.tableArea{\\n align-self: center;\\n}\\n.footerArea{\\n align-self: end;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n font-size: medium;\n text-align: right;\n}\n\ntable tbody {\n overflow-y: scroll;\n overflow-x: hidden;\n display: block;\n padding-left: 20%;\n margin: 0 auto;\n}\n\ntable tbody .small_row {\n padding-left: 10%;\n}\n\n#small_right_field {\n margin-left: -50px;\n}\n\ntable tbody th {\n text-align: left;\n}\n\ntable tbody::-webkit-scrollbar {\n -webkit-appearance: none;\n}\n\ntable tbody::-webkit-scrollbar :vertical {\n width: 2px;\n}\n\ntable tbody::-webkit-scrollbar-thumb {\n border-radius: 8px;\n border: 2px solid white;\n background-color: rgba(0, 0, 0, 0.3);\n}\n\ntable thead {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\ntable tr {\n display: table;\n table-layout: fixed;\n width: 50%;\n}\n\ntable thead {\n text-align: center;\n}\n\ntd {\n text-align: left;\n height: 45px;\n}\n\ninput {\n font-size: medium;\n}\n\n:host ::ng-deep .mdc-text-field--filled.mdc-text-field--disabled {\n background-color: inherit;\n}\n\n:host ::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\n background: inherit;\n}\n\n.actionButtonArea {\n margin-top: 20px;\n padding-bottom: 12px;\n align-items: flex-end;\n}\n\n.confirm-button {\n background-color: #90CAFC;\n}\n\n.error {\n color: red;\n}\n\n.txtUserName {\n width: 250px;\n}\n\n.selectSite {\n color: #5F58FF;\n text-decoration: underline;\n font-variant-east-asian: proportional-width;\n width: max-content;\n}\n\n.change-password-button {\n background-color: #EE8182;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-edit-dialog/user-edit-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,iBAAA;EACA,iBAAA;AACJ;;AAEA;EACI,kBAAA;EACA,kBAAA;EAEA,cAAA;EACA,iBAAA;EACA,cAAA;AAAJ;;AAGA;EAEI,iBAAA;AADJ;;AAGA;EACI,kBAAA;AAAJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,wBAAA;AACJ;;AACA;EACI,UAAA;AAEJ;;AACA;EACI,kBAAA;EACA,uBAAA;EACA,oCAAA;AAEJ;;AACA;EACI,cAAA;EACA,mBAAA;EACA,WAAA;AAEJ;;AACA;EACI,cAAA;EACA,mBAAA;EACA,UAAA;AAEJ;;AAAA;EACI,kBAAA;AAGJ;;AAAA;EACI,gBAAA;EACA,YAAA;AAGJ;;AACA;EACI,iBAAA;AAEJ;;AACA;EACI,yBAAA;AAEJ;;AACA;EACI,mBAAA;AAEJ;;AACA;EACI,gBAAA;EACA,oBAAA;EACA,qBAAA;AAEJ;;AAAA;EACI,yBAAA;AAGJ;;AAAA;EACI,UAAA;AAGJ;;AAAA;EACI,YAAA;AAGJ;;AAAA;EACI,cAAA;EACA,0BAAA;EACA,2CAAA;EACA,kBAAA;AAGJ;;AAAA;EACI,yBAAA;AAGJ\",\"sourcesContent\":[\"table{\\n font-size: medium;\\n text-align: right; \\n}\\n\\ntable tbody{\\n overflow-y: scroll;\\n overflow-x: hidden;\\n\\n display: block;\\n padding-left: 20%;\\n margin: 0 auto;\\n}\\n\\ntable tbody .small_row{\\n\\n padding-left: 10%;\\n}\\n#small_right_field{\\n margin-left: -50px;\\n}\\ntable tbody th{\\n text-align: left;\\n}\\n\\ntable tbody::-webkit-scrollbar{\\n -webkit-appearance: none;\\n}\\ntable tbody::-webkit-scrollbar :vertical {\\n width: 2px;\\n}\\n\\ntable tbody::-webkit-scrollbar-thumb{\\n border-radius: 8px;\\n border: 2px solid white;\\n background-color: rgba(0,0,0,0.3);\\n}\\n\\ntable thead{\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\ntable tr{\\n display: table;\\n table-layout: fixed;\\n width: 50%;\\n}\\ntable thead{\\n text-align: center;\\n}\\n\\ntd{\\n text-align: left;\\n height: 45px\\n}\\n\\n\\ninput{\\n font-size: medium;\\n}\\n\\n:host ::ng-deep .mdc-text-field--filled.mdc-text-field--disabled {\\n background-color: inherit;\\n}\\n\\n:host ::ng-deep .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper {\\n background: inherit;\\n}\\n\\n.actionButtonArea{\\n margin-top: 20px;\\n padding-bottom: 12px;\\n align-items: flex-end;\\n}\\n.confirm-button{\\n background-color: #90CAFC;\\n}\\n\\n.error{\\n color: red;\\n}\\n\\n.txtUserName{\\n width: 250px;\\n}\\n\\n.selectSite{\\n color: #5F58FF;\\n text-decoration: underline;\\n font-variant-east-asian: proportional-width;\\n width: max-content;\\n}\\n\\n.change-password-button{\\n background-color: #EE8182;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\ntable {\n max-width: 100%;\n align-items: stretch;\n box-shadow: none;\n place-content: stretch center;\n box-sizing: border-box;\n flex-wrap: wrap;\n flex-direction: column;\n flex-flow: column wrap;\n}\n\nheader,\nfooter {\n background-color: #90CAFC;\n}\n\n.searchBar {\n outline-style: none;\n border: 1px solid #ccc;\n border-radius: 8px;\n padding: 12px 14px;\n width: 350px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.searchBar:focus {\n border-color: #66afe9;\n outline: 0;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n\n.page-title {\n font-size: large;\n}\n\n.sub-header {\n background-color: #CCE2F5;\n}\n\n.edit-mode {\n color: blue;\n}\n\n.report-button {\n background-color: #90CAFC;\n}\n\n.loading {\n background-color: white;\n}\n\n.all-partitions {\n background-color: whitesmoke;\n}\n\n.detail-button-header {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.detail-button-name {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.detail-button {\n background-color: whitesmoke;\n width: 10%;\n text-align: center;\n}\n\n.userName-header {\n text-align: center;\n background-color: white;\n width: 10%;\n}\n\n.userName-name {\n background-color: white;\n width: 10%;\n text-align: center;\n}\n\n.loginId-header {\n text-align: center;\n background-color: whitesmoke;\n width: 15%;\n}\n\n.loginId-name {\n background-color: whitesmoke;\n width: 10%;\n text-align: center;\n}\n\n.company-name-header {\n background-color: white;\n width: 10%;\n text-align: center;\n}\n\n.company-name {\n background-color: white;\n width: 15%;\n text-align: center;\n}\n\n.userType-name-header {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.userType-name {\n background-color: whitesmoke;\n width: 10%;\n text-align: center;\n}\n\n.userNameLocked {\n color: red;\n}\n\n.sitesList-name-header {\n background-color: white;\n width: 15%;\n text-align: center;\n}\n\n.sitesList-name {\n background-color: white;\n width: 15%;\n text-align: center;\n color: #5F58FF;\n text-decoration: underline;\n}\n\n.date {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.date-header {\n text-align: center;\n background-color: whitesmoke;\n width: 10%;\n}\n\n.button-header {\n text-align: center;\n background-color: ghostwhite;\n width: 10%;\n}\n\n.createBy-header,\n.createBy,\n.updateBy-header,\n.updateBy {\n background-color: white;\n width: 10%;\n text-align: center;\n}\n\n.button {\n text-align: center;\n background-color: ghostwhite;\n}\n\n.button .delete-button {\n background-color: lightcoral;\n}\n\n.lock-button {\n color: white;\n background-color: #448cca;\n}\n\n.wrap {\n display: flex;\n flex-wrap: wrap;\n}\n\n.card {\n padding-left: 10px;\n padding-top: 10px;\n}\n\n.pull-down {\n padding-top: 10px;\n}\n\n.user-management-component-all {\n flex-flow: column wrap;\n}\n\n.user-management-component-main {\n flex: 1;\n height: 94vh;\n}\n\n.main-area {\n height: 100%;\n overflow-y: auto;\n background-color: white;\n}\n\n.menu-list {\n height: 100%;\n}\n\n.searchOptionsRadio {\n padding-left: 20px;\n}\n\ntd.mat-mdc-cell:first-of-type, td.mat-mdc-footer-cell:first-of-type, th.mat-mdc-header-cell:first-of-type {\n padding-left: 0px;\n}\n\n.footer {\n width: 100%;\n bottom: 0; /*下に固定*/\n position: fixed;\n}\n\n.circle {\n height: 20px;\n width: 20px;\n background-color: rgb(45, 162, 16);\n border-radius: 10px;\n margin: auto;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-management/user-management.component.scss\",\"webpack://./src/variables.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACI,eAAA;EACA,oBAAA;EACA,gBAAA;EACA,6BAAA;EACA,sBAAA;EACA,eAAA;EACA,sBAAA;EACA,sBAAA;AACJ;;AAEA;;EAEI,yBCda;ADejB;;AAEA;EACI,mBAAA;EACA,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;AACJ;;AAEA;EACI,qBAAA;EACA,UAAA;EAEA,kFAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,WAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,uBAAA;AACJ;;AAEA;EACI,4BAAA;AACJ;;AAEA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AACJ;;AACA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAEJ;;AAAA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;AAGJ;;AAAA;EACI,kBAAA;EACA,uBAAA;EACA,UAAA;AAGJ;;AADA;EACI,uBAAA;EACA,UAAA;EACA,kBAAA;AAIJ;;AADA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAIJ;;AAFA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;AAKJ;;AAFA;EACI,uBAAA;EACA,UAAA;EACA,kBAAA;AAKJ;;AAFA;EACI,uBAAA;EACA,UAAA;EACA,kBAAA;AAKJ;;AAFA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAKJ;;AAHA;EACI,4BAAA;EACA,UAAA;EACA,kBAAA;AAMJ;;AAHA;EACI,UAAA;AAMJ;;AAHA;EACI,uBAAA;EACA,UAAA;EACA,kBAAA;AAMJ;;AAHA;EACI,uBAAA;EACA,UAAA;EACA,kBAAA;EACA,cAAA;EACA,0BAAA;AAMJ;;AAHA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAMJ;;AAHA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAMJ;;AAHA;EACI,kBAAA;EACA,4BAAA;EACA,UAAA;AAMJ;;AAJA;;;;EAII,uBAAA;EACA,UAAA;EACA,kBAAA;AAOJ;;AAJA;EACI,kBAAA;EACA,4BAAA;AAOJ;;AAJA;EACI,4BAAA;AAOJ;;AAJA;EACI,YAAA;EACA,yBAAA;AAOJ;;AAJA;EACI,aAAA;EACA,eAAA;AAOJ;;AAJA;EACI,kBAAA;EACA,iBAAA;AAOJ;;AAJA;EACI,iBAAA;AAOJ;;AAHA;EACI,sBAAA;AAMJ;;AAHA;EACI,OAAA;EACA,YAAA;AAMJ;;AAHA;EACI,YAAA;EACA,gBAAA;EACA,uBAAA;AAMJ;;AAHA;EACI,YAAA;AAMJ;;AAHA;EACI,kBAAA;AAMJ;;AAHA;EACI,iBAAA;AAMJ;;AAHA;EACI,WAAA;EAEA,SAAA,EAAA,OAAA;EACA,eAAA;AAKJ;;AAFA;EACI,YAAA;EACA,WAAA;EACA,kCAAA;EACA,mBAAA;EACA,YAAA;AAKJ\",\"sourcesContent\":[\"@import \\\"variables\\\";\\ntable{\\n max-width: 100%;\\n align-items: stretch;\\n box-shadow: none;\\n place-content: stretch center;\\n box-sizing: border-box;\\n flex-wrap: wrap;\\n flex-direction: column;\\n flex-flow: column wrap;\\n}\\n\\nheader,\\nfooter{\\n background-color: $main-backgroud;\\n}\\n\\n.searchBar{\\n outline-style: none ;\\n border: 1px solid #ccc;\\n border-radius: 8px;\\n padding: 12px 14px;\\n width: 350px;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n\\n.searchBar:focus{\\n border-color: #66afe9;\\n outline: 0;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)\\n}\\n\\n.page-title{\\n font-size: large;\\n}\\n\\n.sub-header{\\n background-color: #CCE2F5;\\n}\\n\\n.edit-mode{\\n color: blue;\\n}\\n\\n.report-button{\\n background-color: #90CAFC;\\n}\\n\\n.loading{\\n background-color:white;\\n}\\n\\n.all-partitions{\\n background-color: whitesmoke;\\n}\\n\\n.detail-button-header{\\n text-align: center;\\n background-color:whitesmoke;\\n width: 10%;\\n}\\n.detail-button-name{\\n text-align: center;\\n background-color:whitesmoke;\\n width: 10%;\\n}\\n.detail-button{\\n background-color:whitesmoke;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.userName-header{\\n text-align: center;\\n background-color:white;\\n width: 10%;\\n}\\n.userName-name{\\n background-color:white;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.loginId-header{\\n text-align: center;\\n background-color:whitesmoke;\\n width: 15%;\\n}\\n.loginId-name{\\n background-color:whitesmoke;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.company-name-header{\\n background-color: white;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.company-name{\\n background-color: white;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.userType-name-header{\\n text-align: center;\\n background-color:whitesmoke;\\n width: 10%;\\n}\\n.userType-name{\\n background-color:whitesmoke;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.userNameLocked{\\n color: red;\\n}\\n\\n.sitesList-name-header{\\n background-color: white;\\n width: 15%;\\n text-align: center;\\n}\\n\\n.sitesList-name{\\n background-color: white;\\n width: 15%;\\n text-align: center;\\n color: #5F58FF;\\n text-decoration: underline;\\n}\\n\\n.date{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 10%;\\n}\\n\\n.date-header{\\n text-align: center;\\n background-color: whitesmoke;\\n width: 10%;\\n}\\n\\n.button-header{\\n text-align: center;\\n background-color:ghostwhite;\\n width: 10%;\\n}\\n.createBy-header,\\n.createBy,\\n.updateBy-header,\\n.updateBy{\\n background-color: white;\\n width: 10%;\\n text-align: center;\\n}\\n\\n.button{\\n text-align: center;\\n background-color:ghostwhite;\\n}\\n\\n.button .delete-button{\\n background-color: lightcoral;\\n}\\n\\n.lock-button{\\n color: white;\\n background-color:#448cca;\\n}\\n\\n.wrap {\\n display: flex;\\n flex-wrap: wrap;\\n}\\n\\n.card {\\n padding-left: 10px;\\n padding-top: 10px;\\n}\\n\\n.pull-down {\\n padding-top: 10px\\n}\\n\\n// フッターを下に固定するための修正\\n.user-management-component-all {\\n flex-flow: column wrap;\\n}\\n\\n.user-management-component-main {\\n flex: 1;\\n height: 94vh;\\n}\\n\\n.main-area {\\n height: 100%;\\n overflow-y: auto;\\n background-color: white;\\n}\\n\\n.menu-list{\\n height: 100%;\\n}\\n\\n.searchOptionsRadio{\\n padding-left: 20px;\\n}\\n\\ntd.mat-mdc-cell:first-of-type, td.mat-mdc-footer-cell:first-of-type, th.mat-mdc-header-cell:first-of-type{\\n padding-left: 0px;\\n}\\n\\n.footer {\\n width: 100%;\\n // position: absolute;/*←絶対位置*/\\n bottom: 0; /*下に固定*/\\n position: fixed;\\n}\\n\\n.circle {\\n height: 20px;\\n width: 20px;\\n background-color: rgb(45, 162, 16);\\n border-radius: 10px;\\n margin: auto;\\n }\",\"$main-backgroud: #90CAFC;\\n// 本番(PRD):背景色を薄青(#90CAFC)にする\\n// STG:背景色を薄緑(#66cdaa)にする\\n// DEV:背景色を黄色(#ffd700)にする\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n width: 100%;\n align-items: center;\n height: 100%;\n background-color: white;\n box-shadow: none;\n}\n\n.headerTitleArea {\n align-self: center;\n}\n\n.footerArea {\n align-self: end;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-site-links-dialog/user-site-links-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,WAAA;EACA,mBAAA;EACA,YAAA;EACA,uBAAA;EACA,gBAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AACA;EACI,eAAA;AAEJ\",\"sourcesContent\":[\"table{\\n width: 100%;\\n align-items: center;\\n height: 100%;\\n background-color:white;\\n box-shadow: none;\\n}\\n\\n.headerTitleArea{\\n align-self: center;\\n}\\n.footerArea{\\n align-self: end;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `table {\n width: 100%;\n}\n\n.example-container {\n height: 480px;\n background-color: white;\n box-shadow: none;\n overflow: scroll;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/user-site-links-select-dialog/user-site-links-select-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,WAAA;AACJ;;AAEA;EACI,aAAA;EACA,uBAAA;EACA,gBAAA;EACA,gBAAA;AACJ\",\"sourcesContent\":[\"table{\\n width: 100%;\\n\\n}\\n.example-container {\\n height: 480px;\\n background-color:white;\\n box-shadow: none;\\n overflow: scroll;\\n }\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `h1 {\n text-align: center;\n}\n\nh3 {\n text-align: center;\n}\n\nh4 {\n text-align: center;\n}\n\nth, td {\n border: solid 1px;\n padding: 10px;\n text-align: center;\n}\n\ntable {\n border-collapse: collapse;\n}\n\n.blank-value {\n color: lightgrey;\n}\n\n.this-month {\n background-color: antiquewhite;\n}\n\n.alert-value {\n color: red;\n}\n\n.alert-value-blue {\n color: blue;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/value-compare-dialog/value-compare-dialog.component.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,kBAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AAEA;EACI,iBAAA;EACA,aAAA;EACA,kBAAA;AACJ;;AAEA;EACI,yBAAA;AACJ;;AAEA;EACI,gBAAA;AACJ;;AAEA;EACI,8BAAA;AACJ;;AAGA;EACI,UAAA;AAAJ;;AAGA;EACI,WAAA;AAAJ\",\"sourcesContent\":[\"h1{\\n text-align: center;\\n}\\n\\nh3{\\n text-align: center;\\n}\\n\\nh4{\\n text-align: center;\\n}\\n\\nth,td {\\n border: solid 1px;\\n padding: 10px;\\n text-align: center;\\n}\\n\\ntable {\\n border-collapse: collapse;\\n}\\n\\n.blank-value{\\n color:lightgrey;\\n}\\n\\n.this-month {\\n background-color: antiquewhite;\\n}\\n\\n\\n.alert-value{\\n color: red;\\n}\\n\\n.alert-value-blue{\\n color: blue;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","/* (ignored) */"],"names":["CommonModule","NgModule","RouterModule","AuthGuard","CompanyManagementComponent","FloorManagementListComponent","LoginComponent","MasterEditComponent","MeterCardListComponent","MeterManagementListComponent","MeterReportComponent","MeterTypeManagementListComponent","MeterUnitComponent","PartitionManagementListComponent","SiteManagementComponent","SiteSelectComponent","UserManagementComponent","routes","path","redirectTo","pathMatch","component","canActivate","AppRoutingModule","__decorate","imports","forRoot","exports","declarations","Component","AuthService","Const","AppComponent","constructor","auth","ngOnInit","subscription","isAuthenticated","subscribe","result","loggedIn","ngOnDestroy","unsubscribe","onClickLogout","release","signOut","_","selector","template","__NG_CLI_RESOURCE__0","MatButtonModule","MatCardModule","MatCheckboxModule","MatNativeDateModule","MatDatepickerModule","MatInputModule","MatProgressSpinnerModule","MatRadioModule","BrowserModule","BrowserAnimationsModule","OverlayModule","HttpClientModule","FlexLayoutModule","FormsModule","ReactiveFormsModule","MatDialogModule","MatIconModule","MatListModule","MatSelectModule","MatSidenavModule","MatSlideToggleModule","MatTableModule","MatTabsModule","MatToolbarModule","QRCodeModule","NgxPrintModule","CardComponent","CommonConfirmDialogComponent","CompanyAddEditDialogComponent","CompanyDeleteDialogComponent","ConfirmAlertDialogComponent","FloorAddDialogComponent","FloorDeleteDialogComponent","FloorEditDialogComponent","FooterConfirmDialogComponent","FooterNumberingExplainDialogComponent","FooterComponent","LogOutButtonComponent","MessageDialogComponent","MeterAddDialogComponent","MeterConfirmDialogComponent","MeterCsvBatchDialogComponent","MeterDeleteDialogComponent","MeterDetailDialogComponent","MeterEditDialogComponent","MeterExprationNavigate","MeterExpirationWarningDialogComponent","MeterQrcodeDialogComponent","MeterReplaceDialogComponent","MeterTypeAddDialogComponent","MeterTypeEditDialogComponent","MeterUnitAddDialogComponent","MeterUnitEditDialogComponent","PartitionAddDialogComponent","PartitionDeleteDialogComponent","PartitionDetailDialogComponent","PartitionEditDialogComponent","ReportConfirmDialogComponent","ReportListDialogComponent","SideNavComponent","SiteAddOrEditDialogComponent","SiteCompleteDialogComponent","SiteDeleteDialogComponent","SiteUserSelectionDialogComponent","TenantConfirmDialogComponent","TenantDeleteDialogComponent","TenantEditDialogComponent","TenantMakeDialogComponent","UserAddDialogComponent","UserChangePasswordDialogComponent","UserCompleteDialogComponent","UserConfirmDialogComponent","UserDeleteDialogComponent","UserDetailDialogComponent","UserEditDialogComponent","UserSiteLinksDialogComponent","UserSiteLinksSelectDialogComponent","ValueCompareDialogComponent","ValueCorrectDialogComponent","ForbiddenCharactersDirective","AppModule","providers","bootstrap","Injectable","Router","tap","router","next","state","pipe","navigate","BehaviorSubject","fromPromise","map","catchError","of","Amplify","Auth","HttpClient","HttpHeaders","environment","httpClient","configure","amplify","signIn","login_id","password","currentAuthenticatedUser","error","getIdToken","currentSession","idToken","getJwtToken","loginLogging","localStorage","clear","login_type","apiURL","apiUrl","get","headers","Authorization","response","animate","style","transition","trigger","formatDate","HttpParams","EventEmitter","Inject","Input","LOCALE_ID","Output","UntypedFormControl","UntypedFormGroup","Validators","MatDialog","MessageInfo","ValueConfirmation","MeterInfo","BigNumber","detected_value","formControl","flagImgUrl","meterData","is_reviewed","locale","dialog","dialogClose","myAngularxQrCode","undefined","required","kenshinValueCheck","keepValue","last_month_value_confirmation","keepLabel","label","alert","confirmedValueFormat","val","point","formatedNum","ten","Math","pow","tmpNum","times","floor","Number","endRes","dividedBy","toString","changeDateFormat","date","changedDate","Date","toLocaleString","changeLocaleDateFormat","newD","setHours","getHours","yyyy","String","getFullYear","mm","getMonth","padStart","dd","getDate","hh","ms","getMinutes","s","getSeconds","onConfirmBtn","dateData","thisMonth","doPostAction","onFlagBtn","meter_id","flag","params","set","postValueConfirmationUrl","patch","doGetOneMeterData","id","selectedMonth","err","code","onAnalysisImageBtn","value_detections","imgUrl","picture_url","fetch","mode","Pragma","Expires","then","blob","File","file","reader","FileReader","base64Output","readAsDataURL","onload","dataURI","replace","body","img_b64","post","res","value","decimal_point_position","onConfirmBtnNoImage","decimal","valueDetections","messageInfo","dialogRef","open","width","data","doPostActionNoImage","confirmedVal","loginUser","setValue","confirmed_value","value_confirmation","newValueConfirmation","created_at","usingPlace","afterClosed","emit","detectedVal","tenantId","pictureURL","pictureDate","length","picture_date","postValueConfirmationNoImageUrl","checkLimit","indexOf","temp","split","fixedNum","toFixed","parseFloat","meterId","checkedMonth","getOneMeterDataUrl","meter","onClickMeterQrcode","partName","tenantName","meterinfo","name","makeResult","args","animations","transform","c","REGPATTERN","test","valid","MAT_DIALOG_DATA","MatDialogRef","MeterConfirmDialogInfo","dialogInfo","onClickYes","close","onClickNo","Directive","ElementRef","HostListener","Renderer2","el","renderer","forbiddenChars","onInput","event","input","target","inputValue","initialLength","forEach","char","join","dispatchEvent","Event","confirmDialog","isEditMode","companyName","company","onClickConfirm","navigator","onLine","updateCompany","addCompany","postSiteUrl","url","checkIfFormDirty","checkIfFormReady","comfirmButtonDisable","CompanyModel","meterConfirmDialogRef","ActivatedRoute","Subject","LoginUser","LoginUserSite","LoginUserSiteCompany","route","searchKeyString","searchKeyChanged","mjitUserFlag","adminUserFlag","setItem","companyData","debounceTime","str","filterResult","doGetLoginUser","mjitUser","adminUser","getCompanyData","getCompanyDataFinished","filterdCompanyData","jsonStr","JSON","stringify","jsonObj","parse","companies","displayedColumns","onClickAddCompany","dialogResult","onClickCompanyEdit","componentInstance","onClickCompanyDelete","getAllSiteData","siteInfo","splice","site","sites","siteItem","address","updated_at","company_id","company_name","push","filter","item","includes","search","text","getLoginUserUrl","login_user","user_type","site_id","getItem","TenantConfirmDialogInfo","CompareDialogData","partition","info","meterType","thisMonthUsed","lastMonthUsed","rateOfChange","alertFlag","CorrectDialogData","canEdit","CsvSiteInfo","CsvUserInfo","ExistingTenant","FloorConfirmDialogInfo","title","message","GetFloorsResponse","GetInSiteValueDetectionsResponse","GetLoginUserResponse","no","isExpireMeterFlag","number_of_digits","max_value","min_value","max_angle","min_angle","initial_value","closed_value","errMsg","MeterType","GetPartitionsResponse","SiteInfo","GetUserWithSitesLinksInfo","lockStatus","UserSite","idName","LastMonthValueConfirmation","confirmation_channel","place","Meter","unit","PartitionConfirmDialogInfo","ReportCard","ReportListInfo","month","fixedTime","lastUpdate","confirmedReportUser","isConfirmedAll","ReportRow","lastMonth","used","SelectedPartition","partitionId","partitionName","meterLabels","SiteConfirmDialogInfo","TenantRow","ToTenantMakeObject","allTenantList","tenantData","Unit","UserConfirmDialogInfo","ValueDetection","tenant_id","floorConfirmDialog","floorsInfo","postFloorUrl","floorName","floorNumber","hasNameChanged","i","changeValue","errorFloorNameMsg","errorFloorNumberMsg","floorInfo","floorConfirmDialogRef","postTenantUrl","patchFloorUrl","floorDialog","selectedSite","userTypeSysAdmin","userTypeAdmin","userTypeUser","siteArray","getFloorsResponse","doSetValue","getFloorsUrl","doGetFloors","getFloorFinished","disable","NumberingFlag","floors","enable","doChangeSite","onClickAddFloor","onClickFloorEdit","onClickFloorDelete","onNumbering","patchNumberingFloorUrl","successMessageInfo","explainDialog","numberingEvent","show","onNumberingEventClick","ngOnChanges","displayFlag","onExplain","UntypedFormBuilder","AlertMessage","formBuilder","isLoaded","API_APP_CONSTS_URI","loginForm","group","userId","checkUserId","setInfoMessage","onSubmitLogin","NET_ERROR_MESSAGE","doGetToken","updateUserLockStatus","LOGIN_FAILED_MESSAGE","console","UNEXPECTED_ERROR_MESSAGE","reset","userID","apiKey","isLocked","account_lock","lock_status","ACCOUNT_LOCKED_MESSAGE","status","LOGIN_ERROR_MESSAGE","doAppConst","SESSION_BREAK_MESSAGE","getAppConstUrl","apiEnv","maintenanceCheck","isMaintenance","maintenanceText","maintenanceMessage","NOTFOUND_ACCOUNT_INFO_MESSAGE","NOTFOUND_SITE_INFO_MESSAGE","log","infoMessage","count","tenantEditDialog","allTenantsList","getTenantFinished","monthArray","showMakeButtonFlag","makeMonthArray","doGetAllTenantList","endMonth","a","setMonth","formatedMonth","monthStringFormat","yearMonth","substr","doChangeMonth","doGetTenantData","onClickTenantEdit","tenantRow","onClickTenantDelete","onClickTenantMake","allTenantObject","getTenantDataUrl","reportPartitions","partitions","makeRowData","partitionsTenants","partitions_tenants","tenant_log","tenantLog","tenant","note","tenant_created_at","tenant_updated_at","updated_by","removeDuplicates","list","prop","seen","Set","obj","has","add","partitionArray","reverse","partitionsTenant","initialValue","closedValue","contracted_at","contractedAt","cancelled_at","cancelledAt","is_card_display","isCardDisplay","updatedAt","timeStringFormat","time","onClickClose","DateAdapter","meterConfirmDialog","dateAdapter","partitionList","selectedTenantName","selectedPartition","selectedTenant","selectedType","isUseAngle","isShowActualValue","isMakingNewMeterInfo","hasError","isFormReady","selectedMeterName","meterValueInterval","isExistNumber","isValidNumber","setLocale","tenantList","meterTypeList","meterUnitList","partitionTenants","meterList","metersInfo","meterLabelList","meterIsReViewFlag","meterAIReadFlag","errorMessage","minDate","setMeterNameList","loadMeterTypes","metertypes","loadMeterUnit","units","onChangePartition","currentPartition","tenants","onChangeMeterType","useAngleTypeId","type","minValue","tmp1","numberOfDigit","decimalPointPosition","tmp","maxValue","onChangeMeterLabel","meterLabel","trim","onChangeSubMeterName","subMeterName","changeMeterName","meterNameList","meterName","checkValue","errorMessageInfo","meterNumber","meterInitialValue","meterExpirationDate","numberOfDigitchange","setDecimalInterval","decimalPointPositionchange","checkNumber","minDateCheck","today","strToday","toISOString","initialValuechange","diff","interval","checkIfReadyToGo","MeterCardListConfirmedSevice","MeterCardListPendingService","MeterCardListCommonService","meterCardListConfirmedSevice","meterCardListPendingService","meterCardListCommonService","currentFloorName","floorsNameIdMap","Map","expMeterData","confirmedReportFlg","handleisReviewedChanged","find","key","reviewed","reportList","getUserFinished","getValueDetectionFinished","bookMarkFlag","loadMeterData","createCardDataJob","_this","_asyncToGenerator","doGetReportList","nowFloorId","reportCards","_this2","getReportList","lastMonthConfirmDate","getLastMonthConfirmDate","judgeGetReportData","createPartitionsArrayForReportData","getReportConfirmedDataResponse","_this3","toPromise","doClickTab","MatTagChangevent","tab","textLabel","newFloorId","reportListData","report_list","oneReportData","reportMonth","report_month","fixedAt","confirmed_report_created_at","reportInfo","report","onClickReport","onClickReport_bookmark","onClickMasterEdit","onClickCardList","jsonFloors","getPartitionTenantData","index","meters","meterObj","meterModel","floor_id","floor_name","expiration_date","day","dayOfNextYear","expiration","expMeterModel","sort","n1","n2","shouldCreateCardData","apiToken","siteId","lastMonthDate","substring","lastMonthReportInfo","element","getValueDetections","b","some","detection","apiResponse","floorId","confirmed_report","currentFloor","createReportCardRow","row","partition_id","partition_name","tenant_name","lastMonthValueConfirmation","getLastMonthValueConfirmation","lastMonthValueDetections","last_month_value_detections","reportSite","getReportData","judgeClosedValue","isOldTenant","currentTenantId","currentTenantIndex","findIndex","hasOldTenant","getOldTenantId","getMeterValueAtTenantRegistration","initialValues","initialTenantMeterInfo","meterValue","tenantInitialValue","oldTenantId","oldTenantValue","closedValues","closedTenantMeterInfo","importResult","hasAnyUpdate","partitionTenantList","partitionTenant","is_reread","maxValueDisplay","round","minValueDisplay","meter_type_id","hasLabelChanged","hasNumberChanged","hasPartionChanged","hasMeterTypeChanged","hasDigitNoChanged","hasDecimalPointPositionChanged","hasReViewChanged","hasAIReadChanged","hasExpirationDateChanged","hasAnyChanged","allMeterData","expMetersInfo","getToken","ngAfterContentChecked","onClickMeterExpirationWarning","Overlay","ComponentPortal","MatSpinner","Encoding","Papa","overlay","isMeterTypeReady","isMeterUnitReady","isPartitionTenantReady","isCreateMeterReady","searchOptionKey","searchOptionsArray","csvMeterData","csvAddMeterData","csvUpdateMeterData","csvErrorMeterData","csvDeleteMeterData","tsvFlg","csvImportAccountLockError","csvImportUnexpectedError","overlayRef","create","hasBackdrop","positionStrategy","position","global","centerHorizontally","centerVertically","partitionsArray","selectedIndex","getLoginUserResponse","getValueDetectionsResponse","isMeterDataExsit","isLoadingData","currentFloorMeterData","countOfPartitions","filtredMeterData","meterTypeData","unitData","onClickAddMeter","onClickMeterEdit","onClickMeterReplace","onClickMeterDelete","onClickDetailMeter","onClickExportMeterCSV","companyID","csvData","rowData","unit_id","analysis_flg","rowDataFormated","strArray","stringToCode","sjisArray","convert","uint8Array","Uint8Array","Blob","link","document","createElement","href","window","URL","createObjectURL","siteName","fileName","download","click","onClickImportMeterCSV","querySelector","onChangeOption","changeListener","files","readAsText","_ref","csv","results","meta","delimiter","messageContents","rows","handleCSVStringToMeterArray","_x","apply","arguments","csvString","attach","splitString","headerRowTitles","detach","strArr","buildMeterFromStringArray","checkMeterInfoIsValid","splitToArray","Boolean","checkValueIsInvalid","checkValueIsInvalidMeterName","isNaN","match","csvUpdateMeterDataNoError","csvMeter","updateMeterData","originMeter","isSameMeter","hasMeterChanged","unique","waitForDeletion","importedMeter","beginToUploadCSVMeter","addMeters","updateMeters","deleteMeters","updateSuccessCount","statusCode","addSuccessCount","deleteSuccessCount","successCount","failCount","resultString","addResults","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_asyncIterator","_step","done","now","addCSVMeter","return","_this4","dupdateResults","_iteratorAbruptCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","updateCSVMeter","_this5","deleteResults","_iteratorAbruptCompletion3","_didIteratorError3","_iteratorError3","_iterator3","_step3","deleteCSVMeter","_this6","Promise","resolve","responseMsg","_this7","_this8","arr","patchNumberingMeterUrl","typeExtract","nameExtract","PRINT_STYLES","printDialog","printStyles","qrcodeTitle","table","th","td","disabled","oldMeterValueInterval","oldMaxValue","oldMinValue","oldDecimalPointPosition","setOldDecimalInterval","meterClosedValue","closedValuechange","isConfirmedDataSorce","reportData","reportDataBackUp","typeArray","getReportDataFinished","isConfirmedReport","doChangeType","option","getReportListUrl","confirmedUser","editedAt","value_confirmation_created_at","value_confirmation_user_name","createJobBatch","checkAlreadyConfirmed","judgeAndRunCreateJob","isAlreadyConfirmed","isPending","doGetReportData","getConfirmedReportData","isConfirmed","createConfirmedReportData","confirmedReportFloors","getValueConfirmationForConfirmed","getLastMonthValueConfirmationForConfirmed","calcUsedValue","two_months_before_value_detections","twoMonthsBeforeValueDetection","lastUsed","judgingAlertValue","checkAndPushToReportData","report_type","parititon","createReportDataAll","createReportRow","rowsWithChange","createReportRowWithChanged","writeMetersDataToRow","reportType","is_deleted","createTenantReplaceReport","isLamp","isPower","isWaterService","isGus","valueAtTenantRegistration","getMeterValueAtTenantClosed","maxVal","lastValueDetection","valueDetection","onClickReportConfirm","postConfirmedReportUrl","messageDialogRef","onClickReportList","onClickThisMonth","correctDialogData","onClickUsed","rateOfChangeStr","tmUsed","lmUsed","rateOfChangeTemp","minus","rateChangeStr","compareDialogData","onClickCSV","tmpReportData","bom","rate","Infinity","rounding","zero","infinity","returnNumber","roundingUsed","usedValueFormat","lastMonthValue","thisMonthValue","decimalPoint","tempThisMonth","tempLastMonth","tempMaxV","maxV","usedValue","plus","endUsedValue","twoMonthsBeforeValue","judgementValue","diffPer","maxLengthMeterTypeName","meterTypeName","token","errorMeterTypeNameMsg","MeterTypeService","typeService","meterTypeDialog","doGetMeterTypeData","filterdMeterTypeData","getMeterTypeFinished","onClickAddMeterType","onClickMeterTypeEdit","onClickMeterTypeDelete","contentMsg","maxLengthMeterUnitName","meterUnitName","errorMeterUnitNameMsg","meterUnitDialog","meterUnitData","getMeterUnitFinished","onGetMeterUnitData","filteredMeterUnitData","left","right","onClickAddMeterUnit","onClickUpdateMeterUnit","onClickDeleteMeterUnit","Partition","partitionDialog","getPartitionsResponse","getPartitionFinished","partitionsInfo","getPartitionsFloorUrl","doGetPartitionsFloor","getPartitionsResult","partitionNumber","created_by","onClickPartitionDetail","partitionInfo","onClickForPartitionCreate","onClickPartitionEdit","onClickPartitionDelete","patchNumberingPartitionUrl","partitionConfirmDialog","selectedFloor","partitioReportTypeFlag","partitioIsCardDisplayFlag","postPartitionUrl","changePartitionValue","errorPartitionNameMsg","errorPartitionNumberMsg","patchPartitionUrl","onClickReportButton","baseURL","getAllMeterType","getHeader","x","handleError","addNewMeterType","updateMeterType","deleteMeterType","httpOptions","getPatchHeader","operation","providedIn","showDisplayForMJIT","showDisplayForAdmin","currentIndex","displayMjitFlag","displayAdminFlag","onClickPartitionManagement","onClickSiteEdit","onClickFloorManagement","onClickMeterManagement","onClickMeterTypeManagement","onClickMeterUnitManagement","onClickUseranagement","isEdit","selectedCompany","userSelectionTitle","userSiteData","siteUserData","userSelectionData","isSiteUserDataReady","usingCompanyUserMap","originCompanyUserMap","waitForAddUser","waitForDeleteUser","companyList","getAllSitesWithUsers","siteModel","siteAddress","makeCompanyUserMapData","doChangeCompany","userSelections","allUserData","siteUserSelection","siteWithUserArray","users","user","is_selected","siteUser","deepCloneMap","selectedCompanyID","checkForUserToSiteData","updateSite","addSite","hasUserToSiteChanged","updateUserToSiteData","onClickSelectUser","userDialog","newUserSelection","waitForAdd","waitForDelete","currentUserSelections","originUserSelections","currentUser","originUser","addNewUserToSite","deleteUserFromSite","addStatusResults","deleteStatusResults","addErrorMsg","isAddSuccess","deleteErrorMsg","isDeleteSuccess","postUserSiteLinksUrl","postUserSiteLinksParams","isUserSelectionDisable","isDisabled","isFormReadyToGo","siteNameReady","siteAddressReady","siteCompanyReady","isFormChanged","hasAddressChanged","hasCompanyChanged","hasUserChaned","confirmButtonDisabled","deleteSiteUrl","createdAt","createdBy","updatedBy","UserForSiteModel","SiteWithUserInfo","UserWithSiteInfo","filtredsiteData","sitesData","siteData","userData","companiesData","isCompanyDataReady","isUserDataReady","csvSiteData","csvAllSiteData","csvAddPreSiteData","csvAddSiteData","csvAddSiteUserLinksData","csvUpdateSiteForSiteData","csvUpdatePreSiteForUserData","csvUpdateSiteForUserData","csvErrorSiteData","csvDeletePreSiteData","csvDeleteDupSiteData","csvDeleteSiteData","updateResults","updateUserSiteLinksResults","loadSiteData","companyId","loadCompany","loadSiteUserData","companyArray","Array","isArray","loadUserData","user_type_name","onClickAddSite","onClickEditSite","onClickDeleteSite","onClickExportSiteCSV","onClickImportSiteCSV","siteConfirmDialogRef","handleCSVStringToUserArray","addFailedCount","addUserSiteLinksFailedCount","updateFailedCount","csvSiteInfo","userIdList","checkAddCSVData","checkUpdateCSVData","checkAddSiteUserLinks","self","e","checkUpdateSiteUserLinks","checkDeleteSiteUserLinks","dbSiteIdList","csvSiteIdList","csvSite","beginToUploadCSVSite","isCompnay","csvSameSiteData","siteInfoItem","sameSiteInfoData","userList","sameSiteData","sameSiteDataItem","csvUpdateSiteForUserDataItem","dbSiteData","updateFlg","addSites","updateSites","updateUserSiteLinks","updateUserSiteLinksSuccessCount","updateUserSiteLinksFailedCount","deleteSites","deleteFailedCount","createSites","_ref2","_ref3","jsonSiteStr","jsonSiteObj","postUserSitelinks","_x4","_x2","_x3","posthUserUrl","updateCSVSite","updateUserSitelinks","_ref4","_x5","_this9","dbUserSiteList","userItem","updateDelteList","updateAddList","updateAddUserId","updateDelteUserId","patchUserUrl","updateDelteParams","_this10","_iteratorAbruptCompletion4","_didIteratorError4","_iteratorError4","_iterator4","_step4","deleteCSVSite","_this11","patchSiteUrl","closeAll","onClick","originUserList","disableClose","deepCloneUserArray","isAllSelected","allSelectedCount","toggleAllRows","toggleValue","isAllNotSelected","confirmButtonEnabled","tenantConfirmDialog","fb","items","array","isClosedValue","isMeter","setDate","closedValueSetup","checkClosedValue","optionForm","itemsTemp","setControl","getMeterLabelList","oldMeterIds","tenantConfirmDialogRef","patchCancellTenantUrl","onClickDeleteCancell","isInitialValue","editedNote","editedTenantName","addForm","isCardDisplayBoolean","changeIsCardDisplayFormat","changeIsCardDisplayFormatNum","checkInitialValue","removeForm","idx","removeAt","onClickConfirmButton","doPatchTenantName","doPatchTenantNote","doPatchIsCardDisplayFlag","patchNoteToTenantsUrl","patchNameToTenantsUrl","patchIsCardDisplayFlagUrl","isMakingNewTenant","isExistTenantNow","notExistTenantPartition","canChooseDate","existingTenant","getPartitionsList","formSetup","initialValueSetup","calenderRegulate","checkExistTenantNow","lastCancellDate","getLastCancellDate","tenantRowsSamePartition","contractedDate","tenantNote","CheckSiteInfo","checked","userConfirmDialog","userTypeList","viewValue","selectSiteInfoList","siteInfoList","checkSiteInfoList","selectedCompnay","selectedUserType","selectSite","siteCompnayLinks","changeCompanySelection","onClickSelectSite","companyItem","loginId","confirmPassword","userName","createCognitoUser","loginIdPolicy","RegExp","passwordPolicy","signUp","username","postActivateCognitoUserUrl","aws_user_pools_id","createUser","cognito","postUserUrl","UserAttributes","Value","jsonUserStr","jsonUserObj","onClickChangePassword","changePassword","userConfirmDialogRef","deleteUser","cognitoParams","responseb","isReadySiteData","userSiteLinksData","isReadyUserSiteLinksData","isReadyCompanyData","isUserLocked","userType","loadUserSiteLinks","checkSiteInfoItem","loadSite","user_site_links","dataItem","onClickUnlockUser","userTypeMessageInfo","userTypeConfirmDialog","userTypeConfirmDialogResult","selectedList","selectSiteInfoListItem","updateAddItem","updateDelteItem","csvUserData","csvAllUserData","csvAddUserData","csvUpdateUserData","csvErrorUserData","csvDeleteUserData","userInfo","userTypeName","Error","csvUserItem","siteIdList","filtredUserData","getSiteInfo","onClickDetailUser","onClickAddUser","onClickUserEdit","onClickUserDelete","onClickExportUserCSV","onClickImportUserCSV","checkHeaderTitle","csvuserInfo","slice","csvSiteId","difference","beginToUploadCSVUser","isUserData","dbuserData","addUsers","updateUsers","deleteUsers","jsonUserSitelinks","updateCSVUser","_ref5","resultUpdateUserSitelinks","_x6","_ref6","_x7","updateAddSiteId","updateDelteSiteId","deleteCSVUser","_this12","SelectionModel","sitesWithLinksList","selection","checkSelectSite","checkSiteInfo","toggle","selected","numSelected","numRows","masterToggle","select","production","aws_cognito_region","aws_user_pools_web_client_id","enableProdMode","platformBrowserDynamic","bootstrapModule"],"sourceRoot":"webpack:///","x_google_ignoreList":[183]}