1import {Modal} from '../ui/modal.js' 2import {firemsg} from '../ui/firemsg.js' 3import {globalProgress, L} from '../ui/utils.js' 4 5const error = {error: 'ÐеизвеÑÑÐ½Ð°Ñ Ð¾Ñибка'} 6 7/** 8 * Opens LLM Chat modal. 9 * data-attributes: 10 * data-modal-open="llm-chat-generate-resource" 11 * data-projectid - target project id or empty 12 * data-list-url - url to fetch list in json format 13 * data-post-prompt - prompt to add after the list 14 */ 15const llmChatGenerateResourceForm = document.getElementById('llm-chat-generate-resource') 16if (llmChatGenerateResourceForm instanceof HTMLFormElement) { 17 /** @type {HTMLFormElement|null} fromLoader */ 18 const formLoader = llmChatGenerateResourceForm.querySelector('.as-loader') 19 document.body.addEventListener('ui.modal-open', e => { 20 if (e.detail.name !== 'llm-chat-generate-resource') return 21 Modal.open(async () => { 22 formLoader.style.display = 'block' 23 // noinspection JSUnresolvedVariable 24 if(e.target.dataset && e.target.dataset.projectid) { 25 llmChatGenerateResourceForm.elements.projectid.value = e.target.dataset.projectid 26 } 27 llmChatGenerateResourceForm.elements.prompt.focus() 28 llmChatGenerateResourceForm.elements.submit.disabled = true 29 globalProgress(true) 30 const response = await fetch(e.target.dataset.listUrl) 31 const list = await response.json().catch(() => error) 32 llmChatGenerateResourceForm.elements.submit.disabled = false 33 llmChatGenerateResourceForm.addEventListener('submit', () => { 34 llmChatGenerateResourceForm.elements.submit.disabled = true 35 formLoader.style.display = 'block' 36 }) 37 globalProgress(false) 38 formLoader.style.display = 'none' 39 const fromProjectTitle = e.target.dataset.projectTitle ? ' Ð´Ð»Ñ Ð¿ÑоекÑа "'+e.target.dataset.projectTitle+'" ' : ''; 40 llmChatGenerateResourceForm.elements.prompt.value = "Ð¢Ñ - XGM Assistant и помогаеÑÑ XGM Team ÑоÑÑавлÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñе Ñводки. Рнам на ÑÐ°Ð¹Ñ Ð¿Ð¾ÑÑÑпили маÑеÑиалÑ"+fromProjectTitle+":\r\n```\r\n" 41 + JSON.stringify(list, null, ' ') 42 + "\r\n```\r\n" 43 + e.target.dataset.postPrompt 44 + "\r\nÐÑвеÑай ÑÑазÑ. Ðаголовок на пеÑвой ÑÑÑоке. Ðожно иÑполÑзоваÑÑ markdown. ÐбÑзаÑелÑно вÑÑавлÑй url и изобÑажениÑ, где они еÑÑÑ"; 45 return llmChatGenerateResourceForm 46 }, async () => { 47 formLoader.style.display = 'block' 48 llmChatGenerateResourceForm.elements.prompt.value = '' 49 }) 50 }) 51}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.