UNPKG

@kamiazya/freebusy

Version:

Determine free blocks from a list of events.

94 lines (66 loc) 3.31 kB
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/08cca3a1cc7c48fd91e9e9abea307e0c)](https://app.codacy.com/app/kamiazya/freebusy?utm_source=github.com&utm_medium=referral&utm_content=kamiazya/freebusy&utm_campaign=Badge_Grade_Dashboard) [![Maintainability](https://api.codeclimate.com/v1/badges/45b4f1f243a6fc8efd32/maintainability)](https://codeclimate.com/github/kamiazya/freebusy/maintainability) [![CodeFactor](https://www.codefactor.io/repository/github/kamiazya/freebusy/badge)](https://www.codefactor.io/repository/github/kamiazya/freebusy) [![Build Status](https://travis-ci.org/kamiazya/freebusy.svg?branch=master)](https://travis-ci.org/kamiazya/freebusy) [![codecov](https://codecov.io/gh/kamiazya/freebusy/branch/master/graph/badge.svg)](https://codecov.io/gh/kamiazya/freebusy) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fkamiazya%2Ffreebusy.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fkamiazya%2Ffreebusy?ref=badge_shield) [![npm version](https://badge.fury.io/js/%40kamiazya%2Ffreebusy.svg)](https://badge.fury.io/js/%40kamiazya%2Ffreebusy) [![BCH compliance](https://bettercodehub.com/edge/badge/kamiazya/freebusy?branch=master)](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://nodei.co/npm/@kamiazya/freebusy.png?downloads=true&downloadRank=true&stars=true](https://nodei.co/npm/@kamiazya/freebusy.png?downloads=true&downloadRank=true&stars=true)](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. [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fkamiazya%2Ffreebusy.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fkamiazya%2Ffreebusy?ref=badge_large)