About Tore Senneseth

I work as a software engineer at Profitbase where I spend most of my time in Visual Studio, writing C#, XAML, CSS, HTML, JavaScript and TypeScript to make InVision a better product.

Creating Workbook Plugins – Reading data using the Sql Script Web Service API

This is part 2 in the series about creating Workbook plugins for Profitbase InVision.

Part 1 : The Basics
Part 2 : Reading data using the Sql Script Web Service API (this one)
Part 3 : Writing data using the Sql Script Web Service API
Part 4 : Publishing events to the Workbook
Part 5 : Conditional execution of GenericAction

Download : Source code and sample database

In this post, we’ll walk through using the Web Service API of InVision to read from the database. As I mentioned in Part 1, InVision is built using AngularJS, so some experience with that framework is required.

Continue reading

Creating Workbook Plugins – The Basics

In this short series, we’ll walk through creating a simple Workbook plugin.

Part 1 : The Basics (this one)
Part 2 : Reading data using the Sql Script Web Service API
Part 3 : Writing data using the Sql Script Web Service API
Part 4 : Publishing events to the Workbook
Part 5 : Conditional execution of GenericAction

Download : Source code and sample database

Profitbase InVision is built using AngularJS (1.0 right now), so some experience with AngularJS is required for building plugins.

You can download the source code and sample database for this demo from the link above. I won’t talk about how I built the UI since there’s nothing InVision specific about it, it’s just standard HTML, CSS and AngularJS.

Continue reading

Debugging custom Data Flow Item Class Libaries

This is the fourth and final post in a series focused on Data Flow development.

Probably the most important tool used while developing software is the debugger. The debugger lets you step through your code and inspect the state of your program during runtime, so you can see what’s actually going on.

This post will focus on how to debug your custom class libraries while they are being executed by the Profitbase InVision Worker. For information on how to deploy your assembly (build and copy to target folders), you should read Part 1 of this series.

Continue reading

Passing arguments to Data Flows executed from Workbooks

This is the third post in a series focused on Data Flow development.

In this post, we’ll continue using your Data Flow from Part 2, but instead of executing it from the designer and hard coding the message we’re writing to the database, we’ll create a Workbook with a text input field for entering the message.

Continue reading

Executing Data Flow Item Tasks with parameters

This is the second post in a series focused on Data Flow development.

This post will show you how to create a parameterized Data Flow Item and execute it in a Data Flow. It’s a follow up to Creating and Deploying a custom Data Flow Item Class Library, so we’ll use the class library we created there. The way parameters are used, however, is exactly the same whether we use our own custom library or a built-in library.

Continue reading

Guidelines and tooling for the InVision Solution Development Cycle

You’ll probably need to make changes to, or continue developing InVision solutions after they have been published to production. Today, we’ll present a simple best practice pattern or guideline for continued development of InVision solutions, and the new InVision Data Migration Tool (InVision DMT for short) which helps you in this process.

Continue reading

Creating and deploying a custom Data Flow Item Class Library

This is the first post in a series focused on Data Flow development

Simply put, Class Libraries contains classes and methods that describe your business logic. Programs, such as Profitbase InVision, can execute class libraries after they have been compiled into assemblies (.dll) and linked to the program.

Continue reading

InVision 2.0 Beta 2

InVision 2.0 Beta 2 is ready for download!

Because x-mas got in our way, it took more than the promised 2 weeks between Beta 1 and Beta 2, but now it’s here. Our primary focus for Beta 2 has been fixing the bugs in Beta 1, adding support for table reports and a few new features that will make Workbook development a bit easier.

New Features

  • Added support for Internet Explorer 10
  • In previous versions, only new, modified and deleted rows were passed to the server during a save operation. We’ve added support for optionally passing the entire Worksheet and Setting data set from the client to the server when executing a SaveData action in a Workbook. This enables you to have access to all the rows in the data set, not just the modified ones, when perform custom business logic on the server in save interception scripts. To enable this feature, you need enable the Save Interception script feature and specify ‘All’ rows in the Arguments tab.
  • Eaze native functions ISNULL and ISNULLORZERO has been extended to accept one or two arguments. Calling the functions with two arguments makes the functions behave as previously, but calling the functions with one argument makes them evaluate the expression and return true or false whether the resolved value is null or 0. This is helpful for writing statements like IF(ISNULL(expr,0) = 0,0,…) which can now be expressed as IF(ISNULL(expr),0,…)
  • Added support for filtering by type in the Solution Explorer using type:<typeName> as a filter condition, for example you can filter on objects of type view by typing type:view.
  • Added 3 new Workbook functions
    • IsHostPageActive() – Can be called from an Action to check whether or not the calling component is hosted in the currently active page.
    • HasFilterChanged() – Can be called from the LoadData action of a Worksheet, Setting or Report to check whether or not bound filters have change since the last time data was loaded.
    • GetActivePage() – Returns information about the currently active page.

The primary use cases of the 3 new Workbook functions are to make it easier to express lazy (re)loading data for Worksheets, Settings or Reports without manually having to juggle a bunch of variables.

Fixed Issues

A release notes document listing the most important fixed issues can be found here.
However, here are a few highlights

  • Table reports are now supported
  • We’ve managed to significantly speed up the performance of Dropdown column cell editors in IE and Edge
  • Date cell editing bug fixed, meaning the value won’t “randomly” change if the cell is double clicked.
  • Page popup content display issues have been fixed
  • Drop down filters now correctly displays the default filter value when loaded

Where can I get it?

Internal users can get it from <fileserver>InstallsD-SoftwareProfitbaseProfitbase InVision2.0Beta2

External users can request a copy (or demo) by contacting Profitbase.

Upgrading to Beta 2

If you already have Beta 1 installed, and don’t want to do a side-by-side install, you need to uninstall Beta 1 and then install Beta 2 using the same instance name to continue using the same databases.

If you’ve used custom themes in Beta 1, you need to recompile the theme. The reason you need to do this is because Beta 2 is installed to a diffrent folder than Beta 1.

If you’re going from InVision 1.0 to 2.0 Beta 2, you should read the Beta 1 release notes first.

Additional resources

  • A preview of the technical documentation can be found here.

Things to come

Except for fixing bugs and adding the last missing features, the next Beta phase will focus on adding support for charting and prepare for Business Module templates such as Profitbase Finance. We’re also working on a Data Migration tool that will make it much easier to continue developing InVision solutions already in production.

– The InVision team