Developing & Deploying Extensions
A recommended best practice is to develop extensions in a Sandbox environment. This is
especially true for more complex extensions, and if the extension involves additional
components such as Visualforce pages or Apex classes. Once the extension is ready to be
deployed, create a Change Set that includes all the custom resources, and then deploy the
Change Set to the production org. The GridBuddy Migration Guide (available from
www.appbuddy.com/support/) provides detailed step-by-step instructions for how to deploy
GridBuddy to different environments.
Developing Your Own Extensions: Grid Front-End Architecture
For development-savvy organizations, this section outlines the grid’s front end architecture
that can be manipulated through the extensions framework.
The Grid is rendered primarily using JavaScript with the help of jQuery (since GridBuddy
version 3.39, GridBuddy uses jQuery version 1.11.2). jQuery can be accessed using the
jQuery or jq namespace.
There are certain GridBuddy global JavaScript variables and objects that are available to
use for customizations and that provide access to the grid meta data and record data. These
global objects can be manipulated before the Grid is done rendering to affect the display of
existing records. There are also strategies for manipulating new records that appear after
the Grid has loaded (for example, when creating new data).
JavaScript and CSS changes should take advantage of the various selectors available
throughout the Grid, for maintenance purposes. For example (this is not an exhaustive list):
1. Grid data rows (tr tag) have the class “dr”, short for data row
2. Grid data rows (tr tag) for new records have the class “nr”, short for new row
3. Grid data rows (tr tag) have an “id” attribute populated with the Salesforce record id
4. Grid header and data columns (td) have a dynamic name attribute corresponding to the
field’s order within the row. This name value corresponds to a property available in one
of the GridBuddy global JavaScript objects (MetaCol) that exposes the Grid’s meta data.
5. Related sections are wrapped in a row (tr tag) with the class “cr”, short for child row
6. Related data rows (tr tag) are wrapped in a table with the class “childTable”, and a
dynamic name attribute corresponds to the order of the child object amongst all child
objects on the grid
7. There are classes specific to data type widgets and more.
Primal Cause confidential and proprietary. Copyright © Primal Cause, Inc. All rights reserved. AppBuddy® and
GridBuddy® are registered trademarks with the U.S. Patent and Trademark Office.
5