Time Configuration
Configure time grid intervals, working hours, and time restrictions.
Grid Interval
Set time slot intervals in minutes using grid:
<html>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/style.min.css" />
<script src="https://cdn.jsdelivr.net/npm/lemonadejs/dist/lemonade.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/index.min.js"></script>
<div id='schedule' style="height: 600px;"></div>
<script>
const { Schedule } = calendarjs;
Schedule(document.getElementById('schedule'), {
type: 'week',
grid: 30, // 30-minute intervals
data: []
});
</script>
</html>
import { Schedule } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
// 15-minute intervals (default)
Schedule(document.getElementById('schedule'), {
grid: 15,
data: []
});
// 30-minute intervals
Schedule(document.getElementById('schedule2'), {
grid: 30,
data: []
});
// 1-hour intervals
Schedule(document.getElementById('schedule3'), {
grid: 60,
data: []
});
import React from 'react';
import { Schedule } from '@calendarjs/ce/dist/react';
import '@calendarjs/ce/dist/style.css';
export default function App() {
return (
<Schedule
type="week"
grid={30}
data={[]}
style={{ height: '500px' }}
/>
);
}
<template>
<Schedule
type="week"
:grid="30"
:data="[]"
style="height: 500px"
/>
</template>
<script>
import { Schedule } from '@calendarjs/ce/dist/vue';
import '@calendarjs/ce/dist/style.css';
export default {
components: { Schedule }
}
</script>
Common Grid Values
| Interval | Minutes | Use Case |
|---|---|---|
| 15 min | 15 |
Default, detailed scheduling |
| 30 min | 30 |
Standard appointments |
| 60 min | 60 |
Hourly blocks |
Valid Time Range
Restrict available hours using validRange:
<html>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/style.min.css" />
<script src="https://cdn.jsdelivr.net/npm/lemonadejs/dist/lemonade.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/index.min.js"></script>
<div id='schedule' style="height: 600px;"></div>
<script>
const { Schedule } = calendarjs;
Schedule(document.getElementById('schedule'), {
type: 'week',
validRange: ['09:00', '18:00'], // 9 AM to 6 PM only
data: []
});
</script>
</html>
import { Schedule } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
// Business hours: 9 AM - 6 PM
Schedule(document.getElementById('schedule'), {
validRange: ['09:00', '18:00'],
data: []
});
// Extended hours: 8 AM - 10 PM
Schedule(document.getElementById('schedule2'), {
validRange: ['08:00', '22:00'],
data: []
});
// Morning only: 6 AM - 12 PM
Schedule(document.getElementById('schedule3'), {
validRange: ['06:00', '12:00'],
data: []
});
import React from 'react';
import { Schedule } from '@calendarjs/ce/dist/react';
import '@calendarjs/ce/dist/style.css';
export default function App() {
return (
<Schedule
type="week"
validRange={['09:00', '18:00']}
data={[]}
style={{ height: '500px' }}
/>
);
}
<template>
<Schedule
type="week"
:validRange="['09:00', '18:00']"
:data="[]"
style="height: 500px"
/>
</template>
<script>
import { Schedule } from '@calendarjs/ce/dist/vue';
import '@calendarjs/ce/dist/style.css';
export default {
components: { Schedule }
}
</script>
Read-Only Time Ranges
Block specific time periods using readOnlyRange:
Single Range
import { Schedule } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
// Lunch break: 12 PM - 1 PM
Schedule(document.getElementById('schedule'), {
readOnlyRange: ['12:00', '13:00'],
data: []
});
Multiple Ranges
import { Schedule } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
// Block before 9 AM and after 6 PM, plus lunch
Schedule(document.getElementById('schedule'), {
readOnlyRange: [
['00:00', '09:00'], // Before work
['12:00', '13:00'], // Lunch
['18:00', '23:59'] // After work
],
data: []
});
Combined Configuration
<html>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/style.min.css" />
<script src="https://cdn.jsdelivr.net/npm/lemonadejs/dist/lemonade.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/index.min.js"></script>
<div id='schedule' style="height: 600px;"></div>
<script>
const { Schedule } = calendarjs;
Schedule(document.getElementById('schedule'), {
type: 'week',
grid: 30, // 30-minute slots
validRange: ['08:00', '20:00'], // 8 AM to 8 PM
readOnlyRange: [
['12:00', '13:00'], // Lunch break
['17:00', '17:30'] // Afternoon break
],
data: []
});
</script>
</html>
import { Schedule } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
Schedule(document.getElementById('schedule'), {
type: 'week',
grid: 30,
validRange: ['08:00', '20:00'],
readOnlyRange: [
['12:00', '13:00'],
['17:00', '17:30']
],
data: []
});
import React from 'react';
import { Schedule } from '@calendarjs/ce/dist/react';
import '@calendarjs/ce/dist/style.css';
export default function App() {
return (
<Schedule
type="week"
grid={30}
validRange={['08:00', '20:00']}
readOnlyRange={[
['12:00', '13:00'],
['17:00', '17:30']
]}
data={[]}
style={{ height: '500px' }}
/>
);
}
<template>
<Schedule
type="week"
:grid="30"
:validRange="['08:00', '20:00']"
:readOnlyRange="readOnlyTimes"
:data="[]"
style="height: 500px"
/>
</template>
<script>
import { Schedule } from '@calendarjs/ce/dist/vue';
import '@calendarjs/ce/dist/style.css';
export default {
components: { Schedule },
data() {
return {
readOnlyTimes: [
['12:00', '13:00'],
['17:00', '17:30']
]
};
}
}
</script>
Programmatic Updates
Change time configuration at runtime:
import { Schedule } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
const schedule = Schedule(document.getElementById('schedule'), {
type: 'week',
grid: 30,
data: []
});
// Change grid interval
schedule.grid = 60;
schedule.render();
// Update valid range
schedule.setRange(['10:00', '16:00']);
// Update readonly range
schedule.setReadOnly([['12:00', '13:00']]);
Related
- Schedule Documentation - Main schedule docs
- Weekly Mode - Recurring schedules
- Event Management - CRUD operations