outlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplace
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.0 KiB
84 lines
2.0 KiB
//@tag dom,core |
|
|
|
/** |
|
* An Identifiable mixin. |
|
* @private |
|
*/ |
|
Ext.define('Ext.mixin.Identifiable', { |
|
statics: { |
|
uniqueIds: {} |
|
}, |
|
|
|
isIdentifiable: true, |
|
|
|
mixinId: 'identifiable', |
|
|
|
idCleanRegex: /\.|[^\w\-]/g, |
|
|
|
defaultIdPrefix: 'ext-', |
|
|
|
defaultIdSeparator: '-', |
|
|
|
getOptimizedId: function() { |
|
return this.id; |
|
}, |
|
|
|
getUniqueId: function() { |
|
var id = this.id, |
|
prototype, separator, xtype, uniqueIds, prefix; |
|
|
|
// Cannot test falsiness. Zero is a valid ID. |
|
if (!(id || id === 0)) { |
|
prototype = this.self.prototype; |
|
separator = this.defaultIdSeparator; |
|
|
|
uniqueIds = Ext.mixin.Identifiable.uniqueIds; |
|
|
|
if (!prototype.hasOwnProperty('identifiablePrefix')) { |
|
xtype = this.xtype; |
|
|
|
if (xtype) { |
|
prefix = this.defaultIdPrefix + xtype.replace(this.idCleanRegex, separator) + separator; |
|
} else if (!(prefix = prototype.$className)) { |
|
prefix = this.defaultIdPrefix + 'anonymous' + separator; |
|
} else { |
|
prefix = prefix.replace(this.idCleanRegex, separator).toLowerCase() + separator; |
|
} |
|
|
|
prototype.identifiablePrefix = prefix; |
|
} |
|
|
|
prefix = this.identifiablePrefix; |
|
|
|
if (!uniqueIds.hasOwnProperty(prefix)) { |
|
uniqueIds[prefix] = 0; |
|
} |
|
|
|
id = this.id = prefix + (++uniqueIds[prefix]); |
|
} |
|
|
|
this.getUniqueId = this.getOptimizedId; |
|
|
|
return id; |
|
}, |
|
|
|
setId: function(id) { |
|
this.id = id; |
|
}, |
|
|
|
/** |
|
* Retrieves the id of this component. Will autogenerate an id if one has not already been set. |
|
* @return {String} id |
|
*/ |
|
getId: function() { |
|
var id = this.id; |
|
|
|
if (!id) { |
|
id = this.getUniqueId(); |
|
} |
|
|
|
this.getId = this.getOptimizedId; |
|
|
|
return id; |
|
} |
|
});
|
|
|