ds/Suggestion.js

/**
 * @fileoverview Exposed data type for use outside of DsClient.
 *               All properties should be exposed to allow use from uncompiled
 *               code.
 *
 * @author anders.rejdebrant@spark-vision.com (Anders Rejdebrant)
 */

goog.provide('spv.ds.Suggestion');




/**
 * Represents one configuration change suggestion.
 * Suggestions are generated when the configurator logic engine finds relevant
 * alternatives to the requested goal state.
 * This object is instantiated by DsClient and should not be constructed by
 * caller code.
 *
 * @export
 * @struct
 * @constructor
 * @param {Array.<spv.ds.MenuItem>} items_to_add
 * @param {Array.<spv.ds.MenuItem>} items_to_remove
 * @param {Array.<string>} internal_data
 */
spv.ds.Suggestion = function(
		items_to_add,
		items_to_remove,
		internal_data)
{
	/**
	 * Items in this array will be added to the configuration if this 
	 * suggestion is activated on the related configuration.
	 *
	 * This member can safely be inspected and used by GUI code.
	 *
	 * @type {Array.<spv.ds.MenuItem>}
	 * @nocollapse
	 */
	this.items_to_add = items_to_add;

	/**
	 * Items in this array will be removed from the configuration if this 
	 * suggestion is activated on the related configuration.
	 *
	 * This member can safely be inspected and used by GUI code.
	 *
	 * @type {Array.<spv.ds.MenuItem>}
	 * @nocollapse
	 */
	this.items_to_remove = items_to_remove;

	/**
	 * This is the data needed by the current implementation and it is expected 
	 * to change in type and content over time as the suggestion capabilities 
	 * improve. Caller code of DsClient should not inspect or modify this 
	 * member.
	 * 
	 * Only the internals of spv.ds.DsClient should use this member.
	 *
	 * @type {Array.<string>}
	 */
	this.internal_data = internal_data;
};