SharePoint Framework On-Premise Deploy via Gulp

SharePoint 2016 Server has support for SharePoint Framework, however there are some features missing that are present in SharePoint Online.

When first learning SharePoint Framework (SPFx), the tutorials provided by Microsoft are geared towards using SPFx in SharePoint Online.  A lot of the knowledge and concepts transfer to SharePoint 2016 Server, however I found a key feature missing: Asset deployment.

SPFx solutions expect you to host your assets (html, javascript, css) in some location that is accessible from your SharePoint site.  In SharePoint Online, the deployment gulp task that comes packaged with SPFx can (and by default, does) deploy your assets to the SharePoint Online App Catalog site.  With SharePoint 2016 Server, asset deployment is your responsibility.  I did not like this at all – I wanted a simple, configurable script/task to run that would deploy my assets where I wanted them to go.

First the setup.  Continue reading “SharePoint Framework On-Premise Deploy via Gulp”

Javascript Copy to Clipboard for Excel

I recently had a requirement to “export” data shown in a table on a web page to an Excel file.  In a normal situation I’d do something server-side to generate an Excel file with the necessary data, but unfortunately this situation was not a normal. The project I was working on did not have a server-side component – it was completely client-side code – so I couldn’t just create an Excel file.  The solution I came up with was to provide a way for the users to copy the required data to their clipboard and they could then paste it into an Excel document. Continue reading “Javascript Copy to Clipboard for Excel”

Xamarin vs. PhoneGap

I recently had the opportunity to write a Xamarin app for the first time.  It wasn’t Mike Berrymananything complicated – basically a CRUD application that would list items for the user with the option to add, edit and delete – but it afforded me a chance to compare and contrast with the way I’ve been writing mobile apps for the past few years. Continue reading “Xamarin vs. PhoneGap”

Angular – Refreshing a Route with Parameters

Angular routing is pretty nifty.  Going into how it works is beyond the scope of this post Mike Berryman(and there’s plenty of resources out there doing just that), but suffice it to say if you’re working on an Angular application, you’re using Angular’s routing.

One of the things Angular’s routing does to increase performance is reusing a Component for a route that has already been instantiated.  Say you have a Component, “MyComponent”, tied to a route, “/MyPath”.  “MyComponent” isn’t created until the user actually navigates to the “/MyPath” route.  That makes perfect sense – why instantiate a component that doesn’t need to be used yet?  What’s interesting about this design, though, is how parameters factor into it.  Let’s say you add a parameter to your “/MyPath” route, making the route “/MyPath/:id”.  The first time the user navigates to some version of this route, let’s say “/MyPath/1”, “MyComponent” will be instantiated (with the id parameter set to 1).  Then if, without leaving that route, the user changes only the parameter – for example, there’s a link in the component to go to “/MyPath/2”, “MyComponent” will not be recreated.  In fact, if not handled correctly, to the user nothing will have changed.  It will still look like they’re seeing the “/MyPath/1” version of “MyComponent”. Continue reading “Angular – Refreshing a Route with Parameters”

SharePoint Frameworks (SPFx) Impressions

Mike Berryman

With the push to move away from On-Premise SharePoint environments in favor of the Office 365 SharePoint environment, Microsoft has drastically changed the landscape of SharePoint development.  I’ve been a SharePoint developer since 2007 and making the jump to SharePoint Online has been the most jarring change yet.  Of course when SharePoint Online was first announced and as features have been introduced, I’ve played around with them in a strictly “Hello World” capacity, but as any developer will tell you, creating a “Hello World” project for play purposes is drastically different from actually creating a real-world-use project.

I recently got to create my first “real” SharePoint Framework Web Part and here are my thoughts, as someone coming from over 10 years of On-Premise SharePoint development.

Continue reading “SharePoint Frameworks (SPFx) Impressions”

Router Events in Angular

Mike BerrymanWhen working with Angular Routing, it’s very useful to be able to respond to routing events – the most obvious and useful being when the route changes. In AngularJS this was accomplished with by attaching a callback function to one the “$routeChange” events on the $scope. In Angular the concept is similar but has some key (and in my opinion, useful) differences.

Once you have a reference to the Router for your application you can subscribe to its “events” observable. This observable will emit a route-event whenever applicable that you can listen for. Being an observable you can subscribe to it in multiple places, filter for the specific event you want, transform the raw event, or anything else you could do with an observable.

Continue reading “Router Events in Angular”

Data Storage: SharePoint v. SQL

Mike BerrymanMany years ago we worked on a project that would allow the client to perform inspections digitally on the various restaurants in their franchise. One of the goals of these inspections was to make sure the restaurants were following the client’s procedures and policies. These procedures and policies are constantly being reviewed and updated, so one of the main requirements of this inspection project was to allow the client to update the inspection on the fly without requiring development updates each time. In other words, it needed to be reasonably configurable by the client. We ultimately created a dynamic form that would be constructed in real-time based on data provided by the client. The idea was that as the client updated their procedures and policies, they would add/remove items from the form to keep it up-to-date.

Continue reading “Data Storage: SharePoint v. SQL”