Extending the HTML trick: using actual images

  • Reading time:3 mins read

Eric Sevareid famously said that the chief cause of problems is solutions. The same applies to the HTML trick I blogged about yesterday. As soon as you solve the problem of using HTML directly in your control add-ins, another problem arises: what do you do with actual images your control add-in includes?

This post explains how to solve that problem, and how to make it possible for your control add-in to both use HTML for defining UI and use relative control add-in paths to images.

Let’s dig in.

Continue ReadingExtending the HTML trick: using actual images

Encapsulation in JavaScript

  • Reading time:5 mins read

This will be my last post in the “JavaScript for (C/)AL Developers” series today. If I continued blogging about nearly pure JavaScript stuff, you could reasonably ask if this is in fact an NAV blog or a JavaScript one. It’s still NAV, and while the stuff I am about to write about is purely a JavaScript concept, I find it highly relevant for any control add-in developer. So, hold my beer, and bear with me for another one.

One of the complaints I often hear about JavaScript is that in JavaScript there is no encapsulation. This is almost completely true, except for the fact that it’s entirely false.

Where is the problem in the first place, and then what is the solution? Let’s dive in.

Continue ReadingEncapsulation in JavaScript

Preventing trampling over $

  • Reading time:7 mins read

In my previous post, I’ve written about the situation when you (or somebody you trust) redeclares the $ variable, thus inadvertently breaking all your jQuery code. I’ve also explained how to remedy for it inside the code you write by applying the Immediately Invoked Function Expression (IIFE) or Self-Executing Anonymous Function pattern.

However, is there anything you can do to prevent anyone from trampling over $ or jQuery variables in the first place?

As I said in my last post, yes, and no.

Let’s take a closer look at it.

Continue ReadingPreventing trampling over $

Why doesn’t my jQuery work?

  • Reading time:6 mins read

First, a disclaimer. This post is written for (C/)AL developers who are struggling with JavaScript, who copy and paste JavaScript code from Stack Overflow right into VS Code and are happy when it works, and confused when it doesn’t. Still, if you are not a (C/)AL developer but want to learn a bit of JavaScript yourself, this post is not at al about AL, it’s purely about JavaScript, and about demystifying a piece of it that JavaScript developers take for granted, and that developers with experience only with simpler languages (such as AL) find confusing.

Now let’s jump into the point. A friend asked me for help with a control add-in in which “jQuery doesn’t work, I can do jQuery() but I cannot do $()”

This is one of the schoolbook examples of what happens when you don’t isolate scope in JavaScript, so let’s first see what happened, and then let’s see how you can fix it.

Continue ReadingWhy doesn’t my jQuery work?

Abusing Images property to load HTML in control add-ins

  • Reading time:4 mins read

One of major limitations of control add-ins is not being able to define HTML. It seems so unbelievably unbelievable, that anyone looking at it from the outside of the NAV/BC playground may say “obviously, you must be missing something!”. But I am not. The one thing that you would expect to find first when defining a control add-in (and control add-ins in NAV/BC are nothing more than pieces of HTML that live within the allocated area of your browser real estate) is to be able to define the HTML. And yet, you can’t define it. The only way to show any UI from your control add-in is to procedurally create any of your control add-in HTML.

This makes no sense. No. Sense.

Continue ReadingAbusing Images property to load HTML in control add-ins

Control Add-in Dependency Demos

  • Reading time:1 min read

Yes, I keep forgetting about “stuff”. First I forget about blogging in general, then I forget how to blog properly. I’ll get it sorted out. Eventually. Solemnly swear. Kind of.

Anyway, my demos yesterday were full of screenshots. Useful stuff. You can copy a screenshot from there, paste it to OneNote 2016, then get the text from picture. Amazing stuff.

But, that’s not how code is done these days. So, I put everything on GitHub, and if you want to access all of the code you watched me build yesterday, here it goes:

https://github.com/vjekob/ControlAddInDependencyDemo

Good luck!

Continue ReadingControl Add-in Dependency Demos

Accessing a control add-in in a dependency extension

  • Reading time:8 mins read

Long time no see, eh? Time flies, what do you know…

I am thrilled to still find you here. Honestly, I wasn’t sure this morning if I was about to even find this blog where I left it seven months ago. Cool to find both my blog and you in good shape, patiently waiting for my contribution.

This morning I had a call with a partner asking if it was possible to deploy a control add-in in such a way that other partners could use its functionality from their own extensions. My answer was, and it still is – well, it should be possible, but I don’t know for a fact because I never tried it.

So let’s try it and find the answer together.

Continue ReadingAccessing a control add-in in a dependency extension

TicTacToe challenge winner announcement

  • Reading time:2 mins read

In my last post I announced a challenge: the first pull request on my TicTacToe for AL GitHub repository that contains a properly written event handler with “AI” that either beats the human player or ends in a draw gets a special reward. Honestly, I didn’t expect to see any submissions there, because NAV community is not too GitHub savvy. I rarely get any hands up in the air when in my sessions or workshops I ask who uses GitHub. But, three forks arrived soon and one submission quickly followed. It provides a clean and working solution that properly applies the handler pattern and never loses a game.

And, the winner is: Bartel de Leeuw!

Continue ReadingTicTacToe challenge winner announcement

A couple of AL controladdin demos – Google Maps and Tic Tac Toe

  • Reading time:4 mins read

As a part of preparation for my last event of this year that concludes the conference season 2017 for me, I played around with the latest addition to the AL language stack for VS Code: control add-ins.

If you haven’t already tried it out, or heard about it, then you should get yourself a copy of NAV developer preview, and then visit the Control Add-In Object documentation for AL on MSDN to learn a little bit about how it works. The demo provided over there is, well, basic, to say the least, so I prepared two demos.

Continue ReadingA couple of AL controladdin demos – Google Maps and Tic Tac Toe

Visual Studio Control Add-in Project Template

  • Reading time:2 mins read

If part of your daily job includes creating control add-ins for Microsoft Dynamics NAV, then you know that creating control add-ins that target all clients requires quite a lot manual work. There are a lot of small steps that you must do every time.

To avoid all that work that adds no value, only frustration, here’s a Visual Studio project template that you can use to automate the process of creating a new control add-in.

Continue ReadingVisual Studio Control Add-in Project Template