using the exclusion list when getting tags from the AI. see #183

This commit is contained in:
Mic 2024-12-13 00:53:00 +01:00
parent ae475cc99a
commit b02dae5748
4 changed files with 57 additions and 7 deletions

View file

@ -778,5 +778,13 @@
"prompt_add_tags_maxnum": {
"message": "Limit the number of tags to",
"description": ""
},
"prefs_OptionText_add_tags_hide_exclusions": {
"message": "Hide excluded tags",
"description": ""
},
"prefs_OptionText_add_tags_hide_exclusions_Info": {
"message": "If checked, the tags that are present in the exclusion list will be hidden in the dialog.",
"description": ""
}
}

View file

@ -220,6 +220,10 @@ switch (message.command) {
margin-top: 20px;
}
.tag_excluded{
text-decoration: line-through;
}
@media (prefers-color-scheme: dark) {
:root {
--dialog-bg-color: #2e2e2e;
@ -229,7 +233,7 @@ switch (message.command) {
`;
document.head.appendChild(style);
function createDialog(inputString, onSubmit) {
async function createDialog(inputString, onSubmit) {
// Create the dialog
const tags_dialog = document.createElement('dialog');
tags_dialog.className = 'mzta_dialog';
@ -241,19 +245,47 @@ switch (message.command) {
// Parse the input string into labels
const words = inputString.split(',').map(word => word.trim());
console.log(" >>>>>>>>>>>>> words: " + JSON.stringify(words));
let prefs_tags = await browser.storage.sync.get({add_tags_hide_exclusions: false});
let prefs_excluded_tags = await browser.storage.local.get({add_tags_exclusions: []});
console.log(" >>>>>>>>>>>>> prefs_excluded_tags: " + JSON.stringify(prefs_excluded_tags));
// prefs_excluded_tags.add_tags_exclusions = ['recipient','test'];
const words_final = words.map(word => {
const isExcluded = prefs_excluded_tags.add_tags_exclusions.some(exclusion =>
word.includes(exclusion)
);
return {
tag: word,
excluded: isExcluded ? 1 : 0
};
});
console.log(" >>>>>>>>>>>>> words_final: " + JSON.stringify(words_final));
// Create the form
const form = document.createElement('form');
words.forEach(word => {
words_final.forEach(word => {
const label = document.createElement('label');
label.style.display = 'block';
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.checked = true; // Checked by default
checkbox.value = word;
checkbox.value = word.tag;
label.appendChild(checkbox);
label.appendChild(document.createTextNode(` ${word}`));
form.appendChild(label);
label.appendChild(document.createTextNode(` ${word.tag}`));
if(!word.excluded || (word.excluded && !prefs_tags.add_tags_hide_exclusions)){
form.appendChild(label);
}
if(word.excluded){
label.className = 'tag_excluded';
checkbox.checked = false;
}
});
// Add a div for buttons
@ -311,14 +343,14 @@ switch (message.command) {
tags_dialog.style.transform = 'translate(0, 0)';
return true;
}
// Example usage
createDialog(message.tags, (selected) => {
return createDialog(message.tags, (selected) => {
console.log('Selected:', selected);
});
return Promise.resolve(true);
break;
default:

View file

@ -39,4 +39,5 @@ export const prefs_default = {
max_prompt_length: 30000, // max string length for prompt
add_tags: false,
add_tags_maxnum: 3,
add_tags_hide_exclusions: false,
}

View file

@ -284,6 +284,15 @@
</label>
</td>
</tr>
<tr class="add_tags_tr">
<td><span>__MSG_prefs_OptionText_add_tags_hide_exclusions__</span></td>
<td>
<label>
<input type="checkbox" id="add_tags_hide_exclusions" name="add_tags_hide_exclusions" class="option-input" />
__MSG_prefs_OptionText_add_tags_hide_exclusions_Info__
</label>
</td>
</tr>
<tr>
<td style="width:20em"><label>
<span>__MSG_Debug__</span>