Skip to content

Commit 373d8d4

Browse files
committed
rules: search: exclude flags/tags
1 parent 7e4855f commit 373d8d4

4 files changed

Lines changed: 79 additions & 7 deletions

File tree

rules/assets/scenes.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,23 @@ function sc_FilterStatus(i_status, i_args)
859859
else if (i_args.flags.indexOf('_null_') != -1)
860860
found = true;
861861
}
862+
if (i_args.noflags && i_args.noflags.length && found)
863+
{
864+
if (i_status.flags && i_status.flags.length)
865+
{
866+
for (const f of i_args.noflags)
867+
{
868+
// skip special flags
869+
if (f.charAt(0) == '_') continue;
870+
871+
if (i_status.flags.includes(f))
872+
{
873+
found = false;
874+
break;
875+
}
876+
}
877+
}
878+
}
862879

863880
if (i_args.tags && i_args.tags.length && found)
864881
{
@@ -887,6 +904,23 @@ function sc_FilterStatus(i_status, i_args)
887904
else if (i_args.tags.indexOf('_null_') != -1)
888905
found = true;
889906
}
907+
if (i_args.notags && i_args.notags.length && found)
908+
{
909+
if (i_status.tags && i_status.tags.length)
910+
{
911+
for (const t of i_args.notags)
912+
{
913+
// skip special tags
914+
if (t.charAt(0) == '_') continue;
915+
916+
if (i_status.tags.includes(t))
917+
{
918+
found = false;
919+
break;
920+
}
921+
}
922+
}
923+
}
890924

891925
if (i_args.artists && found)
892926
{

rules/js/common.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -824,27 +824,27 @@ function c_CompareFiles(a, b)
824824

825825
function c_ElToggleSelected(i_e, i_toggleClassList = 'selected')
826826
{
827-
var el = i_e;
827+
let el = i_e;
828828
if (i_e.currentTarget)
829829
el = i_e.currentTarget;
830-
c_ElSetSelected(el, el.m_selected != true, i_toggleClassList);
830+
c_ElSetSelected(el, el['m_'+i_toggleClassList] != true, i_toggleClassList);
831831
return el.m_selected;
832832
}
833833

834834
function c_ElSetSelected(i_e, i_selected, i_toggleClassList = 'selected')
835835
{
836-
var el = i_e;
836+
let el = i_e;
837837
if (i_e.currentTarget)
838838
el = i_e.currentTarget;
839839
if (i_selected)
840840
{
841-
el.m_selected = true;
841+
el['m_'+i_toggleClassList] = true;
842842
if (i_toggleClassList)
843843
el.classList.add(i_toggleClassList);
844844
}
845845
else
846846
{
847-
el.m_selected = false;
847+
el['m_'+i_toggleClassList] = false;
848848
if (i_toggleClassList)
849849
el.classList.remove(i_toggleClassList);
850850
}

rules/js/search.js

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,13 @@ function s_CreateFlagsAndTags(i_tab)
191191
if (ASSET && ASSET.filter)
192192
s_ProcessGUI();
193193
};
194+
el.oncontextmenu = function(e) {
195+
e.stopPropagation();
196+
c_ElToggleSelected(e.currentTarget, 'exclude');
197+
if (ASSET && ASSET.filter)
198+
s_ProcessGUI();
199+
return false;
200+
};
194201
$('search_flags_' + i_tab).m_elFlags.push(el);
195202
}
196203
{// Search no flags:
@@ -226,6 +233,13 @@ function s_CreateFlagsAndTags(i_tab)
226233
if (ASSET && ASSET.filter)
227234
s_ProcessGUI();
228235
};
236+
el.oncontextmenu = function(e) {
237+
e.stopPropagation();
238+
c_ElToggleSelected(e.currentTarget, 'exclude');
239+
if (ASSET && ASSET.filter)
240+
s_ProcessGUI();
241+
return false;
242+
};
229243
$('search_tags_' + i_tab).m_elTags.push(el);
230244
}
231245
{// Search no tags
@@ -455,7 +469,13 @@ function s_ProcessGUI()
455469
}
456470
else
457471
for (let i = 0; i < $('search_flags_'+tab).m_elFlags.length; i++)
458-
if ($('search_flags_'+tab).m_elFlags[i].m_selected)
472+
if ($('search_flags_'+tab).m_elFlags[i].m_exclude)
473+
{
474+
if (args[tab].noflags == null)
475+
args[tab].noflags = [];
476+
args[tab].noflags.push($('search_flags_'+tab).m_elFlags[i].m_flag);
477+
}
478+
else if ($('search_flags_'+tab).m_elFlags[i].m_selected)
459479
{
460480
if (args[tab].flags == null)
461481
args[tab].flags = [];
@@ -475,7 +495,13 @@ function s_ProcessGUI()
475495
}
476496
else
477497
for (let i = 0; i < $('search_tags_'+tab).m_elTags.length; i++)
478-
if ($('search_tags_'+tab).m_elTags[i].m_selected)
498+
if ($('search_tags_'+tab).m_elTags[i].m_exclude)
499+
{
500+
if (args[tab].notags == null)
501+
args[tab].notags = [];
502+
args[tab].notags.push($('search_tags_'+tab).m_elTags[i].m_tag);
503+
}
504+
else if ($('search_tags_'+tab).m_elTags[i].m_selected)
479505
{
480506
if (args[tab].tags == null)
481507
args[tab].tags = [];
@@ -562,10 +588,20 @@ function s_Search(i_args)
562588
c_ElSetSelected(
563589
$('search_flags_'+tab).m_elFlags[i],
564590
args.flags.indexOf($('search_flags_'+tab).m_elFlags[i].m_flag) != -1);
591+
if (args.noflags)
592+
for (let i = 0; i < $('search_flags_'+tab).m_elFlags.length; i++)
593+
c_ElSetSelected(
594+
$('search_flags_'+tab).m_elFlags[i],
595+
args.noflags.indexOf($('search_flags_'+tab).m_elFlags[i].m_flag) != -1, 'exclude');
565596
if (args.tags)
566597
for (let i = 0; i < $('search_tags_'+tab).m_elTags.length; i++)
567598
c_ElSetSelected(
568599
$('search_tags_'+tab).m_elTags[i], args.tags.indexOf($('search_tags_'+tab).m_elTags[i].m_tag) != -1)
600+
if (args.notags)
601+
for (let i = 0; i < $('search_tags_'+tab).m_elTags.length; i++)
602+
c_ElSetSelected(
603+
$('search_tags_'+tab).m_elTags[i],
604+
args.notags.indexOf($('search_tags_'+tab).m_elTags[i].m_tag) != -1, 'exclude')
569605

570606
let parm = ['priority','percent'];
571607
for (let i = 0; i < parm.length; i++)

rules/styles.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,8 @@ table.statistics .duration { text-align: center; border-left-width: 0; }
10071007
#search div { margin: 1px 4px; }
10081008
#search .notfound { opacity: .5; }
10091009

1010+
#search .exclude { background-color: rgba(255,0,0,0.5); }
1011+
10101012
#search .search_tab_btn {
10111013
cursor: pointer;
10121014
float: left;

0 commit comments

Comments
 (0)