prompt copy button added. see #598
This commit is contained in:
parent
6c49008441
commit
ae010478ba
2 changed files with 102 additions and 0 deletions
|
|
@ -1852,5 +1852,13 @@
|
|||
"prefs_OptionText_calendar_no_selection_Info": {
|
||||
"message": "If checked there is no need to select some text. The full message body will be used to get the calendar event.",
|
||||
"description": ""
|
||||
},
|
||||
"customPrompts_btnCopy": {
|
||||
"message": "Copy",
|
||||
"description": ""
|
||||
},
|
||||
"copy_text": {
|
||||
"message": "copy",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -324,6 +324,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||
let editBtn = document.querySelector(`tr[data-idnum="${curr_idnum}"] button.btnEditItem`);
|
||||
//console.log(`>>>>>>>>>>>> tr[data-idnum="${curr_idnum}"] button.btnEditItem`);
|
||||
editBtn.addEventListener('click', handleEditClick);
|
||||
let copyBtn = document.querySelector(`tr[data-idnum="${curr_idnum}"] button.btnCopyItem`);
|
||||
copyBtn.addEventListener('click', handleCopyClick);
|
||||
//console.log('>>>>>>>>>>>>> editBtn: ' + JSON.stringify(editBtn));
|
||||
let deleteBtn = document.querySelector(`tr[data-idnum="${curr_idnum}"] button.btnDeleteItem`);
|
||||
//console.log(`>>>>>>>>>>>> tr[data-idnum="${curr_idnum}"] button.btnDeleteItem`);
|
||||
|
|
@ -576,6 +578,7 @@ function handleEditClick(e) {
|
|||
tr.querySelector('.btnConfirmItem').style.display = 'inline'; // Save btn
|
||||
tr.querySelector('.btnCancelItem').style.display = 'inline'; // Cancel btn
|
||||
// tr.querySelector('.btnEditItem').style.display = 'none'; // Edit btn
|
||||
tr.querySelector('.btnCopyItem').style.display = 'none'; // Copy btn
|
||||
tr.querySelector('.btnDeleteItem').style.display = 'none'; // Delete btn
|
||||
showItemRowEditor(tr);
|
||||
toggleDiffviewer(e);
|
||||
|
|
@ -838,6 +841,7 @@ function handleCancelClick(e) {
|
|||
tr.querySelector('.btnConfirmItem').style.display = 'none'; // Save btn
|
||||
// tr.querySelector('.btnCancelItem').style.display = 'none'; // Cancel btn
|
||||
tr.querySelector('.btnEditItem').style.display = 'inline'; // Edit btn
|
||||
tr.querySelector('.btnCopyItem').style.display = 'inline'; // Copy btn
|
||||
tr.querySelector('.btnDeleteItem').style.display = 'inline'; // Delete btn
|
||||
tr.querySelector('.id_output').value = tr.querySelector('.id_show').innerText.toLocaleUpperCase();
|
||||
tr.querySelector('.name_output').value = tr.querySelector('.name_show').innerText;
|
||||
|
|
@ -891,6 +895,7 @@ function handleConfirmClick(e) {
|
|||
// tr.querySelector('.btnConfirmItem').style.display = 'none'; // Ok btn
|
||||
tr.querySelector('.btnCancelItem').style.display = 'none'; // Cancel btn
|
||||
tr.querySelector('.btnEditItem').style.display = 'inline'; // Edit btn
|
||||
tr.querySelector('.btnCopyItem').style.display = 'inline'; // Copy btn
|
||||
tr.querySelector('.btnDeleteItem').style.display = 'inline'; // Delete btn
|
||||
// Update item data
|
||||
tr.querySelector('.type').innerText = tr.querySelector('.type_output').value;
|
||||
|
|
@ -942,6 +947,88 @@ function handleInputChange(e) {
|
|||
setSomethingChanged();
|
||||
}
|
||||
|
||||
function handleCopyClick(e) {
|
||||
e.preventDefault();
|
||||
const tr = e.target.parentNode.parentNode;
|
||||
|
||||
let id = tr.querySelector('.id_output').value;
|
||||
let name = tr.querySelector('.name_output').value;
|
||||
let text = tr.querySelector('.text_output').value;
|
||||
let type = tr.querySelector('.type_output').value;
|
||||
let action = tr.querySelector('.action_output').value;
|
||||
|
||||
let need_selected = tr.querySelector('.need_selected').checked;
|
||||
let need_signature = tr.querySelector('.need_signature').checked;
|
||||
let need_custom_text = tr.querySelector('.need_custom_text').checked;
|
||||
let define_response_lang = tr.querySelector('.define_response_lang').checked;
|
||||
let use_diff_viewer = tr.querySelector('.use_diff_viewer').checked;
|
||||
|
||||
let chatgpt_web_model = tr.querySelector('.chatgpt_web_model_output').value;
|
||||
let chatgpt_web_project = tr.querySelector('.chatgpt_web_project_output').value;
|
||||
let chatgpt_web_custom_gpt = tr.querySelector('.chatgpt_web_custom_gpt_output').value;
|
||||
|
||||
const item = promptsList.get('id', id.toLowerCase())[0];
|
||||
const itemValues = item.values();
|
||||
|
||||
// Populate new form
|
||||
document.getElementById('txtIdNew').value = id + '_' + browser.i18n.getMessage("copy_text");
|
||||
document.getElementById('txtNameNew').value = name + ' (' + browser.i18n.getMessage("copy_text") + ')';
|
||||
document.getElementById('txtTextNew').value = text;
|
||||
document.getElementById('selectTypeNew').value = type;
|
||||
document.getElementById('selectActionNew').value = action;
|
||||
|
||||
document.getElementById('checkboxNeedSelectedNew').checked = need_selected;
|
||||
document.getElementById('checkboxNeedSignatureNew').checked = need_signature;
|
||||
document.getElementById('checkboxNeedCustomTextNew').checked = need_custom_text;
|
||||
document.getElementById('checkboxDefineResponseLangNew').checked = define_response_lang;
|
||||
|
||||
let checkboxUseDiffViewerNew = document.getElementById('checkboxUseDiffViewerNew');
|
||||
checkboxUseDiffViewerNew.checked = use_diff_viewer;
|
||||
checkboxUseDiffViewerNew.disabled = (action !== "2");
|
||||
|
||||
document.getElementById('chatGPTWebModelNew').value = chatgpt_web_model;
|
||||
document.getElementById('chatGPTWebProjectNew').value = chatgpt_web_project;
|
||||
document.getElementById('chatGPTWebCustomGPTNew').value = chatgpt_web_custom_gpt;
|
||||
|
||||
const apiSelect = document.getElementById('new_prompt_api_type');
|
||||
if (apiSelect) {
|
||||
apiSelect.value = itemValues.api_type || '';
|
||||
apiSelect.dispatchEvent(new Event('change'));
|
||||
|
||||
for (const [integration, options] of Object.entries(integration_options_config)) {
|
||||
for (const key of Object.keys(options)) {
|
||||
const propName = `${integration}_${key}`;
|
||||
const inputEl = document.getElementById(propName);
|
||||
if (inputEl) {
|
||||
let val = itemValues[propName];
|
||||
if (val === undefined) val = '';
|
||||
|
||||
if (inputEl.type === 'checkbox') {
|
||||
inputEl.checked = (val === true || val === 'true');
|
||||
} else {
|
||||
if (inputEl.tomselect) {
|
||||
inputEl.tomselect.setValue(val, true);
|
||||
setTomSelectBorder(inputEl.tomselect);
|
||||
} else {
|
||||
inputEl.value = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Show form
|
||||
document.getElementById('formNew').style.display = 'block';
|
||||
|
||||
// Scroll to top
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
checkFields();
|
||||
}
|
||||
|
||||
//========= handling an item in a row - END
|
||||
|
||||
|
||||
|
|
@ -1071,6 +1158,8 @@ function loadPromptsList(values){
|
|||
<br><br>
|
||||
<button class="btnConfirmItem hiddendata"` + ((values.is_default == 1) ? ' disabled':'') + `>__MSG_customPrompts_btnOK__</button>
|
||||
<button class="btnDeleteItem"` + ((values.is_default == 1) ? ' disabled':'') + `>__MSG_customPrompts_btnDelete__</button>
|
||||
<br><br>
|
||||
<button class="btnCopyItem">__MSG_customPrompts_btnCopy__</button>
|
||||
</td>
|
||||
</tr>`;
|
||||
//console.log('>>>>>>>> values.name: ' + JSON.stringify(values.name));
|
||||
|
|
@ -1111,6 +1200,11 @@ function loadPromptsList(values){
|
|||
element.addEventListener('click', handleEditClick);
|
||||
});
|
||||
|
||||
let btnCopyItem_elements = document.querySelectorAll(".btnCopyItem");
|
||||
btnCopyItem_elements.forEach(element => {
|
||||
element.addEventListener('click', handleCopyClick);
|
||||
});
|
||||
|
||||
let btnDeleteItem_elements = document.querySelectorAll(".btnDeleteItem");
|
||||
btnDeleteItem_elements.forEach(element => {
|
||||
element.addEventListener('click', handleDeleteClick);
|
||||
|
|
|
|||
Loading…
Reference in a new issue