diff options
Diffstat (limited to '')
-rw-r--r-- | static/components/vevent-edit.ts | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/static/components/vevent-edit.ts b/static/components/vevent-edit.ts index bf72678c..108146a3 100644 --- a/static/components/vevent-edit.ts +++ b/static/components/vevent-edit.ts @@ -14,8 +14,8 @@ import { to_boolean, gensym } from '../lib' */ class ComponentEdit extends ComponentVEvent { - constructor(uid?: string) { - super(uid); + constructor(uid?: string, instance?: string) { + super(uid, instance); if (!this.template) { throw 'vevent-edit template required'; @@ -39,10 +39,10 @@ class ComponentEdit extends ComponentVEvent { /* Edit tab is rendered here. It's left blank server-side, since it only makes sense to have something here if we have javascript */ - let data = vcal_objects.get(this.uid) + let data = this.getData() if (!data) { - throw `Data missing for uid ${this.dataset.uid}.` + throw `Data missing for uid ${this.getKey()}.` } @@ -59,7 +59,7 @@ class ComponentEdit extends ComponentVEvent { el.addEventListener('change', (e) => { let v = (e.target as HTMLSelectElement).selectedOptions[0].value - let obj = vcal_objects.get(this.uid)! + let obj = this.getData()! obj.calendar = v; }); } @@ -70,7 +70,7 @@ class ComponentEdit extends ComponentVEvent { for (let el of this.querySelectorAll("[data-property]")) { // console.log(el); el.addEventListener('input', (e) => { - let obj = vcal_objects.get(this.uid) + let obj = this.getData() // console.log(el, e); if (obj === undefined) { throw 'No object with uid ' + this.uid @@ -117,18 +117,25 @@ class ComponentEdit extends ComponentVEvent { /* TODO unselecting and reselecting this checkbox deletes all entered data. Cache it somewhere */ if (has_repeats.checked) { - vcal_objects.get(this.uid)!.setProperty('rrule', new RecurrenceRule()) + this.getData()!.setProperty('rrule', new RecurrenceRule()) } else { /* TODO is this a good way to remove a property ? */ - vcal_objects.get(this.uid)!.setProperty('rrule', undefined) + this.getData()!.setProperty('rrule', undefined) } }) } let submit = this.querySelector('form') as HTMLFormElement + /* TODO If start or end DATE is changed, only allow THIS */ + /* if only time component was changed, allow all */ submit.addEventListener('submit', (e) => { console.log(submit, e); - create_event(vcal_objects.get(this.uid)!); + // submit button pressed (e.submitter); + let submit_type = 'all'; + if (e.submitter) { + submit_type = e.submitter.dataset.key!; + } + create_event(submit_type, this.getData()!); e.preventDefault(); return false; |