Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
@phoenix344/opening-hours
Advanced tools
Readme
A plain typescript/ES6+ opening hours library with no external dependencies.
Initialize your class:
import { OpeningHours, WeekDays } from '@phoenix344/opening-hours';
const oh = new OpeningHours({
// Predefine a date makes only sense to test the current day
//currentDate: new Date(2020, 8, 15),
text: {
weekDays: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
closed: 'geschlossen',
timespanSeparator: ' bis '
}
});
Insert opening hours entries:
oh.add(WeekDays.Monday, '08:00', '12:30');
oh.add(WeekDays.Monday, '13:00', '16:00');
oh.add(WeekDays.Tuesday, '08:00', '12:30');
oh.add(WeekDays.Tuesday, '13:00', '16:00');
oh.add(WeekDays.Wednesday, '08:00', '14:00');
oh.add(WeekDays.Thursday, '08:00', '12:30');
oh.add(WeekDays.Thursday, '13:00', '16:00');
oh.add(WeekDays.Friday, '08:00', '12:30');
oh.add(WeekDays.Friday, '13:00', '16:00');
oh.add(WeekDays.Saturday, '10:00', '14:00');
Alternatively you can add a saved JSON output from toJSON()
:
oh.load([
{ "day": 1, "from": "0800", "until": "1230" },
{ "day": 1, "from": "1300", "until": "1600" },
{ "day": 2, "from": "0800", "until": "1230" },
{ "day": 2, "from": "1300", "until": "1600" },
{ "day": 3, "from": "0800", "until": "1400" },
{ "day": 4, "from": "0800", "until": "1230" },
{ "day": 4, "from": "1300", "until": "1600" },
{ "day": 5, "from": "0800", "until": "1230" },
{ "day": 5, "from": "1300", "until": "1600" },
{ "day": 6, "from": "1000", "until": "1400" }
]);
To display it as plain text use the toString()
method:
oh.toString();
The current day will be highlighted in brackets [...]
Mo 08:00 bis 12:30, 13:00 bis 16:00
[Di 08:00 bis 12:30, 13:00 bis 16:00]
Mi 08:00 bis 14:00
Do 08:00 bis 12:30, 13:00 bis 16:00
Fr 08:00 bis 12:30, 13:00 bis 16:00
Sa 10:00 bis 14:00
To use the data to customize your UI you can also use the toLocaleJSON
method:
oh.toLocaleJSON();
The output looks like this (the current day is active: true
):
[
{
"active": false,
"day": "Mo",
"times": [
{ "from": "08:30", "until": "12:30" },
{ "from": "13:00", "until": "16:00" }
]
},
{
"active": true,
"day": "Di",
"times": [
{ "from": "08:30", "until": "12:30" },
{ "from": "13:00", "until": "16:00" }
]
},
{
"active": false,
"day": "Mi",
"times": [
{ "from": "08:30", "until": "14:00" },
]
},
{
"active": false,
"day": "Do",
"times": [
{ "from": "08:30", "until": "12:30" },
{ "from": "13:00", "until": "16:00" }
]
},
{
"active": false,
"day": "Fr",
"times": [
{ "from": "08:30", "until": "12:30" },
{ "from": "13:00", "until": "16:00" }
]
},
{
"active": false,
"day": "Sa",
"times": [
{ "from": "10:00", "until": "14:00" }
]
},
]
To export and save the opening hours, use the toJSON
method:
oh.toJSON();
[
{ "day": 1, "from": "0800", "until": "1230" },
{ "day": 1, "from": "1300", "until": "1600" },
{ "day": 2, "from": "0800", "until": "1230" },
{ "day": 2, "from": "1300", "until": "1600" },
{ "day": 3, "from": "0800", "until": "1400" },
{ "day": 4, "from": "0800", "until": "1230" },
{ "day": 4, "from": "1300", "until": "1600" },
{ "day": 5, "from": "0800", "until": "1230" },
{ "day": 5, "from": "1300", "until": "1600" },
{ "day": 6, "from": "1000", "until": "1400" }
]
oh.toString({ locales: 'zh-CN' });
The output looks like this:
[tue 上午08:00 - 下午12:30, 下午01:00 - 下午04:00]
wed 上午08:00 - 下午02:00
thu 上午08:00 - 下午12:30, 下午01:00 - 下午04:00
fri 上午08:00 - 下午12:30, 下午01:00 - 下午04:00
sat 上午10:00 - 下午02:00
sun closed
mon 上午08:00 - 下午12:30, 下午01:00 - 下午04:00
Interface for every available class option.
Property | Default | Description |
---|---|---|
weekStart | WeekDays.Monday | The start of the week can vary in different countries. The default is sunday, but you can set it to any week day. |
currentDate | new Date() | This is the indicator to highlight the opening hours of the current day. |
currentDayOnTop | false | Orders the output list, so the current day is always on top. |
locales | "de-DE" | The language tag that represents how the time will be formatted. In case of internationalization it should be defined by the client (i.e. from |
dateTimeFormatOptions | { timeZone: "Europe/Berlin", hour: "2-digit", minute: "2-digit" } | The DateTimeFormat configures the time at GMT-2 and only displays hours and minutes in 2-digit format. Should be defined by the business owner to avoid confusion with local and remote timezones. |
text | OpeningHoursTranslation | An object of translations for display behavior |
Interface for the output text. In case of internationalization you can add your translations here
Property | Default | Description |
---|---|---|
weekDays | ["sun", "mon", "tue", "wed", "thu", "fri", "sat"] | The human readable week days ordered by 0 = Sunday until 6 = Saturday. This will be used in the toString() and toLocaleJSON() output. |
timespanSeparator | " - " | Fills the space between the from and until time in the toString() method. |
closed | "closed" | Fills the empty value of a day with the closed message in toString() method. |
Method | Parameters | Return | Description |
---|---|---|---|
constructor | (optional) options?: OpeningHoursOptions | Initializes the class instance | |
getState | (optional) now?: Date | OpenState.Open or OpenState.Closed | Returns if the subject business is currently open or closed |
isOpenSoon | (optional) now?: Date (optional) expireSeconds?: number | boolean | Informs whether the business will be open soon. expireSeconds = 1800 (30min) |
isClosedSoon | (optional) now?: Date (optional) expireSeconds?: number | boolean | Informs whether the business will be closed soon. expireSeconds = 1800 (30min) |
add | day: WeekDays `from: string | number | Date<br> until: string |
load | `json: Array<{ day: WeekDays, from: string | number | Date, until: string |
toString | (optional) options?: OpeningHoursOptions | Example: "mon 08:00 - 12:30, 13:00 - 16:00" | Creates a string output that represents the opening hours |
toLocaleJSON | (optional) options?: OpeningHoursOptions | Example: [{day: string, active: boolean, times: [{day: 1, from: "08:00", until: "12:30"}, {from: "13:00", until: "16:00"}]}] | Creates an output format that can easily be used to format it in the UI. |
toJSON | Example: [{day: 1, from: "0800", until: "1230"}, {day: 1, from: "1300", until: "1600"}] | Creates an object output for JSON and can be reimported into load(json) |
FAQs
[![Build Status](https://app.travis-ci.com/phoenix344/opening-hours.svg?branch=master)](https://app.travis-ci.com/phoenix344/opening-hours)
The npm package @phoenix344/opening-hours receives a total of 11 weekly downloads. As such, @phoenix344/opening-hours popularity was classified as not popular.
We found that @phoenix344/opening-hours demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.