Hi, The custom form for the workflow is simply a dct. In the the custom_initiation.cfg ( similar to datacapture.cfg), i have written regex for some fields. Idealy these regex should check for data when the user click on save/submit after entering the data. But when i am opening the custom form , it opens with red field. It seems the validation by regex is happening when the form is loading.Idealy it should not open.I am not sure why this is happening.Could any body please tell me why the custom form is opening with field as red ? Is in custom form the regex validation happens on form load?As per my understanding the regex validation happens on save or i am wrong.Is there any way to mention when the regex validation shd happen (i.e- on save or on form load).Please help me to resolve this issue.Thanks in advance.A.S.
Hi, I am posting the associated FormAPI code. These functions are generated by default when i create "custom_instantiation.cfg" file from "default_config.xml" using "iwmodeldct" command.Please have a look and help me to resolve this issue.[html] <script>var reviewersIdList = null;var reviewersIdReadonlyList = null;var datasourceIdReadonlyList = null;var datasourceIdHiddenList = null;<br> function init() {} function setReadonlyDatasourceItems(){ var dsItemId = datasourceIdReadonlyList.split(","); for(i=0;i<dsItemId.length;i++) { var dsItemObj = IWDatacapture.getItem("/Config/" + dsItemId<i>); if((dsItemObj != null) && (dsItemObj != undefined)) { try{ for(r=0;r<5000;r++) { } dsItemObj.setReadOnly(true); }catch(e){} } }}function setHiddenDatasourceItems(){ var dsItemId = datasourceIdHiddenList.split(","); for(i=0;i<dsItemId.length;i++) { var dsItemObj = IWDatacapture.getItem("/Config/" + dsItemId<i>); if((dsItemObj != null) && (dsItemObj != undefined)) { try{ for(r=0;r<5000;r++) { } dsItemObj.setVisible(false); }catch(e){} } }}function loadReviewersValues(reviewerItem){ var options = reviewerItem.getOptions(); var newOptions = new Array(); if((options != null) && (options != undefined)) { for(j=0;j<options.length;j++) { newOptions = getOptionValues(options<j>, reviewerItem, newOptions); } while(options.length >= 1) { reviewerItem.removeOption(reviewerItem.getOptions().length - 1); options = reviewerItem.getOptions(); } reviewerItem.setOptions(newOptions); }}function setReadonlyReviewerItems(){ var reviewersId = reviewersIdReadonlyList.split(","); for(i=0;i<reviewersId.length;i++) { var reviewerObj = IWDatacapture.getItem("/Config/" + reviewersId<i>); if((reviewerObj != null) && (reviewerObj != undefined)) { reviewerObj.setReadOnly(true); } }}function enforceMinNoOfReviewers(){ if((reviewersIdList != null) && (reviewersIdList != undefined)) { var reviewersId = reviewersIdList.split(","); for(i=0;i<reviewersId.length;i++) { var reviewerObj = IWDatacapture.getItem("/Config/" + reviewersId<i>); var minNoOfReviewersObj = IWDatacapture.getItem("/Config/" + reviewersId<i> + "-minNoOfReviewers"); var minNoOfReviewer = minNoOfReviewersObj.getValue(); var options = reviewerObj.getOptions(); var selectedOptions = 0; if((options != null) && (options != undefined)) { for(r=0;r<options.length;r++) { if(options<r>.selected) { selectedOptions++; } } } if(selectedOptions < minNoOfReviewer && (reviewerObj.isVisible() && reviewerObj.isReadOnly())) { reviewerObj.setFocus(); alert("Select atleast " + minNoOfReviewer + " reviewers"); return false; } else { } } } return true; }function getOptionValues(option, parentItem, newOptions){ if((option != null) && (option != undefined)) { optionValue = option.text; if(optionValue.indexOf("$IW_CV(") > 0) { var prefix = optionValue.substring(0,2); var beginIndex = optionValue.indexOf("$IW_CV("); var offset = "$IW_CV(".length; beginIndex = beginIndex + offset; var endIndex = optionValue.indexOf(")",beginIndex); var variableId = optionValue.substring(beginIndex,endIndex); var reviewerOption = IWDatacapture.getItem("/Config/" + variableId); var variableValue = reviewerOption.getValue(); var cleanValue = variableValue; if(cleanValue.length < 1) { var oriName = optionValue; var newName = oriName.substring(2,oriName.length); newOptions[newOptions.length] = new Option(newName,oriName,false,true); } else { var oriName = optionValue; newOptions[newOptions.length] = new Option(variableValue,oriName,false,true); } } else if(optionValue.indexOf("$IW_DS(") > 0) { var prefix = optionValue.substring(0,2); var beginIndex = optionValue.indexOf("$IW_DS("); var offset = "$IW_DS(".length; beginIndex = beginIndex + offset; var endIndex = optionValue.indexOf(")",beginIndex); var variableId = optionValue.substring(beginIndex,endIndex); var reviewerOption = IWDatacapture.getItem("/Config/" + variableId); var dsOptions = reviewerOption.getOptions(); for(i=0;i<dsOptions.length;i++) { if((dsOptions<i> != null) && (dsOptions<i> != undefined)) { var dsOptionValue = dsOptions<i>.text; if(dsOptionValue.length > 1) { newOptions[newOptions.length] = new Option(dsOptionValue,prefix + dsOptionValue,false,true); } } } } else { newOptions[newOptions.length] = new Option(optionValue.substring(2,optionValue.length),optionValue,false,true); } } return newOptions;}/* WORKAROUND: DCT contains a starting element, which has no significance, hidding that element here. this is done to avoid the js error that appears if first element is an item and it is set to hidden/not visibleand when focus is being set to it. If first item is a container then this error does not occur */var startingItem = IWDatacapture.getItem("/Config/iw-StartingItem");startingItem.setVisible(false);/*_iwdcwin.IWDCEventRegistry.addListener("onSave", enforceMinNoOfReviewers);*/IWEventRegistry.addFormHandler("onSave", enforceMinNoOfReviewers);IWEventRegistry.addFormHandler("onFormInit", init);</script>[/html]Thanks in advance.A.S.
<script><![CDATA[var reviewersIdList = null;var reviewersIdReadonlyList = null;var datasourceIdReadonlyList = null;var datasourceIdHiddenList = null;function init() {}function setReadonlyDatasourceItems(){ var dsItemId = datasourceIdReadonlyList.split(","); for(i = 0; i < dsItemId.length; i++) { var dsItemObj = IWDatacapture.getItem("/Config/" + dsItemId); if((dsItemObj != null) && (dsItemObj != undefined)) { try{ for(r = 0; r < 5000; r++) {} dsItemObj.setReadOnly(true); } catch(e){} } }}function setHiddenDatasourceItems(){ var dsItemId = datasourceIdHiddenList.split(","); for(i = 0; i < dsItemId.length; i++) { var dsItemObj = IWDatacapture.getItem("/Config/" + dsItemId); if((dsItemObj != null) && (dsItemObj != undefined)) { try{ for(r = 0; r < 5000; r++) {} dsItemObj.setVisible(false); } catch(e){} } }}function loadReviewersValues(reviewerItem){ var options = reviewerItem.getOptions(); var newOptions = new Array(); if((options != null) && (options != undefined)) { for(j = 0; j < options.length; j++) { newOptions = getOptionValues(options, reviewerItem, newOptions); } while(options.length >= 1) { reviewerItem.removeOption(reviewerItem.getOptions().length - 1); options = reviewerItem.getOptions(); } reviewerItem.setOptions(newOptions); }}function setReadonlyReviewerItems(){ var reviewersId = reviewersIdReadonlyList.split(","); for(i = 0; i < reviewersId.length; i++) { var reviewerObj = IWDatacapture.getItem("/Config/" + reviewersId); if((reviewerObj != null) && (reviewerObj != undefined)) { reviewerObj.setReadOnly(true); } }}function enforceMinNoOfReviewers(){ [color=red]if((reviewersIdList != null) && (reviewersIdList != undefined)) { var reviewersId = reviewersIdList.split(","); for(i = 0; i < reviewersId.length; i++) { var reviewerObj = IWDatacapture.getItem("/Config/" + reviewersId); var minNoOfReviewersObj = IWDatacapture.getItem("/Config/" + reviewersId + "-minNoOfReviewers"); var minNoOfReviewer = minNoOfReviewersObj.getValue(); var options = reviewerObj.getOptions(); var selectedOptions = 0; if((options != null) && (options != undefined)) { for(r = 0; r < options.length; r++) { if(options.selected) { selectedOptions++; } } } if(selectedOptions < minNoOfReviewer && (reviewerObj.isVisible() && reviewerObj.isReadOnly())) { reviewerObj.setFocus(); alert("Select atleast " + minNoOfReviewer + " reviewers"); return false; } else {} }} return true;}[/color]function getOptionValues(option, parentItem, newOptions){ if((option != null) && (option != undefined)) { optionValue = option.text; if(optionValue.indexOf("$IW_CV(") > 0) { var prefix = optionValue.substring(0,2); var beginIndex = optionValue.indexOf("$IW_CV("); var offset = "$IW_CV(".length; beginIndex = beginIndex + offset; var endIndex = optionValue.indexOf(")",beginIndex); var variableId = optionValue.substring(beginIndex,endIndex); var reviewerOption = IWDatacapture.getItem("/Config/" + variableId); var variableValue = reviewerOption.getValue(); var cleanValue = variableValue; if(cleanValue.length < 1) { var oriName = optionValue; var newName = oriName.substring(2,oriName.length); newOptions[newOptions.length] = new Option(newName,oriName,false,true); } else { var oriName = optionValue; newOptions[newOptions.length] = new Option(variableValue,oriName,false,true); } } else if(optionValue.indexOf("$IW_DS(") > 0) { var prefix = optionValue.substring(0,2); var beginIndex = optionValue.indexOf("$IW_DS("); var offset = "$IW_DS(".length; beginIndex = beginIndex + offset; var endIndex = optionValue.indexOf(")",beginIndex); var variableId = optionValue.substring(beginIndex,endIndex); var reviewerOption = IWDatacapture.getItem("/Config/" + variableId); var dsOptions = reviewerOption.getOptions(); for(i = 0; i < dsOptions.length; i++) { if((dsOptions != null) && (dsOptions != undefined)) { var dsOptionValue = dsOptions.text; if(dsOptionValue.length > 1) { newOptions[newOptions.length] = new Option(dsOptionValue,prefix + dsOptionValue,false,true); } } } } else { newOptions[newOptions.length] = new Option(optionValue.substring(2,optionValue.length), optionValue,false,true); } } return newOptions;}/* WORKAROUND: DCT contains a starting element, which has no significance, hidding that element here. this is done to avoid the js error that appears if first element is an item and it is set to hidden/not visibleand when focus is being set to it. If first item is a container then this error does not occur */var startingItem = IWDatacapture.getItem("/Config/iw-StartingItem");startingItem.setVisible(false);/*_iwdcwin.IWDCEventRegistry.addListener("onSave", enforceMinNoOfReviewers); */IWEventRegistry.addFormHandler("onSave", enforceMinNoOfReviewers);IWEventRegistry.addFormHandler("onFormInit", init);]]></script>