Miguel Diaz commited on
Commit
eb99830
·
1 Parent(s): 68a4746

fix: statics

Browse files
Files changed (2) hide show
  1. static/js/chatHandler.js +35 -50
  2. static/js/windowHandler.js +39 -20
static/js/chatHandler.js CHANGED
@@ -95,23 +95,8 @@ class ChatGPT{
95
  token: this.token,
96
  config: this.config
97
  }),
98
- }).then((response) => {
99
- if(response.status!=200){
100
-
101
- switch(response.status){
102
- case 404:
103
- break;
104
- case 408:
105
- break;
106
- default:
107
- break;
108
- }
109
-
110
- return false;
111
- }
112
- return response.body;
113
-
114
- }).then((rb) => {
115
  if(!rb){
116
  return false;
117
  }
@@ -120,50 +105,50 @@ class ChatGPT{
120
  return new ReadableStream({
121
  start(controller) {
122
  function push() {
123
- reader.read().then(({done, value}) => {
124
- if (done) {
125
- console.log("done", done);
126
- controller.close();
127
- $(document).trigger("precarga:fin");
128
- return;
129
- }
130
-
131
- let elements = new TextDecoder("utf-8").decode(value).split("}{");
132
-
133
- for(let i = 0; i < elements.length; i++){
134
- let data = elements[i];
135
- if(data){
136
- if(elements.length>1){
137
- if(i==0){
138
- data+="}";
139
- }else if(i == elements.length-1){
140
- data = "{"+data;
141
- }else{
142
- data = "{"+data+"}";
143
- }
144
  }
145
 
146
- data =JSON.parse(data);
147
 
148
- if(data.object == "chat.token"){
149
- chatH.token = data.token;
150
- }else if(data.choices[0].delta.hasOwnProperty("content")){
151
- let temp = data.choices[0].delta.content;
152
- $(document).trigger("precarga:mensaje",temp);
 
 
 
 
153
  }
 
154
  }
155
- }
156
-
157
- controller.enqueue(value);
158
- push();
159
- });
160
  }
161
 
162
  push();
163
  },
164
  });
165
  }).then(data => {
166
- console.log('Solicitud finalizada')
167
  }).catch(err =>{
168
  console.log('Solicitud fallida', err)
169
  });
 
95
  token: this.token,
96
  config: this.config
97
  }),
98
+ }).then(response => ({rb: response.body, rstat: response.status}))
99
+ .then(({rb, rstat}) => {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  if(!rb){
101
  return false;
102
  }
 
105
  return new ReadableStream({
106
  start(controller) {
107
  function push() {
108
+ reader.read().then(({done, value}) => {
109
+
110
+ if(done){
111
+ controller.close();
112
+ if(rstat==200){
113
+ $(document).trigger("precarga:fin");
114
+ console.log("terminado")
115
+ }else{
116
+
117
+ console.log("terminado con errores")
118
+ }
119
+ return
120
+ }
121
+
122
+ let elements = new TextDecoder("utf-8").decode(value).split("}{");
123
+ let elLen = elements.length;
124
+ for(let i in elements){
125
+ let data = elements[i];
126
+ if(!data){
127
+ continue;
 
128
  }
129
 
130
+ data =JSON.parse((i>0?"{":"") + data + (i<elLen-1?"}":""));
131
 
132
+ if(rstat==200){
133
+ if(data.object == "chat.token"){
134
+ chatH.token = data.token;
135
+ }else if(data.choices[0].delta.hasOwnProperty("content")){
136
+ let temp = data.choices[0].delta.content;
137
+ $(document).trigger("precarga:mensaje", temp);
138
+ }
139
+ }else{
140
+ $(document).trigger("precarga:error", {status: rstat, mensaje: data.detail});
141
  }
142
+
143
  }
144
+ push();
145
+ })
 
 
 
146
  }
147
 
148
  push();
149
  },
150
  });
151
  }).then(data => {
 
152
  }).catch(err =>{
153
  console.log('Solicitud fallida', err)
154
  });
static/js/windowHandler.js CHANGED
@@ -30,9 +30,9 @@ class WindowHandler{
30
  this.respuestaFin()
31
  });
32
  $(document).on("precarga:error", (event, params) => {
33
- this.respuestaError()
34
  });
35
-
36
  }
37
 
38
  limpiarChat(){
@@ -57,6 +57,26 @@ class WindowHandler{
57
  $(".chat").css("--textarea", height+"px");
58
  }
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  cargarChat(mensajes){
61
  mensajes.forEach((mensaje) => {
62
  if(mensaje.role!="system"){
@@ -92,33 +112,32 @@ class WindowHandler{
92
  }
93
 
94
  respuestaFin(){
95
- let mensaje = this.mensaje;
96
- let segmentos = mensaje.split("```");
97
- let msgProcesado = "";
98
- if(segmentos.length%2==0){
99
-
100
- }
101
- for(let i=0; i<segmentos.length;i++){
102
- let textoActual = segmentos[i];
103
- if(i%2==0){
104
- msgProcesado += textoActual.replace(/\n/g, "<br>").replace(/`(.*?)`/gm, "<b>$1</b>");
105
- }else{
106
- let temp = textoActual.split("\n",1);
107
- msgProcesado += "<pre><code class='language-";
108
- msgProcesado += temp[0].length>1?temp[0]:"none";
109
- temp = $("<div></div>").text(textoActual.substr(temp[0].length)).html()
110
- msgProcesado += "'>"+temp+"</code></pre>";
111
- }
112
- }
113
  $("button").prop("disabled", false);
114
  $("textarea").prop("disabled", false);
115
  $("textarea").focus();
116
  this.active.find("div p").html(msgProcesado)
117
  Prism.highlightAllUnder(this.active[0])
118
  this.active = false;
 
119
  }
120
 
121
  respuestaError(error){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
 
123
  }
124
 
 
30
  this.respuestaFin()
31
  });
32
  $(document).on("precarga:error", (event, params) => {
33
+ this.respuestaError(params)
34
  });
35
+
36
  }
37
 
38
  limpiarChat(){
 
57
  $(".chat").css("--textarea", height+"px");
58
  }
59
 
60
+ procesarTexto(texto){
61
+ let segmentos = texto.split("```");
62
+ let resultado = "";
63
+
64
+ for(let i=0; i<segmentos.length;i++){
65
+ let textoActual = segmentos[i];
66
+ if(i%2==0){
67
+ resultado += textoActual.replace(/\n/g, "<br>").replace(/`(.*?)`/gm, "<b>$1</b>");
68
+ }else{
69
+ let temp = textoActual.split("\n",1);
70
+ resultado += "<pre><code class='language-";
71
+ resultado += temp[0].length>1?temp[0]:"none";
72
+ temp = $("<div></div>").text(textoActual.substr(temp[0].length)).html()
73
+ resultado += "'>"+temp+"</code></pre>";
74
+ }
75
+ }
76
+
77
+ return resultado
78
+ }
79
+
80
  cargarChat(mensajes){
81
  mensajes.forEach((mensaje) => {
82
  if(mensaje.role!="system"){
 
112
  }
113
 
114
  respuestaFin(){
115
+ let msgProcesado = this.procesarTexto(this.mensaje);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  $("button").prop("disabled", false);
117
  $("textarea").prop("disabled", false);
118
  $("textarea").focus();
119
  this.active.find("div p").html(msgProcesado)
120
  Prism.highlightAllUnder(this.active[0])
121
  this.active = false;
122
+ this.chatbox.scrollTop(this.chatbox[0].scrollHeight);
123
  }
124
 
125
  respuestaError(error){
126
+ $("button").prop("disabled", false);
127
+ $("textarea").prop("disabled", false);
128
+ $("textarea").focus();
129
+ switch(error.status){
130
+ case 404:
131
+ this.active.addClass("error")
132
+ case 408:
133
+ this.active.addClass("warning")
134
+ default:
135
+ this.active.addClass("warning")
136
+ }
137
+ this.active = false;
138
+ this.chatbox.scrollTop(this.chatbox[0].scrollHeight)
139
+
140
+
141
 
142
  }
143