From e28f2e0c51e3d4a69bbad6273cc72ae554ff0fc4 Mon Sep 17 00:00:00 2001 From: 0x8664b2 <0x8664b2@pm.me> Date: Wed, 2 Jul 2025 09:33:52 -0700 Subject: [PATCH] updates --- app/controllers/home_controller.rb | 2 +- app/models/calendar_service.rb | 52 ++++++++++ app/models/event.rb | 12 ++- app/views/home/_month.erb | 7 +- node_modules/.yarn-integrity | 16 +++ node_modules/stimulus-popover/.eslintignore | 1 + node_modules/stimulus-popover/.prettierrc | 3 + node_modules/stimulus-popover/CHANGELOG.md | 98 +++++++++++++++++++ node_modules/stimulus-popover/LICENSE | 21 ++++ node_modules/stimulus-popover/README.md | 22 +++++ node_modules/stimulus-popover/card.html | 18 ++++ .../dist/stimulus-popover.mjs | 32 ++++++ .../dist/stimulus-popover.umd.js | 1 + node_modules/stimulus-popover/package.json | 47 +++++++++ package.json | 5 + test.rb | 33 +++++++ yarn.lock | 8 ++ 17 files changed, 372 insertions(+), 6 deletions(-) create mode 100644 app/models/calendar_service.rb create mode 100644 node_modules/.yarn-integrity create mode 100644 node_modules/stimulus-popover/.eslintignore create mode 100644 node_modules/stimulus-popover/.prettierrc create mode 100644 node_modules/stimulus-popover/CHANGELOG.md create mode 100644 node_modules/stimulus-popover/LICENSE create mode 100644 node_modules/stimulus-popover/README.md create mode 100644 node_modules/stimulus-popover/card.html create mode 100644 node_modules/stimulus-popover/dist/stimulus-popover.mjs create mode 100644 node_modules/stimulus-popover/dist/stimulus-popover.umd.js create mode 100644 node_modules/stimulus-popover/package.json create mode 100644 package.json create mode 100644 test.rb create mode 100644 yarn.lock diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 68486c2..2e1657f 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -3,6 +3,6 @@ class HomeController < ApplicationController def index Time.zone = 'Pacific Time (US & Canada)' @year = params['year'].nil? ? Date.today.year : params['year'].to_i - @events = [Event.new] + @events = CalendarService.new.events + CalendarService.new.vacations end end diff --git a/app/models/calendar_service.rb b/app/models/calendar_service.rb new file mode 100644 index 0000000..5a9c23d --- /dev/null +++ b/app/models/calendar_service.rb @@ -0,0 +1,52 @@ +require 'http' + +class CalendarService + + def vacations + Rails.cache.fetch("vacations", expires_in: 5.minutes) do + entries("https://static.nocoda.io/remote.php/dav/calendars/pkamin/593FC5A0-746B-48C7-A57B-3A0315976412/?export", "ff00ff") + end + end + + def events + Rails.cache.fetch("events", expires_in: 5.minutes) do + entries("https://static.nocoda.io/remote.php/dav/calendars/pkamin/774BE10B-AEAD-4D20-BF09-9C0FFD135E56/?export", "0000ff") + end + end + + def sports + entries("https://static.nocoda.io/remote.php/dav/calendars").map do |entry| + + end + end + + def entries(url, color) + # + a = HTTP.basic_auth(user: 'pkamin', pass: 'QDH*@8fhWekxwWjeX8MQ3H').get(url).body.to_s + # a = File.read('/Users/pkamin/Desktop/vacation.vcalendar') + + b = a.split("\r\n") + + events = [] + e = nil + + b.each do |line| + if line == "BEGIN:VEVENT" + e = Event.new + e.color = color + elsif line == "END:VEVENT" + events << e unless e.nil? + elsif line.start_with?("DTSTART") && ! e.nil? + e.begin_at = DateTime.parse(line.split(":").last) + elsif line.start_with?("DTEND") && ! e.nil? + e.end_at = DateTime.parse(line.split(":").last) + e.end_at = e.end_at - 1.minute + elsif line.start_with?("SUMMARY") && ! e.nil? + e.name = line.split(":").last + end + end + + events + end +end + diff --git a/app/models/event.rb b/app/models/event.rb index 3842a33..64d5d2c 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -1,12 +1,16 @@ class Event - attr_reader :begin_at, :end_at + attr_accessor :begin_at, :end_at, :name, :color - def initialize - @begin_at = DateTime.now.beginning_of_day - @end_at = DateTime.now + 1.day + def initialize(begin_at = DateTime.now.beginning_of_day, end_at = DateTime.now.end_of_day) + @begin_at = begin_at + @end_at = end_at end def during?(d) self.begin_at <= d && d <= self.end_at end + + def first_day?(d) + self.begin_at.beginning_of_day <= d && d <= self.begin_at.end_of_day + end end \ No newline at end of file diff --git a/app/views/home/_month.erb b/app/views/home/_month.erb index 5782b97..7f7a88a 100644 --- a/app/views/home/_month.erb +++ b/app/views/home/_month.erb @@ -11,7 +11,12 @@
This content is loaded with AJAX.
+