The CreatorCon Call for Content is officially open! Get started here.

How to populate work notes based on String value(due to event) through ui page on ui action button?

Gopi12
Tera Contributor

Hi @Ankur Bawiskar ,

 

Could please help me in the below script.

Ui action script:

 

   function showEvents() {
       var gm = new GlideModal('event_messages');

       gm.setTitle('Show title');

       gm.setPreference('sysparm_sysid', g_form.getUniqueValue());
       gm.render();


   }
 
Ui Page script:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<h3>Event table</h3>
 <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
<g:evaluate jelly="true" object="true">
   var gr = new GlideRecord("em_alert");
 gr.addQuery("u_case",jelly.sysparm_sysid);
 gr.addQuery("work_notesLIKEdue to event");
   
 gr.query();
   gr;
</g:evaluate>
<table border="1">
  <tr><td colspan="2">Event Messages</td></tr>
  <tr>
   <th>Number</th>
   <th>Work Notes</th>
  </tr>
 <j2:while test="$[gr.next()]">
  <tr>
  <td>$[gr.number]</td>
  <td>$[gr.work_notes.getJournalEntry(-1)]</td>
  </tr>
 </j2:while>
 </table>
 <style>
  td, th{
   padding: 10px;
  }
 </style>
</j:jelly>
 
Thanks & Regards,
Gopi.
2 ACCEPTED SOLUTIONS

@Gopi12 

got it

try this

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<h3>Event table</h3>
	<g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
	<g:evaluate jelly="true" object="true">

		var rec = new GlideRecord('em_alert');
		rec.addQuery('u_case', jelly.sysparm_sysid);
		rec.query();
		if(rec.next()){
		var gr = new GlideRecord("sys_journal_field");
		gr.addQuery("element_id",rec.sys_id);
		gr.addEncodedQuery("valueLIKEdue to event");
		gr.addQuery("element","work_notes");
		gr.query();
		gr;
		}
	</g:evaluate>
	<table border="1">
		<tr><td colspan="2">Event Messages</td></tr>
		<tr>
			<th>Number</th>
			<th>Work Notes</th>
		</tr>
		<j:while test="${gr.next()}">
			<tr>
				<td>${gr.number}</td>
				<td>${gr.value}</td>
			</tr>
		</j:while>
	</table>
	<style>
		td, th{
		padding: 10px;
		}
	</style>
</j:jelly>

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

Hello @Gopi12 ,

Please try with the modified script below,

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
  <h3>Event table</h3>
  <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
  <g:evaluate jelly="true" object="true">

    var rec = new GlideRecord('em_alert');
    rec.addQuery('u_case', jelly.sysparm_sysid);
    rec.query();
    
    var alertSysIds = []; // Array to store alert sys_ids

    while (rec.next()) {
      alertSysIds.push(rec.sys_id.toString());
    }

    var gr = new GlideRecord("sys_journal_field");
    gr.addQuery("element_id", "IN", alertSysIds.join(','));
    gr.addEncodedQuery("valueLIKEdue to event");
    gr.addQuery("element", "work_notes");
    gr.query();
    gr;
  </g:evaluate>
  <table border="1">
    <tr><td colspan="2">Event Messages</td></tr>
    <tr>
      <th>Number</th>
      <th>Work Notes</th>
    </tr>
    <j:while test="${gr.next()}">
      <tr>
        <td>${gr.number}</td>
        <td>${gr.value}</td>
      </tr>
    </j:while>
  </table>
  <style>
    td, th{
      padding: 10px;
    }
  </style>
</j:jelly>

 

View solution in original post

25 REPLIES 25

Ankur Bawiskar
Tera Patron
Tera Patron

@Gopi12 

so what's not working?

what debugging have you done so far?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Aniket Chavan
Tera Sage
Tera Sage

Hello @Gopi12 ,

Modified the UI Page script based on your recent feedback on the question to filter the work notes based on the text

gr.addQuery("work_notes", "LIKE", "test");

 

Modify the UI Page Script: Update the UI page script to include a function that adds work notes based on a string value. In your case, it seems like you want to query the em_alert table for records related to the specified u_case and containing a specific string in the work_notes field.

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
  <h3>Event table</h3>
  <g:evaluate var="jvar_sysId" expression="RP.getWindowProperties().sysparm_sysid"/>
  <g:evaluate jelly="true" object="true">
    var gr = new GlideRecord("em_alert");
    gr.addQuery("u_case", jelly.sysparm_sysid);
    gr.addQuery("work_notes", "LIKE", "due to event"); // Adjust the query as needed
    gr.addQuery("work_notes", "LIKE", "test"); // Add this line to filter based on "test"
    gr.query();
    gr;
  </g:evaluate>
  <table border="1">
    <tr><td colspan="2">Event Messages</td></tr>
    <tr>
      <th>Number</th>
      <th>Work Notes</th>
    </tr>
    <j2:while test="$[gr.next()]">
      <tr>
        <td>$[gr.number]</td>
        <td>$[gr.work_notes.getJournalEntry(-1)]</td>
      </tr>
    </j2:while>
  </table>
  <style>
    td, th{
      padding: 10px;
    }
  </style>
</j:jelly>

 

 

Modify the UI Action Script: Update the UI action script to call the function that populates work notes. Here's an example:

 

function showEvents() {
  var gm = new GlideModal('event_messages');
  gm.setTitle('Show title');
  gm.setPreference('sysparm_sysid', g_form.getUniqueValue());
  gm.render();

  // Call the function to populate work notes based on the string value
  populateWorkNotes();
}

// Function to populate work notes based on the specified criteria
function populateWorkNotes() {
  // You can add any additional logic here if needed
  // For example, you may want to reload the modal after updating work notes
  // or perform other actions.
  // You can use GlideAjax or other methods to update the records.

  // For simplicity, you can reload the current form after updating work notes
  g_form.save(); // Save the form to trigger reload with updated work notes
}

 

 

Let me know your views on this and Mark Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.

 

Thanks,

Aniket

Hi @Aniket Chavan ,

Could please tell me about the script for to give specific string in the function.

populateWorkNotes();
}

// Function to populate work notes based on the specified criteria
function populateWorkNotes() {
  // You can add any additional logic here if needed
  // For example, you may want to reload the modal after updating work notes
  // or perform other actions.
  // You can use GlideAjax or other methods to update the records.

  // For simplicity, you can reload the current form after updating work notes
  g_form.save(); // Save the form to trigger reload with updated work notes
}

Thanks in Advance..!

Hello @Gopi29 ,

You can try with something like below ,

function showEvents() {
  var gm = new GlideModal('event_messages');
  gm.setTitle('Show title');
  gm.setPreference('sysparm_sysid', g_form.getUniqueValue());
  gm.render();

  // Call the function to populate work notes based on the string "test"
  populateWorkNotes("test");
}

// Function to populate work notes based on the specified criteria
function populateWorkNotes(filterString) {
  // You can add any additional logic here if needed
  // For example, you may want to reload the modal after updating work notes
  // or perform other actions.
  
  // Query the records based on the filterString
  var gr = new GlideRecord("em_alert");
  gr.addQuery("u_case", g_form.getUniqueValue());
  gr.addQuery("work_notes", "LIKE", filterString);
  gr.query();

  // Loop through the records and perform actions
  while (gr.next()) {
    // Perform actions with the retrieved records, e.g., update or log
    // For example: gr.work_notes = "Updated work notes";
    // gr.update();
  }

  // For simplicity, you can reload the current form after updating work notes
  g_form.save(); // Save the form to trigger reload with updated work notes
}