Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F392084
_FormSelectWidget.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Subscribers
None
_FormSelectWidget.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
[
"dijit.form._FormSelectWidget"
]){
dojo
.
_hasResource
[
"dijit.form._FormSelectWidget"
]
=
true
;
dojo
.
provide
(
"dijit.form._FormSelectWidget"
);
dojo
.
require
(
"dijit.form._FormWidget"
);
dojo
.
require
(
"dojo.data.util.sorter"
);
dojo
.
declare
(
"dijit.form._FormSelectWidget"
,
dijit
.
form
.
_FormValueWidget
,{
multiple
:
false
,
options
:
null
,
store
:
null
,
query
:
null
,
queryOptions
:
null
,
onFetch
:
null
,
sortByLabel
:
true
,
loadChildrenOnOpen
:
false
,
getOptions
:
function
(
_1
){
var
_2
=
_1
,
_3
=
this
.
options
||
[],
l
=
_3
.
length
;
if
(
_2
===
undefined
){
return
_3
;
}
if
(
dojo
.
isArray
(
_2
)){
return
dojo
.
map
(
_2
,
"return this.getOptions(item);"
,
this
);
}
if
(
dojo
.
isObject
(
_1
)){
if
(
!
dojo
.
some
(
this
.
options
,
function
(
o
,
_4
){
if
(
o
===
_2
||
(
o
.
value
&&
o
.
value
===
_2
.
value
)){
_2
=
_4
;
return
true
;
}
return
false
;
})){
_2
=-
1
;
}
}
if
(
typeof
_2
==
"string"
){
for
(
var
i
=
0
;
i
<
l
;
i
++
){
if
(
_3
[
i
].
value
===
_2
){
_2
=
i
;
break
;
}
}
}
if
(
typeof
_2
==
"number"
&&
_2
>=
0
&&
_2
<
l
){
return
this
.
options
[
_2
];
}
return
null
;
},
addOption
:
function
(
_5
){
if
(
!
dojo
.
isArray
(
_5
)){
_5
=
[
_5
];
}
dojo
.
forEach
(
_5
,
function
(
i
){
if
(
i
&&
dojo
.
isObject
(
i
)){
this
.
options
.
push
(
i
);
}
},
this
);
this
.
_loadChildren
();
},
removeOption
:
function
(
_6
){
if
(
!
dojo
.
isArray
(
_6
)){
_6
=
[
_6
];
}
var
_7
=
this
.
getOptions
(
_6
);
dojo
.
forEach
(
_7
,
function
(
i
){
if
(
i
){
this
.
options
=
dojo
.
filter
(
this
.
options
,
function
(
_8
,
_9
){
return
(
_8
.
value
!==
i
.
value
);
});
this
.
_removeOptionItem
(
i
);
}
},
this
);
this
.
_loadChildren
();
},
updateOption
:
function
(
_a
){
if
(
!
dojo
.
isArray
(
_a
)){
_a
=
[
_a
];
}
dojo
.
forEach
(
_a
,
function
(
i
){
var
_b
=
this
.
getOptions
(
i
),
k
;
if
(
_b
){
for
(
k
in
i
){
_b
[
k
]
=
i
[
k
];
}
}
},
this
);
this
.
_loadChildren
();
},
setStore
:
function
(
_c
,
_d
,
_e
){
var
_f
=
this
.
store
;
_e
=
_e
||
{};
if
(
_f
!==
_c
){
dojo
.
forEach
(
this
.
_notifyConnections
||
[],
dojo
.
disconnect
);
delete
this
.
_notifyConnections
;
if
(
_c
&&
_c
.
getFeatures
()[
"dojo.data.api.Notification"
]){
this
.
_notifyConnections
=
[
dojo
.
connect
(
_c
,
"onNew"
,
this
,
"_onNewItem"
),
dojo
.
connect
(
_c
,
"onDelete"
,
this
,
"_onDeleteItem"
),
dojo
.
connect
(
_c
,
"onSet"
,
this
,
"_onSetItem"
)];
}
this
.
store
=
_c
;
}
this
.
_onChangeActive
=
false
;
if
(
this
.
options
&&
this
.
options
.
length
){
this
.
removeOption
(
this
.
options
);
}
if
(
_c
){
var
cb
=
function
(
_10
){
if
(
this
.
sortByLabel
&&!
_e
.
sort
&&
_10
.
length
){
_10
.
sort
(
dojo
.
data
.
util
.
sorter
.
createSortFunction
([{
attribute
:
_c
.
getLabelAttributes
(
_10
[
0
])[
0
]}],
_c
));
}
if
(
_e
.
onFetch
){
_10
=
_e
.
onFetch
(
_10
);
}
dojo
.
forEach
(
_10
,
function
(
i
){
this
.
_addOptionForItem
(
i
);
},
this
);
this
.
_loadingStore
=
false
;
this
.
attr
(
"value"
,((
"_pendingValue"
in
this
)
?
this
.
_pendingValue
:
_d
));
delete
this
.
_pendingValue
;
if
(
!
this
.
loadChildrenOnOpen
){
this
.
_loadChildren
();
}
else
{
this
.
_pseudoLoadChildren
(
_10
);
}
this
.
_fetchedWith
=
_11
;
this
.
_lastValueReported
=
this
.
multiple
?
[]
:
null
;
this
.
_onChangeActive
=
true
;
this
.
onSetStore
();
this
.
_handleOnChange
(
this
.
value
);
};
var
_11
=
dojo
.
mixin
({
onComplete
:
cb
,
scope
:
this
},
_e
);
this
.
_loadingStore
=
true
;
_c
.
fetch
(
_11
);
}
else
{
delete
this
.
_fetchedWith
;
}
return
_f
;
},
_setValueAttr
:
function
(
_12
,
_13
){
if
(
this
.
_loadingStore
){
this
.
_pendingValue
=
_12
;
return
;
}
var
_14
=
this
.
getOptions
()
||
[];
if
(
!
dojo
.
isArray
(
_12
)){
_12
=
[
_12
];
}
dojo
.
forEach
(
_12
,
function
(
i
,
idx
){
if
(
!
dojo
.
isObject
(
i
)){
i
=
i
+
""
;
}
if
(
typeof
i
===
"string"
){
_12
[
idx
]
=
dojo
.
filter
(
_14
,
function
(
_15
){
return
_15
.
value
===
i
;
})[
0
]
||
{
value
:
""
,
label
:
""
};
}
},
this
);
_12
=
dojo
.
filter
(
_12
,
function
(
i
){
return
i
&&
i
.
value
;
});
if
(
!
this
.
multiple
&&
(
!
_12
[
0
]
||!
_12
[
0
].
value
)
&&
_14
.
length
){
_12
[
0
]
=
_14
[
0
];
}
dojo
.
forEach
(
_14
,
function
(
i
){
i
.
selected
=
dojo
.
some
(
_12
,
function
(
v
){
return
v
.
value
===
i
.
value
;
});
});
var
val
=
dojo
.
map
(
_12
,
function
(
i
){
return
i
.
value
;
}),
_16
=
dojo
.
map
(
_12
,
function
(
i
){
return
i
.
label
;
});
this
.
value
=
this
.
multiple
?
val
:
val
[
0
];
this
.
_setDisplay
(
this
.
multiple
?
_16
:
_16
[
0
]);
this
.
_updateSelection
();
this
.
_handleOnChange
(
this
.
value
,
_13
);
},
_getDisplayedValueAttr
:
function
(){
var
val
=
this
.
attr
(
"value"
);
if
(
!
dojo
.
isArray
(
val
)){
val
=
[
val
];
}
var
ret
=
dojo
.
map
(
this
.
getOptions
(
val
),
function
(
v
){
if
(
v
&&
"label"
in
v
){
return
v
.
label
;
}
else
{
if
(
v
){
return
v
.
value
;
}
}
return
null
;
},
this
);
return
this
.
multiple
?
ret
:
ret
[
0
];
},
_getValueDeprecated
:
false
,
getValue
:
function
(){
return
this
.
_lastValue
;
},
undo
:
function
(){
this
.
_setValueAttr
(
this
.
_lastValueReported
,
false
);
},
_loadChildren
:
function
(){
if
(
this
.
_loadingStore
){
return
;
}
dojo
.
forEach
(
this
.
_getChildren
(),
function
(
_17
){
_17
.
destroyRecursive
();
});
dojo
.
forEach
(
this
.
options
,
this
.
_addOptionItem
,
this
);
this
.
_updateSelection
();
},
_updateSelection
:
function
(){
this
.
value
=
this
.
_getValueFromOpts
();
var
val
=
this
.
value
;
if
(
!
dojo
.
isArray
(
val
)){
val
=
[
val
];
}
if
(
val
&&
val
[
0
]){
dojo
.
forEach
(
this
.
_getChildren
(),
function
(
_18
){
var
_19
=
dojo
.
some
(
val
,
function
(
v
){
return
_18
.
option
&&
(
v
===
_18
.
option
.
value
);
});
dojo
.
toggleClass
(
_18
.
domNode
,
this
.
baseClass
+
"SelectedOption"
,
_19
);
dijit
.
setWaiState
(
_18
.
domNode
,
"selected"
,
_19
);
},
this
);
}
this
.
_handleOnChange
(
this
.
value
);
},
_getValueFromOpts
:
function
(){
var
_1a
=
this
.
getOptions
()
||
[];
if
(
!
this
.
multiple
&&
_1a
.
length
){
var
opt
=
dojo
.
filter
(
_1a
,
function
(
i
){
return
i
.
selected
;
})[
0
];
if
(
opt
&&
opt
.
value
){
return
opt
.
value
;
}
else
{
_1a
[
0
].
selected
=
true
;
return
_1a
[
0
].
value
;
}
}
else
{
if
(
this
.
multiple
){
return
dojo
.
map
(
dojo
.
filter
(
_1a
,
function
(
i
){
return
i
.
selected
;
}),
function
(
i
){
return
i
.
value
;
})
||
[];
}
}
return
""
;
},
_onNewItem
:
function
(
_1b
,
_1c
){
if
(
!
_1c
||!
_1c
.
parent
){
this
.
_addOptionForItem
(
_1b
);
}
},
_onDeleteItem
:
function
(
_1d
){
var
_1e
=
this
.
store
;
this
.
removeOption
(
_1e
.
getIdentity
(
_1d
));
},
_onSetItem
:
function
(
_1f
){
this
.
updateOption
(
this
.
_getOptionObjForItem
(
_1f
));
},
_getOptionObjForItem
:
function
(
_20
){
var
_21
=
this
.
store
,
_22
=
_21
.
getLabel
(
_20
),
_23
=
(
_22
?
_21
.
getIdentity
(
_20
)
:
null
);
return
{
value
:
_23
,
label
:
_22
,
item
:
_20
};
},
_addOptionForItem
:
function
(
_24
){
var
_25
=
this
.
store
;
if
(
!
_25
.
isItemLoaded
(
_24
)){
_25
.
loadItem
({
item
:
_24
,
onComplete
:
function
(
i
){
this
.
_addOptionForItem
(
_24
);
},
scope
:
this
});
return
;
}
var
_26
=
this
.
_getOptionObjForItem
(
_24
);
this
.
addOption
(
_26
);
},
constructor
:
function
(
_27
){
this
.
_oValue
=
(
_27
||
{}).
value
||
null
;
},
_fillContent
:
function
(){
var
_28
=
this
.
options
;
if
(
!
_28
){
_28
=
this
.
options
=
this
.
srcNodeRef
?
dojo
.
query
(
">"
,
this
.
srcNodeRef
).
map
(
function
(
_29
){
if
(
_29
.
getAttribute
(
"type"
)
===
"separator"
){
return
{
value
:
""
,
label
:
""
,
selected
:
false
,
disabled
:
false
};
}
return
{
value
:
_29
.
getAttribute
(
"value"
),
label
:
String
(
_29
.
innerHTML
),
selected
:
_29
.
getAttribute
(
"selected"
)
||
false
,
disabled
:
_29
.
getAttribute
(
"disabled"
)
||
false
};
},
this
)
:
[];
}
if
(
!
this
.
value
){
this
.
value
=
this
.
_getValueFromOpts
();
}
else
{
if
(
this
.
multiple
&&
typeof
this
.
value
==
"string"
){
this
.
value
=
this
.
value
.
split
(
","
);
}
}
},
postCreate
:
function
(){
dojo
.
setSelectable
(
this
.
focusNode
,
false
);
this
.
inherited
(
arguments
);
this
.
connect
(
this
,
"onChange"
,
"_updateSelection"
);
this
.
connect
(
this
,
"startup"
,
"_loadChildren"
);
this
.
_setValueAttr
(
this
.
value
,
null
);
},
startup
:
function
(){
this
.
inherited
(
arguments
);
var
_2a
=
this
.
store
,
_2b
=
{};
dojo
.
forEach
([
"query"
,
"queryOptions"
,
"onFetch"
],
function
(
i
){
if
(
this
[
i
]){
_2b
[
i
]
=
this
[
i
];
}
delete
this
[
i
];
},
this
);
if
(
_2a
&&
_2a
.
getFeatures
()[
"dojo.data.api.Identity"
]){
this
.
store
=
null
;
this
.
setStore
(
_2a
,
this
.
_oValue
,
_2b
);
}
},
destroy
:
function
(){
dojo
.
forEach
(
this
.
_notifyConnections
||
[],
dojo
.
disconnect
);
this
.
inherited
(
arguments
);
},
_addOptionItem
:
function
(
_2c
){
},
_removeOptionItem
:
function
(
_2d
){
},
_setDisplay
:
function
(
_2e
){
},
_getChildren
:
function
(){
return
[];
},
_getSelectedOptionsAttr
:
function
(){
return
this
.
getOptions
(
this
.
attr
(
"value"
));
},
_pseudoLoadChildren
:
function
(
_2f
){
},
onSetStore
:
function
(){
}});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Feb 22, 20:25 (1 d, 23 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25799
Default Alt Text
_FormSelectWidget.js (7 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment