diff --git a/CHANGELOG.md b/CHANGELOG.md index a075071e..feb863ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Option for the shutdown sequence to only trigger for being alone in your instance while the sleep mode is enabled - Option for audio volume automations to apply on start - Support for VRChat parameters in OSC scripts that have been automatically renamed by VRCFury or Modular Avatar +- Event log filters - Workaround for VRChat not automatically reloading your avatar after all trackers have been turned off - German language support (thanks to community contributions by [Nicer Dicer](https://github.com/XNicerDicerX) and [Aron](https://github.com/imaron85)) - Exposed HMD activity level over MQTT diff --git a/src-core/Cargo.lock b/src-core/Cargo.lock index 437b263f..a9039ca7 100644 --- a/src-core/Cargo.lock +++ b/src-core/Cargo.lock @@ -2431,15 +2431,15 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http 1.1.0", "indexmap 2.2.6", "slab", @@ -2582,9 +2582,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -2592,14 +2592,14 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -2665,16 +2665,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.4", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa 1.0.11", @@ -2725,16 +2725,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.2.0", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite", "socket2 0.5.6", "tokio", @@ -4090,7 +4090,7 @@ version = "0.2.0" source = "git+https://github.com/Raphiiko/oyasumivr_oscquery.git?rev=2949a3f#2949a3f1147208448dd8f783dc4baa722202fcd4" dependencies = [ "http-body-util", - "hyper 1.2.0", + "hyper 1.4.1", "hyper-util", "lazy_static", "local-ip-address", @@ -6624,7 +6624,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", diff --git a/src-ui/app/app.module.ts b/src-ui/app/app.module.ts index bf30b39c..813ee0e8 100644 --- a/src-ui/app/app.module.ts +++ b/src-ui/app/app.module.ts @@ -72,7 +72,7 @@ import { SliderComponent } from './components/slider/slider.component'; import { EventLogService } from './services/event-log.service'; import { debug, error, info, warn } from 'tauri-plugin-log-api'; import { EventLogComponent } from './components/event-log/event-log.component'; -import { EventLogEntryComponent } from './components/event-log-entry/event-log-entry.component'; +import { EventLogEntryComponent } from './components/event-log/event-log-entry/event-log-entry.component'; import { LocalizedDatePipe } from './pipes/localized-date.pipe'; import localeEN from '@angular/common/locales/en'; import localeFR from '@angular/common/locales/fr'; @@ -233,6 +233,7 @@ import { BrightnessAdvancedModeToggleComponent } from './components/brightness-a import { FBTAvatarReloadWorkaroundService } from './services/workarounds/f-b-t-avatar-reload-workaround.service'; import { AvatarContextService } from './services/avatar-context.service'; import { LighthouseV1IdWizardModalComponent } from './components/lighthouse-v1-id-wizard-modal/lighthouse-v1-id-wizard-modal.component'; +import { EventLogFilterDialogComponent } from './components/event-log/event-log-filter-dialog/event-log-filter-dialog.component'; [ localeEN, @@ -377,6 +378,7 @@ export function createTranslateLoader(http: HttpClient) { SettingsBrightnessCctViewComponent, BrightnessAdvancedModeToggleComponent, LighthouseV1IdWizardModalComponent, + EventLogFilterDialogComponent, ], exports: [SelectBoxComponent], imports: [ diff --git a/src-ui/app/components/event-log-entry/entry-parsers/accepted-invite-request.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/accepted-invite-request.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/accepted-invite-request.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/accepted-invite-request.ts index f9677f36..78713c45 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/accepted-invite-request.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/accepted-invite-request.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogAcceptedInviteRequest, EventLogType } from '../../../models/event-log-entry'; +import { EventLogAcceptedInviteRequest, EventLogType } from '../../../../models/event-log-entry'; export class EventLogAcceptedInviteRequestEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/bsb-fan-speed-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/bsb-fan-speed-changed.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/bsb-fan-speed-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/bsb-fan-speed-changed.ts index 483811a6..0c7de77a 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/bsb-fan-speed-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/bsb-fan-speed-changed.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogBSBFanSpeedChanged, EventLogType } from '../../../models/event-log-entry'; +import { EventLogBSBFanSpeedChanged, EventLogType } from '../../../../models/event-log-entry'; export class EventLogBSBFanSpeedChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/bsb-led-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/bsb-led-changed.ts similarity index 89% rename from src-ui/app/components/event-log-entry/entry-parsers/bsb-led-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/bsb-led-changed.ts index ba09df3a..538899ac 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/bsb-led-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/bsb-led-changed.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogBSBLedChanged, EventLogType } from '../../../models/event-log-entry'; +import { EventLogBSBLedChanged, EventLogType } from '../../../../models/event-log-entry'; export class EventLogBSBLedChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/cct-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/cct-changed.ts similarity index 93% rename from src-ui/app/components/event-log-entry/entry-parsers/cct-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/cct-changed.ts index bd3c50db..98fa78ff 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/cct-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/cct-changed.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogCCTChanged, EventLogType } from '../../../models/event-log-entry'; +import { EventLogCCTChanged, EventLogType } from '../../../../models/event-log-entry'; import { getCSSColorForCCT } from 'src-shared-ts/src/cct-utils'; export class EventLogCCTChangedEntryParser extends EventLogEntryParser { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/changed-audio-device-volume.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-audio-device-volume.ts similarity index 95% rename from src-ui/app/components/event-log-entry/entry-parsers/changed-audio-device-volume.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-audio-device-volume.ts index ab29a4e6..a97cb167 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/changed-audio-device-volume.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-audio-device-volume.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogChangedAudioDeviceVolume, EventLogType } from '../../../models/event-log-entry'; +import { EventLogChangedAudioDeviceVolume, EventLogType } from '../../../../models/event-log-entry'; export class EventLogChangedAudioDeviceVolumeEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/changed-system-mic-controller-button-behavior.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-system-mic-controller-button-behavior.ts similarity index 94% rename from src-ui/app/components/event-log-entry/entry-parsers/changed-system-mic-controller-button-behavior.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-system-mic-controller-button-behavior.ts index e476820a..2f47b9a7 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/changed-system-mic-controller-button-behavior.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-system-mic-controller-button-behavior.ts @@ -2,7 +2,7 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; import { EventLogChangedSystemMicControllerButtonBehavior, EventLogType, -} from '../../../models/event-log-entry'; +} from '../../../../models/event-log-entry'; export class EventLogChangedSystemMicControllerButtonBehaviorEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/changed-system-mic-mute-state.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-system-mic-mute-state.ts similarity index 88% rename from src-ui/app/components/event-log-entry/entry-parsers/changed-system-mic-mute-state.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-system-mic-mute-state.ts index 4f639908..eb9b3908 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/changed-system-mic-mute-state.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-system-mic-mute-state.ts @@ -1,5 +1,8 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogChangedSystemMicMuteState, EventLogType } from '../../../models/event-log-entry'; +import { + EventLogChangedSystemMicMuteState, + EventLogType, +} from '../../../../models/event-log-entry'; export class EventLogChangedSystemMicMuteStateEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/changed-vrchat-mic-mute-state.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-vrchat-mic-mute-state.ts similarity index 85% rename from src-ui/app/components/event-log-entry/entry-parsers/changed-vrchat-mic-mute-state.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-vrchat-mic-mute-state.ts index beef91cf..81e4eb99 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/changed-vrchat-mic-mute-state.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/changed-vrchat-mic-mute-state.ts @@ -1,5 +1,8 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogChangedVRChatMicMuteState, EventLogType } from '../../../models/event-log-entry'; +import { + EventLogChangedVRChatMicMuteState, + EventLogType, +} from '../../../../models/event-log-entry'; export class EventLogChangedVRChatMicMuteStateEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/display-brightness-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/display-brightness-changed.ts similarity index 88% rename from src-ui/app/components/event-log-entry/entry-parsers/display-brightness-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/display-brightness-changed.ts index 4482b639..2f5e4616 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/display-brightness-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/display-brightness-changed.ts @@ -1,5 +1,8 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogHardwareBrightnessChanged, EventLogType } from '../../../models/event-log-entry'; +import { + EventLogHardwareBrightnessChanged, + EventLogType, +} from '../../../../models/event-log-entry'; export class EventLogHardwareBrightnessChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/fade-distance-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/fade-distance-changed.ts similarity index 95% rename from src-ui/app/components/event-log-entry/entry-parsers/fade-distance-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/fade-distance-changed.ts index ca0ee748..f505c8d2 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/fade-distance-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/fade-distance-changed.ts @@ -2,7 +2,7 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; import { EventLogChaperoneFadeDistanceChanged, EventLogType, -} from '../../../models/event-log-entry'; +} from '../../../../models/event-log-entry'; import { ensurePrecision } from 'src-ui/app/utils/number-utils'; export class EventLogFadeDistanceChangedEntryParser extends EventLogEntryParser { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/gpu-power-limit-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/gpu-power-limit-changed.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/gpu-power-limit-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/gpu-power-limit-changed.ts index 7ea5f49b..2f1b8372 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/gpu-power-limit-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/gpu-power-limit-changed.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogGpuPowerLimitChanged, EventLogType } from '../../../models/event-log-entry'; +import { EventLogGpuPowerLimitChanged, EventLogType } from '../../../../models/event-log-entry'; export class EventLogGpuPowerLimitChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/image-brightness-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/image-brightness-changed.ts similarity index 88% rename from src-ui/app/components/event-log-entry/entry-parsers/image-brightness-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/image-brightness-changed.ts index e22a10df..a3d13a05 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/image-brightness-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/image-brightness-changed.ts @@ -1,5 +1,8 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogSoftwareBrightnessChanged, EventLogType } from '../../../models/event-log-entry'; +import { + EventLogSoftwareBrightnessChanged, + EventLogType, +} from '../../../../models/event-log-entry'; export class EventLogSoftwareBrightnessChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/lighthouse-set-power-state.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/lighthouse-set-power-state.ts similarity index 95% rename from src-ui/app/components/event-log-entry/entry-parsers/lighthouse-set-power-state.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/lighthouse-set-power-state.ts index 4e3524d1..4012fc3c 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/lighthouse-set-power-state.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/lighthouse-set-power-state.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogLighthouseSetPowerState, EventLogType } from '../../../models/event-log-entry'; +import { EventLogLighthouseSetPowerState, EventLogType } from '../../../../models/event-log-entry'; export class EventLogLighthouseSetPowerStateEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/msi-afterburner-profile-set.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/msi-afterburner-profile-set.ts similarity index 95% rename from src-ui/app/components/event-log-entry/entry-parsers/msi-afterburner-profile-set.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/msi-afterburner-profile-set.ts index 8b9cbc85..00bd44a4 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/msi-afterburner-profile-set.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/msi-afterburner-profile-set.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogMsiAfterburnerProfileSet, EventLogType } from '../../../models/event-log-entry'; +import { EventLogMsiAfterburnerProfileSet, EventLogType } from '../../../../models/event-log-entry'; export class EventLogMsiAfterburnerProfileSetEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/muted-audio-device.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/muted-audio-device.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/muted-audio-device.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/muted-audio-device.ts index 2f35debb..530f28c0 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/muted-audio-device.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/muted-audio-device.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogMutedAudioDevice, EventLogType } from '../../../models/event-log-entry'; +import { EventLogMutedAudioDevice, EventLogType } from '../../../../models/event-log-entry'; export class EventLogMutedAudioDeviceEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/openvr-device-turned-off.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/openvr-device-turned-off.ts similarity index 95% rename from src-ui/app/components/event-log-entry/entry-parsers/openvr-device-turned-off.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/openvr-device-turned-off.ts index 0c16ea1f..f9e9942e 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/openvr-device-turned-off.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/openvr-device-turned-off.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogTurnedOffOpenVRDevices, EventLogType } from '../../../models/event-log-entry'; +import { EventLogTurnedOffOpenVRDevices, EventLogType } from '../../../../models/event-log-entry'; export class EventLogTurnedOffOpenVRDevicesEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/render-resolution-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/render-resolution-changed.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/render-resolution-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/render-resolution-changed.ts index 2f04caf9..de9d1040 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/render-resolution-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/render-resolution-changed.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogRenderResolutionChanged, EventLogType } from '../../../models/event-log-entry'; +import { EventLogRenderResolutionChanged, EventLogType } from '../../../../models/event-log-entry'; export class EventLogRenderResolutionChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/shutdown-sequence-cancelled.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/shutdown-sequence-cancelled.ts similarity index 80% rename from src-ui/app/components/event-log-entry/entry-parsers/shutdown-sequence-cancelled.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/shutdown-sequence-cancelled.ts index ca62dacc..9965a240 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/shutdown-sequence-cancelled.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/shutdown-sequence-cancelled.ts @@ -1,5 +1,8 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogShutdownSequenceCancelled, EventLogType } from '../../../models/event-log-entry'; +import { + EventLogShutdownSequenceCancelled, + EventLogType, +} from '../../../../models/event-log-entry'; export class EventLogShutdownSequenceCancelledEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/shutdown-sequence-started.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/shutdown-sequence-started.ts similarity index 93% rename from src-ui/app/components/event-log-entry/entry-parsers/shutdown-sequence-started.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/shutdown-sequence-started.ts index 50f41168..1438edbf 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/shutdown-sequence-started.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/shutdown-sequence-started.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogShutdownSequenceStarted, EventLogType } from '../../../models/event-log-entry'; +import { EventLogShutdownSequenceStarted, EventLogType } from '../../../../models/event-log-entry'; export class EventLogShutdownSequenceStartedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/simple-brightness-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/simple-brightness-changed.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/simple-brightness-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/simple-brightness-changed.ts index 842dd2cd..d6765282 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/simple-brightness-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/simple-brightness-changed.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogSimpleBrightnessChanged, EventLogType } from '../../../models/event-log-entry'; +import { EventLogSimpleBrightnessChanged, EventLogType } from '../../../../models/event-log-entry'; export class EventLogSimpleBrightnessChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/sleep-detector-enable-cancelled.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-detector-enable-cancelled.ts similarity index 91% rename from src-ui/app/components/event-log-entry/entry-parsers/sleep-detector-enable-cancelled.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-detector-enable-cancelled.ts index b5484c5a..1bb3e583 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/sleep-detector-enable-cancelled.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-detector-enable-cancelled.ts @@ -1,7 +1,7 @@ import { EventLogSleepDetectorEnableCancelled, EventLogType, -} from '../../../models/event-log-entry'; +} from '../../../../models/event-log-entry'; import { EventLogEntryParser } from '../event-log-entry-parser'; export class EventLogSleepDetectorEnableCancelledEntryParser extends EventLogEntryParser { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/sleep-mode-disabled.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-mode-disabled.ts similarity index 98% rename from src-ui/app/components/event-log-entry/entry-parsers/sleep-mode-disabled.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-mode-disabled.ts index c09e2bf9..03b45fc5 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/sleep-mode-disabled.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-mode-disabled.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogSleepModeDisabled, EventLogType } from '../../../models/event-log-entry'; +import { EventLogSleepModeDisabled, EventLogType } from '../../../../models/event-log-entry'; export class EventLogSleepModeDisabledEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/sleep-mode-enabled.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-mode-enabled.ts similarity index 97% rename from src-ui/app/components/event-log-entry/entry-parsers/sleep-mode-enabled.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-mode-enabled.ts index 63e11eeb..b3179b80 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/sleep-mode-enabled.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/sleep-mode-enabled.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogSleepModeEnabled, EventLogType } from '../../../models/event-log-entry'; +import { EventLogSleepModeEnabled, EventLogType } from '../../../../models/event-log-entry'; export class EventLogSleepModeEnabledEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/status-changed-on-general-event.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/status-changed-on-general-event.ts similarity index 90% rename from src-ui/app/components/event-log-entry/entry-parsers/status-changed-on-general-event.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/status-changed-on-general-event.ts index 41d0a61a..ca79cbb0 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/status-changed-on-general-event.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/status-changed-on-general-event.ts @@ -1,7 +1,10 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogStatusChangedOnGeneralEvent, EventLogType } from '../../../models/event-log-entry'; +import { + EventLogStatusChangedOnGeneralEvent, + EventLogType, +} from '../../../../models/event-log-entry'; import { UserStatus } from 'vrchat'; -import { vrcStatusToString } from '../../../utils/status-utils'; +import { vrcStatusToString } from '../../../../utils/status-utils'; export class EventLogStatusChangedOnGeneralEventEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/status-changed-on-player-count-change.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/status-changed-on-player-count-change.ts similarity index 94% rename from src-ui/app/components/event-log-entry/entry-parsers/status-changed-on-player-count-change.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/status-changed-on-player-count-change.ts index b9c7dbde..36c7363c 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/status-changed-on-player-count-change.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/status-changed-on-player-count-change.ts @@ -2,9 +2,9 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; import { EventLogStatusChangedOnPlayerCountChange, EventLogType, -} from '../../../models/event-log-entry'; +} from '../../../../models/event-log-entry'; import { UserStatus } from 'vrchat'; -import { vrcStatusToString } from '../../../utils/status-utils'; +import { vrcStatusToString } from '../../../../utils/status-utils'; export class EventLogStatusChangedOnPlayerCountChangeEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/template-parser.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/template-parser.ts similarity index 90% rename from src-ui/app/components/event-log-entry/entry-parsers/template-parser.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/template-parser.ts index ffaa4a1d..d5b49a84 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/template-parser.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/template-parser.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogBase, EventLogType } from '../../../models/event-log-entry'; +import { EventLogBase, EventLogType } from '../../../../models/event-log-entry'; export class EventLogTemplateEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/unmuted-audio-device.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/unmuted-audio-device.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/unmuted-audio-device.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/unmuted-audio-device.ts index c43ebb2a..ca4375b6 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/unmuted-audio-device.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/unmuted-audio-device.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogType, EventLogUnmutedAudioDevice } from '../../../models/event-log-entry'; +import { EventLogType, EventLogUnmutedAudioDevice } from '../../../../models/event-log-entry'; export class EventLogUnmutedAudioDeviceEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/vrchat-avatar-changed.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/vrchat-avatar-changed.ts similarity index 95% rename from src-ui/app/components/event-log-entry/entry-parsers/vrchat-avatar-changed.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/vrchat-avatar-changed.ts index 14b8a141..eb221c1d 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/vrchat-avatar-changed.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/vrchat-avatar-changed.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogType, EventLogVRChatAvatarChanged } from '../../../models/event-log-entry'; +import { EventLogType, EventLogVRChatAvatarChanged } from '../../../../models/event-log-entry'; export class EventLogVRChatAvatarChangedEntryParser extends EventLogEntryParser { entryType(): EventLogType { diff --git a/src-ui/app/components/event-log-entry/entry-parsers/windows-power-policy-set.ts b/src-ui/app/components/event-log/event-log-entry/entry-parsers/windows-power-policy-set.ts similarity index 96% rename from src-ui/app/components/event-log-entry/entry-parsers/windows-power-policy-set.ts rename to src-ui/app/components/event-log/event-log-entry/entry-parsers/windows-power-policy-set.ts index bcdfed97..7a600c64 100644 --- a/src-ui/app/components/event-log-entry/entry-parsers/windows-power-policy-set.ts +++ b/src-ui/app/components/event-log/event-log-entry/entry-parsers/windows-power-policy-set.ts @@ -1,5 +1,5 @@ import { EventLogEntryParser } from '../event-log-entry-parser'; -import { EventLogType, EventLogWindowsPowerPolicySet } from '../../../models/event-log-entry'; +import { EventLogType, EventLogWindowsPowerPolicySet } from '../../../../models/event-log-entry'; import { TranslateService } from '@ngx-translate/core'; import { inject } from '@angular/core'; diff --git a/src-ui/app/components/event-log-entry/event-log-entry-parser.ts b/src-ui/app/components/event-log/event-log-entry/event-log-entry-parser.ts similarity index 89% rename from src-ui/app/components/event-log-entry/event-log-entry-parser.ts rename to src-ui/app/components/event-log/event-log-entry/event-log-entry-parser.ts index 8701b550..a4695c25 100644 --- a/src-ui/app/components/event-log-entry/event-log-entry-parser.ts +++ b/src-ui/app/components/event-log/event-log-entry/event-log-entry-parser.ts @@ -1,4 +1,4 @@ -import { EventLogBase, EventLogType } from '../../models/event-log-entry'; +import { EventLogBase, EventLogType } from '../../../models/event-log-entry'; export abstract class EventLogEntryParser { abstract entryType(): EventLogType; diff --git a/src-ui/app/components/event-log-entry/event-log-entry.component.html b/src-ui/app/components/event-log/event-log-entry/event-log-entry.component.html similarity index 100% rename from src-ui/app/components/event-log-entry/event-log-entry.component.html rename to src-ui/app/components/event-log/event-log-entry/event-log-entry.component.html diff --git a/src-ui/app/components/event-log-entry/event-log-entry.component.scss b/src-ui/app/components/event-log/event-log-entry/event-log-entry.component.scss similarity index 100% rename from src-ui/app/components/event-log-entry/event-log-entry.component.scss rename to src-ui/app/components/event-log/event-log-entry/event-log-entry.component.scss diff --git a/src-ui/app/components/event-log-entry/event-log-entry.component.ts b/src-ui/app/components/event-log/event-log-entry/event-log-entry.component.ts similarity index 98% rename from src-ui/app/components/event-log-entry/event-log-entry.component.ts rename to src-ui/app/components/event-log/event-log-entry/event-log-entry.component.ts index 6d1f5b0a..c4a3088d 100644 --- a/src-ui/app/components/event-log-entry/event-log-entry.component.ts +++ b/src-ui/app/components/event-log/event-log-entry/event-log-entry.component.ts @@ -1,5 +1,4 @@ import { Component, DestroyRef, Input, OnChanges, OnInit } from '@angular/core'; -import { EventLogEntry } from '../../models/event-log-entry'; import { EventLogEntryParser } from './event-log-entry-parser'; import { EventLogSleepModeEnabledEntryParser } from './entry-parsers/sleep-mode-enabled'; import { EventLogSleepModeDisabledEntryParser } from './entry-parsers/sleep-mode-disabled'; @@ -32,6 +31,7 @@ import { EventLogBSBLedChangedEntryParser } from './entry-parsers/bsb-led-change import { EventLogStatusChangedOnGeneralEventEntryParser } from './entry-parsers/status-changed-on-general-event'; import { EventLogVRChatAvatarChangedEntryParser } from './entry-parsers/vrchat-avatar-changed'; import { EventLogCCTChangedEntryParser } from './entry-parsers/cct-changed'; +import { EventLogEntry } from '../../../models/event-log-entry'; @Component({ selector: 'app-event-log-entry', diff --git a/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.html b/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.html new file mode 100644 index 00000000..52dd46c5 --- /dev/null +++ b/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.html @@ -0,0 +1,34 @@ + diff --git a/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.scss b/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.scss new file mode 100644 index 00000000..1f67ae6b --- /dev/null +++ b/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.scss @@ -0,0 +1,92 @@ +.pane { + margin-top: 16px; + max-height: calc(100vh - 4em - 32px); +} + +.pane-content { + white-space: pre-wrap; + overflow-y: auto; +} + + +.action-row { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + margin-bottom: 1em; + + .description { + flex: 1; + margin: 0; + } + + button { + margin-left: 0.5em; + flex-shrink: 0; + } +} + +.filter-container { + display: grid; + grid-template-columns: 1fr 1fr; + grid-gap: 1em; + grid-auto-flow: row; +} + +.filter { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + width: 100%; + padding: 1em; + background: var(--color-surface-1); + border-radius: var(--surface-border-radius); + cursor: pointer; + border: transparent 1px solid; + transition: all .15s ease; + + &:hover { + border: var(--color-surface-4) 1px solid; + } + + &:active { + background: var(--color-surface-0); + + .filter-icon { + opacity: 0.8; + transform: scale(0.9); + } + } + + &-icon { + display: flex; + transition: all .15s ease; + flex-direction: row; + align-items: center; + justify-content: center; + flex-shrink: 0; + margin-right: 1em; + color: var(--color-text-1); + } + + &-labels { + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; + + span { + &:first-child { + margin-bottom: 0.25em; + } + + &:last-child { + color: var(--color-text-3); + font-size: 0.9em; + } + } + } +} diff --git a/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.ts b/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.ts new file mode 100644 index 00000000..db650ccb --- /dev/null +++ b/src-ui/app/components/event-log/event-log-filter-dialog/event-log-filter-dialog.component.ts @@ -0,0 +1,152 @@ +import { Component, OnInit } from '@angular/core'; +import { BaseModalComponent } from '../../base-modal/base-modal.component'; +import { EventLogType } from '../../../models/event-log-entry'; +import { fadeUp } from '../../../utils/animations'; + +export interface EventLogFilterDialogInputModel { + hiddenLogTypes: EventLogType[]; +} + +export interface EventLogFilterDialogOutputModel { + hiddenLogTypes: EventLogType[]; +} + +interface Filter { + id: EventLogFilter; + eventLogTypes: EventLogType[]; +} + +export const EventLogFilters = [ + 'SLEEP_MODE', + 'WINDOWS_POWER_POLICY', + 'BRIGHTNESS_CCT', + 'DEVICE_POWER', + 'GPU_CONTROL', + 'VRCHAT_STATUS', + 'VRCHAT_INVITES', + 'VRCHAT_AVATAR', + 'AUDIO_CONTROL', + 'STEAMVR_SETTINGS', + 'SHUTDOWN_SEQUENCE', + 'BSB_CONTROL', +] as const; + +export type EventLogFilter = (typeof EventLogFilters)[number]; + +@Component({ + selector: 'app-event-log-filter-dialog', + templateUrl: './event-log-filter-dialog.component.html', + styleUrl: './event-log-filter-dialog.component.scss', + animations: [fadeUp()], +}) +export class EventLogFilterDialogComponent + extends BaseModalComponent + implements OnInit, EventLogFilterDialogInputModel +{ + protected readonly filters: Filter[] = [ + { + id: 'SLEEP_MODE', + eventLogTypes: ['sleepModeEnabled', 'sleepModeDisabled', 'sleepDetectorEnableCancelled'], + }, + { + id: 'WINDOWS_POWER_POLICY', + eventLogTypes: ['windowsPowerPolicySet'], + }, + { + id: 'BRIGHTNESS_CCT', + eventLogTypes: [ + 'simpleBrightnessChanged', + 'hardwareBrightnessChanged', + 'softwareBrightnessChanged', + 'cctChanged', + ], + }, + { + id: 'DEVICE_POWER', + eventLogTypes: ['turnedOffOpenVRDevices', 'lighthouseSetPowerState'], + }, + { + id: 'GPU_CONTROL', + eventLogTypes: ['gpuPowerLimitChanged', 'msiAfterburnerProfileSet'], + }, + { + id: 'VRCHAT_STATUS', + eventLogTypes: ['statusChangedOnPlayerCountChange', 'statusChangedOnGeneralEvent'], + }, + { + id: 'VRCHAT_INVITES', + eventLogTypes: ['acceptedInviteRequest'], + }, + { + id: 'VRCHAT_AVATAR', + eventLogTypes: ['vrchatAvatarChanged'], + }, + { + id: 'AUDIO_CONTROL', + eventLogTypes: [ + 'changedVRChatMicMuteState', + 'changedSystemMicMuteState', + 'changedSystemMicControllerButtonBehavior', + 'changedAudioDeviceVolume', + 'mutedAudioDevice', + 'unmutedAudioDevice', + ], + }, + { + id: 'STEAMVR_SETTINGS', + eventLogTypes: ['renderResolutionChanged', 'chaperoneFadeDistanceChanged'], + }, + { + id: 'SHUTDOWN_SEQUENCE', + eventLogTypes: ['shutdownSequenceStarted', 'shutdownSequenceCancelled'], + }, + { + id: 'BSB_CONTROL', + eventLogTypes: ['bsbFanSpeedChanged', 'bsbLedChanged'], + }, + ]; + // Type this as the id field of the Filter interface + selectedFilters: EventLogFilter[] = []; + + public set hiddenLogTypes(types: EventLogType[]) { + this.selectedFilters = this.filters + .filter((filter) => !types.some((type) => filter.eventLogTypes.includes(type))) + .map((filter) => filter.id); + } + + constructor() { + super(); + this.result = { hiddenLogTypes: [] }; + } + + ngOnInit(): void {} + + async save() { + this.result = { hiddenLogTypes: this.getHiddenTypesForFilters() }; + await this.close(); + } + + private getHiddenTypesForFilters(): EventLogType[] { + return this.filters + .filter((f) => !this.selectedFilters.includes(f.id)) + .map((f) => f.eventLogTypes) + .flat() + .filter(Boolean) as EventLogType[]; + } + + protected toggleFilter(id: EventLogFilter) { + if (this.selectedFilters.includes(id)) { + this.selectedFilters = this.selectedFilters.filter((f) => f !== id); + } else { + this.selectedFilters.push(id); + } + } + + selectNone() { + this.selectedFilters = []; + } + + selectAll() { + this.selectedFilters = this.filters.map((f) => f.id); + } +} diff --git a/src-ui/app/components/event-log/event-log.component.html b/src-ui/app/components/event-log/event-log.component.html index 81185009..c0d5834d 100644 --- a/src-ui/app/components/event-log/event-log.component.html +++ b/src-ui/app/components/event-log/event-log.component.html @@ -2,7 +2,19 @@
comp.event-log.title +