npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

native-airbnb-calendar

v1.0.1

Published

Airbnb Calendar for React Native Applications with utilities for calendar control.

Downloads

5

Readme

Airbnb-Calendar

Utilities for managing, updating, checking and representing airbnb calendar methodologies for booking/reservation based calendar representation

Licensing

MIT License

Builds

|Branch|Build Status| |---|---| |Master|Build to use the lib| |Stag|Build to use the lib| |Dev|Build to use the lib|

Interfaces and Types

Find these interfaces and type for your referrence along the codes

interface CalendarDateType {
  timestamp: number;
  dateString: string;
  day: number;
  month: number;
  year: number;
}

enum Status {
  BLOCKED = "blocked",
  BOOKED = "booked",
  OPEN = "open",
}

enum Colors {
  BLOCKED = "lightgrey",
  BOOKED = "pink",
  OPEN = "white",
}

interface DataType {
  [key: string]: {
    _id: string;
    check_in: string;
    check_out: string;
    selected: Boolean;
    startingDay: Boolean;
    endingDay: Boolean;
    status: string;
  };
}

interface DefaultDataType {
  _id: string;
  check_in: string;
  check_out: string;
  status: string;
  selected?: Boolean;
  endingDay?: Boolean;
  startingDay?: Boolean;
}

Mock Data

const data = [
  {
    _id: "1234560",
    check_in: "2023-10-1",
    check_out: "2023-10-5",
    status: "booked",
  },
  {
    _id: "1234563",
    check_in: "2023-10-15",
    check_out: "2023-10-20",
    status: "open",
  },
  {
    _id: "1234561",
    check_in: "2023-10-5",
    check_out: "2023-10-8",
    status: "booked",
  },
  {
    _id: "1234562",
    check_in: "2023-10-10",
    check_out: "2023-10-12",
    status: "blocked",
  },
  {
    _id: "1234564",
    check_in: "2023-10-25",
    check_out: "2023-10-28",
    status: "blocked",
  },
];

Methods

convertToDateFormat(date: string): string
Returns the date in YYYY-M-D format

sortByDate(): void
Sorts all the data in ascending form of check_in property

getDaysBetweenDates(startDate: moment.Moment, endDate: moment.Moment): Array<string>
Returns an array of dates falling between the range of startDate and endDate including the start and end dates

groupDataByDate(): void
Groups all the reservation objects with keys as the date which holds the reservation data object. It also marks each object with startingDay and endingDay as boolean true where two reservation join in where one reservation has its check_in date same as check_out date of the other

modifyDataByDateAndStatus(): void
Modifies all the reservation items with startingDay: true if it is the start date of a particular reservation
Modifies all the reservation items with endingDay: true if it is the end date of a particular reservation
Modifies all the reservation items with selected: true if it falls between the start and end date of a particular reservation

addOpen(data: DefaultDataType): void | Error
Adds open status based reservation data in the already available data. It throws error if a status other than 'open'.

addBooked(data: DefaultDataType): void | Error
Adds booked status based reservation data in the already available data. It throws error if a status other than 'booked'.

addBlocked(data: DefaultDataType): void
Adds blocked status based reservation data in the already available data. It throws error if a status other than 'blocked'.

get output(): Map<string, DefaultDataType>
It is a getter method to return the ouput data after the last process

isReserved(dateItem: string): Boolean | DefaultDataType
Returns the reservation data which the particular date holds else returns false

Invocation

const nativeCalendarUtils = new NativeCalendarUtils(data);
data parameter above is of the mock data format mentioned above

nativeCalendarUtils.modifyDataByDateAndStatus();

const openData = {
  _id: "1234563",
  check_in: "2023-10-21",
  check_out: "2023-10-24",
  status: "open",
};

nativeCalendarUtils.addOpen(openData)

nativeCalendarUtils.output