Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • c3lingo/rescheduled
1 result
Show changes
Commits on Source (8)
Showing
with 29 additions and 78 deletions
module AssignmentsHelper
end
module ConferencesHelper
end
module SessionsHelper
end
module SpeakersHelper
end
module UsersHelper
end
...@@ -51,9 +51,13 @@ export default class extends Controller { ...@@ -51,9 +51,13 @@ export default class extends Controller {
this.clearTarget.classList.add("hidden"); this.clearTarget.classList.add("hidden");
} }
const filter = document.querySelector(this.element.dataset.filterSelector);
// Filter options by the `data-filteredlist-match` attribute // Filter options by the `data-filteredlist-match` attribute
for (const option of this.listTarget.children) { for (const option of this.listTarget.children) {
if (option.dataset.filteredlistMatch.includes(query)) { const uid = option.querySelector("a.add_button").dataset.user;
const unavailable = filter && filter.querySelector(`a[data-uid="${uid}"]`);
if (!unavailable && option.dataset.filteredlistMatch.includes(query)) {
option.classList.remove("hidden"); option.classList.remove("hidden");
} else { } else {
option.classList.add("hidden"); option.classList.add("hidden");
......
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
this.element.textContent = "Hello World!"
}
}
...@@ -13,7 +13,7 @@ export default class extends Controller { ...@@ -13,7 +13,7 @@ export default class extends Controller {
connect() { connect() {
const uid = document.body.dataset.loggedinUid; const uid = document.body.dataset.loggedinUid;
const isCandidate = this.candidatesTarget.querySelector(`a.candidate[data-candidate-uid="${uid}"]`); const isCandidate = this.candidatesTarget.querySelector(`a.candidate[data-uid="${uid}"]`);
const isShiftcoordinator = document.body.dataset.isShiftcoordinator; const isShiftcoordinator = document.body.dataset.isShiftcoordinator;
this.element.querySelectorAll('.only-loggedin').forEach(el => { this.element.querySelectorAll('.only-loggedin').forEach(el => {
......
class ApplicationMailer < ActionMailer::Base
default from: "from@example.com"
layout "mailer"
end
<span class="inline-flex items-center gap-x-0.5 rounded-full bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>"> <span class="inline-flex items-center gap-x-0.5 rounded-full bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10 indent-0" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>">
<span style="color: <%= user.text_color %>"><%= user.name %></span> <span style="color: <%= user.text_color %>"><%= user.name %></span>
</span> </span>
<% <%
# user.name.split(/\s+/).map(&:first).join('') # user.name.split(/\s+/).map(&:first).join('')
%> %>
\ No newline at end of file
<div data-controller="filteredlist" data-conference="<%= session.conference.slug %>" data-session="<%= session.ref_id %>"> <div data-controller="filteredlist" data-conference="<%= session.conference.slug %>" data-session="<%= session.ref_id %>" data-filter-selector="#<%= dom_id(session) %> .assigned">
<div class="relative"> <div class="relative">
<input <input
type="text" type="text"
......
<h5 class="text-base mt-2 <%= Time.parse(date).end_of_day < now ? "past" : "future" %>"><%= date %></h5>
<ol class="list-inside">
<% assignments_on_date.each do |assignment| %>
<li class="<%= assignment.session.starts_at < now ? "past" : "future" %> indent-[-1rem] ml-4">
<span class="tabular-nums"><%= assignment.session.starts_at.strftime('%H:%M') %> &ndash; <%= assignment.session.ends_at.strftime('%H:%M') %></span>:
<%= render partial: 'shared/session_filedrop', locals: { session: assignment.session } %><%= link_to assignment.session.title, conference_session_path(assignment.session.conference, assignment.session) %><%= render partial: 'shared/session_engelsystem', locals: { session: assignment.session } %> @ <%= assignment.session.stage.name %>
<small><% assignment.session.assignments.map(&:user).each do |other_user| %>
<%= render partial: 'application/user_avatar', locals: { user: other_user } %>
<% end %></small>
</li>
<% end %>
</ol>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<span class="inline-flex items-center gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>"> <span class="inline-flex items-center gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>">
<span style="color: <%= user.text_color %>"><%= user.name %></span> <span style="color: <%= user.text_color %>"><%= user.name %></span>
<button type="button" class="only-shiftcoordinator hidden group relative -mr-1 size-3.5 rounded-sm hover:bg-gray-500/20"> <button type="button" class="only-shiftcoordinator hidden group relative -mr-1 size-3.5 rounded-sm hover:bg-gray-500/20">
<%= link_to conference_session_assignment_path(assignment.session.conference, assignment.session, assignment), data: { turbo_method: :delete, confirm: 'Are you sure?' }, method: :delete do %> <%= link_to conference_session_assignment_path(assignment.session.conference, assignment.session, assignment), data: { turbo_method: :delete, confirm: 'Are you sure?', uid: user.id }, method: :delete do %>
<span class="sr-only">Remove</span> <span class="sr-only">Remove</span>
<svg viewBox="0 0 14 14" class="size-3.5 stroke-gray-600/50 group-hover:stroke-gray-600/75" style="stroke: <%= user.text_color %>"> <svg viewBox="0 0 14 14" class="size-3.5 stroke-gray-600/50 group-hover:stroke-gray-600/75" style="stroke: <%= user.text_color %>">
<path d="M4 4l6 6m0-6l-6 6" /> <path d="M4 4l6 6m0-6l-6 6" />
......
<div> <div class="max-w-full">
<h1 class="text-xl my-4 dark:text-red-500"> <h1 class="text-xl my-4 dark:text-red-500">
Assignments for Assignments for
<%= link_to @user.name, user_assignments_path(@user) %> <%= link_to @user.name, user_assignments_path(@user) %>
...@@ -8,24 +8,13 @@ ...@@ -8,24 +8,13 @@
<div> <div>
<h2 class="text-lg my-4">List View</h2> <h2 class="text-lg my-4">List View</h2>
<% @user.assignments.includes(:session, session: :conference).order('sessions.starts_at').group_by { |a| a.session.starts_at.strftime('%Y-%m-%d') }.each do |date, assignments_on_date| %> <% @user.assignments.includes(:session, session: :conference).order('sessions.starts_at').group_by { |a| a.session.starts_at.strftime('%Y-%m-%d') }.each do |date, assignments_on_date| %>
<h5 class="text-base mt-2 <%= Time.parse(date).end_of_day < now ? "past" : "future" %>"><%= date %></h5> <%= render partial: 'listview_date', locals: { assignments_on_date:, date:, now: } %>
<ol class="list-inside">
<% assignments_on_date.each do |assignment| %>
<li class="<%= assignment.session.starts_at < now ? "past" : "future" %>">
<span class="tabular-nums"><%= assignment.session.starts_at.strftime('%H:%M') %> &ndash; <%= assignment.session.ends_at.strftime('%H:%M') %></span>:
<%= render partial: 'shared/session_filedrop', locals: { session: assignment.session } %><%= link_to assignment.session.title, conference_session_path(assignment.session.conference, assignment.session) %> @ <%= assignment.session.stage.name %><%= render partial: 'shared/session_engelsystem', locals: { session: assignment.session } %>
<small><% assignment.session.assignments.map(&:user).each do |other_user| %>
<%= render partial: 'application/user_avatar', locals: { user: other_user } %>
<% end %></small>
</li>
<% end %>
</ol>
<% end %> <% end %>
</div> </div>
<div> <div class="overflow-x-auto max-w-full">
<h2 class="text-lg my-4">Table View</h2> <h2 class="text-lg my-4 sticky left-0">Table View</h2>
<table class="border *:border"> <table class="border *:border w-full">
<thead> <thead>
<tr class="*:font-bold *:border"> <tr class="*:font-bold *:border">
<th>Date</th> <th>Date</th>
......
...@@ -15,18 +15,7 @@ ...@@ -15,18 +15,7 @@
<div class="my-4"> <div class="my-4">
<h4 class="text-xl my-2" id="<%= dom_id(user) %>"><%= link_to user.name, user_assignments_path(user) %> <span class="font-normal"><%= link_to user_assignments_path(user, format: 'ics') do %><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="ml-2 mb-1 size-4 inline-block stroke-slate-400 fill-slate-400"><path fill-rule="evenodd" d="M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z" clip-rule="evenodd"></path></svg><% end %></span></h4> <h4 class="text-xl my-2" id="<%= dom_id(user) %>"><%= link_to user.name, user_assignments_path(user) %> <span class="font-normal"><%= link_to user_assignments_path(user, format: 'ics') do %><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="ml-2 mb-1 size-4 inline-block stroke-slate-400 fill-slate-400"><path fill-rule="evenodd" d="M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z" clip-rule="evenodd"></path></svg><% end %></span></h4>
<% assignments.group_by { |a| a.session.starts_at.strftime('%Y-%m-%d') }.each do |date, assignments_on_date| %> <% assignments.group_by { |a| a.session.starts_at.strftime('%Y-%m-%d') }.each do |date, assignments_on_date| %>
<h5 class="text-base mt-2 <%= Time.parse(date).end_of_day < now ? "past" : "future" %>"><%= date %></h5> <%= render partial: 'listview_date', locals: { assignments_on_date:, date:, now: } %>
<ol class="list-inside">
<% assignments_on_date.each do |assignment| %>
<li class="<%= assignment.session.starts_at < now ? "past" : "future" %>">
<span class="tabular-nums"><%= assignment.session.starts_at.strftime('%H:%M') %> &ndash; <%= assignment.session.ends_at.strftime('%H:%M') %></span>:
<%= render partial: 'shared/session_filedrop', locals: { session: assignment.session } %><%= link_to assignment.session.title, conference_session_path(assignment.session.conference, assignment.session) %><%= render partial: 'shared/session_engelsystem', locals: { session: assignment.session } %> @ <%= assignment.session.stage.name %>
<small><% assignment.session.assignments.map(&:user).each do |other_user| %>
<%= render partial: 'application/user_avatar', locals: { user: other_user } %>
<% end %></small>
</li>
<% end %>
</ol>
<% end %> <% end %>
</div> </div>
<% end %> <% end %>
......
<div>
<h1 class="font-bold text-4xl dark:text-red-500">Assignments#show</h1>
<p>Find me in app/views/assignments/show.html.erb</p>
</div>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<span class="gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>"> <span class="gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>">
<span style="color: <%= user.text_color %>"><%= user.name %></span> <span style="color: <%= user.text_color %>"><%= user.name %></span>
<button type="button" class="only-shiftcoordinator hidden group relative -mr-1 size-3.5 rounded-sm hover:bg-gray-500/20"> <button type="button" class="only-shiftcoordinator hidden group relative -mr-1 size-3.5 rounded-sm hover:bg-gray-500/20">
<%= link_to conference_session_assignments_path(session.conference, session, user_id: user.id), class: "candidate", data: { turbo_method: :post, turbo_frame: dom_id(session), candidate_uid: user.id } do %> <%= link_to conference_session_assignments_path(session.conference, session, user_id: user.id), class: "candidate", data: { turbo_method: :post, turbo_frame: dom_id(session), uid: user.id } do %>
<span class="sr-only">Add</span> <span class="sr-only">Add</span>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" stroke-width="1" class="size-3.5 stroke-gray-600/50 group-hover:stroke-gray-600/75 fill-gray-600/50" style="stroke: <%= user.text_color %>; fill: <%= user.text_color %>"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" stroke-width="1" class="size-3.5 stroke-gray-600/50 group-hover:stroke-gray-600/75 fill-gray-600/50" style="stroke: <%= user.text_color %>; fill: <%= user.text_color %>">
<path d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z" /> <path d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z" />
......
<div>
<h1 class="font-bold text-4xl dark:text-red-500">FiledropFiles#download</h1>
<p>Find me in app/views/filedrop_files/download.html.erb</p>
</div>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
/* Email styles need to be inline */
</style>
</head>
<body>
<%= yield %>
</body>
</html>
<%= yield %>