@kamiazya/freebusy
Version:
Determine free blocks from a list of events.
94 lines (66 loc) • 3.31 kB
Markdown
[](https://app.codacy.com/app/kamiazya/freebusy?utm_source=github.com&utm_medium=referral&utm_content=kamiazya/freebusy&utm_campaign=Badge_Grade_Dashboard) [](https://codeclimate.com/github/kamiazya/freebusy/maintainability) [](https://www.codefactor.io/repository/github/kamiazya/freebusy) [](https://travis-ci.org/kamiazya/freebusy) [](https://codecov.io/gh/kamiazya/freebusy) [](https://app.fossa.io/projects/git%2Bgithub.com%2Fkamiazya%2Ffreebusy?ref=badge_shield) [](https://badge.fury.io/js/%40kamiazya%2Ffreebusy) [](https://bettercodehub.com/)
# freebusy
Determine free blocks from a list of events.
## Description
It returns the free block within scope when you enter a list of events.
Redesign [raineorshine/freebusy](https://github.com/raineorshine/freebusy) with TypeScript.
[](https://www.npmjs.com/package/@kamiazya/freebusy)
## Installation
### yarn
```bash
yarn add @kamiazya/freebusy
```
### npm
```bash
npm install @kamiazya/freebusy
```
## Usage
Determine free blocks from a list of events.
Format result by [luxon](https://moment.github.io/luxon/).
### Simple
In this case, it detects free block when there are three events from 9 o'clock to 17 o'clock in 2019-01-10.
```typescript
import { getFree, BlockLike, ScopeTime } from '@kamiazya/freebusy';
const events: BlockLike[] = [
{
start: '2019-01-10T09:30',
end: '2019-01-10T10:00',
},
{
start: '2019-01-10T12:00',
end: '2019-01-10T13:00',
},
{
start: '2019-01-10T15:00',
end: '2019-01-10T16:00',
},
];
const freeBlocks = getFree({
scope: {
start: '2019-01-10',
end: '2019-01-11',
time: new ScopeTime({
defaultStart: 9,
defaultEnd: 17,
}),
},
events,
});
freeBlocks.blocks
.forEach((block) => {
const start = block.start.toFormat('DDD T');
const end = block.end.toFormat('T');
console.log(`${start} - ${end}`);
});
// Output:
// 2019年1月10日 9:00 - 9:30
// 2019年1月10日 10:00 - 12:00
// 2019年1月10日 13:00 - 15:00
// 2019年1月10日 16:00 - 17:00
```
## Doccumentation
See this [link](https://kamiazya.github.io/freebusy/).
It generated by [TypeDoc](https://typedoc.org/).
## Licence
This software is released under the MIT License, see LICENSE.
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fkamiazya%2Ffreebusy?ref=badge_large)