5
5
module Superset
6
6
module Dashboard
7
7
class List < Superset ::Request
8
- attr_reader :title_contains , :tags_equal , :ids_not_in
8
+ attr_reader :title_contains , :title_equals , : tags_equal, :ids_not_in
9
9
10
- def initialize ( page_num : 0 , title_contains : '' , tags_equal : [ ] , ids_not_in : [ ] )
10
+ def initialize ( page_num : 0 , title_contains : '' , title_equals : '' , tags_equal : [ ] , ids_not_in : [ ] )
11
11
@title_contains = title_contains
12
+ @title_equals = title_equals
12
13
@tags_equal = tags_equal
13
14
@ids_not_in = ids_not_in
14
15
super ( page_num : page_num )
@@ -69,6 +70,7 @@ def filters
69
70
# TODO filtering across all list classes can be refactored to support multiple options in a more flexible way
70
71
filter_set = [ ]
71
72
filter_set << "(col:dashboard_title,opr:ct,value:'#{ title_contains } ')" if title_contains . present?
73
+ filter_set << "(col:dashboard_title,opr:eq,value:'#{ title_equals } ')" if title_equals . present?
72
74
filter_set << tag_filters if tags_equal . present?
73
75
filter_set << ids_not_in_filters if ids_not_in . present?
74
76
unless filter_set . empty?
@@ -90,6 +92,7 @@ def list_attributes
90
92
91
93
def validate_constructor_args
92
94
raise InvalidParameterError , "title_contains must be a String type" unless title_contains . is_a? ( String )
95
+ raise InvalidParameterError , "title_equals must be a String type" unless title_equals . is_a? ( String )
93
96
raise InvalidParameterError , "tags_equal must be an Array type" unless tags_equal . is_a? ( Array )
94
97
raise InvalidParameterError , "tags_equal array must contain string only values" unless tags_equal . all? { |item | item . is_a? ( String ) }
95
98
raise InvalidParameterError , "ids_not_in must be an Array type" unless ids_not_in . is_a? ( Array )
0 commit comments