lib/pact_broker/ui/controllers/matrix.rb in pact_broker-2.12.0 vs lib/pact_broker/ui/controllers/matrix.rb in pact_broker-2.13.0

- old
+ new

@@ -1,28 +1,83 @@ require 'pact_broker/ui/controllers/base_controller' require 'pact_broker/ui/view_models/matrix_line' +require 'pact_broker/matrix/parse_query' +require 'pact_broker/logging' require 'haml' module PactBroker module UI module Controllers class Matrix < Base include PactBroker::Services + include PactBroker::Logging + get "/" do + selectors = [OpenStruct.new, OpenStruct.new] + options = { limit: 100, latestby: 'cvpv' } + locals = { + lines: [], + title: "The Matrix", + selectors: create_selector_objects(selectors), + options: create_options_model(options) + } + begin + if params[:q] + selectors, options = PactBroker::Matrix::ParseQuery.call(request.env['QUERY_STRING']) + locals[:selectors] = create_selector_objects(selectors) + locals[:options] = create_options_model(options) + errors = matrix_service.validate_selectors(selectors) + if errors.empty? + lines = matrix_service.find(selectors, options) + locals[:lines] = lines.collect{ |line| PactBroker::UI::ViewDomain::MatrixLine.new(line) } + else + locals[:errors] = errors + end + end + rescue StandardError => e + log_error(e) unless e.is_a?(PactBroker::Error) + locals[:errors] = [e.message] + end + haml :'matrix/show', {locals: locals, layout: :'layouts/main'} + end + get "/provider/:provider_name/consumer/:consumer_name" do selectors = [{ pacticipant_name: params[:consumer_name] }, { pacticipant_name: params[:provider_name] } ] - lines = matrix_service.find(selectors, {latestby: 'cvpv', limit: 1000}) - lines = lines.collect{|line| PactBroker::UI::ViewDomain::MatrixLine.new(line) }.sort + options = {latestby: 'cvpv', limit: 100} + lines = matrix_service.find(selectors, options) + lines = lines.collect{ |line| PactBroker::UI::ViewDomain::MatrixLine.new(line) }.sort locals = { lines: lines, title: "The Matrix", consumer_name: params[:consumer_name], - provider_name: params[:provider_name] + provider_name: params[:provider_name], + selectors: create_selector_objects(selectors), + options: create_options_model(options) } haml :'matrix/show', {locals: locals, layout: :'layouts/main'} end + def create_selector_objects(selector_hashes) + selector_hashes.collect do | selector_hash | + o = OpenStruct.new(selector_hash) + o.tag_disabled = o.tag ? nil : 'disabled' + o.version_disabled = o.pacticipant_version_number ? nil : 'disabled' + o.specify_latest_tag_checked = o.tag ? 'checked' : nil + o.specify_latest_checked = o.latest ? 'checked' : nil + o.specify_version_checked = o.pacticipant_version_number ? 'checked' : nil + o.specify_all_versions_checked = !(o.tag || o.pacticipant_version_number) ? 'checked' : nil + o + end + end + + def create_options_model(options) + o = OpenStruct.new(options) + o.cvpv_checked = o.latestby == 'cvpv' ? 'checked' : nil + o.cvp_checked = o.latestby == 'cvp' ? 'checked' : nil + o.all_rows_checked = o.latestby.nil? ? 'checked' : nil + o + end end end end end