mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
[app_chatgpt] v18 to be validate
This commit is contained in:
25
app_chatgpt/static/src/components/message/message.js
Normal file
25
app_chatgpt/static/src/components/message/message.js
Normal file
@@ -0,0 +1,25 @@
|
||||
/** @odoo-module */
|
||||
import {Message} from "@mail/core/common/message";
|
||||
import {patch} from "@web/core/utils/patch";
|
||||
|
||||
patch(Message.prototype, {
|
||||
async copy() {
|
||||
const parser = new DOMParser();
|
||||
const htmlDoc = parser.parseFromString(this.message.body.replaceAll('<br>', '\n').replaceAll('</br>', '\n'), "text/html");
|
||||
const textInputContent = htmlDoc.body.textContent;
|
||||
const tempInput = document.createElement("textarea");
|
||||
tempInput.value = textInputContent;
|
||||
document.body.appendChild(tempInput);
|
||||
tempInput.select();
|
||||
tempInput.setSelectionRange(0, tempInput.value.length);
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(tempInput);
|
||||
},
|
||||
async onClickMarkAsGood() {
|
||||
this.messageService.react(this.message, '👍');
|
||||
},
|
||||
|
||||
async onClickMarkAsBad() {
|
||||
this.messageService.react(this.message, '👎');
|
||||
},
|
||||
});
|
||||
39
app_chatgpt/static/src/components/message/message.xml
Normal file
39
app_chatgpt/static/src/components/message/message.xml
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
<t t-name="app_chatgpt.Message" t-inherit="mail.Message" t-inherit-mode="extension">
|
||||
<xpath expr="//t[@t-if='showSubtypeDescription']" position="after">
|
||||
<!-- <p>gpt xml测试:<t t-esc="message.ai_completion_tokens"/></p>-->
|
||||
<div t-if="!state.isEditing" name="bottom_operation" class="position-relative mt-8">
|
||||
<div t-if="message.human_prompt_tokens > 0 or message.ai_completion_tokens >0"
|
||||
class="o_Message_token text-muted" style="float:left;display:inline;font-size: 13px;">
|
||||
<br/>
|
||||
------------------
|
||||
<br/>
|
||||
<span title="提问/答复 消耗Token">
|
||||
<t t-esc="message.human_prompt_tokens"/>
|
||||
/
|
||||
<t t-esc="message.ai_completion_tokens"/>
|
||||
</span>
|
||||
</div>
|
||||
<!-- 直接将btn处理方法置于此-->
|
||||
<div name="action_btn" style="padding:40px 5px 0px 5px;float:right;">
|
||||
<div class="position-relative" style="padding:0px 5px;height:20px;display:inline-block;">
|
||||
<button t-on-click="copy" class="btn d-flex p-0 rounded-1">
|
||||
<i class="o_MessageView_btn fa fa-copy o_MessageActionView_actionCopy"/>
|
||||
</button>
|
||||
</div>
|
||||
<div class="position-relative" style="padding:0px 5px;height:20px;display:inline-block;">
|
||||
<button t-on-click="onClickMarkAsGood" class="btn d-flex p-0 rounded-1">
|
||||
<i class="o_MessageView_btn fa fa-thumbs-up"/>
|
||||
</button>
|
||||
</div>
|
||||
<div class="position-relative" style="padding:0px 0px 0px 5px;height:20px;display:inline-block;">
|
||||
<button t-on-click="onClickMarkAsBad" class="btn d-flex p-0 rounded-1">
|
||||
<i class="o_MessageView_btn fa fa-thumbs-down"/>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</t>
|
||||
</templates>
|
||||
39
app_chatgpt/static/src/models/message_model.js
Normal file
39
app_chatgpt/static/src/models/message_model.js
Normal file
@@ -0,0 +1,39 @@
|
||||
/** @odoo-module **/
|
||||
import { Message } from "@mail/core/common/message_model";
|
||||
import { assignDefined } from "@mail/utils/common/misc";
|
||||
import { patch } from "@web/core/utils/patch";
|
||||
|
||||
// 参考模块 whatsapp
|
||||
|
||||
patch(Message.prototype, {
|
||||
update(data) {
|
||||
assignDefined(this, data, ["human_prompt_tokens", "ai_completion_tokens", "is_ai"]);
|
||||
super.update(data);
|
||||
},
|
||||
});
|
||||
|
||||
//
|
||||
// registerPatch({
|
||||
// name: 'Message',
|
||||
// modelMethods: {
|
||||
// convertData(data) {
|
||||
// const data2 = this._super(data);
|
||||
// if ('human_prompt_tokens' in data) {
|
||||
// data2.human_prompt_tokens = data.human_prompt_tokens;
|
||||
// }
|
||||
// if ('ai_completion_tokens' in data) {
|
||||
// data2.ai_completion_tokens = data.ai_completion_tokens;
|
||||
// }
|
||||
// if ('is_ai' in data) {
|
||||
// data2.is_ai = data.is_ai;
|
||||
// }
|
||||
// return data2;
|
||||
// },
|
||||
// },
|
||||
// fields: {
|
||||
// human_prompt_tokens: attr(),
|
||||
// ai_completion_tokens: attr(),
|
||||
// is_ai: attr(),
|
||||
//
|
||||
// }
|
||||
// })
|
||||
Reference in New Issue
Block a user