slackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangouts
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.
76 lines
1.5 KiB
76 lines
1.5 KiB
/** |
|
* An internal Queue class. |
|
* @private |
|
*/ |
|
Ext.define('Ext.util.Queue', { |
|
|
|
constructor: function() { |
|
this.clear(); |
|
}, |
|
|
|
add : function(obj) { |
|
var me = this, |
|
key = me.getKey(obj); |
|
|
|
if (!me.map[key]) { |
|
++me.length; |
|
me.items.push(obj); |
|
me.map[key] = obj; |
|
} |
|
|
|
return obj; |
|
}, |
|
|
|
/** |
|
* Removes all items from the collection. |
|
*/ |
|
clear : function(){ |
|
var me = this, |
|
items = me.items; |
|
|
|
me.items = []; |
|
me.map = {}; |
|
me.length = 0; |
|
|
|
return items; |
|
}, |
|
|
|
contains: function (obj) { |
|
var key = this.getKey(obj); |
|
|
|
return this.map.hasOwnProperty(key); |
|
}, |
|
|
|
/** |
|
* Returns the number of items in the collection. |
|
* @return {Number} the number of items in the collection. |
|
*/ |
|
getCount : function(){ |
|
return this.length; |
|
}, |
|
|
|
getKey : function(obj){ |
|
return obj.id; |
|
}, |
|
|
|
/** |
|
* Remove an item from the collection. |
|
* @param {Object} obj The item to remove. |
|
* @return {Object} The item removed or false if no item was removed. |
|
*/ |
|
remove : function(obj){ |
|
var me = this, |
|
key = me.getKey(obj), |
|
items = me.items, |
|
index; |
|
|
|
if (me.map[key]) { |
|
index = Ext.Array.indexOf(items, obj); |
|
Ext.Array.erase(items, index, 1); |
|
delete me.map[key]; |
|
--me.length; |
|
} |
|
|
|
return obj; |
|
} |
|
}); |