Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F1041723
util.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Subscribers
None
util.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.wire.ml.util"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.wire.ml.util"
]
=
true
;
dojo
.
provide
(
"dojox.wire.ml.util"
);
dojo
.
require
(
"dojox.data.dom"
);
dojo
.
require
(
"dojox.wire.Wire"
);
dojox
.
wire
.
ml
.
_getValue
=
function
(
/*String*/
source
,
/*Array*/
args
){
// summary:
// Return a value
// description:
// This method obtains an object by an ID of a widget or an DOM
// element.
// If 'source' specifies a dotted notation to its property, a Wire is
// used to get the object property.
// If 'source' starts with "arguments", 'args' is used as a root
// object for the Wire.
// source:
// A string to specify an object and its property
// args:
// An optional arguments array
// returns:
// A value
if
(
!
source
){
return
undefined
;
//undefined
}
var
property
=
undefined
;
if
(
args
&&
source
.
length
>=
9
&&
source
.
substring
(
0
,
9
)
==
"arguments"
){
property
=
source
.
substring
(
9
);
return
new
dojox
.
wire
.
Wire
({
property
:
property
}).
getValue
(
args
);
}
var
i
=
source
.
indexOf
(
'.'
);
if
(
i
>=
0
){
property
=
source
.
substring
(
i
+
1
);
source
=
source
.
substring
(
0
,
i
);
}
var
object
=
(
dijit
.
byId
(
source
)
||
dojo
.
byId
(
source
)
||
dojo
.
getObject
(
source
));
if
(
!
object
){
return
undefined
;
//undefined
}
if
(
!
property
){
return
object
;
//Object
}
else
{
return
new
dojox
.
wire
.
Wire
({
object
:
object
,
property
:
property
}).
getValue
();
//anything
}
};
dojox
.
wire
.
ml
.
_setValue
=
function
(
/*String*/
target
,
/*anything*/
value
){
// summary:
// Store a value
// description:
// This method stores a value by an ID of a widget or an DOM
// element with a dotted notation to its property, using a Wire.
// target:
// A string to specify an object and its property
// value:
// A value
if
(
!
target
){
return
;
//undefined
}
var
i
=
target
.
indexOf
(
'.'
);
if
(
i
<
0
){
return
;
//undefined
}
var
object
=
this
.
_getValue
(
target
.
substring
(
0
,
i
));
if
(
!
object
){
return
;
//undefined
}
var
property
=
target
.
substring
(
i
+
1
);
new
dojox
.
wire
.
Wire
({
object
:
object
,
property
:
property
}).
setValue
(
value
);
};
dojo
.
declare
(
"dojox.wire.ml.XmlElement"
,
null
,
{
// summary:
// An object wrapping an XML element
// description:
// This class represents an XML element.
constructor
:
function
(
/*Element||String*/
element
){
// summary:
// Initialize with an XML element or a tag name
// element:
// An XML element or a tag name
if
(
dojo
.
isString
(
element
)){
element
=
this
.
_getDocument
().
createElement
(
element
);
}
this
.
element
=
element
;
},
getPropertyValue
:
function
(
/*String*/
property
){
// summary:
// Return a property value
// description:
// If 'property' starts with '@', the attribute value is returned.
// If 'property' specifies "text()", the value of the first child
// text is returned.
// Otherwise, child elements of the tag name specified with
// 'property' are returned.
// property:
// A property name
// returns:
// A property value
var
value
=
undefined
;
if
(
!
this
.
element
){
return
value
;
//undefined
}
if
(
!
property
){
return
value
;
//undefined
}
if
(
property
.
charAt
(
0
)
==
'@'
){
var
attribute
=
property
.
substring
(
1
);
value
=
this
.
element
.
getAttribute
(
attribute
);
}
else
if
(
property
==
"text()"
){
var
text
=
this
.
element
.
firstChild
;
if
(
text
){
value
=
text
.
nodeValue
;
}
}
else
{
// child elements
var
elements
=
[];
for
(
var
i
=
0
;
i
<
this
.
element
.
childNodes
.
length
;
i
++
){
var
child
=
this
.
element
.
childNodes
[
i
];
if
(
child
.
nodeType
===
1
/* ELEMENT_NODE */
&&
child
.
nodeName
==
property
){
elements
.
push
(
new
dojox
.
wire
.
ml
.
XmlElement
(
child
));
}
}
if
(
elements
.
length
>
0
){
if
(
elements
.
length
===
1
){
value
=
elements
[
0
];
}
else
{
value
=
elements
;
}
}
}
return
value
;
//String||Array||XmlElement
},
setPropertyValue
:
function
(
/*String*/
property
,
/*String||Array||XmlElement*/
value
){
// summary:
// Store a property value
// description:
// If 'property' starts with '@', 'value' is set to the attribute.
// If 'property' specifies "text()", 'value' is set as the first
// child text.
// If 'value' is a string, a child element of the tag name
// specified with 'property' is created and 'value' is set as
// the first child text of the child element.
// Otherwise, 'value' is set to as child elements.
// property:
// A property name
// value:
// A property value
if
(
!
this
.
element
){
return
;
//undefined
}
if
(
!
property
){
return
;
//undefined
}
if
(
property
.
charAt
(
0
)
==
'@'
){
var
attribute
=
property
.
substring
(
1
);
if
(
value
){
this
.
element
.
setAttribute
(
attribute
,
value
);
}
else
{
this
.
element
.
removeAttribute
(
attribute
);
}
}
else
if
(
property
==
"text()"
){
while
(
this
.
element
.
firstChild
){
this
.
element
.
removeChild
(
this
.
element
.
firstChild
);
}
if
(
value
){
var
text
=
this
.
_getDocument
().
createTextNode
(
value
);
this
.
element
.
appendChild
(
text
);
}
}
else
{
// child elements
var
nextChild
=
null
;
for
(
var
i
=
this
.
element
.
childNodes
.
length
-
1
;
i
>=
0
;
i
--
){
var
child
=
this
.
element
.
childNodes
[
i
];
if
(
child
.
nodeType
===
1
/* ELEMENT_NODE */
&&
child
.
nodeName
==
property
){
if
(
!
nextChild
){
nextChild
=
child
.
nextSibling
;
}
this
.
element
.
removeChild
(
child
);
}
}
if
(
value
){
if
(
dojo
.
isArray
(
value
)){
for
(
var
i
in
value
){
var
e
=
value
[
i
];
if
(
e
.
element
){
this
.
element
.
insertBefore
(
e
.
element
,
nextChild
);
}
}
}
else
if
(
value
instanceof
dojox
.
wire
.
ml
.
XmlElement
){
if
(
value
.
element
){
this
.
element
.
insertBefore
(
value
.
element
,
nextChild
);
}
}
else
{
// assume string
var
child
=
this
.
_getDocument
().
createElement
(
property
);
var
text
=
this
.
_getDocument
().
createTextNode
(
value
);
child
.
appendChild
(
text
);
this
.
element
.
insertBefore
(
child
,
nextChild
);
}
}
}
},
toString
:
function
(){
// summary:
// Return a value of the first text child of the element
// description:
// A value of the first text child of the element is returned.
// returns:
// A value of the first text child of the element
var
s
=
""
;
if
(
this
.
element
){
var
text
=
this
.
element
.
firstChild
;
if
(
text
){
s
=
text
.
nodeValue
;
}
}
return
s
;
//String
},
toObject
:
function
(){
// summary:
// Return an object representation of the element
// description:
// An object with properties for child elements, attributes and
// text is returned.
// returns:
// An object representation of the element
if
(
!
this
.
element
){
return
null
;
//null
}
var
text
=
""
;
var
obj
=
{};
var
elements
=
0
;
for
(
var
i
=
0
;
i
<
this
.
element
.
childNodes
.
length
;
i
++
){
var
child
=
this
.
element
.
childNodes
[
i
];
if
(
child
.
nodeType
===
1
/* ELEMENT_NODE */
){
elements
++
;
var
o
=
new
dojox
.
wire
.
ml
.
XmlElement
(
child
).
toObject
();
var
name
=
child
.
nodeName
;
var
p
=
obj
[
name
];
if
(
!
p
){
obj
[
name
]
=
o
;
}
else
if
(
dojo
.
isArray
(
p
)){
p
.
push
(
o
);
}
else
{
obj
[
name
]
=
[
p
,
o
];
// make them array
}
}
else
if
(
child
.
nodeType
===
3
/* TEXT_NODE */
||
child
.
nodeType
===
4
/* CDATA_SECTION_NODE */
){
text
+=
child
.
nodeValue
;
}
}
var
attributes
=
0
;
if
(
this
.
element
.
nodeType
===
1
/* ELEMENT_NODE */
){
attributes
=
this
.
element
.
attributes
.
length
;
for
(
var
i
=
0
;
i
<
attributes
;
i
++
){
var
attr
=
this
.
element
.
attributes
[
i
];
obj
[
"@"
+
attr
.
nodeName
]
=
attr
.
nodeValue
;
}
}
if
(
elements
===
0
){
if
(
attributes
===
0
){
// text only
return
text
;
//String
}
// text with attributes
obj
[
"text()"
]
=
text
;
}
// else ignore text
return
obj
;
//Object
},
_getDocument
:
function
(){
// summary:
// Return a DOM document
// description:
// If 'element' is specified, a DOM document of the element is
// returned.
// Otherwise, a DOM document is created.
// returns:
// A DOM document
if
(
this
.
element
){
return
(
this
.
element
.
nodeType
==
9
/* DOCUMENT_NODE */
?
this
.
element
:
this
.
element
.
ownerDocument
);
//Document
}
else
{
return
dojox
.
data
.
dom
.
createDocument
();
//Document
}
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, May 15, 09:27 (3 d, 9 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26720
Default Alt Text
util.js (8 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment