Need help in report knowledge gap ui action for incident in native UI

Badrinarayan
Tera Guru

I want to have report knowledge gap button on incident , where a pop up to be displayed with short description populated in that and , when i submit the knowledge gap , feedback task to get created

here is my code , please help

function reportKnowledgeClient() {
    var shortDescription = g_form.getValue("short_description");

    var modalHTML =
        '<div>' +
        '<h3>Report Knowledge Gap</h3><br>' +
        '<label><b>Topic</b></label><br>' +
        '<input id="feedback_topic" class="form-control" type="text" style="width:100%; padding:4px;" value="' + shortDescription + '"/><br><br>' +
        '<label><b>Description</b></label><br>' +
        '<textarea id="feedback_description" style="width:100%; padding:4px;" rows="5"></textarea><br><br>' +
        '<button class="btn btn-primary" id="feedback_submit">Submit</button> ' +
        '<button class="btn btn-secondary" id="feedback_cancel">Cancel</button>' +
        '</div>';

    var modal = new GlideModal("Report Knowledge Gap");
    modal.setSize("default");
    modal.renderWithContent(modalHTML, function() {
        // Handle Submit
        document.getElementById("feedback_submit").addEventListener("click", function () {
			alert("clicked");
            var topic = document.getElementById("feedback_topic").value;
            var description = document.getElementById("feedback_description").value;

            var ga = new GlideAjax("IncidentUtils2");
            ga.addParam("sysparm_name", "getKnowledgeGapMapping");
            ga.addParam("sysparm_incident", g_form.getUniqueValue());
            ga.addParam("sysparm_topic", topic);
            ga.addParam("sysparm_description", description);

            ga.getXMLAnswer(function(response) {
                // Show the response (the answer returned from server)
                alert("Server says: " + response);
                modal.destroy(); // close modal
            });
        });

        // Handle Cancel
        document.getElementById("feedback_cancel").addEventListener("click", function () {
            modal.destroy();
        });
    });
}
1 ACCEPTED SOLUTION

rohanaditya
Kilo Sage

Hi @Badrinarayan , @Rajeevreddy 

Try unchecking List V2 compatible and List V3 Compatible

 

rohanaditya_0-1765523687549.png

 

and Check client check box and onClick to reportKnowledgeClient()

 

rohanaditya_1-1765523867516.png

 

and update the client script to,

function reportKnowledgeClient() {

    var sysID = g_form.getUniqueValue();
    var parentShortDesc = g_form.getValue('short_description');

    var dialog = new GlideModalForm("Report a Knowledge Gap", "kb_feedback_task");

    dialog.setPreference('sys_id', '-1');
    dialog.setPreference('sysparm_view', 'create');

    // Include parent AND short_description in query
    dialog.setPreference(
        'sysparm_query',
        'parent=' + sysID + '^short_description=' + parentShortDesc
    );

    dialog.setPreference("sysparm_titleless", "true");
    dialog.setPreference("sysparm_view_forced", "true");
    dialog.setPreference("sysparm_clear_stack", "true");

    dialog.setOnloadCallback(function (dlg) {
        var frameWin = dlg.getFrameWindow();
        if (!frameWin || !frameWin.g_form) return;

        var kb_form = frameWin.g_form;

        kb_form.setLabelOf('short_description', 'Topic');

        kb_form.setValue('short_description', parentShortDesc);

        kb_form.setMandatory('short_description', true);
        kb_form.setMandatory('description', true);

        kb_form.setReadOnly('assignment_group', true);
    });

    dialog.setCompletionCallback(function (action, newSysId, table, displayValue) {

        var link = '<a href="/kb_feedback_task.do?sys_id=' + newSysId + '">' + displayValue + '</a>';
        g_form.addInfoMessage("Successfully created Knowledge Feedback Task: " + link);

        if (g_form.getControl("knowledge")) {
            g_form.setValue("knowledge", true);
            g_form.setReadOnly("knowledge", true);
        }

        var listID = g_form.getTableName() + '.kb_feedback_task.parent';
        if (typeof GlideList2 !== "undefined" && GlideList2.get(listID)) {
            GlideList2.get(listID).refresh();
        }
    });
	
	dialog.setSize(600,600);

    dialog.render();
}

 

You will get a pop-up in native UI,

rohanaditya_2-1765523936078.png

Thanks,

Rohan

View solution in original post

2 REPLIES 2

Rajeevreddy
Tera Expert

Hi Badri ,

 

Any update on this we are also exploring the option to implement on incident any help 

rohanaditya
Kilo Sage

Hi @Badrinarayan , @Rajeevreddy 

Try unchecking List V2 compatible and List V3 Compatible

 

rohanaditya_0-1765523687549.png

 

and Check client check box and onClick to reportKnowledgeClient()

 

rohanaditya_1-1765523867516.png

 

and update the client script to,

function reportKnowledgeClient() {

    var sysID = g_form.getUniqueValue();
    var parentShortDesc = g_form.getValue('short_description');

    var dialog = new GlideModalForm("Report a Knowledge Gap", "kb_feedback_task");

    dialog.setPreference('sys_id', '-1');
    dialog.setPreference('sysparm_view', 'create');

    // Include parent AND short_description in query
    dialog.setPreference(
        'sysparm_query',
        'parent=' + sysID + '^short_description=' + parentShortDesc
    );

    dialog.setPreference("sysparm_titleless", "true");
    dialog.setPreference("sysparm_view_forced", "true");
    dialog.setPreference("sysparm_clear_stack", "true");

    dialog.setOnloadCallback(function (dlg) {
        var frameWin = dlg.getFrameWindow();
        if (!frameWin || !frameWin.g_form) return;

        var kb_form = frameWin.g_form;

        kb_form.setLabelOf('short_description', 'Topic');

        kb_form.setValue('short_description', parentShortDesc);

        kb_form.setMandatory('short_description', true);
        kb_form.setMandatory('description', true);

        kb_form.setReadOnly('assignment_group', true);
    });

    dialog.setCompletionCallback(function (action, newSysId, table, displayValue) {

        var link = '<a href="/kb_feedback_task.do?sys_id=' + newSysId + '">' + displayValue + '</a>';
        g_form.addInfoMessage("Successfully created Knowledge Feedback Task: " + link);

        if (g_form.getControl("knowledge")) {
            g_form.setValue("knowledge", true);
            g_form.setReadOnly("knowledge", true);
        }

        var listID = g_form.getTableName() + '.kb_feedback_task.parent';
        if (typeof GlideList2 !== "undefined" && GlideList2.get(listID)) {
            GlideList2.get(listID).refresh();
        }
    });
	
	dialog.setSize(600,600);

    dialog.render();
}

 

You will get a pop-up in native UI,

rohanaditya_2-1765523936078.png

Thanks,

Rohan