Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F948622
KeyValueStore.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
KeyValueStore.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.data.KeyValueStore"
]){
dojo
.
_hasResource
[
"dojox.data.KeyValueStore"
]
=
true
;
dojo
.
provide
(
"dojox.data.KeyValueStore"
);
dojo
.
require
(
"dojo.data.util.filter"
);
dojo
.
require
(
"dojo.data.util.simpleFetch"
);
dojo
.
declare
(
"dojox.data.KeyValueStore"
,
null
,{
constructor
:
function
(
_1
){
if
(
_1
.
url
){
this
.
url
=
_1
.
url
;
}
this
.
_keyValueString
=
_1
.
data
;
this
.
_keyValueVar
=
_1
.
dataVar
;
this
.
_keyAttribute
=
"key"
;
this
.
_valueAttribute
=
"value"
;
this
.
_storeProp
=
"_keyValueStore"
;
this
.
_features
=
{
"dojo.data.api.Read"
:
true
,
"dojo.data.api.Identity"
:
true
};
this
.
_loadInProgress
=
false
;
this
.
_queuedFetches
=
[];
if
(
_1
&&
"urlPreventCache"
in
_1
){
this
.
urlPreventCache
=
_1
.
urlPreventCache
?
true
:
false
;
}
},
url
:
""
,
data
:
""
,
urlPreventCache
:
false
,
_assertIsItem
:
function
(
_2
){
if
(
!
this
.
isItem
(
_2
)){
throw
new
Error
(
"dojox.data.KeyValueStore: a function was passed an item argument that was not an item"
);
}
},
_assertIsAttribute
:
function
(
_3
,
_4
){
if
(
!
dojo
.
isString
(
_4
)){
throw
new
Error
(
"dojox.data.KeyValueStore: a function was passed an attribute argument that was not an attribute object nor an attribute name string"
);
}
},
getValue
:
function
(
_5
,
_6
,
_7
){
this
.
_assertIsItem
(
_5
);
this
.
_assertIsAttribute
(
_5
,
_6
);
var
_8
;
if
(
_6
==
this
.
_keyAttribute
){
_8
=
_5
[
this
.
_keyAttribute
];
}
else
{
_8
=
_5
[
this
.
_valueAttribute
];
}
if
(
_8
===
undefined
){
_8
=
_7
;
}
return
_8
;
},
getValues
:
function
(
_9
,
_a
){
var
_b
=
this
.
getValue
(
_9
,
_a
);
return
(
_b
?
[
_b
]
:
[]);
},
getAttributes
:
function
(
_c
){
return
[
this
.
_keyAttribute
,
this
.
_valueAttribute
,
_c
[
this
.
_keyAttribute
]];
},
hasAttribute
:
function
(
_d
,
_e
){
this
.
_assertIsItem
(
_d
);
this
.
_assertIsAttribute
(
_d
,
_e
);
return
(
_e
==
this
.
_keyAttribute
||
_e
==
this
.
_valueAttribute
||
_e
==
_d
[
this
.
_keyAttribute
]);
},
containsValue
:
function
(
_f
,
_10
,
_11
){
var
_12
=
undefined
;
if
(
typeof
_11
===
"string"
){
_12
=
dojo
.
data
.
util
.
filter
.
patternToRegExp
(
_11
,
false
);
}
return
this
.
_containsValue
(
_f
,
_10
,
_11
,
_12
);
},
_containsValue
:
function
(
_13
,
_14
,
_15
,
_16
){
var
_17
=
this
.
getValues
(
_13
,
_14
);
for
(
var
i
=
0
;
i
<
_17
.
length
;
++
i
){
var
_18
=
_17
[
i
];
if
(
typeof
_18
===
"string"
&&
_16
){
return
(
_18
.
match
(
_16
)
!==
null
);
}
else
{
if
(
_15
===
_18
){
return
true
;
}
}
}
return
false
;
},
isItem
:
function
(
_19
){
if
(
_19
&&
_19
[
this
.
_storeProp
]
===
this
){
return
true
;
}
return
false
;
},
isItemLoaded
:
function
(
_1a
){
return
this
.
isItem
(
_1a
);
},
loadItem
:
function
(
_1b
){
},
getFeatures
:
function
(){
return
this
.
_features
;
},
close
:
function
(
_1c
){
},
getLabel
:
function
(
_1d
){
return
_1d
[
this
.
_keyAttribute
];
},
getLabelAttributes
:
function
(
_1e
){
return
[
this
.
_keyAttribute
];
},
_fetchItems
:
function
(
_1f
,
_20
,
_21
){
var
_22
=
this
;
var
_23
=
function
(
_24
,
_25
){
var
_26
=
null
;
if
(
_24
.
query
){
_26
=
[];
var
_27
=
_24
.
queryOptions
?
_24
.
queryOptions
.
ignoreCase
:
false
;
var
_28
=
{};
for
(
var
key
in
_24
.
query
){
var
_29
=
_24
.
query
[
key
];
if
(
typeof
_29
===
"string"
){
_28
[
key
]
=
dojo
.
data
.
util
.
filter
.
patternToRegExp
(
_29
,
_27
);
}
}
for
(
var
i
=
0
;
i
<
_25
.
length
;
++
i
){
var
_2a
=
true
;
var
_2b
=
_25
[
i
];
for
(
var
key
in
_24
.
query
){
var
_29
=
_24
.
query
[
key
];
if
(
!
_22
.
_containsValue
(
_2b
,
key
,
_29
,
_28
[
key
])){
_2a
=
false
;
}
}
if
(
_2a
){
_26
.
push
(
_2b
);
}
}
}
else
{
if
(
_24
.
identity
){
_26
=
[];
var
_2c
;
for
(
var
key
in
_25
){
_2c
=
_25
[
key
];
if
(
_2c
[
_22
.
_keyAttribute
]
==
_24
.
identity
){
_26
.
push
(
_2c
);
break
;
}
}
}
else
{
if
(
_25
.
length
>
0
){
_26
=
_25
.
slice
(
0
,
_25
.
length
);
}
}
}
_20
(
_26
,
_24
);
};
if
(
this
.
_loadFinished
){
_23
(
_1f
,
this
.
_arrayOfAllItems
);
}
else
{
if
(
this
.
url
!==
""
){
if
(
this
.
_loadInProgress
){
this
.
_queuedFetches
.
push
({
args
:
_1f
,
filter
:
_23
});
}
else
{
this
.
_loadInProgress
=
true
;
var
_2d
=
{
url
:
_22
.
url
,
handleAs
:
"json-comment-filtered"
,
preventCache
:
this
.
urlPreventCache
};
var
_2e
=
dojo
.
xhrGet
(
_2d
);
_2e
.
addCallback
(
function
(
_2f
){
_22
.
_processData
(
_2f
);
_23
(
_1f
,
_22
.
_arrayOfAllItems
);
_22
.
_handleQueuedFetches
();
});
_2e
.
addErrback
(
function
(
_30
){
_22
.
_loadInProgress
=
false
;
throw
_30
;
});
}
}
else
{
if
(
this
.
_keyValueString
){
this
.
_processData
(
eval
(
this
.
_keyValueString
));
this
.
_keyValueString
=
null
;
_23
(
_1f
,
this
.
_arrayOfAllItems
);
}
else
{
if
(
this
.
_keyValueVar
){
this
.
_processData
(
this
.
_keyValueVar
);
this
.
_keyValueVar
=
null
;
_23
(
_1f
,
this
.
_arrayOfAllItems
);
}
else
{
throw
new
Error
(
"dojox.data.KeyValueStore: No source data was provided as either URL, String, or Javascript variable data input."
);
}
}
}
}
},
_handleQueuedFetches
:
function
(){
if
(
this
.
_queuedFetches
.
length
>
0
){
for
(
var
i
=
0
;
i
<
this
.
_queuedFetches
.
length
;
i
++
){
var
_31
=
this
.
_queuedFetches
[
i
];
var
_32
=
_31
.
filter
;
var
_33
=
_31
.
args
;
if
(
_32
){
_32
(
_33
,
this
.
_arrayOfAllItems
);
}
else
{
this
.
fetchItemByIdentity
(
_31
.
args
);
}
}
this
.
_queuedFetches
=
[];
}
},
_processData
:
function
(
_34
){
this
.
_arrayOfAllItems
=
[];
for
(
var
i
=
0
;
i
<
_34
.
length
;
i
++
){
this
.
_arrayOfAllItems
.
push
(
this
.
_createItem
(
_34
[
i
]));
}
this
.
_loadFinished
=
true
;
this
.
_loadInProgress
=
false
;
},
_createItem
:
function
(
_35
){
var
_36
=
{};
_36
[
this
.
_storeProp
]
=
this
;
for
(
var
i
in
_35
){
_36
[
this
.
_keyAttribute
]
=
i
;
_36
[
this
.
_valueAttribute
]
=
_35
[
i
];
break
;
}
return
_36
;
},
getIdentity
:
function
(
_37
){
if
(
this
.
isItem
(
_37
)){
return
_37
[
this
.
_keyAttribute
];
}
return
null
;
},
getIdentityAttributes
:
function
(
_38
){
return
[
this
.
_keyAttribute
];
},
fetchItemByIdentity
:
function
(
_39
){
_39
.
oldOnItem
=
_39
.
onItem
;
_39
.
onItem
=
null
;
_39
.
onComplete
=
this
.
_finishFetchItemByIdentity
;
this
.
fetch
(
_39
);
},
_finishFetchItemByIdentity
:
function
(
_3a
,
_3b
){
var
_3c
=
_3b
.
scope
||
dojo
.
global
;
if
(
_3a
.
length
){
_3b
.
oldOnItem
.
call
(
_3c
,
_3a
[
0
]);
}
else
{
_3b
.
oldOnItem
.
call
(
_3c
,
null
);
}
}});
dojo
.
extend
(
dojox
.
data
.
KeyValueStore
,
dojo
.
data
.
util
.
simpleFetch
);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 18:10 (1 d, 5 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25034
Default Alt Text
KeyValueStore.js (5 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment