waitForElementToDisplay( | |
"#lora-search-table", | |
function(){ | |
const loraModel = { | |
data() { | |
return { | |
loraList: [], | |
loraString: '', | |
} | |
}, | |
methods: { | |
setUrlData(url, fname){ | |
const textArea = gradioApp().querySelector("#lora-download-url") | |
textArea.value = url; | |
const fnameInput = gradioApp().querySelector("#lora-filename") | |
fnameInput.value = fname; | |
const downloadBtn = gradioApp().querySelector('#lora_download_btn'); | |
downloadBtn.click(); | |
} | |
}, | |
mounted(){ | |
var self = this; | |
const textArea = gradioApp().querySelector("#table-data").querySelector('textarea'); | |
const searchLoraBtn = gradioApp().querySelector("#lora_search_button"); | |
const tableArea = gradioApp().querySelector("#table-data"); | |
searchLoraBtn.addEventListener('click', (e)=>{ | |
const interval = 500; // 1 second | |
const duration = 15000; // 15 seconds | |
let count = 0; | |
const timer = setInterval(() => { | |
// Perform your desired actions here | |
count += interval; | |
const textArea = gradioApp().querySelector("#table-data").querySelector('textarea'); | |
const textAreaValue = textArea.value; | |
let newJson; | |
try{ | |
newJson = JSON.parse(textAreaValue.replace('(','[').replace(',)', ')').replace(')',']').replaceAll("'", '"')); | |
}catch(e){ | |
console.log(e); | |
newJson = []; | |
} | |
if (textAreaValue !== self.loraString||count >= duration) { | |
self.loraString = textAreaValue; | |
self.loraList = newJson; | |
clearInterval(timer); | |
} | |
}, interval); | |
}); | |
}, | |
}; | |
const loraApp = Vue.createApp(loraModel); | |
loraApp.mount(gradioApp().querySelector("#lora-search-table")); | |
},1000,9000); |