Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F948202
SortedList.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
SortedList.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.collections.SortedList"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.collections.SortedList"
]
=
true
;
dojo
.
provide
(
"dojox.collections.SortedList"
);
dojo
.
require
(
"dojox.collections._base"
);
dojox
.
collections
.
SortedList
=
function
(
/* object? */
dictionary
){
// summary
// creates a collection that acts like a dictionary but is also internally sorted.
// Note that the act of adding any elements forces an internal resort, making this object potentially slow.
var
_this
=
this
;
var
items
=
{};
var
q
=
[];
var
sorter
=
function
(
a
,
b
){
if
(
a
.
key
>
b
.
key
)
return
1
;
if
(
a
.
key
<
b
.
key
)
return
-
1
;
return
0
;
};
var
build
=
function
(){
q
=
[];
var
e
=
_this
.
getIterator
();
while
(
!
e
.
atEnd
()){
q
.
push
(
e
.
get
());
}
q
.
sort
(
sorter
);
};
var
testObject
=
{};
this
.
count
=
q
.
length
;
this
.
add
=
function
(
/* string */
k
,
/* object */
v
){
// summary
// add the passed value to the dictionary at location k
if
(
!
items
[
k
])
{
items
[
k
]
=
new
dojox
.
collections
.
DictionaryEntry
(
k
,
v
);
this
.
count
=
q
.
push
(
items
[
k
]);
q
.
sort
(
sorter
);
}
};
this
.
clear
=
function
(){
// summary
// clear the internal collections
items
=
{};
q
=
[];
this
.
count
=
q
.
length
;
};
this
.
clone
=
function
(){
// summary
// create a clone of this sorted list
return
new
dojox
.
collections
.
SortedList
(
this
);
// dojox.collections.SortedList
};
this
.
contains
=
this
.
containsKey
=
function
(
/* string */
k
){
// summary
// Check to see if the list has a location k
if
(
testObject
[
k
]){
return
false
;
// bool
}
return
(
items
[
k
]
!=
null
);
// bool
};
this
.
containsValue
=
function
(
/* object */
o
){
// summary
// Check to see if this list contains the passed object
var
e
=
this
.
getIterator
();
while
(
!
e
.
atEnd
()){
var
item
=
e
.
get
();
if
(
item
.
value
==
o
){
return
true
;
// bool
}
}
return
false
;
// bool
};
this
.
copyTo
=
function
(
/* array */
arr
,
/* int */
i
){
// summary
// copy the contents of the list into array arr at index i
var
e
=
this
.
getIterator
();
var
idx
=
i
;
while
(
!
e
.
atEnd
()){
arr
.
splice
(
idx
,
0
,
e
.
get
());
idx
++
;
}
};
this
.
entry
=
function
(
/* string */
k
){
// summary
// return the object at location k
return
items
[
k
];
// dojox.collections.DictionaryEntry
};
this
.
forEach
=
function
(
/* function */
fn
,
/* object? */
scope
){
// summary
// functional iterator, following the mozilla spec.
dojo
.
forEach
(
q
,
fn
,
scope
);
};
this
.
getByIndex
=
function
(
/* int */
i
){
// summary
// return the item at index i
return
q
[
i
].
valueOf
();
// object
};
this
.
getIterator
=
function
(){
// summary
// get an iterator for this object
return
new
dojox
.
collections
.
DictionaryIterator
(
items
);
// dojox.collections.DictionaryIterator
};
this
.
getKey
=
function
(
/* int */
i
){
// summary
// return the key of the item at index i
return
q
[
i
].
key
;
};
this
.
getKeyList
=
function
(){
// summary
// return an array of the keys set in this list
var
arr
=
[];
var
e
=
this
.
getIterator
();
while
(
!
e
.
atEnd
()){
arr
.
push
(
e
.
get
().
key
);
}
return
arr
;
// array
};
this
.
getValueList
=
function
(){
// summary
// return an array of values in this list
var
arr
=
[];
var
e
=
this
.
getIterator
();
while
(
!
e
.
atEnd
()){
arr
.
push
(
e
.
get
().
value
);
}
return
arr
;
// array
};
this
.
indexOfKey
=
function
(
/* string */
k
){
// summary
// return the index of the passed key.
for
(
var
i
=
0
;
i
<
q
.
length
;
i
++
){
if
(
q
[
i
].
key
==
k
){
return
i
;
// int
}
}
return
-
1
;
// int
};
this
.
indexOfValue
=
function
(
/* object */
o
){
// summary
// return the first index of object o
for
(
var
i
=
0
;
i
<
q
.
length
;
i
++
){
if
(
q
[
i
].
value
==
o
){
return
i
;
// int
}
}
return
-
1
;
// int
};
this
.
item
=
function
(
/* string */
k
){
// summary
// return the value of the object at location k.
if
(
k
in
items
&&
!
testObject
[
k
]){
return
items
[
k
].
valueOf
();
// object
}
return
undefined
;
// object
};
this
.
remove
=
function
(
/* string */
k
){
// summary
// remove the item at location k and rebuild the internal collections.
delete
items
[
k
];
build
();
this
.
count
=
q
.
length
;
};
this
.
removeAt
=
function
(
/* int */
i
){
// summary
// remove the item at index i, and rebuild the internal collections.
delete
items
[
q
[
i
].
key
];
build
();
this
.
count
=
q
.
length
;
};
this
.
replace
=
function
(
/* string */
k
,
/* object */
v
){
// summary
// Replace an existing item if it's there, and add a new one if not.
if
(
!
items
[
k
]){
// we're adding a new object, return false
this
.
add
(
k
,
v
);
return
false
;
// bool
}
else
{
// we're replacing an object, return true
items
[
k
]
=
new
dojox
.
collections
.
DictionaryEntry
(
k
,
v
);
build
();
return
true
;
// bool
}
};
this
.
setByIndex
=
function
(
/* int */
i
,
/* object */
o
){
// summary
// set an item by index
items
[
q
[
i
].
key
].
value
=
o
;
build
();
this
.
count
=
q
.
length
;
};
if
(
dictionary
){
var
e
=
dictionary
.
getIterator
();
while
(
!
e
.
atEnd
()){
var
item
=
e
.
get
();
q
[
q
.
length
]
=
items
[
item
.
key
]
=
new
dojox
.
collections
.
DictionaryEntry
(
item
.
key
,
item
.
value
);
}
q
.
sort
(
sorter
);
}
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 15:17 (3 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23515
Default Alt Text
SortedList.js (4 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment