- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2015 08:26 AM
So I'm working on what I thought might be a simple feature: Require a user to add Change Tasks before a Change Request can be submitted for approval (via a Request For Approval UI Action).
I have Change Tasks as an embedded list on my Change Request form and my users love it. So I'm wondering if I could key the UI Action visibility or at least have a client script check onSubmit (of the change request) if data has been populated in that embedded related list. Everything I see on the GlideList2 wiki page seems to be altering the properties of the embedded related list, and not actually interacting with its data.
Am I barking up the wrong tree here?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2015 11:39 AM
Ok, with the insights Travis Toulson and Cory Seering gave me, I cracked the case.
function onSubmit() {
var list = GlideList2.getByName('change_request.change_task.change_request'),
rows = list.table.getElementsBySelector('tr.list_row'),
sys_id;
// - 1 to exclude the insert row which is the last in the list of rows retrieved above
if (rows.length - 1 == 0){
alert("No Change Tasks");
} else {
alert(rows.length + " up in here.");
}
}
Now all that's left to do is integrate this into my Request Approval button and I'm off to the races. Which leaves one more order of business for Travis and Chris:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2015 11:42 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2015 11:47 AM
function onSubmit() {
alert("Thanks!");
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2015 11:39 AM
Ok, with the insights Travis Toulson and Cory Seering gave me, I cracked the case.
function onSubmit() {
var list = GlideList2.getByName('change_request.change_task.change_request'),
rows = list.table.getElementsBySelector('tr.list_row'),
sys_id;
// - 1 to exclude the insert row which is the last in the list of rows retrieved above
if (rows.length - 1 == 0){
alert("No Change Tasks");
} else {
alert(rows.length + " up in here.");
}
}
Now all that's left to do is integrate this into my Request Approval button and I'm off to the races. Which leaves one more order of business for Travis and Chris:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2016 10:16 PM
Ran into the same problem and this code was very helpful. I made a slight tweak to it that I thought I'd add here in-case someone else runs into the same thing.
The code above almost works for me except that if a user adds a row, and then later marks it for deletion using the 'X' button, they can still save the record with no rows because list.table.getElementsBySelector('tr.list_row') will still count that row.
So I modified the code as follows:
function onSubmit() {
var list = GlideList2.getByName('change_request.change_task.change_request'),
rows = list.table.getElementsBySelector('tr.list_row'),
strClass;
//iterate through the embedded list to get true number of rows added. We have to
//exclude the blank 'insert row' and any rows that have been marked for deletion
var taskCount = 0;
for (var i = 0; i < rows.length; i++) {
strClass = rows[i].getAttribute('class');
if (!strClass.includes('list_add') && !strClass.includes('list_delete')) { taskCount++; }
}
if (taskCount == 0){
alert("Please add at least 1 task before saving");
return false;
} else {
alert(taskCount + " tasks up in here!!");
}
return true;
}
Not sure if this is the best way to do this but it seems to work.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2015 11:52 AM
Looks like you can only mark two answers as helpful, but I just wanted you guys to know, y'all are beasts.