/
lib.js
82 lines (69 loc) · 2.84 KB
/
lib.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* API endpoint to invoke Bedrock
*
* @package block_aws_chat
* @copyright 2024, Angelo Calò <angelo.calo@unipd.it>, Davide Ferro <davide.ferro@unipd.it>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
src="//cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js"
$(document).ready(function(){
const path = M.cfg.wwwroot + "/blocks/aws_chat/";
const invoker = path + "moodle_assistant_invoke.php";
const dots = path + "res/typing-dots.gif";
var currentcourse_sess =$("#nm_sess").val();
var currentcourse_id = $("#courseid").val();
$('#runbedrock').submit(function(event){
var quest = ($("#question").val()).trim();
if (quest == "") {
return false;
}
$('form #run').attr('disabled', 'disabled');
event.preventDefault();
console.log("H: " + quest);
var convo_content = $("#conversation").html();
$( "#conversation" ).append( "<p class=\"human\">"+quest+"</p>" );
$( "#conversation" ).append( "<p id=\"typing\"><img src=\""+dots+"\" width=\"60\"></p>" );
// Abort any pending request
/*/if (request) {
request.abort();
}*/
var form = $(this);
var inputs = form.find("input, select, button, textarea");
//var serializedData = form.serialize();
inputs.prop("disabled", true);
request = $.ajax({
url: invoker+"?sesskey="+currentcourse_sess,
type: "post",
data: {
question: quest,
convo: convo_content,
course_id: currentcourse_id,
'courseid': currentcourse_id
}
});
request.done(function (response, textStatus, jqXHR){
// Log a message to the console
console.log(response);
$( "#typing" ).remove();
resp = response.replaceAll("\n", "<br>");
$( "#conversation" ).append( "<p class=\"assistant\">"+resp+"</p>" );
inputs.prop("disabled", false);
$("#question").val("");
$('form #run').removeAttr("disabled");
});
});
})