import { Component, inject, OnInit, OnDestroy } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTabsModule } from '@angular/material/tabs'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { MatMenuModule } from '@angular/material/menu'; import { MatBadgeModule } from '@angular/material/badge'; import { MatDividerModule } from '@angular/material/divider'; import { Subscription } from 'rxjs'; import { AuthService } from '../../services/auth.service'; import { ActivityLogComponent } from '../activity-log/activity-log.component'; import { ApiService } from '../../services/api.service'; import { EnvironmentService } from '../../services/environment.service'; @Component({ selector: 'app-main', standalone: true, imports: [ CommonModule, RouterLink, RouterLinkActive, RouterOutlet, MatToolbarModule, MatTabsModule, MatButtonModule, MatIconModule, MatMenuModule, MatBadgeModule, MatDividerModule, ActivityLogComponent ], template: `
person {{ username }} @if (showActivityLog) {
}
`, styles: [` .main-layout { height: 100vh; display: flex; flex-direction: column; background-color: #fafafa; } .header-toolbar { box-shadow: 0 2px 4px rgba(0,0,0,0.1); z-index: 100; position: relative; .logo { display: flex; align-items: center; gap: 8px; font-size: 20px; font-weight: 500; mat-icon { font-size: 28px; width: 28px; height: 28px; } } .spacer { flex: 1 1 auto; } .header-actions { display: flex; align-items: center; gap: 8px; position: relative; .username { display: flex; align-items: center; gap: 4px; margin-right: 16px; mat-icon { font-size: 20px; width: 20px; height: 20px; } } .activity-log-wrapper { position: absolute; top: 56px; right: 0; z-index: 1000; } } } .nav-tabs { background-color: white; box-shadow: 0 2px 4px rgba(0,0,0,0.08); ::ng-deep { .mat-mdc-tab-link { min-width: 120px; opacity: 0.8; mat-icon { margin-right: 8px; } &.mdc-tab--active { opacity: 1; } } } } .content { flex: 1; overflow-y: auto; padding: 24px; } `] }) export class MainComponent implements OnInit, OnDestroy { private authService = inject(AuthService); private apiService = inject(ApiService); private environmentService = inject(EnvironmentService); username = this.authService.getUsername() || ''; showActivityLog = false; isGPTMode = false; private subscription?: Subscription; ngOnInit() { // Environment değişikliklerini dinle this.subscription = this.environmentService.environment$.subscribe(env => { if (env) { this.isGPTMode = env.work_mode?.startsWith('gpt4o') || false; } }); // Environment bilgisini al this.loadEnvironment(); } ngOnDestroy() { this.subscription?.unsubscribe(); } private loadEnvironment() { this.apiService.getEnvironment().subscribe({ next: (env) => { this.environmentService.updateEnvironment(env); }, error: (err) => { console.error('Failed to load environment:', err); } }); } logout() { this.authService.logout(); } toggleActivityLog() { this.showActivityLog = !this.showActivityLog; } }