<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>PHP Annual Leave Scheduling (JavaScript/HTML5 Frontend, MySQL Database)</title>
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <link href="main.css" rel="stylesheet" type="text/css"/>
  <!-- DayPilot library -->
  <script src="js/daypilot/daypilot-all.min.js"></script>

  <style type="text/css">
    #dp .scheduler_default_rowheader_inner {
      padding: 10px;
    }



  
    #dp .scheduler_default_timeheader_cell_inner,
    #dp .scheduler_default_timeheader_float_inner {
      padding: 10px;
    }

    #dp .scheduler_default_columnheader_cell_inner {
      padding: 10px;
    }

    #dp .scheduler_default_event_inner {
      padding: 10px;
    }
  </style>
</head>
<body>
<div class="header">
  <h1><a href='https://code.daypilot.org/97780/php-annual-leave-scheduling-javascript-html5-frontend-mysql'>PHP Annual Leave Scheduling (JavaScript/HTML5 Frontend, MySQL Database)</a></h1>
  <div><a href="https://javascript.daypilot.org/">AIR MAURITIUS</a> LEAVE PLANNING GROUND OPERATIONS</div>
</div>

<div class="main">
  <div id="dp"></div>
</div>

<script>
  const dp = new DayPilot.Scheduler("dp", {
    timeHeaders: [{"groupBy": "Month"}, {"groupBy": "Day", "format": "d"}],
    rowHeaderColumns: [
      {name: "Name", display: "name"},
      {name: "Total"}
    ],
    scale: "CellDuration",
    cellDuration: 720,
    days: DayPilot.Date.today().daysInYear(),
    startDate: DayPilot.Date.today().firstDayOfYear(),
    eventHeight: 40,
    headerHeight: 40,
    cellWidth: 20,
    allowEventOverlap: false,
    onBeforeEventRender: (args) => {
      args.data.moveVDisabled = true;
      const duration = new DayPilot.Duration(args.data.start, args.data.end);
      args.data.html = duration.totalDays() + " days";


      

      /*args.data.backColor = "#d9ead3";

       args.data.barColor = "#6aa84f";
       args.data.barColor = "##6E8700";

      */
     
      args.data.backColor = "#d9ead3";

      args.data.barColor = $_SESSION["leave"];
      

     




      args.data.barBackColor = args.data.barColor;
    },
    onBeforeRowHeaderRender: (args) => {
      args.row.columns[1].html = "";
      const totalDuration = args.row.events.totalDuration();

      if (totalDuration.days() > 0) {
        args.row.columns[1].html = totalDuration.totalDays() + " days";
      }
    },
    onBeforeCellRender: (args) => {
      const day = args.cell.start.getDayOfWeek();
      if (day === 6 || day === 0) {
        args.cell.disabled = true;
      }
    },
    onTimeRangeSelected: async (args) => {

      const form = [
        { name: "Start", id: "start", dateFormat: "MMMM d, yyyy h:mm tt"},
        { name: "End", id: "end", dateFormat: "MMMM d, yyyy h:mm tt"},
        { name: "Employee", id: "resource", options: dp.resources },
      ];

      const data = {
        start: args.start,
        end: args.end,
        resource: args.resource
      };

      const options = {
        autoFocus: false
      };

      const modal = await DayPilot.Modal.form(form, data, options);
      dp.clearSelection();
      if (modal.canceled) {
        return;
      }

      const {data: result} = await DayPilot.Http.post("backend_create.php", modal.result);
      const id = result.id;
      data.id = id;
      dp.events.add(data);

    },
    eventDeleteHandling: "Update",
    onEventDeleted: async (args) => {
      await DayPilot.Http.post("backend_delete.php", {id: args.e.data.id});
      dp.message("Deleted");
    },
    onEventMoved: async (args) => {

      const data = {
        id: args.e.data.id,
        start: args.newStart,
        end: args.newEnd,
        resource: args.newResource
      };
      await DayPilot.Http.post("backend_move.php");
      dp.message("Moved");

    },
    onEventResized: async (args) => {

      const data = {
        id: args.e.data.id,
        start: args.newStart,
        end: args.newEnd
      };
      await DayPilot.Http.post("backend_move.php", data);
      dp.message("Resized");

    },
    scrollTo: DayPilot.Date.today()
  });
  dp.events.list = [];









  dp.separators = [];
  for (let i = 0; i < dp.days; i++) {
    dp.separators.push({location: dp.startDate.addDays(i), color: "#ddd"});
  }
  dp.init();

  dp.rows.load("backend_employees.php");
  dp.events.load("backend_events.php");

</script>

</body>
</html>