A webapp Page (v5 compatibility), Combo box input -> advanced settings Initialization: "Automatic via an enumeration" suggest we can use enumerations defined outside the webapp to populate a select element in our webpage's HTML.
Elements in schemas can use enumerations defined in the schema using attribute
enum="enumName"
Or, enum defined in different schema
enum="cus:schemaName:enumName"
Or, using a database enum
dbEnum="enumName"
However the settings for the combo box have a field "Enumeration Xpath", and however I write the reference to my enum, the select-element remains unpopulated.
The enum is of type system, and is working in inputforms using dbEnum="enumName" attribute. Can anyone share some light on how this is supposed to work, please?
Solved! Go to Solution.
Views
Replies
Total Likes
Hello,
I agree this is a bit confusing.... But if we give a look a little closer, with the builtin webapps (for example 'deliveryOverview', 'webAppOverview' etc. by filtering webApp with "XML memo (data) contains 'contextOptions useContext="2" '), the answer is : the xpath refer to an attribute of the document schema ("Document type" defined into the General properties of the webapp) that use a enumeration.
For example, if you choose "nms:delivery" for your webapp document type, you can put "@state" into the xpath to populate the options with the nms:delivery:deliveryState enumeration values.
It's not impossible that you could use webapp context enumeration maybe ? If I see something I'll give you more precisions.
Cedric
Hello,
I agree this is a bit confusing.... But if we give a look a little closer, with the builtin webapps (for example 'deliveryOverview', 'webAppOverview' etc. by filtering webApp with "XML memo (data) contains 'contextOptions useContext="2" '), the answer is : the xpath refer to an attribute of the document schema ("Document type" defined into the General properties of the webapp) that use a enumeration.
For example, if you choose "nms:delivery" for your webapp document type, you can put "@state" into the xpath to populate the options with the nms:delivery:deliveryState enumeration values.
It's not impossible that you could use webapp context enumeration maybe ? If I see something I'll give you more precisions.
Cedric
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
If anyone else sees this looking for assistance, you can use a javscript object to get all enumerations defined in a schema into ctx like this:
var schema = application.getSchema("cus:schemaName")
for each(var e in schema.enumerations)
{
var enum = eval("<enum_"+ e.label+ "/>");
var options = <options/>;
for each(var item in e.values){
options.appendChild(<option label={item.label} value={item.value} />)
}
enum.options = options.option
ctx.enum = enum
}
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Here it is :
JS Script :
var enumId = 123456789 //xtk:enum ID
var domainsQuery = NLWS.xtkQueryDef.create({
queryDef : {
schema : "xtk:enumValue",
operation : "select",
select : {
node : [
{expr:"@label"},
{expr:"@name"}
]
},
where : {
condition : [
{expr : "[@enum-id] = " + enumId }
]
}
}
});
ctx.domains = new XML( domainsQuery.ExecuteQuery().toXMLString() );
Parameters init context :
Init : From context,
options XPath : [enumValue-collection/enumValue]
label XPath : @label
values XPath : @name
You can change the xptah using aliases into the query.
Cedric
Views
Replies
Total Likes
Views
Replies
Total Likes
You're welcome. Also, if you need to load more than one enum, the code is incomplete (because each query will have the same element name "enumValue-collection". If needed :
myResult1 = new XML( domainsQuery.ExecuteQuery().toXMLString() );
myResult1.setName('myResult1'); //this is the real root element name to give to the "options Xptah" instead of "enumValue-collection" as I did before
ctx.myValues1 = myResult1;
... another query...
myResult2 = new XML( anotherQuery.ExecuteQuery().toXMLString() );
myResult2.setName('myResult2')
ctx.myValues2 = myResult2;
Etc.
Then use options XPath : [myResult1/enumValue], [myResult2/enumValue] etc.
Cedric
Views
Replies
Total Likes