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

sharepoint-events-parser

v0.0.2

Published

A way to parse SharePoint Calendar Event RecurrenceData into individual event objects with javascript

Downloads

13

Readme

sharepoint-events-parser

A way to parse SharePoint Calendar Event RecurrenceData into individual event objects with JavaScript

Why

Recurring events on a SharePoint calendar are not stored individually; instead, the parent event contains the recurrence information stored as XML. The only other way I've seen to get recurrence data from a calendar list on the client side is to use the Lists.asmx web service. This is not necessarily a bad way to go, but working with the CAML for the query and the XML returned from that web service can be burdensome.

This library uses pure JavaScript to parse out the RecurrenceData information on events into an array of individual javascript objects representing each instance of the recurring event. You can query calendar lists with a REST query, get back JSON data, and choose to parse it or not to get the recurring events.

This has bee tested with SharePoint 2013 On-premises.

Usage

Since this is a client-side library, it works with client-side data. I'm using SharePoint's RESTful web services to retrieve calendar data. In order for the parser to parse Recurring Events, you must specify in your REST query that you wish to retrieve the RecurrenceData and Duration properties (by default, these are not returned)

REST Query

/_api/web/lists/getbytitle('Calendar')/items?$select=*,Duration,RecurrenceData

The events parser currently assumes that you are using a standard SharePoint Calendar list, so it uses the EventDate and EndDate properties for parsing events. In the future, I may make this configurable, but for now, if your data does not contain those properties, you can add them to your event object manually prior to calling the parser

There are two basic ways to call the parser - on a single event, or on an array of events. In both cases, the parser will return an array of parsed events (including any recurring events)

Parse Single Event

const parsedArray = spEventsParser.parseEvent(eventObject);

Parse Array of Events

const parsedArray = spEventsParser.parseEvents(eventArray);

Optionally, specify a date range for the recurring events

A recurring event may have been created several years ago, but maybe you only care to return data within the past year. Likewise, if an event recurs indefinitely, you may only care to return the recurrence up to one year in the future. You can specify these boundaries by passing a start and end date into the events parser:

const dt = new Date();
const startDate = new Date(dt.getFullYear(), dt.getMonth() - 1, 25); //start from the 25th of last month
const endDate = new Date(dt.getFullYear(), dt.getMonth() + 1, 5); //end at the fifth of next month
 
const parsedArray = spEventsParser.parseEvent(eventObject, startDate, endDate);