45
Using JSLink and Display Templates with List View Web Parts for ITPros #SPSSTHLM19 Paul Hunt (@cimares) January 25 th , 2014 SharePoint Saturday Stockholm

SPSSTHLM - Using JSLink and Display Templates for ITPros

Embed Size (px)

DESCRIPTION

These are the slides from my session at SharePoint Saturday Stockholm, where I look at JavaScript Display Templates and how ITPros doing first and second tier development can use the JSLink functionality to implement them. This session focussed on List View Web Parts and looked at the way we previously visualised data in old version of SharePoint and how we would approach that now in SharePoint 2013. Please note: The upload of the pptx is failing for some reason, so I've added the slides as a PDF which doesn't include the notes on some of the slides. if you do have any questions, please reach out to me on twitter (@cimares) with any questions.

Citation preview

Page 1: SPSSTHLM - Using JSLink and Display Templates for ITPros

Using JSLink and Display Templates with List View Web Parts for ITPros

#SPSSTHLM19

Paul Hunt (@cimares)

January 25th, 2014

SharePoint Saturday

Stockholm

Page 3: SPSSTHLM - Using JSLink and Display Templates for ITPros

Who Am I?

• SharePoint Architect for Trinity Expert Systems

• Co-organiser of SUGUK London Region

• Member of the SharePoint community since 2007

• In my spare time I’m a woodturner, making Pots, Pens and artistic pieces!

• Paul Hunt

• Twitter: @Cimares

Page 4: SPSSTHLM - Using JSLink and Display Templates for ITPros

What is this session all about?

• The List View Web Part

Page 5: SPSSTHLM - Using JSLink and Display Templates for ITPros

Who’s this session for?

• Primarily First/Second tier developers ITPros who customised 2010 list views in SPD

ITPros that used to write their own XSLT in SP2010

Developers that want to know what's available before opening VS2012

• On Premises or Office 365 Deployments• Might not be ideal for someone who isn’t comfortable with JavaScript, HTML

and CSS.– Though if you used to play in SPD 2010 you’re halfway there!

– If you want to know what's achievable without deployed solutions

Page 6: SPSSTHLM - Using JSLink and Display Templates for ITPros

What did we used to do?

• We used SPD and the Design View We did conditional formatting

Played with colours

Injected Hyperlinks

Page 7: SPSSTHLM - Using JSLink and Display Templates for ITPros

What did we used to do?

• But No design view anymore!

Page 8: SPSSTHLM - Using JSLink and Display Templates for ITPros

What did we used to do?

• We used XSLT Overrides (Still exist, but deprecated!)

Page 9: SPSSTHLM - Using JSLink and Display Templates for ITPros

What did we used to do?

• We used XSLT Overrides (Still exist, but deprecated!) Which took boring list data views

Page 10: SPSSTHLM - Using JSLink and Display Templates for ITPros

What did we used to do?

• We used XSLT Overrides (Still exist, but deprecated!) And transformed them into engaging visual representations

Page 11: SPSSTHLM - Using JSLink and Display Templates for ITPros

What did we used to do?

• We used custom code solutions (We still can!) Custom CAML Rendering Templates

Custom List Views

Custom Web Parts

• All bring additional headaches

Page 12: SPSSTHLM - Using JSLink and Display Templates for ITPros

So why the focus on Client Side Rendering?

Page 13: SPSSTHLM - Using JSLink and Display Templates for ITPros

• It’s client side, moving the impact of customisations off of the web server and onto the often powerful and under utilised client machine

SETI@Home

Folding@Home

So why the focus on Client Side Rendering?

Page 14: SPSSTHLM - Using JSLink and Display Templates for ITPros

• It’s client side, moving the impact of customisations off of the web server and onto the often powerful and under utilised client machine

• Some client machines may struggle with heavy Javascript loads!

So why the focus on Client Side Rendering?

Page 15: SPSSTHLM - Using JSLink and Display Templates for ITPros

Specifically why JavaScript, HTML and CSS?

• It’s easier to develop..

• Much simpler than XSLT

• Certainly easier to troubleshoot than XSLT

• Likely to have the skills in house

• Cross-platform (ish!) Some frameworks such as jQuery help with this

Page 16: SPSSTHLM - Using JSLink and Display Templates for ITPros

Exactly what is a JavaScript Display Template?

• A small piece of JavaScript code that is called by the browser AFTER the page has been delivered.

• They are prolific in SharePoint 2013 Some examples

Search Results

Field Rendering

Search Refiners

List Forms

List views

eDiscovery

Page 17: SPSSTHLM - Using JSLink and Display Templates for ITPros

LVWP Templates != Search Display Templates

• LVWP Display Templates are JavaScript only.

• They do not start life as HTML like Display Templates for search do.

• They do not require embedded properties.

• CONTEXT (ctx) is king!

17

Page 18: SPSSTHLM - Using JSLink and Display Templates for ITPros

We’re just looking at:-

• List View Display Templates These provide the ability to override the rendering of an entire view

• Field Rendering Display Templates These provide the ability to override the rendering of a single field in a list

view

Page 19: SPSSTHLM - Using JSLink and Display Templates for ITPros

Anatomy of a List View Display Template

• Start with an empty .JS (Or copy my examples)

• Define a Function to register the Display Template

• Define the Function called by the Display Template for each item.

• Call the register function

Page 20: SPSSTHLM - Using JSLink and Display Templates for ITPros

Anatomy of a List View Display Template• Define a Function to register the Display Template

For a list of template types see - http://bit.ly/169AbS9

Page 21: SPSSTHLM - Using JSLink and Display Templates for ITPros

Anatomy of a List View Display Template

• Define the Function called by the Display Template

• Note the use of ctx.CurrentItem.Title– Any field in the view can be obtained this way

– You must use the internal name

• Obtained from the edit column screen

Page 22: SPSSTHLM - Using JSLink and Display Templates for ITPros

Anatomy of a List View Display Template

• Call the function we defined when the page loads.

Page 23: SPSSTHLM - Using JSLink and Display Templates for ITPros

Anatomy of a Field Rendering Display Template

• All that really changes is the override set-up

• This time there are no headers/footers

• We only specify the Base View ID/Field Name

Page 24: SPSSTHLM - Using JSLink and Display Templates for ITPros

Anatomy of a Field Rendering Display Template

• The render function is similar to the list view

Page 25: SPSSTHLM - Using JSLink and Display Templates for ITPros

How do we use them with List Views?

• First we need to upload/create them in the MasterPagegallery

Page 26: SPSSTHLM - Using JSLink and Display Templates for ITPros

How do we use them with List Views?

• Set some metadata

Page 27: SPSSTHLM - Using JSLink and Display Templates for ITPros

How do we use them with List Views?

• Add a link into the JSLink on the web part

• Note the ~token in use– ~sitecollection

– ~site

– ~layouts

– ~sitecollectionlayouts

– ~sitelayouts

• You can have multiple JSLinks– Join them with |

Page 28: SPSSTHLM - Using JSLink and Display Templates for ITPros

Adding JSLink Demo

Page 29: SPSSTHLM - Using JSLink and Display Templates for ITPros

How do we troubleshoot?

• IE Developers Toolbar (Other debuggers exist!)

Page 30: SPSSTHLM - Using JSLink and Display Templates for ITPros

How do we troubleshoot?

• Fiddler – HTTP Proxy

Page 31: SPSSTHLM - Using JSLink and Display Templates for ITPros

How do we troubleshoot?

• Fiddler – HTTP Proxy

Page 32: SPSSTHLM - Using JSLink and Display Templates for ITPros

Troubleshooting in IE with the F12 Dashboard

http://bit.ly/12kMPvr

Page 33: SPSSTHLM - Using JSLink and Display Templates for ITPros

There has to be a catch?

• Minimal Download Strategy

• Multiple list views on a page

• Changing SharePoint functionality

Page 34: SPSSTHLM - Using JSLink and Display Templates for ITPros

There has to be a catch?

• Minimal Download Strategy Our display templates work on page load

But fail during a refresh.

This is because our JavaScript doesn’t get called a second time

• Two workarounds!

• Turn off the Minimal Download Feature in each Web

• Include the relevant JavaScript in your Display Template code

Page 35: SPSSTHLM - Using JSLink and Display Templates for ITPros

There has to be a catch?

• Multiple list views on a page Because of the way Display Templates are registered, it’s not possible to have

two on the page if the list templates are the same.

(E.g. Custom TemplateType = 100)

There is a workaround though published on my blog

http://bit.ly/136e0e3

Page 36: SPSSTHLM - Using JSLink and Display Templates for ITPros

There has to be a catch?

• Changing/Breaking SharePoint functionality For example, overriding the Tasks view breaks SharePoint rendering.

This is fixed in the earlier Field demo with a couple of lines of JavaScript.

Page 37: SPSSTHLM - Using JSLink and Display Templates for ITPros

Page lifecycle

• SharePoint outputs JSLink in the Header of the page This registers our Display Template

Page 38: SPSSTHLM - Using JSLink and Display Templates for ITPros

Page lifecycle

• SharePoint LVWP outputs the list data into the page JSON Object Format

Page 39: SPSSTHLM - Using JSLink and Display Templates for ITPros

Page lifecycle

• And finally after setting things up Calls the RenderListView() function for the web part.

• Which in turn:– Calls the GetTemplates()

Page 40: SPSSTHLM - Using JSLink and Display Templates for ITPros

Page lifecycle

• Which compares the Context object to the list of registered overrides

• And if everything is in place, our override

wins the battle!

Page 41: SPSSTHLM - Using JSLink and Display Templates for ITPros

Display Template Demos

Page 42: SPSSTHLM - Using JSLink and Display Templates for ITPros

Questions?

Page 43: SPSSTHLM - Using JSLink and Display Templates for ITPros

Call to Action!

• Take a look at these sites for more detailed info

• Wes Preston – JS Link a primer - http://bit.ly/102fcNa

• Martin Hatch – JSLink 7 part series - http://bit.ly/Hh5zFk

• My blog Solving the multiple list view issue - http://bit.ly/JSLinkIssues

Editing local JS files using fiddler - http://bit.ly/EditUsingFiddler

43

Page 44: SPSSTHLM - Using JSLink and Display Templates for ITPros

Don’t forget SharePint!

• SHARE·PINT: [SHAIR-PAHYNT]Noun1. An assembly or meeting in relation to Microsoft SharePoint, accompanied with an alcoholic beverage.

Page 45: SPSSTHLM - Using JSLink and Display Templates for ITPros