Extend a Data Action Base Class
Once you've chosen the subclass of data action that you want to extend and have generated the necessary folders and files, you're ready to start writing the code specific to your new data action.
You can find your newly generated data action code under
%PLUGIN_DEV_DIR%\src\dataaction
. See Generated Folders and Files for an explanation of the files and folder structure. The main file you must edit
is the JavaScript file. For example, if your custom data action ID is
company.MyDataaction
, then the file you're looking for is
%PLUGIN_DEV_DIR%\src\dataaction\company-mydataaction\mydataaction.js
.
If
your data action has additional properties that need to be stored, then you must add
them as observable properties to the Knockout Model. If your data action is given
the ID company.MyDataaction
, then the Knockout Model is called
mydataaction.MyDataActionKOModel
which is located near the top
of mydataaction.js
. By default, this Knockout Model is configured
to extend the Knockout Model used by your data action's superclass so you only need
to add additional properties to the model.
For a data action
that's extending the HTTPAPIDataAction
base class, use code similar
to the
following:
1 - mydataaction.MydataactionKOModel = function (sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL,
eHTTPMethod, sPOSTParams)
2 - {
3 - mydataaction.MydataactionKOModel.baseConstructor.call(this, sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL, eHTTPMethod, sPOSTParams);
4 - };
5 - jsx.extend(mydataaction.MydataactionKOModel, dataaction.HTTPAPIDataActionKOModel);
- Line 1: This is the constructor for your Knockout Model. It accepts the properties that the model needs to store.
- Line 3: This is the superclass's constructor, otherwise known
as the
baseConstructor
to which you pass the values for all of the properties that are handled by one of the Knockout Model's superclasses. - Line 5: This sets the superclass for this Knockout Model class.
Use code similar to the following to add a string and an array to set properties that are persisted by the data action.
1 mydataaction.MydataactionKOModel = function (sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL, eHTTPMethod, sPOSTParams)
2 {
3 mydataaction.MydataactionKOModel.baseConstructor.call(this, sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL, eHTTPMethod, sPOSTParams);
4
5
6 // Set Defaults
7 sMyString = sMyString || "My default string value";
8 aMyArray = aMyArray || [];
9
10
11 // Asserts
12 jsx.assertString(sMyString, "sMyString");
13 jsx.assertArray(aMyArray, "aMyArray");
14
15
16 // Add observable properties
17 this.sMyString = ko.observable(sMyString);
18 this.aMyArray = ko.observableArray(aMyArray);
19 };
20 jsx.extend(mydataaction.MydataactionKOModel, dataaction.HTTPAPIDataActionKOModel);