hugonikanor / calp Goto Github PK
View Code? Open in Web Editor NEWiCalendar compatible parser and viewer [MIRROR].
Home Page: https://git.hornquist.se/calparse/
License: GNU Affero General Public License v3.0
iCalendar compatible parser and viewer [MIRROR].
Home Page: https://git.hornquist.se/calparse/
License: GNU Affero General Public License v3.0
At least from HTML, tested with
Message-ID: d0a52d7264999aaf4b6c006c9.7f3a0687c5.20200829090654.694b90d923.3de7c16b@mail109.atl281.mcsv.net
Currently module/util.scm
is installed to $GUILE_SITE_DIR/util
, which reserves
the (util)
module for the whole namespace.
Either properly namespace everything I have to keep installing it into the Guile
system directory, or allocate a private Guile module tree for calp.
Specify which component poups are relative to. Make that component have
overflow: hidden
should prevent popups from growing the page.
0.85 for top
0.95 for day
A few types can have multiple values. In those cases each vline can sometimes
have a (comma separated) list, and multiple vlines may exist. Difference being
that only items which share parameters can share a line.
The program currently stores multiple vlines, and sometimes multiple values
inside a single vline. Normalize this so:
Each value is stored in its own vline object, and then merged (as applicable)
upon output.
Since cloneNode doesn't carry over event handlers newly spawned popups can't be
moved by dragging.
An empty descrption field is ugly. Ignore it when writing to disk?
Events can be inserted into a calendar through the calendar_import
procedure.
Update this to actually update all the relevant data structures, so the program
doesn't have to be restarted to see the changes.
RFC 5545 p. 42
Numeric prefixes is only allowed with FREQ={MONTHLY,YEARLY}
.
It should however keep being non-applied until then.
Use something like https://github.com/ChaosEternal/guile-inotify2 (which is
under some GPL if you look arounud a bit).
Big problem is to not re-parse own changes.
For
Creating and removing events often fail with
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
Firefox provides functions for creating screenshots in headless mode 1.
Use this to create examples of all HTML components (component producing
procedures) which make sense to use individually. Probably my creating a
document wrapper shim.
Pretty sure it's caused by there being more items than lines on the
screen, forcing the topmost items of the top, giving them a negative
index on the screen.
Backtrace:
10 (apply-smob/1 #<catch-closure 7ffa7379a440>)
In ice-9/boot-9.scm:
705:2 9 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
619:8 8 (_ #(#(#<directory (guile-user) 7ffa73458140>)))
In ice-9/boot-9.scm:
841:4 7 (with-throw-handler _ _ _)
In main.scm:
150:35 6 (_)
In ice-9/boot-9.scm:
829:9 5 (catch _ _ #<procedure values _> _)
In main.scm:
120:4 4 (wrapped-main _)
In entry-points/terminal.scm:
28:16 3 (main _)
In output/terminal.scm:
127:29 2 (main-loop _ #:app _)
In unknown file:
1 (list-head ("ID 1864203") -1)
In ice-9/boot-9.scm:
752:25 0 (dispatch-exception _ _ _)
ice-9/boot-9.scm:752:25: In procedure dispatch-exception:
Value out of range 0 to 18446744073709551615: -1
For example:
Summary, and especially description, ought to be trimmed before being saved.
Since many people send HTML in the description field it would be good with a "Reformat as HTML" button.
It should execute something along the lines of:
$0.innerHTML = $0.innerText.replaceAll(' ',' ').replaceAll('<br>','<br/>')
Problem being that since our document is in XML mode the HTML is (attempted to be) read as XML, which usually fails.
DTSTART;VALUE=DATE:20131018
DTEND;VALUE=DATE:20131019
RRULE:FREQ=YEARLY;WKST=MO;UNTIL=20141017
Events can currently be created in the HTML frontend, and some feedback is given
about the response.
The standard says that events where DTSTART is a date (and not a
datetime) and DTEND is missing should be whole day events. Events
with DTSTART which is a datetime should be treated as a single
monment. (currently they get a default DTEND of +1h).
The primary problem with the current server implementation (entry-points server)
is that it blocks until it has served the current client.
It should be forking, and probably optimized to run behind a reverse proxy.
Currently all popups are created as exact clones of the template, meaning that
they all share id, and worse, tab group. This means that once the second create
event popup is opened all create event popups break.
As far as I can tell all Date objects in Javascript are in local time (but
internally stored as seconds since the epoch).
Commit 49b04a13a247c9bfd87e5a1e27ac853e945586fe adds basic functionality to
handle both local time, and UTC time.
It should also handle arbitrary zones. Currently anything with an explicit
timezone which is different from local time will fail in weird ways. But it
works on my machine since localtime == Europe/Stockholm, which just about all
events are in.
A visual enhancement for the HTML frontend. Changes what the submit button is called.
An event with multiple instances, meaning multiple VEVENT
components sharing the same UID
. Attempting to remove them (from the HTML frontend) hangs the server for a few seconds, before the server times out, return HTTP 500, and writes stack-overflows to the log:
[2021-08-21T10:04:33] POST (localhost . 8080)//remove?
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind handler.
Currently unimplemented. Should be trivial to add them when
calculating the recurrence set. I have however never seen anyone
actually use them.
Events can be created by dragging in empty space, and removed by pressing the
garbage bin in the popup. Currently however neither actually gives any feedback
to the user that something has happened. Requiring a manual reload to see
anything.
Possibly gray out the events, or make them slightly transparent?
When creating in day far right in container. See picture.
Is mostly likely due to the popups being relative the wrong element, or their
starting position being calculated relative to the root.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.