Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conference schedule enhancements #348

Open
danidorbek opened this issue Jun 28, 2023 · 4 comments
Open

Conference schedule enhancements #348

danidorbek opened this issue Jun 28, 2023 · 4 comments

Comments

@danidorbek
Copy link

I would suggest to enhance conference schedule by:

  1. add option to download iCal (or common calendar format) calendar files which can be stored in attendees mobile devices
  2. add option for registered users to personalise schedule and select tracks into your personal list... to ease up planning of attendance.

This would actually help organisers to see potential interest on topics (how crowded rooms might be) and attendees would see if they have selected all tracks they are interested.
In addition there is no reason to have schedule on paper - save money on printing and save nature by not generating additional waste.

@patrick91
Copy link
Member

add option to download iCal (or common calendar format) calendar files which can be stored in attendees mobile devices

would you want the ical for all the sessions?

@danidorbek
Copy link
Author

danidorbek commented Jul 16, 2023 via email

@The-Compiler
Copy link
Contributor

I'm a bit late now I suppose, but this is already available from the Pretalx backend behind it: https://program.europython.eu/europython-2023/schedule/export/schedule.ics

@gbdlin
Copy link

gbdlin commented Oct 31, 2023

Here is my very nasty and very hacky code I wrote myself to just paste in the browser console to have the functionality from 2.

I don't know if it helps at all, as it is not really using all the frameworks and stuff the website is built with, but maybe it'll work as an inspiration:

function getFavTalks() {
  let data = localStorage.getItem("favTalks");
  if (data === null) {
    return new Set();
  }
  return new Set(JSON.parse(data));
}

function setFavTalks(talks) {
  let data = JSON.stringify(Array.from(talks));
  localStorage.setItem("favTalks", data);
}

function appendFavTalk(talk) {
  let talks = getFavTalks();
  talks.add(talk);
  setFavTalks(talks);
  return talks;
}

function deleteFavTalk(talk) {
  let talks = getFavTalks();
  talks.delete(talk);
  setFavTalks(talks);
  return talks;
}

let favTalks = getFavTalks();

document.querySelectorAll('a[href^="/session/"]').forEach(function(el) {
  let talk = el.getAttribute("href");
  let parent = el.parentElement;
  let input = document.createElement("input");
  input.setAttribute("type", "checkbox");
  if (favTalks.has(talk)) {
      input.setAttribute("checked", true);
      el.parentElement.style.backgroundColor = "#99dd99";
  }
  input.addEventListener("change", (ev) => {
    if (ev.currentTarget.checked) {
      appendFavTalk(talk);
      favTalks.add(talk);
      el.parentElement.style.backgroundColor = "#99dd99";
    } else {
      deleteFavTalk(talk);
      favTalks.delete(talk);
      el.parentElement.style.backgroundColor = "#99dd99";
    }
  });
  input.style.position = "absolute";
  input.style.top = "43px";
  input.style.right = "10px";
  el.after(input);
})

It just saves selection in the session storage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants