native-airbnb-calendar
v1.0.1
Published
Airbnb Calendar for React Native Applications with utilities for calendar control.
Downloads
5
Maintainers
Readme
Airbnb-Calendar
Utilities for managing, updating, checking and representing airbnb calendar methodologies for booking/reservation based calendar representation
Licensing
Builds
|Branch|Build Status| |---|---| |Master|| |Stag|| |Dev||
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