Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F884277
DataWire.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
DataWire.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.wire.DataWire"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.wire.DataWire"
]
=
true
;
dojo
.
provide
(
"dojox.wire.DataWire"
);
dojo
.
require
(
"dojox.wire.Wire"
);
dojo
.
declare
(
"dojox.wire.DataWire"
,
dojox
.
wire
.
Wire
,
{
// summary:
// A Wire for item attributes of data stores
// description:
// This class accesses item attributes of data stores with a dotted
// notation of attribute names specified to 'attribute' property,
// using data APIs of a data store specified to 'dataStore' property.
// The root object for this class must be an item of the data store.
// Intermediate attribute names in the dotted notation specify
// attributes for child items, which are used for repeated calls to
// data APIs until reached to a descendant attribute.
// Attribute names may have an array index, such as "a[0]", to
// identify an array element of the attribute value.
_wireClass
:
"dojox.wire.DataWire"
,
constructor
:
function
(
/*Object*/
args
){
// summary:
// Initialize properties
// description:
// If 'dataStore' property is not specified, but 'parent' property
// is specified, 'dataStore' property is copied from the parent.
// args:
// Arguments to initialize properties
// dataStore:
// A data store
// attribute:
// A dotted notation to a descendant attribute
if
(
!
this
.
dataStore
&&
this
.
parent
){
this
.
dataStore
=
this
.
parent
.
dataStore
;
}
},
_getValue
:
function
(
/*Object*/
object
){
// summary:
// Return an attribute value of an item
// description:
// This method uses a root item passed in 'object' argument and
// 'attribute' property to call getValue() method of
// 'dataStore'.
// If an attribute name have an array suffix ("[]"), getValues()
// method is called, instead.
// If an index is specified in the array suffix, an array element
// for the index is returned, instead of the array itself.
// object:
// A root item
// returns:
// A value found, otherwise 'undefined'
if
(
!
object
||
!
this
.
attribute
||
!
this
.
dataStore
){
return
object
;
//Object
}
var
value
=
object
;
var
list
=
this
.
attribute
.
split
(
'.'
);
for
(
var
i
in
list
){
value
=
this
.
_getAttributeValue
(
value
,
list
[
i
]);
if
(
!
value
){
return
undefined
;
//undefined
}
}
return
value
;
//anything
},
_setValue
:
function
(
/*Object*/
object
,
/*anything*/
value
){
// summary:
// Set an attribute value to an item
// description:
// This method uses a root item passed in 'object' argument and
// 'attribute' property to identify an item.
// Then, setValue() method of 'dataStore' is called with a leaf
// attribute name and 'value' argument.
// If an attribute name have an array suffix ("[]"), setValues()
// method is called, instead.
// If an index is specified in the array suffix, an array element
// for the index is set to 'value', instead of the array itself.
// object:
// A root item
// value:
// A value to set
// returns:
// 'object', or 'undefined' for invalid attribute
if
(
!
object
||
!
this
.
attribute
||
!
this
.
dataStore
){
return
object
;
//Object
}
var
item
=
object
;
var
list
=
this
.
attribute
.
split
(
'.'
);
var
last
=
list
.
length
-
1
;
for
(
var
i
=
0
;
i
<
last
;
i
++
){
item
=
this
.
_getAttributeValue
(
item
,
list
[
i
]);
if
(
!
item
){
return
undefined
;
//undefined
}
}
this
.
_setAttributeValue
(
item
,
list
[
last
],
value
);
return
object
;
//Object
},
_getAttributeValue
:
function
(
/*Object*/
item
,
/*String*/
attribute
){
// summary:
// Return an attribute value of an item
// description:
// This method uses an item passed in 'item' argument and
// 'attribute' argument to call getValue() method of 'dataStore'.
// If an attribute name have an array suffix ("[]"), getValues()
// method is called, instead.
// If an index is specified in the array suffix, an array element
// for the index is returned, instead of the array itself.
// item:
// An item
// attribute
// An attribute name
// returns:
// A value found, otherwise 'undefined'
var
value
=
undefined
;
var
i1
=
attribute
.
indexOf
(
'['
);
if
(
i1
>=
0
){
var
i2
=
attribute
.
indexOf
(
']'
);
var
index
=
attribute
.
substring
(
i1
+
1
,
i2
);
attribute
=
attribute
.
substring
(
0
,
i1
);
var
array
=
this
.
dataStore
.
getValues
(
item
,
attribute
);
if
(
array
){
if
(
!
index
){
// return array for "attribute[]"
value
=
array
;
}
else
{
value
=
array
[
index
];
}
}
}
else
{
value
=
this
.
dataStore
.
getValue
(
item
,
attribute
);
}
return
value
;
//anything
},
_setAttributeValue
:
function
(
/*Object*/
item
,
/*String*/
attribute
,
/*anything*/
value
){
// summary:
// Set an attribute value to an item
// description:
// This method uses an item passed in 'item' argument and
// 'attribute' argument to call setValue() method of 'dataStore'
// with 'value' argument.
// If an attribute name have an array suffix ("[]"), setValues()
// method is called, instead.
// If an index is specified in the array suffix, an array element
// for the index is set to 'value', instead of the array itself.
// item:
// An item
// attribute:
// An attribute name
// value:
// A value to set
var
i1
=
attribute
.
indexOf
(
'['
);
if
(
i1
>=
0
){
var
i2
=
attribute
.
indexOf
(
']'
);
var
index
=
attribute
.
substring
(
i1
+
1
,
i2
);
attribute
=
attribute
.
substring
(
0
,
i1
);
var
array
=
null
;
if
(
!
index
){
// replace whole array for "attribute[]"
array
=
value
;
}
else
{
array
=
this
.
dataStore
.
getValues
(
item
,
attribute
);
if
(
!
array
){
array
=
[];
}
array
[
index
]
=
value
;
}
this
.
dataStore
.
setValues
(
item
,
attribute
,
array
);
}
else
{
this
.
dataStore
.
setValue
(
item
,
attribute
,
value
);
}
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 6, 10:25 (1 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25276
Default Alt Text
DataWire.js (5 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment