ready-calendar-event

info4c-application

by 7rows

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/schedulejs/0.6.3/schedule.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/later/1.2.0/later.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
h1 {
  font-size: 16pt;
}

h2 {
  font-size: 14pt;
}

p {
  font-size: 12pt;
  line-height: 12pt;
  margin: 2pt;
  padding-left: 20px;
}

</style>
</head>
<body>
</body>


</html>

JavaScript

var p = later.parse.text;

// Step 1: Define our reservations (tasks)
var reservations = [
  {name: 'Joe', length: 4, availability: 'after 12:00'},
  {name: 'Mike', length: 2},
  {name: 'Frank', length: 8},
  {name: 'John', length: 3, availability: 'on Thurs and Fri'},
  {name: 'Peter', length: 1, availability: 'before 10:00am'},
  {name: 'Sam', length: 2},
  {name: 'Alan', length: 2},
  {name: 'James', length: 8},
  {name: 'Steve', length: 1, availability: 'after 12:00 and before 1:00pm'},
  {name: 'Mark', length: 2},
  {name: 'Alex', length: 8}
];

// Step 2: Define our elevators (resources)
var elevators = [
  {name: 'E1', availability: 'every weekday after 8:00am and before 4:00pm'},
  {name: 'E2', availability: 'every weekday after 8:00am and before 4:00pm'}
];

// Step 3: Tasks aren't in the right format, need to create a generator
var t = schedule.tasks()
          .id(function(d) { return d.name; })
          // our length is in hours, convert to minutes
          .duration(function(d) { return d.length * 60; })
          // use later.parse.text to parse text into a usable schedule
          .schedule(function(d) { return d.availability ? p(d.availability) : undefined; })
          // prioritize our reservations on first come first serve
          .priority(function(d, i) { return 100 - i; })
          // elevator reservations have to be contiguous
          .minSchedule(function(d) { return d.length * 60; })
          // assume that only one elevator is available for reservations to start
          .resources(['E1']);

var tasks = t(reservations);

// Step 4: Resources aren't in the right format, need to create a generator
var r = schedule.resources()
          .id(function(d) { return d.name; })
          .schedule(function(d) { return d.availability ? p(d.availability) : undefined; });

var resources = r(elevators);

// Step 5: Pick a start date for the schedule and set correct timezone
var start = new Date(2013, 2, 21);
schedule.date.localTime();

//...