added unique filter type

This commit is contained in:
BroodjeAap 2022-12-26 11:51:10 +00:00
parent 0d3c32cb53
commit 25cf91966e
6 changed files with 118 additions and 1 deletions

View file

@ -807,6 +807,21 @@ func getFilterResultConditionHigherThan(filter *Filter) {
}
}
func getFilterResultUnique(filter *Filter) {
var valueMap map[string]bool
valueMap = make(map[string]bool)
for _, parent := range filter.Parents {
for _, result := range parent.Results {
valueMap[result] = true
}
}
for value, _ := range valueMap {
filter.Results = append(filter.Results, value)
}
}
func notifyFilter(filters []Filter, filter *Filter, watch *Watch, web *Web, debug bool) {
haveResults := false
for _, parent := range filter.Parents {

View file

@ -1126,6 +1126,48 @@ func TestFilterHigherThan(t *testing.T) {
}
}
func TestFilterUnique(t *testing.T) {
var tests = []struct {
Input []string
Want []string
}{
{[]string{"1"}, []string{"1"}},
{[]string{"1", "2"}, []string{"1", "2"}},
{[]string{"1", "2", "3", "4", "5", "6", "7", "8", "9", "1"}, []string{"1", "2", "3", "4", "5", "6", "7", "8", "9"}},
{[]string{"1", "1"}, []string{"1"}},
{[]string{}, []string{}},
}
for _, test := range tests {
testname := fmt.Sprintf("%s", test.Input)
t.Run(testname, func(t *testing.T) {
filter := Filter{
Parents: []*Filter{
{
Results: test.Input,
},
},
}
getFilterResultUnique(
&filter,
)
var wantMap map[string]bool
wantMap = make(map[string]bool)
for _, want := range test.Want {
wantMap[want] = true
}
var resultMap map[string]bool
resultMap = make(map[string]bool)
for _, result := range filter.Results {
resultMap[result] = true
}
if !reflect.DeepEqual(wantMap, resultMap) {
t.Errorf("Got %s, want %s", filter.Results, test.Want)
}
})
}
}
func TestFilterLua(t *testing.T) {
passAll := `
for i,input in pairs(inputs) do

View file

@ -409,6 +409,35 @@ function onTypeChange(node) {
var3Div.appendChild(var3Input);
break;
}
case "unique": {
console.log("TEST");
var var1Input = document.createElement("input");
var1Input.name = "var1";
var1Input.id = "var1Input";
var1Input.value = var1Value;
var1Input.classList.add("form-control");
var1Input.disabled = true;
var1Label.innerHTML = "-";
var1Input.placeholder = "";
var1Div.appendChild(var1Input);
var var2Input = document.createElement("input");
var2Input.name = "var2";
var2Input.id = "var2Input";
var2Input.value = var2Value;
var2Input.classList.add("form-control");
var2Input.disabled = true;
var2Label.innerHTML = "-";
var2Div.appendChild(var2Input);
var var3Input = document.createElement("input");
var3Input.name = "var3";
var3Input.id = "var3Input";
var3Input.value = var3Value;
var3Input.classList.add("form-control");
var3Input.disabled = true;
var3Label.innerHTML = "-";
var3Div.appendChild(var3Input);
break;
}
case "condition": {
var conditionSelect = document.createElement("select");
conditionSelect.name = "var1";

View file

@ -400,6 +400,37 @@ function onTypeChange(node: DiagramNode | null = null){
var3Div.appendChild(var3Input);
break;
}
case "unique": {
console.log("TEST");
let var1Input = document.createElement("input");
var1Input.name = "var1";
var1Input.id = "var1Input";
var1Input.value = var1Value;
var1Input.classList.add("form-control")
var1Input.disabled = true;
var1Label.innerHTML = "-";
var1Input.placeholder = "";
var1Div.appendChild(var1Input);
let var2Input = document.createElement("input");
var2Input.name = "var2";
var2Input.id = "var2Input";
var2Input.value = var2Value;
var2Input.classList.add("form-control")
var2Input.disabled = true;
var2Label.innerHTML = "-";
var2Div.appendChild(var2Input);
let var3Input = document.createElement("input");
var3Input.name = "var3";
var3Input.id = "var3Input";
var3Input.value = var3Value;
var3Input.classList.add("form-control");
var3Input.disabled = true;
var3Label.innerHTML = "-";
var3Div.appendChild(var3Input);
break;
}
case "condition":{
let conditionSelect = document.createElement("select");
conditionSelect.name = "var1";

View file

@ -79,6 +79,7 @@ GoWatch Edit {{ .Watch.Name }}
<option value="match">Match</option>
<option value="substring">Substring</option>
<option value="contains">Contains</option>
<option value="unique">Unique</option>
<option value="math">Math</option>
<option value="store">Store</option>
<option value="condition">Condition</option>

View file

@ -10,7 +10,6 @@
- trusted proxies in conf?
- log things to db for cron runs
- comments
- add unique filter
- provide template/example watches?
- Amazon
- NewEgg