feat(device): replace daily wakeHour with multi-time wakeTimes (minutes)
CI / test (push) Has been cancelled
CI / test (push) Has been cancelled
Frame settings now offer two update-frequency modes: "at specific times" or "every X minutes". Times are stored as an int[] of minutes-since-midnight, allowing multiple slots per day at minute granularity. Backend computes the earliest upcoming slot for X-Interval-Ms and uses the most-recent-past slot as the rotation-due boundary. PWA settings sheet has hour/minute/AM-PM dropdowns with + Add / trash, a live "next update" preview, and a note that changes only take effect at the device's next sync. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -81,11 +81,11 @@ final class SeedFakeDevicesCommand extends Command
|
||||
// Five fakes covering each status state.
|
||||
$now = new \DateTimeImmutable();
|
||||
$fakes = [
|
||||
['name' => 'Living Room', 'orientation' => Orientation::Landscape, 'lastSeen' => 'PT5M', 'wakeHour' => null],
|
||||
['name' => 'Kitchen', 'orientation' => Orientation::Landscape, 'lastSeen' => 'PT90M', 'wakeHour' => null],
|
||||
['name' => 'Bedroom', 'orientation' => Orientation::Portrait, 'lastSeen' => 'P3D', 'wakeHour' => null],
|
||||
['name' => "Mom's Place", 'orientation' => Orientation::Portrait, 'lastSeen' => null, 'wakeHour' => null],
|
||||
['name' => 'Cabin', 'orientation' => Orientation::Landscape, 'lastSeen' => 'PT1H', 'wakeHour' => 4],
|
||||
['name' => 'Living Room', 'orientation' => Orientation::Landscape, 'lastSeen' => 'PT5M', 'wakeTimes' => []],
|
||||
['name' => 'Kitchen', 'orientation' => Orientation::Landscape, 'lastSeen' => 'PT90M', 'wakeTimes' => []],
|
||||
['name' => 'Bedroom', 'orientation' => Orientation::Portrait, 'lastSeen' => 'P3D', 'wakeTimes' => []],
|
||||
['name' => "Mom's Place", 'orientation' => Orientation::Portrait, 'lastSeen' => null, 'wakeTimes' => []],
|
||||
['name' => 'Cabin', 'orientation' => Orientation::Landscape, 'lastSeen' => 'PT1H', 'wakeTimes' => [4 * 60]],
|
||||
];
|
||||
|
||||
$reflLastSeen = new \ReflectionProperty(Device::class, 'lastSeenAt');
|
||||
@@ -100,8 +100,8 @@ final class SeedFakeDevicesCommand extends Command
|
||||
$device->setRotationIntervalMinutes(60);
|
||||
$device->setTimezone('America/New_York');
|
||||
$device->setUser($user);
|
||||
if ($cfg['wakeHour'] !== null) {
|
||||
$device->setWakeHour($cfg['wakeHour']);
|
||||
if (!empty($cfg['wakeTimes'])) {
|
||||
$device->setWakeTimes($cfg['wakeTimes']);
|
||||
}
|
||||
if ($cfg['lastSeen'] !== null) {
|
||||
$reflLastSeen->setValue($device, $now->sub(new \DateInterval($cfg['lastSeen'])));
|
||||
|
||||
Reference in New Issue
Block a user