Skip to content
Snippets Groups Projects
Commit 723df688 authored by Tyler R Lemburg's avatar Tyler R Lemburg
Browse files

Merge branch 'uiUpdates' into 'master'

Ui updates



See merge request !1
parents b3bd1063 eddf30c3
No related branches found
No related tags found
No related merge requests found
......@@ -149,8 +149,5 @@ DEPENDENCIES
thin
unicorn
RUBY VERSION
ruby 2.2.3p173
BUNDLED WITH
1.13.0
......@@ -18,6 +18,7 @@ Using local resources
8. Install the WDN Framework into the `public/wdn` directory...see [WDN Documentation](http://wdn.unl.edu/documentation).
9. Start the server by going to the root directory and doing `bundle exec shotgun -o 0.0.0.0 -p 9292`. This launches the server on localhost port 9292, listening everywhere (you can use your iimlemburg.unl.edu or whichever), and the server will automatically update to new code. If you add gems to the bundle, you will need to re-execute this command.
10. Navigate to `localhost:9292/` or similar and begin!
11. In another terminal, type `bundle exec guard` in the project root to execute LESS compilation.
Quick Tutorial
==============
......
This diff is collapsed.
/*body {
background-color: #f4f3f0;
}*/
header {
display: none;
}
......@@ -20,4 +24,53 @@ header {
#visitorChat {
display: none;
}
\ No newline at end of file
}
#kioskLogo {
display: block;
float: left;
width: 54px;
height: 54px;
margin-right: .75em;
background: transparent url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20152%20152%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M147%202H90v41h10v33.673L53.532%203.393%2052.648%202H2v41h10v66H2v41h60v-41H52V75.336l46.467%2073.271.884%201.393H150v-41h-10V43h10V2h-3zM59%20112v35H5v-35h10V40H5V5h45.998L103%2087.005V40H93V5h54v35h-10v72h10v35h-46L49%2065.004V112h10z%22%2F%3E%3Cpath%20fill%3D%22%23D00000%22%20d%3D%22M147%200H88v45h10v24.784L55.221%202.322%2053.748%200H0v45h10v62H0v45h64v-45H54V82.224l42.778%2067.454L98.251%20152H152v-45h-10V45h10V0h-5zm3%205v38h-10v66h10v41H99.35l-.884-1.393L52%2075.336V109h10v41H2v-41h10V43H2V2h50.648l.884%201.393L100%2076.673V43H90V2h60v3zm-47%2035H93V5h54v35h-10v72.002V112h10v35h-46L49%2065.004v46.998V112h10v35H5v-35h10V40H5V5h45.998L103%2087.006V40z%22%2F%3E%3C%2Fsvg%3E) center center no-repeat;
background-size: contain;
}
.kiosk-mode {
padding: 2em;
position: relative;
}
.kiosk-mode #pagetitle {
float: left;
width: 60%;
margin-bottom: 1em;
}
.kiosk-buttons a.wdn-sans-serif {
margin-right: .5em;
}
.kiosk-buttons {
float: right;
text-align: right;
padding: .5em 0;
width: 40%;
}
@media (max-width: 543px) {
.kiosk-mode #pagetitle {
float: left;
width: 100%;
margin-bottom: 1em;
}
.kiosk-buttons {
float: none;
text-align: left;
padding: .5em 0;
width: 100%;
}
}
This diff is collapsed.
.calendar-header {
background-color: #50504f;
clear: both;
padding: 1em;
margin: 0;
}
.calendar-header #prev-week, .calendar-header #next-week {
color: #fff;
}
.calendar-header #prev-week {
float: left;
}
.calendar-header #next-week {
float: right;
}
.calendar-header h4 {
text-align: center;
color: #fff;
font-size: 1.25em;
width: 50%;
margin: 0.1em auto 0.1em auto;
}
@font-face {
font-family: schedulericon;
src: url(data:application/octet-stream;base64,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) format('woff'),url(data:application/octet-stream;base64,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) format('truetype')
}
[class^=schedulericon-]:before,[class*=" schedulericon-"]:before {
font-family: schedulericon;
font-style: normal;
font-weight: 400;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
font-variant: normal;
text-transform: none;
line-height: 1em;
margin-left: .2em
}
.schedulericon-angle-circled-left:before {
content: '\e802'
}
.schedulericon-angle-circled-right:before {
content: '\e803'
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="10px" height="10.963px" viewBox="0 0 10 10.963" enable-background="new 0 0 10 10.963" xml:space="preserve">
<g>
<path fill="#CF2027" d="M9.852,5.48C6.579,6.696,2.517,8.768,0,10.963L1.983,5.48L0,0C2.517,2.195,6.579,4.268,9.852,5.48z"/>
</g>
</svg>
define(function () {
//Do setup work here
return {
getDateTime: function (){
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth()+1;
var day = now.getDate();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
if(month.toString().length == 1) {
var month = '0'+month;
}
if(day.toString().length == 1) {
var day = '0'+day;
}
if(hour.toString().length == 1) {
var hour = '0'+hour;
}
if(minute.toString().length == 1) {
var minute = '0'+minute;
}
if(second.toString().length == 1) {
var second = '0'+second;
}
return {
date: year+'/'+month+'/'+day,
hour: hour,
minute: minute,
second: second
}
}
}
});
\ No newline at end of file
This diff is collapsed.
/*!
* jQuery Mousewheel 3.1.13
*
* Copyright 2015 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
\ No newline at end of file
@charset "UTF-8";
@import "lib/lesshat.less";
@import "lib/breakpoints.less";
@import "lib/colors.less";
......@@ -24,17 +23,13 @@
float: right;
}
.wdn-band {
position: relative;
}
.tooltip {
> div {
position: absolute;
background-color: #fff;
color: #000;
box-shadow: 0px 1px 4px RGBA(0,0,0,0.2);
padding: .75em;
padding: 1em .75em;
bottom: 160%;
left: -91px;
width: 200px;
......@@ -86,7 +81,7 @@
}
&.hang-left > div {
left: -157px;
left: -37px;
}
&.hang-right > div:before {
......@@ -109,11 +104,31 @@
margin-left: -24px;
}
&.hang-below > div:before {
top: -8px;
bottom: auto;
}
&.hang-below > div:after {
top: 0px;
bottom: auto;
}
&.hang-above {
top: -1em;
}
&.hang-below {
bottom: 0;
margin-bottom: -8em;
}
display: none;
text-align: center;
font-size: 0.85em;
line-height: 1.6em;
position: relative;
position: absolute;
font-size: .8125rem;
ul li {
margin-bottom: .75em;
......@@ -138,7 +153,6 @@
}
#maincontent form {
padding: 1em;
fieldset {
margin: 0;
......@@ -194,55 +208,118 @@
text-decoration: underline;
}
label.day-header {
width: 20%;
display: block;
float: left;
text-align: center;
font-family: "Gotham SSm A","Gotham SSm B",Verdana,"Verdana Ref",Geneva,Tahoma,"Lucida Grande","Lucida Sans Unicode","Lucida Sans","DejaVu Sans","Bitstream Vera Sans","Liberation Sans",sans-serif;
}
.day-label-container {
height: 2.5em;
box-shadow: 0px 3px 2px rgba(0, 0, 0, 0.2);
position: relative;
z-index: 1;
background-color: #d8d8d8;
padding: .5em calc(~"1em + 30px") 0 5em;
}
.calendar {
overflow: hidden;
width: 100%;
}
.calendar-container {
clear:both;
font-family: "Gotham SSm A","Gotham SSm B",Verdana,"Verdana Ref",Geneva,Tahoma,"Lucida Grande","Lucida Sans Unicode","Lucida Sans","DejaVu Sans","Bitstream Vera Sans","Liberation Sans",sans-serif;
width: 100%;
text-align: center;
overflow-y: scroll;
overflow-x: hidden;
height: 532px;
padding: 0 1em 0 0;
box-shadow: inset 0px 0px 10px rgba(0, 0, 0, 0.2);
.time-labels {
font-size: 80%;
.calendar-half-hour {
padding-right: 3px;
padding-right: .1em;
position: relative;
&,
&:nth-child(2n),
&:nth-child(2n+1) {
border-bottom: none;
}
&:first-child {
border-top: none;
}
label {
display: block;
position: relative;
top: -.9em;
right: .3em;
}
}
text-align: right;
display: inline-block;
border-right: 1px solid #C9C9C9;
width: 9%;
margin: 0;
float: left;
width: 5rem;
border-right: solid 1px #d5d5d2;
text-align: right;
}
.calendar-day {
.day-chart {
position: relative;
}
vertical-align: bottom;
text-align: center;
border-left: 1px solid #C9C9C9;
border-right: 1px solid #C9C9C9;
display: inline-block;
width: 12%;
margin: 0;
}
.calendar-half-hour {
height: 20px;
border-top: 1px solid #C9C9C9;
float: left;
width: calc(~"20% - 1em");
border-right: solid 1px #d5d5d2;
&:last-child {
border-bottom: 1px solid #C9C9C9;
margin-right: 0;
}
}
.calendar-half-hour {
height: 28px;
&:nth-child(2n) {
background-color: #EEEEEE;
border-bottom: 1px solid #c1c0be;
}
&:nth-child(2n+1) {
border-bottom: 1px solid #eae9e6;
}
&:first-child {
border-top: solid 1px #d5d5d2;
}
}
.event, .reservation {
cursor: pointer;
.event-container {
position: absolute;
overflow-y: scroll;
background: lighten(#137cbd, 30%);
border: 1px solid #137cbd;
border-radius: 3px;
width: 80%;
font-size: 60%;
text-align: left;
padding: 3px;
word-wrap: break-word;
width: 100%;
z-index: 2;
}
.event, .reservation {
cursor: pointer;
text-overflow: ellipsis;
color: #fff;
background: #137CBD;
border-left: 3px solid #2a5875;
width: 100%;
font-size: 60%;
padding: 0.15em .25em;
white-space: nowrap;
overflow: hidden;
box-shadow: 0px 1px 3px RGBA(0,0,0,.3);
line-height: 1.5em;
font-size: 1em;
p {
margin: 0;
&.eventicon-clock {
line-height: 0.25em;
font-size: 0.5em;
}
}
&.new-member-orientation {
background: #FFFFB8;
border-color: darken(#FFFFB8, 50%);
......@@ -250,6 +327,7 @@
&.free-event {
background: #F8F8F8;
border-color: darken(#F8F8F8, 50%);
color: #454545;
}
&.machine-training {
background: #58CC2F;
......@@ -279,6 +357,9 @@
text-decoration: underline;
}
}
&.past {
opacity: .5;
}
}
.status {
position: absolute;
......@@ -298,10 +379,14 @@
background-color: #f9f8f5;
border: 1px solid #d5d5d2;
.time-labels {
width: 25%;
width: 5em;
}
.calendar-day {
width: 70%;
width: calc(~"100% - 5em");
}
.day-header {
width: 100%;
padding: 0.25em 0.75em;
}
}
......@@ -455,4 +540,34 @@
text-align: center;
}
}
}
\ No newline at end of file
}
.calendar-container {
.mCSB_scrollTools {
height: 95%;
margin-top: 1.5%;
}
}
#nowLine {
width: 100%;
height: 2px;
background-image: linear-gradient(to right,rgba(208, 0, 0, 0.5) 40%,rgba(255,255,255,0) 20%);
background-position: top;
background-size: 3px 1px;
background-repeat: repeat-x;
position: absolute;
z-index: 1;
}
#nowArrow {
content: "";
position: absolute;
height: 10px;
width: 12px;
background-image: url(/images/time-arrow.svg);
left: -7px;
margin-top: -5px;
background-repeat: no-repeat;
z-index: 3;
}
......@@ -9,163 +9,253 @@ end %>
</h3>
</div>
<div style="margin-bottom: 16px;">
<!-- <div style="margin-bottom: 16px;">
<h4 style="text-align: center; margin: 0;">
<%= month = sunday.strftime('%B %Y') %><%= (month2 = (sunday+6.days).strftime('%B %Y')) == month ? '' : " - #{month2}" %>
</h4>
<a href="/<%= @space.url_name %>/calendar/?date=<%= (date-7.days).strftime('%Y-%m-%d') %>" class="wdn-button wdn-button-triad" id="prev-week">&lt; PREV</a>
<a href="/<%= @space.url_name %>/calendar/?date=<%= (date+7.days).strftime('%Y-%m-%d') %>" class="wdn-button wdn-button-triad" style="float: right;" id="next-week">NEXT &gt;</a>
</div>
</div> -->
<div class="calendar-container">
<div class="time-labels">
<div class="time-chart">
<% (12..47).each do |j| %>
<div class="calendar-half-hour">
<label><%= "#{(j / 2) % 12 + (j==24?12:0)} #{j>=24?'PM':'AM'}" if j % 2 == 0 %></label>
</div>
<% end %>
</div>
<div class="calendar">
<div class="calendar-header">
<a href="/<%= @space.url_name %>/calendar/?date=<%= (date-7.days).strftime('%Y-%m-%d') %><%= defined?(kiosk_mode) && kiosk_mode == 'true' ? '&kiosk_mode=true' : ''%>" id="prev-week" class="schedulericon-angle-circled-left"><span class="wdn-text-hidden">Previous Week</span></a>
<a href="/<%= @space.url_name %>/calendar/?date=<%= (date+7.days).strftime('%Y-%m-%d') %><%= defined?(kiosk_mode) && kiosk_mode == 'true' ? '&kiosk_mode=true' : ''%>" id="next-week" class="schedulericon-angle-circled-right"><span class="wdn-text-hidden">next week</span></a>
<h4 class="wdn-sans-serif">
<%= month = sunday.strftime('%B %Y') %><%= (month2 = (sunday+6.days).strftime('%B %Y')) == month ? '' : " - #{month2}" %>
</h4>
</div>
<% (0..6).each do |i| %>
<% day = (sunday + i.days + 1.hour).midnight %>
<% slots = [0] * 36 %>
<div class="calendar-day" data-day="<%= day.strftime("%Y/%m/%d") %>">
<label class="day-header"><%= day.strftime("%^a %-m/%d") %></label>
<div class="day-chart" title="Open">
<% if week_hours.has_key?(i) %>
<% # figure out where the closed divs need to be
# we can assume that all records in this space_hour are non-intertwined
closed_start = 0
closed_end = 0
starts = week_hours[i].hours.map{|record| record[:start]}
ends = week_hours[i].hours.map{|record| record[:end]}
%> <%
closeds = []
(360..1439).each do |j|
if starts.include?(j)
closed_end = j
closeds << [closed_start, closed_end]
closed_start = 0
closed_end = 0
end
if ends.include?(j)
closed_start = j
end
end
closed_end = 1440
closeds << [closed_start, closed_end]
closeds.each do |closed|
start_time = closed[0] %>
<% end_time = closed[1] %>
<%
if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
end
if top + height > 720
height = 720 - top
end
%>
<div class="status closed" title="Closed" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
</div>
<%
end
%>
<% week_hours[i].hours.each do |record| %>
<% if record[:status] != 'open' && record[:status] != 'closed' %>
<% start_time = record[:start] %>
<% end_time = record[:end] %>
<% if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
<div class="day-label-container">
<% (1..5).each do |i| %>
<% day = (sunday + i.days + 1.hour).midnight %>
<label class="day-header"><%= day.strftime("%^a %-m/%d") %></label>
<% end %>
</div>
<div class="calendar-container">
<div class="time-labels">
<div class="time-chart">
<% (12..39).each do |j| %>
<div class="calendar-half-hour">
<label><%= "#{(j / 2) % 12 + (j==24?12:0)} #{j>=24?'PM':'AM'}" if j % 2 == 0 %></label>
</div>
<% end %>
</div>
</div>
<% (1..5).each do |i| %>
<% day = (sunday + i.days + 1.hour).midnight %>
<% slots = [0] * 36 %>
<div class="calendar-day" data-day="<%= day.strftime("%Y/%m/%d") %>">
<!-- <label class="day-header"><%= day.strftime("%^a %-m/%d") %></label> -->
<div class="day-chart" title="Open">
<% if week_hours.has_key?(i) %>
<% # figure out where the closed divs need to be
# we can assume that all records in this space_hour are non-intertwined
closed_start = 0
closed_end = 0
starts = week_hours[i].hours.map{|record| record[:start]}
ends = week_hours[i].hours.map{|record| record[:end]}
%> <%
closeds = []
(360..1199).each do |j|
if starts.include?(j)
closed_end = j
closeds << [closed_start, closed_end]
closed_start = 0
closed_end = 0
end
if ends.include?(j)
closed_start = j
end
end
if top + height > 720
height = 720 - top
closed_end = 1200
closeds << [closed_start, closed_end]
closeds.each do |closed|
start_time = closed[0] %>
<% end_time = closed[1] %>
<%
if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
end
if top + height > 720
height = 720 - top
end
%>
<div class="status closed" title="Closed" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
</div>
<%
end
%>
<div title="<%= record[:status].split('_').join(' ').capitalize_all %>" class="status <%= record[:status].downcase.split('_').join('-') %>" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
</div>
%>
<% week_hours[i].hours.each do |record| %>
<% if record[:status] != 'open' && record[:status] != 'closed' %>
<% start_time = record[:start] %>
<% end_time = record[:end] %>
<% if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
end
if top + height > 720
height = 720 - top
end
%>
<div title="<%= record[:status].split('_').join(' ').capitalize_all %>" class="status <%= record[:status].downcase.split('_').join('-') %>" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
</div>
<% end %>
<% end %>
<% end %>
<% end %>
<% day_events = events_groups[day.strftime("%Y/%m/%d")] %>
<% unless day_events.nil? %>
<% day_events.sort{|a, b| a.start_time <=> b.start_time}.each do |event| %>
<% start_slot = [(((event.start_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 0].max
end_slot = [(((event.end_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 35].min
if end_slot < 0
next
end
over = 0
(start_slot..end_slot).each do |k|
over = slots[k] if slots[k] > over
end
over = [over,3].min
top = (((event.start_time.in_time_zone - day.midnight) / 60 - 360) / 30) * 20
height = event.length * 20 / 30
top_overflow = false
bottom_overflow = false
if top < 0
height += top
top = 0
top_overflow = true
end
if top + height > 720
height = 720 - top
bottom_overflow = true
events_groups[(day + 1.day).strftime("%Y/%m/%d")] ||= []
events_groups[(day + 1.day).strftime("%Y/%m/%d")] << event
end
%>
<div class="event <%= event.type.description.downcase.split(' ').join('-') %> <%= 'top-overflow' if top_overflow %> <%= 'bottom-overflow' if bottom_overflow %>"
style="top: <%= top %>px; height: <%= height %>px; left: <%=over*8%>px">
<% if event.info_link %>
<a href="<%= event.info_link %>"><%= event.title %></a>
<% else %>
<%= event.title %>
<% day_events = events_groups[day.strftime("%Y/%m/%d")] %>
<% unless day_events.nil? %>
<% day_events.sort{|a, b| a.start_time <=> b.start_time}.each do |res| %>
<% start_slot = [(((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 0].max
end_slot = [(((res.end_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 35].min
if end_slot < 0
next
end
over = 0
(start_slot..end_slot).each do |k|
over = slots[k] if slots[k] > over
end
over = [over,3].min
top = (((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30) * 28
height = res.length * 28 / 30
top_overflow = false
bottom_overflow = false
if top < 0
height += top
top = 0
top_overflow = true
end
if top + height > 720
height = 720 - top
bottom_overflow = true
events_groups[(day + 1.day).strftime("%Y/%m/%d")] ||= []
events_groups[(day + 1.day).strftime("%Y/%m/%d")] << res
end
%>
<div class="event-container" style="top: <%= top %>px;">
<div id="event<%=res.id %>" data-start="<%= res.start_time.in_time_zone %>" data-end="<%= res.start_time.in_time_zone + (res.length * 60) %>" class="event <%= 'top-overflow' if top_overflow %> <%= 'bottom-overflow' if bottom_overflow %>" style="height: <%= height %>px;">
<p><strong><%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %></strong></p>
<% if height >= 42 %>
<p class="eventicon-clock"><%= res.start_time.in_time_zone.strftime('%I:%M %p') %> - <%= res.end_time.in_time_zone.strftime('%I:%M %p') %></p>
<% end %>
</div>
<div class="tooltip <%= top >= 50 ? "hang-above" : "hang-below" %> <%= day.strftime("%^a") == "FRI" ? "hang-left" : "hang-right" %>">
<div>
<h6 style="margin-top: 0px; margin-bottom: .25em;"><%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %></h6>
<p class="eventicon-clock"><%= res.start_time.in_time_zone.strftime('%I:%M %p') %> - <%= res.end_time.in_time_zone.strftime('%I:%M %p') %></p>
<p>Reserved by: <span class="italic"><%= res.user.full_name rescue nil %></span></p>
<div class="close"><a href="#">&times;</a></div>
</div>
</div>
</div>
<% (start_slot..end_slot).each do |k| %>
<% slots[k] = slots[k] + 1 %>
<% end %>
</div>
<% (start_slot..end_slot).each do |k| %>
<% slots[k] = slots[k] + 1 %>
<% end %>
<% end %>
<% end %>
<div>
<% (12..47).each do |j| %>
<div class="calendar-half-hour">
&nbsp;
<% end %>
<div>
<% (12..39).each do |j| %>
<div class="calendar-half-hour">
&nbsp;
</div>
<% end %>
</div>
<% end %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
<script type="text/javascript">
require(['jquery'], function ($) {
var max_z = 5;
require(['jquery', '/js/functions.js', '/js/jquery.mousewheel.min.js', '/js/jquery.mCustomScrollbar.js'], function ($, functions) {
var openZ = 5;
var closedZ = 3;
$(document).ready(function () {
$('.event').click(function (click) {
$(this).css('z-index', max_z);
max_z += 1;
$('.event').click(function (e) {
e.stopPropagation();
var $eventContainer = $(this).parent();
$eventContainer.css('z-index', openZ);
var $tooltip = $(this).next(".tooltip");
$tooltip.show();
if($tooltip.hasClass("hang-below")){
$tooltip.css("margin-bottom", ($tooltip.find("div").height()+35)*-1);
}
$(document).one("click",function(){
$tooltip.show().hide();
$eventContainer.css('z-index', closedZ);
})
});
$('.tooltip div.close a').click(function (click) {
click.preventDefault();
$(this).closest('.tooltip').hide();
});
$(window).on("load",function(){
$(".calendar-container").mCustomScrollbar(
{
mouseWheel:{ enable: true },
theme:"rounded-dots-dark",
callbacks:{
},
setTop: "95px"
}
);
});
function tick(){
var dateTime = functions.getDateTime();
$(".calendar-day").each(function(){
if(dateTime.date == $(this).data("day")){
var top = (dateTime.hour-6) * 2 * 28;
top += dateTime.minute / 60 * 2 * 28;
if($(this).children(".day-chart").children("#nowArrow").length){
$(this).children(".day-chart").children("#nowArrow").css({top:top})
$(this).children(".day-chart").children("#nowLine").css({top:top})
}else{
$("#nowArrow").remove();
$("#nowLine").remove();
$(this).children(".day-chart").append($("<div id='nowArrow'>"));
$(this).children(".day-chart").children("#nowArrow").css({top:top})
$(this).children(".day-chart").append($("<div id='nowLine'>"));
$(this).children(".day-chart").children("#nowLine").css({top:top})
}
}
});
$(".event").each(function(){
var eventEnd = new Date($(this).data("end").replace(" -0500", "")).getTime();
var now = new Date();
now = now.getTime();
if (eventEnd < now) {
$(this).addClass("past");
}
});
};
tick();
setInterval(tick, 60000);
});
});
</script>
\ No newline at end of file
......@@ -15,11 +15,14 @@
<!-- InstanceEndEditable -->
<!-- InstanceBeginEditable name="head" -->
<!-- Place optional header elements here -->
<meta name="apple-mobile-web-app-capable" content="yes">
<link rel="stylesheet" href="/css/resource_scheduler.css">
<link rel="stylesheet" href="/css/spencers.css">
<% if defined?(kiosk_mode) && kiosk_mode == 'true' %>
<link rel="stylesheet" href="/css/kiosk.css">
<% end %>
<script type="text/javascript">WDN.initializePlugin("notice");</script>
<link rel="stylesheet" href="/css/jquery.mCustomScrollbar.min.css" />
<!-- InstanceEndEditable -->
<!-- InstanceParam name="class" type="text" value="" -->
</head>
......@@ -75,7 +78,11 @@
<main id="wdn_content_wrapper" role="main" class="wdn-content-slide" tabindex="-1">
<div id="maincontent" class="wdn-main">
<div class="wdn-band">
<% if defined?(kiosk_mode) && kiosk_mode == 'true' %>
<div class="kiosk-mode">
<% else %>
<div class="wdn-inner-wrapper">
<% end %>
<% unless session["notice"].nil? %>
<% notices = session.delete("notice") %>
<% notices.each do |notice| %>
......
......@@ -20,16 +20,10 @@ end %>
<form action="" method="POST">
<section class="wdn-grid-set">
<div class="bp1-wdn-col-one-third">
<label for="date">Date</label>
<div class="date-time-select">
<span class="wdn-icon-calendar"></span>
<input style="width: 90%;" id="date" name="date" title="Reservation Date" type="text" class="datepicker" value="<%= day.strftime('%m/%d/%Y') %>" />
</div>
</div>
<div class="bp1-wdn-col-one-third">
<div class="bp1-wdn-col-two-thirds">
<label>Schedule for <span id="current-date"><%= day.strftime('%m/%d/%Y') %></span></label>
<div class="calendar-container individual-day">
<label class="day-header"><%= day.strftime("%^a %-m/%d") %></label>
<div class="time-labels">
<div class="time-chart">
<% (12..47).each do |j| %>
......@@ -41,25 +35,26 @@ end %>
</div>
<% slots = [0] * 36 %>
<div class="calendar-day" data-day="<%= day.strftime("%Y/%m/%d") %>">
<label class="day-header"><%= day.strftime("%^a %-m/%d") %></label>
<div class="day-chart" title="Open">
<% reservations.each do |res| %>
<% end_slot = [(((res.end_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 35].min
if end_slot < 0
next
end
top = (((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30) * 20
height = res.length * 20 / 30
top = (((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30) * 28
height = res.length * 28 / 30
%>
<div class="reservation <%= 'editing' if !reservation.nil? && reservation.id == res.id %>"
style="top: <%= top %>px; height: <%= height %>px;">
<% if !res.event.nil? %>
<%= res.event.title %>
<% else %>
<%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %>
<%= res.user_id == @user.id ? '(My Reservation)' : '' %>
<% end %>
<%= '(Editing)' if !reservation.nil? && reservation.id == res.id %>
<div class="event-container" style="top: <%= top %>px;">
<div class="reservation <%= 'editing' if !reservation.nil? && reservation.id == res.id %>"
style="height: <%= height %>px;">
<% if !res.event.nil? %>
<%= res.event.title %>
<% else %>
<%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %>
<%= res.user_id == @user.id ? '(My Reservation)' : '' %>
<% end %>
<%= '(Editing)' if !reservation.nil? && reservation.id == res.id %>
</div>
</div>
<% end %>
<% unless space_hour.nil?
......@@ -142,6 +137,11 @@ end %>
</div>
</div>
<div class="bp1-wdn-col-one-third">
<label for="date">Date</label>
<div class="date-time-select">
<span class="wdn-icon-calendar"></span>
<input style="width: 90%;" id="date" name="date" title="Reservation Date" type="text" class="datepicker" value="<%= day.strftime('%m/%d/%Y') %>" />
</div>
<label for="start-minutes">Start Time</label>
<div class="date-time-select">
<% if available_start_times.empty? %>
......
......@@ -2,196 +2,272 @@
reservation.start_time.in_time_zone.strftime("%Y/%m/%d")
end %>
<div id="pagetitle">
<div id="kioskLogo"></div>
<h1 class="wdn-brand clear-top wdn-pull-left">
<%= resource.name %>
</h1>
</div>
<% if kiosk_mode %>
<div style="margin-bottom: 1em; text-align: right;">
<div class="kiosk-buttons">
<% if @user %>
<a style="font-size: 1.5em;" class="wdn-button wdn-button-triad" href="/kiosk-logout/?url_redirect=<%= url_encode("/#{@space.url_name}/resources/#{resource.id}/calendar/?kiosk_mode=true") %>">Log Out</a>
<a class="wdn-sans-serif" href="/kiosk-logout/?url_redirect=<%= url_encode("/#{@space.url_name}/resources/#{resource.id}/calendar/?kiosk_mode=true") %>">Log Out</a>
<% end %>
<a style="font-size: 1.5em;" class="wdn-button wdn-button-brand" href="/<%= @space.url_name %>/resources/<%= resource.id %>/reserve/?kiosk_mode=true">Reserve Me!</a>
<a class="wdn-button wdn-button-brand" href="/<%= @space.url_name %>/resources/<%= resource.id %>/reserve/?kiosk_mode=true">Reserve <%= resource.name %></a>
</div>
<% end %>
<div id="pagetitle">
<h3>
<%= resource.name %><span class="wdn-subhead">Calendar</span>
</h3>
</div>
<% unless kiosk_mode %>
<div>
<a class="wdn-button wdn-button-brand" href="/<%= @space.url_name %>/resources/<%= resource.id %>/reserve/">Reserve This Resource</a>
<div class="wdn-pull-right">
<a class="wdn-button wdn-button-brand" href="/<%= @space.url_name %>/resources/<%= resource.id %>/reserve/">Reserve <%= resource.name %></a>
</div>
<% end %>
<div style="margin-bottom: 16px;">
<h4 style="text-align: center; margin: 0;">
<%= month = sunday.strftime('%B %Y') %><%= (month2 = (sunday+6.days).strftime('%B %Y')) == month ? '' : " - #{month2}" %>
</h4>
<a href="/<%= @space.url_name %>/resources/<%= resource.id %>/calendar/?date=<%= (date-7.days).strftime('%Y-%m-%d') %><%= defined?(kiosk_mode) && kiosk_mode == 'true' ? '&kiosk_mode=true' : ''%>" class="wdn-button wdn-button-triad" id="prev-week">&lt; PREV</a>
<a href="/<%= @space.url_name %>/resources/<%= resource.id %>/calendar/?date=<%= (date+7.days).strftime('%Y-%m-%d') %><%= defined?(kiosk_mode) && kiosk_mode == 'true' ? '&kiosk_mode=true' : ''%>" class="wdn-button wdn-button-triad" style="float: right;" id="next-week">NEXT &gt;</a>
</div>
<div class="calendar-container">
<div class="time-labels">
<div class="time-chart">
<% (12..39).each do |j| %>
<div class="calendar-half-hour">
<label><%= "#{(j / 2) % 12 + (j==24?12:0)} #{j>=24?'PM':'AM'}" if j % 2 == 0 %></label>
</div>
<% end %>
</div>
<div class="calendar">
<div class="calendar-header">
<a href="/<%= @space.url_name %>/resources/<%= resource.id %>/calendar/?date=<%= (date-7.days).strftime('%Y-%m-%d') %><%= defined?(kiosk_mode) && kiosk_mode == 'true' ? '&kiosk_mode=true' : ''%>" id="prev-week" class="schedulericon-angle-circled-left"><span class="wdn-text-hidden">Previous Week</span></a>
<a href="/<%= @space.url_name %>/resources/<%= resource.id %>/calendar/?date=<%= (date+7.days).strftime('%Y-%m-%d') %><%= defined?(kiosk_mode) && kiosk_mode == 'true' ? '&kiosk_mode=true' : ''%>" id="next-week" class="schedulericon-angle-circled-right"><span class="wdn-text-hidden">next week</span></a>
<h4 class="wdn-sans-serif">
<%= month = sunday.strftime('%B %Y') %><%= (month2 = (sunday+6.days).strftime('%B %Y')) == month ? '' : " - #{month2}" %>
</h4>
</div>
<% (0..6).each do |i| %>
<% day = (sunday + i.days + 1.hour).midnight %>
<% slots = [0] * 36 %>
<div class="calendar-day" data-day="<%= day.strftime("%Y/%m/%d") %>">
<label class="day-header"><%= day.strftime("%^a %-m/%d") %></label>
<div class="day-chart" title="Open">
<% if week_hours.has_key?(i) %>
<% # figure out where the closed divs need to be
# we can assume that all records in this space_hour are non-intertwined
closed_start = 0
closed_end = 0
starts = week_hours[i].hours.map{|record| record[:start]}
ends = week_hours[i].hours.map{|record| record[:end]}
%> <%
closeds = []
(360..1199).each do |j|
if starts.include?(j)
closed_end = j
closeds << [closed_start, closed_end]
closed_start = 0
closed_end = 0
end
if ends.include?(j)
closed_start = j
end
end
closed_end = 1200
closeds << [closed_start, closed_end]
closeds.each do |closed|
start_time = closed[0] %>
<% end_time = closed[1] %>
<%
if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
<div class="day-label-container">
<% (1..5).each do |i| %>
<% day = (sunday + i.days + 1.hour).midnight %>
<label class="day-header"><%= day.strftime("%^a %-m/%d") %></label>
<% end %>
</div>
<div class="calendar-container">
<div class="time-labels">
<div class="time-chart">
<% (12..39).each do |j| %>
<div class="calendar-half-hour">
<label><%= "#{(j / 2) % 12 + (j==24?12:0)} #{j>=24?'PM':'AM'}" if j % 2 == 0 %></label>
</div>
<% end %>
</div>
</div>
<% (1..5).each do |i| %>
<% day = (sunday + i.days + 1.hour).midnight %>
<% slots = [0] * 36 %>
<div class="calendar-day" data-day="<%= day.strftime("%Y/%m/%d") %>">
<!-- <label class="day-header"><%= day.strftime("%^a %-m/%d") %></label> -->
<div class="day-chart" title="Open">
<% if week_hours.has_key?(i) %>
<% # figure out where the closed divs need to be
# we can assume that all records in this space_hour are non-intertwined
closed_start = 0
closed_end = 0
starts = week_hours[i].hours.map{|record| record[:start]}
ends = week_hours[i].hours.map{|record| record[:end]}
%> <%
closeds = []
(360..1199).each do |j|
if starts.include?(j)
closed_end = j
closeds << [closed_start, closed_end]
closed_start = 0
closed_end = 0
end
if ends.include?(j)
closed_start = j
end
end
if top + height > 720
height = 720 - top
closed_end = 1200
closeds << [closed_start, closed_end]
closeds.each do |closed|
start_time = closed[0] %>
<% end_time = closed[1] %>
<%
if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
end
if top + height > 720
height = 720 - top
end
%>
<div class="status closed" title="Closed" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
</div>
<%
end
%>
<div class="status closed" title="Closed" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
</div>
<%
%>
<% week_hours[i].hours.each do |record| %>
<% if record[:status] != 'open' && record[:status] != 'closed' %>
<% start_time = record[:start] %>
<% end_time = record[:end] %>
<% if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
end
if top + height > 720
height = 720 - top
end
%>
<div title="<%= record[:status].split('_').join(' ').capitalize_all %>" class="status <%= record[:status].downcase.split('_').join('-') %>" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
</div>
<% end %>
<% end %>
<% end %>
<% day_events = reservation_groups[day.strftime("%Y/%m/%d")] %>
<% unless day_events.nil? %>
<% day_events.sort{|a, b| a.start_time <=> b.start_time}.each do |res| %>
<% start_slot = [(((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 0].max
end_slot = [(((res.end_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 35].min
if end_slot < 0
next
end
%>
<% week_hours[i].hours.each do |record| %>
<% if record[:status] != 'open' && record[:status] != 'closed' %>
<% start_time = record[:start] %>
<% end_time = record[:end] %>
<% if [((end_time - 360) / 30).floor, 35].min < 0
next
end
top = ((start_time - 360) / 30) * 20
height = (end_time - start_time) * 20 / 30
if top < 0
height += top
top = 0
end
if top + height > 720
height = 720 - top
end
%>
<div title="<%= record[:status].split('_').join(' ').capitalize_all %>" class="status <%= record[:status].downcase.split('_').join('-') %>" style="top: <%= top %>px; height: <%= height %>px;">
&nbsp;
over = 0
(start_slot..end_slot).each do |k|
over = slots[k] if slots[k] > over
end
over = [over,3].min
top = (((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30) * 28
height = res.length * 28 / 30
top_overflow = false
bottom_overflow = false
if top < 0
height += top
top = 0
top_overflow = true
end
if top + height > 720
height = 720 - top
bottom_overflow = true
reservation_groups[(day + 1.day).strftime("%Y/%m/%d")] ||= []
reservation_groups[(day + 1.day).strftime("%Y/%m/%d")] << res
end
%>
<div class="event-container" style="top: <%= top %>px;">
<div id="event<%=res.id %>" data-start="<%= res.start_time.in_time_zone %>" data-end="<%= res.start_time.in_time_zone + (res.length * 60) %>" class="event <%= 'top-overflow' if top_overflow %> <%= 'bottom-overflow' if bottom_overflow %>" style="height: <%= height %>px;">
<p><strong><%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %></strong></p>
<% if height >= 42 %>
<p class="eventicon-clock"><%= res.start_time.in_time_zone.strftime('%I:%M %p') %> - <%= res.end_time.in_time_zone.strftime('%I:%M %p') %></p>
<% end %>
</div>
<div class="tooltip <%= top >= 50 ? "hang-above" : "hang-below" %> <%= day.strftime("%^a") == "FRI" ? "hang-left" : "hang-right" %>">
<div>
<h6 style="margin-top: 0px; margin-bottom: .25em;"><%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %></h6>
<p class="eventicon-clock"><%= res.start_time.in_time_zone.strftime('%I:%M %p') %> - <%= res.end_time.in_time_zone.strftime('%I:%M %p') %></p>
<p>Reserved by: <span class="italic"><%= res.user.full_name rescue nil %></span></p>
<div class="close"><a href="#">&times;</a></div>
</div>
</div>
</div>
<% (start_slot..end_slot).each do |k| %>
<% slots[k] = slots[k] + 1 %>
<% end %>
<% end %>
<% end %>
<% day_events = reservation_groups[day.strftime("%Y/%m/%d")] %>
<% unless day_events.nil? %>
<% day_events.sort{|a, b| a.start_time <=> b.start_time}.each do |res| %>
<% start_slot = [(((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 0].max
end_slot = [(((res.end_time.in_time_zone - day.midnight) / 60 - 360) / 30).floor, 35].min
if end_slot < 0
next
end
over = 0
(start_slot..end_slot).each do |k|
over = slots[k] if slots[k] > over
end
over = [over,3].min
top = (((res.start_time.in_time_zone - day.midnight) / 60 - 360) / 30) * 20
height = res.length * 20 / 30
top_overflow = false
bottom_overflow = false
if top < 0
height += top
top = 0
top_overflow = true
end
if top + height > 720
height = 720 - top
bottom_overflow = true
reservation_groups[(day + 1.day).strftime("%Y/%m/%d")] ||= []
reservation_groups[(day + 1.day).strftime("%Y/%m/%d")] << res
end
%>
<div class="event <%= 'top-overflow' if top_overflow %> <%= 'bottom-overflow' if bottom_overflow %>"
style="top: <%= top %>px; height: <%= height %>px; left: <%=over*8%>px">
<%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %>
</div>
<div class="tooltip hang-right" style="top: <%= top-5 %>px;">
<div>
<h6 style="margin-top: 0px; margin-bottom: .25em;"><%= res.title ? (res.title.empty? ? 'Reserved' : res.title) : 'Reserved' %></h6>
<%= res.start_time.in_time_zone.strftime('%I:%M %p') %> - <%= res.end_time.in_time_zone.strftime('%I:%M %p') %><br>
Reserved by: <span class="italic"><%= res.user.full_name rescue nil %></span>
<div class="close"><a href="#">&times;</a></div>
</div>
</div>
<% (start_slot..end_slot).each do |k| %>
<% slots[k] = slots[k] + 1 %>
<% end %>
<% end %>
<% end %>
<div>
<% (12..39).each do |j| %>
<div class="calendar-half-hour">
&nbsp;
<div>
<% (12..39).each do |j| %>
<div class="calendar-half-hour">
&nbsp;
</div>
<% end %>
</div>
<% end %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
<script type="text/javascript">
require(['jquery'], function ($) {
var max_z = 5;
require(['jquery', '/js/functions.js', '/js/jquery.mousewheel.min.js', '/js/jquery.mCustomScrollbar.js'], function ($, functions) {
var openZ = 5;
var closedZ = 3;
$(document).ready(function () {
$('.event').click(function (click) {
$(this).css('z-index', max_z);
max_z += 1;
$('.event').click(function (e) {
e.stopPropagation();
var $eventContainer = $(this).parent();
$eventContainer.css('z-index', openZ);
$(this).next('.tooltip').show();
var $tooltip = $(this).next(".tooltip");
$tooltip.show();
if($tooltip.hasClass("hang-below")){
$tooltip.css("margin-bottom", ($tooltip.find("div").height()+35)*-1);
}
$(document).one("click",function(){
$tooltip.show().hide();
$eventContainer.css('z-index', closedZ);
})
});
$('.tooltip div.close a').click(function (click) {
click.preventDefault();
$(this).closest('.tooltip').hide();
});
$(window).on("load",function(){
$(".calendar-container").mCustomScrollbar(
{
mouseWheel:{ enable: true },
theme:"rounded-dots-dark",
callbacks:{
},
setTop: "95px"
}
);
});
function tick(){
var dateTime = functions.getDateTime();
$(".calendar-day").each(function(){
if(dateTime.date == $(this).data("day")){
var top = (dateTime.hour-6) * 2 * 28;
top += dateTime.minute / 60 * 2 * 28;
if($(this).children(".day-chart").children("#nowArrow").length){
$(this).children(".day-chart").children("#nowArrow").css({top:top})
$(this).children(".day-chart").children("#nowLine").css({top:top})
}else{
$("#nowArrow").remove();
$("#nowLine").remove();
$(this).children(".day-chart").append($("<div id='nowArrow'>"));
$(this).children(".day-chart").children("#nowArrow").css({top:top})
$(this).children(".day-chart").append($("<div id='nowLine'>"));
$(this).children(".day-chart").children("#nowLine").css({top:top})
}
}
});
$(".event").each(function(){
var eventEnd = new Date($(this).data("end").replace(" -0500", "")).getTime();
var now = new Date();
now = now.getTime();
if (eventEnd < now) {
$(this).addClass("past");
}
});
};
tick();
setInterval(tick, 60000);
});
});
</script>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment