var assign = require('object-assign'); var Node = require('./Node'); /** * Initialize a new depot instance. * * @param {Object} obj Data from the server, which doesn't follow typical * javaScript naming conventions. * @constructor * @memberof models */ function Depot(obj) { this._data = obj || {}; /** * The immediate directories and files under this depot. * * @type {Array<PathItem>} */ this.children = []; var self = this; Object.defineProperties(this, { /** * The name of the Depot * * @type string * @name models.Depot#depot * @memberOf models.Depot */ 'depot': { get: function() { return self._data['Depot']; }, set: function(x) { self._data['Depot'] = x; return x; } }, /** * The created date of the depot * * @type Date * @name models.Depot#date * @memberOf models.Depot * @readonly */ 'date': { get: function() { if (self._data['Date']) { return new Date(self._data['Date']); } } }, /** * The Depot type, one of 'local', 'remote', 'spec', 'stream', 'unload', or * 'archive'. * * @type string * @name models.Depot#type * @memberOf models.Depot */ 'type': { get: function() { return self._date['Type']; }, set: function(x) { // TODO validate x self._date['Type'] = x; } }, /** * If `type` is 'remote', this is the P4PORT address of the remote server. * * @type string * @name models.Depot#address * @memberOf models.Depot */ 'address': { get: function() { return self._date['Address']; }, set: function(x) { self._date['Type'] = x; } }, /** * If `type` is 'local', 'spec', or 'archive', this points to the relative * location of the depot subdirectory. * * @type string * @name models.Depot#map * @memberOf models.Depot */ 'map': { get: function() { return self._date['Map']; }, set: function(x) { self._date['Map'] = x; return x; } }, /** * A short description of the depot's purpose. * * @type string * @name models.Depot#description * @memberOf models.Depot */ 'description': { get: function() { return self._date['Description']; }, set: function(x) { self._date['Description'] = x; return x; } }, /** * The user login that owns the Depot. * * @type string * @name models.Depot#owner * @memberOf models.Depot */ 'owner': { get: function() { return self._data['Owner']; }, set: function(x) { self._data['Owner'] = x; return x; } }, /** * If the `type` is 'spec', this holds an optional suffix for generated * paths to objects in the spec depot. * * @type string * @name models.Depot#suffix * @memberOf models.Depot */ 'suffix': { get: function() { return self._data['Suffix']; }, set: function(x) { self._data['Suffix'] = x; return x; } }, /** * When type is 'spec', this an optional description of what specs should * be saved. * * @type string * @name models.Depot#specMap * @memberOf models.Depot */ 'specMap': { get: function() { return self._data['SpecMap']; } }, /** * The representation of the depot suitable to POST back to the Helix * Web Services Perforce API. * * @type object * @name models.Depot#data * @memberOf models.Depot * @readonly */ 'data': { get: function() { return self._data; } }, /** * Used by our underlying Node representation * * @type string * @name models.Depot#name * @memberOf models.Depot * @readonly */ 'name': { get: function() { return self.depot; } }, /** * Used by our underlying Node representation * * @type string * @name models.Depot#pathId * @memberOf models.Depot * @readonly */ 'pathId': { get: function() { return [self.depot]; } } }); } assign(Depot.prototype, Node); module.exports = Depot;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 15741 | ptomiak | Branch HWS for my use. | ||
//guest/perforce_software/helix-web-services/main/source/helix_web_services_client_js/models/Depot.js | |||||
#1 | 15622 | tjuricek |
Move source code to 'source/' subdirectory of branch. build/ will remain where it is. |
||
//guest/perforce_software/helix-web-services/main/helix_web_services_client_js/models/Depot.js | |||||
#1 | 14108 | tjuricek |
Added models for handling Perforce server depot listing and traversal. This is not complete, however, the models are a start to making it easy to generate a tree control. (Most tree controls in the wild assume you know the tree structure from the start, which is not true in our case.) The tricky bit is making it easy to build the tree out given that you're visiting only one directory at a time. |