pact_broker 2.18.0 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/CHANGELOG.md +21 -0
- data/README.md +5 -2
- data/example/example_data.sql +2 -0
- data/lib/pact_broker/api.rb +5 -0
- data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +8 -0
- data/lib/pact_broker/api/decorators/provider_pacts_decorator.rb +12 -7
- data/lib/pact_broker/api/pact_broker_urls.rb +4 -0
- data/lib/pact_broker/api/resources/badge.rb +3 -1
- data/lib/pact_broker/api/resources/error_handler.rb +5 -1
- data/lib/pact_broker/api/resources/error_test.rb +2 -2
- data/lib/pact_broker/api/resources/index.rb +13 -1
- data/lib/pact_broker/api/resources/latest_provider_pacts.rb +7 -19
- data/lib/pact_broker/api/resources/pact_content_diff.rb +14 -2
- data/lib/pact_broker/api/resources/pact_version.rb +13 -0
- data/lib/pact_broker/api/resources/provider_pacts.rb +45 -0
- data/lib/pact_broker/api/resources/version.rb +1 -1
- data/lib/pact_broker/domain/verification.rb +1 -2
- data/lib/pact_broker/error.rb +1 -0
- data/lib/pact_broker/matrix/repository.rb +39 -28
- data/lib/pact_broker/matrix/service.rb +2 -6
- data/lib/pact_broker/pacts/diff.rb +24 -13
- data/lib/pact_broker/pacts/pact_params.rb +10 -0
- data/lib/pact_broker/pacts/repository.rb +18 -0
- data/lib/pact_broker/pacts/service.rb +4 -0
- data/lib/pact_broker/pacts/sort_verifiable_content.rb +41 -0
- data/lib/pact_broker/ui/controllers/error_test.rb +1 -1
- data/lib/pact_broker/ui/controllers/matrix.rb +5 -6
- data/lib/pact_broker/ui/views/matrix/show.haml +15 -17
- data/lib/pact_broker/verifications/repository.rb +3 -3
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/versions/repository.rb +11 -1
- data/lib/pact_broker/versions/service.rb +2 -2
- data/public/javascripts/matrix.js +40 -33
- data/spec/features/get_pact_version.rb +13 -0
- data/spec/features/get_provider_pacts_spec.rb +33 -12
- data/spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb +12 -1
- data/spec/lib/pact_broker/api/decorators/provider_pacts_decorator_spec.rb +57 -0
- data/spec/lib/pact_broker/api/pact_broker_urls_spec.rb +16 -0
- data/spec/lib/pact_broker/api/resources/badge_spec.rb +3 -3
- data/spec/lib/pact_broker/api/resources/error_handler_spec.rb +19 -1
- data/spec/lib/pact_broker/api/resources/latest_provider_pacts_spec.rb +52 -0
- data/spec/lib/pact_broker/api/resources/provider_pacts_spec.rb +75 -0
- data/spec/lib/pact_broker/matrix/repository_spec.rb +52 -0
- data/spec/lib/pact_broker/matrix/service_spec.rb +1 -17
- data/spec/lib/pact_broker/pacts/diff_spec.rb +34 -7
- data/spec/lib/pact_broker/pacts/pact_params_spec.rb +33 -8
- data/spec/lib/pact_broker/pacts/repository_spec.rb +65 -1
- data/spec/lib/pact_broker/pacts/sort_verifiable_content_spec.rb +25 -0
- data/spec/lib/pact_broker/verifications/repository_spec.rb +44 -17
- data/spec/lib/pact_broker/versions/repository_spec.rb +2 -2
- data/spec/support/test_data_builder.rb +4 -0
- data/tasks/rspec.rake +6 -4
- metadata +17 -2
@@ -57,11 +57,7 @@ module PactBroker
|
|
57
57
|
error_messages << "Please specify the pacticipant name"
|
58
58
|
else
|
59
59
|
if s.key?(:pacticipant_version_number) && s.key?(:latest)
|
60
|
-
error_messages << "A version and latest flag cannot both be specified for #{s[:pacticipant_name]}"
|
61
|
-
end
|
62
|
-
|
63
|
-
if s.key?(:tag) && !s.key?(:latest)
|
64
|
-
error_messages << "Querying for all versions with a tag is not currently supported. The latest=true flag must be specified when a tag is given."
|
60
|
+
error_messages << "A version number and latest flag cannot both be specified for #{s[:pacticipant_name]}"
|
65
61
|
end
|
66
62
|
end
|
67
63
|
end
|
@@ -78,7 +74,7 @@ module PactBroker
|
|
78
74
|
version = version_service.find_by_pacticipant_name_and_number(pacticipant_name: s[:pacticipant_name], pacticipant_version_number: s[:pacticipant_version_number])
|
79
75
|
error_messages << "No pact or verification found for #{s[:pacticipant_name]} version #{s[:pacticipant_version_number]}" if version.nil?
|
80
76
|
elsif s[:tag]
|
81
|
-
version = version_service.
|
77
|
+
version = version_service.find_by_pacticipant_name_and_latest_tag(s[:pacticipant_name], s[:tag])
|
82
78
|
error_messages << "No version of #{s[:pacticipant_name]} found with tag #{s[:tag]}" if version.nil?
|
83
79
|
end
|
84
80
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'pact_broker/api/pact_broker_urls'
|
2
2
|
require 'pact_broker/date_helper'
|
3
3
|
require 'pact_broker/pacts/create_formatted_diff'
|
4
|
+
require 'pact_broker/pacts/sort_verifiable_content'
|
4
5
|
require 'pact_broker/repositories'
|
5
6
|
require 'yaml'
|
6
7
|
|
@@ -10,13 +11,13 @@ module PactBroker
|
|
10
11
|
class Diff
|
11
12
|
include PactBroker::Repositories
|
12
13
|
|
13
|
-
def process(params)
|
14
|
+
def process(params, comparison_pact_params = nil, options = {})
|
14
15
|
pact = find_pact(params)
|
15
|
-
|
16
|
+
comparison_pact = comparison_pact_params ? find_pact(comparison_pact_params) : pact_repository.find_previous_distinct_pact(pact)
|
16
17
|
|
17
|
-
if
|
18
|
-
next_pact = pact_repository.find_next_pact(
|
19
|
-
DiffDecorator.new(pact,
|
18
|
+
if comparison_pact
|
19
|
+
next_pact = pact_repository.find_next_pact(comparison_pact) || pact
|
20
|
+
DiffDecorator.new(pact, comparison_pact, next_pact, params[:base_url], { raw: options[:raw] }).to_text
|
20
21
|
else
|
21
22
|
no_previous_version_message pact
|
22
23
|
end
|
@@ -27,7 +28,8 @@ module PactBroker
|
|
27
28
|
def find_pact(params)
|
28
29
|
pact_repository.find_pact(params.consumer_name,
|
29
30
|
params.consumer_version_number,
|
30
|
-
params.provider_name
|
31
|
+
params.provider_name,
|
32
|
+
params.pact_version_sha)
|
31
33
|
end
|
32
34
|
|
33
35
|
def no_previous_version_message(pact)
|
@@ -46,11 +48,12 @@ module PactBroker
|
|
46
48
|
# the latest distinct version content was first created.
|
47
49
|
|
48
50
|
class DiffDecorator
|
49
|
-
def initialize(pact,
|
51
|
+
def initialize(pact, comparison_pact, next_pact, base_url, options)
|
50
52
|
@pact = pact
|
51
|
-
@
|
53
|
+
@comparison_pact = comparison_pact
|
52
54
|
@next_pact = next_pact
|
53
55
|
@base_url = base_url
|
56
|
+
@options = options
|
54
57
|
end
|
55
58
|
|
56
59
|
def to_text
|
@@ -59,7 +62,7 @@ module PactBroker
|
|
59
62
|
|
60
63
|
private
|
61
64
|
|
62
|
-
attr_reader :pact, :
|
65
|
+
attr_reader :pact, :comparison_pact, :next_pact, :base_url, :options
|
63
66
|
|
64
67
|
def change_date_in_words
|
65
68
|
DateHelper.local_date_in_words next_pact.created_at
|
@@ -70,7 +73,7 @@ module PactBroker
|
|
70
73
|
end
|
71
74
|
|
72
75
|
def header
|
73
|
-
title = "# Diff between versions #{
|
76
|
+
title = "# Diff between versions #{comparison_pact.consumer_version_number} and #{pact.consumer_version_number} of the pact between #{pact.consumer.name} and #{pact.provider.name}"
|
74
77
|
description = "The following changes were made #{change_date_ago_in_words} ago (#{change_date_in_words})"
|
75
78
|
|
76
79
|
title + "\n\n" + description
|
@@ -78,7 +81,7 @@ module PactBroker
|
|
78
81
|
|
79
82
|
def links
|
80
83
|
self_url = PactBroker::Api::PactBrokerUrls.pact_url(base_url, pact)
|
81
|
-
previous_distinct_url = PactBroker::Api::PactBrokerUrls.pact_url(base_url,
|
84
|
+
previous_distinct_url = PactBroker::Api::PactBrokerUrls.pact_url(base_url, comparison_pact)
|
82
85
|
|
83
86
|
links = {
|
84
87
|
"current-pact-version" => {
|
@@ -88,7 +91,7 @@ module PactBroker
|
|
88
91
|
},
|
89
92
|
"previous-distinct-pact-version" => {
|
90
93
|
"title" => "Pact",
|
91
|
-
"name" =>
|
94
|
+
"name" => comparison_pact.name,
|
92
95
|
"href" => previous_distinct_url
|
93
96
|
}
|
94
97
|
}
|
@@ -96,12 +99,20 @@ module PactBroker
|
|
96
99
|
end
|
97
100
|
|
98
101
|
def diff
|
99
|
-
CreateFormattedDiff.(pact.json_content,
|
102
|
+
CreateFormattedDiff.(prepare_content(pact.json_content), prepare_content(comparison_pact.json_content))
|
100
103
|
end
|
101
104
|
|
102
105
|
def change_date_ago_in_words
|
103
106
|
DateHelper.distance_of_time_in_words next_pact.created_at, now
|
104
107
|
end
|
108
|
+
|
109
|
+
def prepare_content json_content
|
110
|
+
if options[:raw]
|
111
|
+
json_content
|
112
|
+
else
|
113
|
+
PactBroker::Pacts::SortVerifiableContent.call(json_content)
|
114
|
+
end
|
115
|
+
end
|
105
116
|
end
|
106
117
|
end
|
107
118
|
end
|
@@ -10,6 +10,16 @@ module PactBroker
|
|
10
10
|
merge!(attributes)
|
11
11
|
end
|
12
12
|
|
13
|
+
def self.from_path_info path_info
|
14
|
+
new(
|
15
|
+
consumer_name: path_info.fetch(:consumer_name),
|
16
|
+
provider_name: path_info.fetch(:provider_name),
|
17
|
+
consumer_version_number: path_info[:consumer_version_number],
|
18
|
+
revision_number: path_info[:revision_number],
|
19
|
+
pact_version_sha: path_info[:pact_version_sha]
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
13
23
|
def self.from_request request, path_info
|
14
24
|
json_content = request.body.to_s
|
15
25
|
parsed_content = begin
|
@@ -70,6 +70,24 @@ module PactBroker
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
def find_pact_versions_for_provider provider_name, tag = nil
|
74
|
+
if tag
|
75
|
+
LatestPactPublicationsByConsumerVersion
|
76
|
+
.join(:tags, {version_id: :consumer_version_id})
|
77
|
+
.provider(provider_name)
|
78
|
+
.order_ignore_case(:consumer_name)
|
79
|
+
.order_append(:consumer_version_order)
|
80
|
+
.where(Sequel[:tags][:name] => tag)
|
81
|
+
.collect(&:to_domain)
|
82
|
+
else
|
83
|
+
LatestPactPublicationsByConsumerVersion
|
84
|
+
.provider(provider_name)
|
85
|
+
.order_ignore_case(:consumer_name)
|
86
|
+
.order_append(:consumer_version_order)
|
87
|
+
.collect(&:to_domain)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
73
91
|
# Returns latest pact version for the consumer_version_number
|
74
92
|
def find_by_consumer_version consumer_name, consumer_version_number
|
75
93
|
LatestPactPublicationsByConsumerVersion
|
@@ -68,6 +68,10 @@ module PactBroker
|
|
68
68
|
pact_repository.find_latest_pact_versions_for_provider provider_name, options[:tag]
|
69
69
|
end
|
70
70
|
|
71
|
+
def find_pact_versions_for_provider provider_name, options = {}
|
72
|
+
pact_repository.find_pact_versions_for_provider provider_name, options[:tag]
|
73
|
+
end
|
74
|
+
|
71
75
|
def find_previous_distinct_pact_version params
|
72
76
|
pact = find_pact params
|
73
77
|
return nil if pact.nil?
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'pact_broker/json'
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Pacts
|
5
|
+
class SortVerifiableContent
|
6
|
+
|
7
|
+
def self.call json
|
8
|
+
hash = JSON.parse(json, PACT_PARSING_OPTIONS)
|
9
|
+
verifiable_content = if hash['interactions']
|
10
|
+
hash['interactions']
|
11
|
+
elsif hash['messages']
|
12
|
+
hash['messages']
|
13
|
+
end
|
14
|
+
order_verifiable_content(verifiable_content).to_json
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.order_verifiable_content array
|
18
|
+
array_with_ordered_hashes = order_hashes(array)
|
19
|
+
array_with_ordered_hashes.sort{|a, b| a.to_json <=> b.to_json }
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.order_hashes thing
|
23
|
+
case thing
|
24
|
+
when Hash then order_hash(thing)
|
25
|
+
when Array then order_child_array(thing)
|
26
|
+
else thing
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.order_child_array array
|
31
|
+
array.collect{|thing| order_hashes(thing) }
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.order_hash hash
|
35
|
+
hash.keys.sort.each_with_object({}) do | key, new_hash |
|
36
|
+
new_hash[key] = order_hashes(hash[key])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -59,12 +59,11 @@ module PactBroker
|
|
59
59
|
def create_selector_objects(selector_hashes)
|
60
60
|
selector_hashes.collect do | selector_hash |
|
61
61
|
o = OpenStruct.new(selector_hash)
|
62
|
-
o.
|
63
|
-
o.
|
64
|
-
o.
|
65
|
-
o.
|
66
|
-
o.
|
67
|
-
o.specify_all_versions_checked = !(o.tag || o.pacticipant_version_number) ? 'checked' : nil
|
62
|
+
o.specify_latest_tag = o.tag && o.latest ? 'checked' : nil
|
63
|
+
o.specify_all_tagged = o.tag && !o.latest ? 'checked' : nil
|
64
|
+
o.specify_latest = o.latest ? 'checked' : nil
|
65
|
+
o.specify_version = o.pacticipant_version_number ? 'checked' : nil
|
66
|
+
o.specify_all_versions = !(o.tag || o.pacticipant_version_number) ? 'checked' : nil
|
68
67
|
o
|
69
68
|
end
|
70
69
|
end
|
@@ -29,29 +29,27 @@
|
|
29
29
|
%input{name: 'q[]pacticipant', id: "pacticipant1#{index}", value: selector.pacticipant_name}
|
30
30
|
|
31
31
|
.input-group
|
32
|
-
%input{type: 'radio', name: "ignorethis#{index}", class: 'specify-all-versions version-selectorizor', value: 'all_versions', id: "pacticipant#{index}_all_versions", checked: selector.specify_all_versions_checked}
|
33
|
-
%label{for: "pacticipant#{index}_all_versions"}
|
34
|
-
All versions
|
35
32
|
|
36
33
|
.input-group
|
37
|
-
%
|
38
|
-
|
39
|
-
|
40
|
-
|
34
|
+
%select{ name: "ignorethis#{index}", class: 'version-selectorizor' }
|
35
|
+
%option{ value: 'specify-all-versions', selected: selector.specify_all_versions }
|
36
|
+
All versions
|
37
|
+
%option{ value: 'specify-latest', selected: selector.specify_latest }
|
38
|
+
Latest version
|
39
|
+
%option{ value: 'specify-version', selected: selector.specify_version }
|
40
|
+
Version number ...
|
41
|
+
%option{ value: 'specify-latest-tag', selected: selector.specify_latest_tag }
|
42
|
+
Latest version with tag ...
|
43
|
+
%option{ value: 'specify-all-tagged', selected: selector.specify_all_tagged }
|
44
|
+
All versions with tag...
|
41
45
|
|
42
|
-
|
43
|
-
|
44
|
-
%
|
45
|
-
Latest version
|
46
|
-
%input{name: 'q[]latest', value: 'true', hidden: true, class: 'latest-flag'}
|
46
|
+
%input{name: 'q[]version', type: 'text', id: "pacticipant#{index}_version", class: 'version', value: selector.pacticipant_version_number}
|
47
|
+
|
48
|
+
%input{name: 'q[]tag', type: 'text', id: "pacticipant#{index}_tag", class: 'tag', value: selector.tag}
|
47
49
|
|
48
|
-
.input-group
|
49
|
-
%input{type: 'radio', name: "ignorethis#{index}", class: 'specify-latest-tag version-selectorizor', value: 'tag', id: "pacticipant#{index}_by_tag", checked: selector.specify_latest_tag_checked}
|
50
|
-
%label{for: "pacticipant#{index}_by_tag"}
|
51
|
-
Latest version with tag
|
52
|
-
%input{name: 'q[]tag', type: 'text', id: "pacticipant#{index}_tag", class: "by-latest-tag", value: selector.tag}
|
53
50
|
%input{name: 'q[]latest', value: 'true', hidden: true, class: 'latest-flag'}
|
54
51
|
|
52
|
+
|
55
53
|
%div.top-of-group
|
56
54
|
.input-group
|
57
55
|
%input{type: 'radio', name: "latestby", class: '', value: '', id: 'all_rows', checked: options.all_rows_checked}
|
@@ -75,15 +75,15 @@ module PactBroker
|
|
75
75
|
query = PactBroker::Verifications::AllVerifications
|
76
76
|
.select_all_qualified
|
77
77
|
.join(:versions, {Sequel[:provider_versions][:id] => Sequel[view_name][:provider_version_id]}, {table_alias: :provider_versions})
|
78
|
-
.join(:
|
78
|
+
.join(:latest_pact_publications_by_consumer_versions, { Sequel[view_name][:pact_version_id] => Sequel[:latest_pact_publications_by_consumer_versions][:pact_version_id] })
|
79
79
|
.consumer(consumer_name)
|
80
80
|
.provider(provider_name)
|
81
81
|
.tag(consumer_version_tag)
|
82
82
|
.provider_version_tag(provider_version_tag)
|
83
83
|
|
84
84
|
query.reverse_order(
|
85
|
-
Sequel[:
|
86
|
-
Sequel[:
|
85
|
+
Sequel[:latest_pact_publications_by_consumer_versions][:consumer_version_order],
|
86
|
+
Sequel[:latest_pact_publications_by_consumer_versions][:revision_number],
|
87
87
|
Sequel[:provider_versions][:order],
|
88
88
|
Sequel[view_name][:execution_date]
|
89
89
|
).limit(1).single_record
|
data/lib/pact_broker/version.rb
CHANGED
@@ -12,7 +12,7 @@ module PactBroker
|
|
12
12
|
PactBroker::Domain::Version.where(number: number, pacticipant_id: pacticipant_id).single_record
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
15
|
+
def find_by_pacticipant_name_and_latest_tag pacticipant_name, tag
|
16
16
|
PactBroker::Domain::Version
|
17
17
|
.select_all_qualified
|
18
18
|
.join(:pacticipants, {id: :pacticipant_id}, {implicit_qualifier: :versions})
|
@@ -23,6 +23,16 @@ module PactBroker
|
|
23
23
|
.first
|
24
24
|
end
|
25
25
|
|
26
|
+
def find_by_pacticipant_name_and_tag pacticipant_name, tag
|
27
|
+
PactBroker::Domain::Version
|
28
|
+
.select_all_qualified
|
29
|
+
.join(:pacticipants, {id: :pacticipant_id}, {implicit_qualifier: :versions})
|
30
|
+
.join(:tags, {version_id: :id}, {implicit_qualifier: :versions})
|
31
|
+
.where(name_like(Sequel[:tags][:name], tag))
|
32
|
+
.where(name_like(Sequel[:pacticipants][:name], pacticipant_name))
|
33
|
+
.all
|
34
|
+
end
|
35
|
+
|
26
36
|
def find_latest_by_pacticpant_name pacticipant_name
|
27
37
|
PactBroker::Domain::Version
|
28
38
|
.select_all_qualified
|
@@ -15,8 +15,8 @@ module PactBroker
|
|
15
15
|
version_repository.find_by_pacticipant_name_and_number params.fetch(:pacticipant_name), params.fetch(:pacticipant_version_number)
|
16
16
|
end
|
17
17
|
|
18
|
-
def self.
|
19
|
-
version_repository.
|
18
|
+
def self.find_by_pacticipant_name_and_latest_tag(pacticipant_name, tag)
|
19
|
+
version_repository.find_by_pacticipant_name_and_latest_tag(pacticipant_name, tag)
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.delete version
|
@@ -1,27 +1,48 @@
|
|
1
|
-
function handleRadioButtonClicked() {
|
2
|
-
selectApplicableTextBox($(this));
|
3
|
-
clearOtherTextBoxes($(this));
|
4
|
-
}
|
5
1
|
|
6
|
-
function
|
7
|
-
|
2
|
+
function setTextboxVisibility(selectBox, cssSelector, visibility) {
|
3
|
+
var textbox = selectBox.closest('.selector').find(cssSelector);
|
4
|
+
textbox.toggle(visibility);
|
5
|
+
if(visibility) {
|
6
|
+
textbox.prop('disabled', '');
|
7
|
+
textbox.focus();
|
8
|
+
} else {
|
9
|
+
textbox.prop('disabled', 'disabled');
|
10
|
+
}
|
8
11
|
}
|
9
12
|
|
10
|
-
function
|
11
|
-
|
12
|
-
|
13
|
+
function toggleLatestFlag(selectBox, enabled) {
|
14
|
+
var flagElement = selectBox.closest('.selector').find('.latest-flag');
|
15
|
+
if(enabled) {
|
16
|
+
flagElement.prop('disabled', '');
|
17
|
+
} else {
|
18
|
+
flagElement.prop('disabled', 'disabled');
|
19
|
+
}
|
13
20
|
}
|
14
21
|
|
15
|
-
function
|
16
|
-
|
22
|
+
function showApplicableTextBoxes(selectorizor) {
|
23
|
+
var selectorizorType = selectorizor.val();
|
24
|
+
if( selectorizorType === 'specify-version') {
|
25
|
+
setTextboxVisibility(selectorizor, '.version', true);
|
26
|
+
setTextboxVisibility(selectorizor, '.tag', false);
|
27
|
+
}
|
28
|
+
else if( selectorizorType === 'specify-latest-tag' || selectorizorType === 'specify-all-tagged') {
|
29
|
+
setTextboxVisibility(selectorizor, '.version', false);
|
30
|
+
setTextboxVisibility(selectorizor, '.tag', true);
|
31
|
+
}
|
32
|
+
else if ( selectorizorType === 'specify-all-versions' || selectorizorType === 'specify-latest') {
|
33
|
+
setTextboxVisibility(selectorizor, '.version', false);
|
34
|
+
setTextboxVisibility(selectorizor, '.tag', false);
|
35
|
+
}
|
36
|
+
|
37
|
+
if (selectorizorType === 'specify-latest' || selectorizorType === 'specify-latest-tag') {
|
38
|
+
toggleLatestFlag(selectorizor, true);
|
39
|
+
} else {
|
40
|
+
toggleLatestFlag(selectorizor, false);
|
41
|
+
}
|
17
42
|
}
|
18
43
|
|
19
|
-
function
|
20
|
-
|
21
|
-
if(!$.contains(clickedElement.closest('.input-group')[0], $(this)[0])) {
|
22
|
-
$(this).prop('value', '');
|
23
|
-
}
|
24
|
-
});
|
44
|
+
function handleSelectorizorChanged() {
|
45
|
+
showApplicableTextBoxes($(this));
|
25
46
|
}
|
26
47
|
|
27
48
|
function onSubmit() {
|
@@ -30,26 +51,12 @@ function onSubmit() {
|
|
30
51
|
}
|
31
52
|
|
32
53
|
function disableFieldsThatShouldNotBeSubmitted() {
|
33
|
-
disableInputsForUncheckedRadioButtons();
|
34
|
-
disableRadioButtons();
|
35
|
-
}
|
36
|
-
|
37
|
-
function disableInputsForUncheckedRadioButtons() {
|
38
|
-
$('.version-selectorizor').each(function(){
|
39
|
-
if($(this).prop('checked') === false) {
|
40
|
-
$(this).closest('.input-group').find('input').prop('disabled', 'disabled');
|
41
|
-
}
|
42
|
-
});
|
43
|
-
}
|
44
|
-
|
45
|
-
function disableRadioButtons() {
|
46
54
|
$('.version-selectorizor').prop('disabled', 'disabled');
|
47
55
|
}
|
48
56
|
|
49
57
|
$(document).ready(function(){
|
50
|
-
$('.
|
51
|
-
$('.
|
52
|
-
$('.version-selectorizor').click(handleRadioButtonClicked);
|
58
|
+
$('.version-selectorizor').change(handleSelectorizorChanged);
|
59
|
+
$('.version-selectorizor').each(function(){ showApplicableTextBoxes($(this)); });
|
53
60
|
|
54
61
|
$("#matrix").tablesorter({
|
55
62
|
textExtraction : function(node, table, cellIndex){
|