Skip to content

Commit

Permalink
fix data_sources_controller form for bq adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
snowhork committed Oct 17, 2018
1 parent 517865d commit 2e15025
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 20 deletions.
12 changes: 11 additions & 1 deletion app/controllers/data_sources_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
class DataSourcesController < ApplicationController
permits :name, :description, :adapter, :host, :port, :dbname, :user, :password, :encoding
permits :name, :description, :adapter, :host, :port, :dbname, :user, :password, :encoding,
bigquery_config_attributes: [:project_id, :dataset, :credentials]

before_action :require_admin_login, only: %w(new create edit update destroy)

Expand Down Expand Up @@ -52,6 +53,15 @@ def destroy(id)

def data_source_params(data_source)
data_source.reject!{|k, v| k == "password" && v == DUMMY_PASSWORD }

if data_source[:adapter] == 'bigquery'
if data_source[:bigquery_config_attributes][:credentials]
data_source[:bigquery_config_attributes][:credentials] = data_source[:bigquery_config_attributes][:credentials].read
end
else
data_source.delete(:bigquery_config_attributes)
end

data_source
end
end
72 changes: 53 additions & 19 deletions app/views/data_sources/_form.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,58 @@
.col-sm-10= f.text_field :description, class: "form-control", placeholder: "localhost database"
.form-group
= f.label :adapter, class: "col-sm-2 control-label"
.col-sm-10= f.select :adapter, %w(redshift postgresql mysql2), {}, class: "form-control"
.form-group
= f.label :host, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :host, class: "form-control", placeholder: "localhost"
.form-group
= f.label :port, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :port, class: "form-control", placeholder: "5432"
.form-group
= f.label :dbname, "Database Name", class: "col-sm-2 control-label"
.col-sm-10= f.text_field :dbname, class: "form-control", placeholder: "dmemo"
.form-group
= f.label :user, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :user, class: "form-control", placeholder: "root"
.form-group
= f.label :password, class: "col-sm-2 control-label"
.col-sm-10= f.password_field :password, class: "form-control", value: @data_source.password
.form-group
= f.label :encoding, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :encoding, class: "form-control"
.col-sm-10= f.select :adapter, DataSourceAdapters.adapter_names, {}, class: "form-control"

#standard-config-fields.adapter-config
.form-group
= f.label :host, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :host, class: "form-control", placeholder: "localhost"
.form-group
= f.label :port, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :port, class: "form-control", placeholder: "5432"
.form-group
= f.label :dbname, "Database Name", class: "col-sm-2 control-label"
.col-sm-10= f.text_field :dbname, class: "form-control", placeholder: "dmemo"
.form-group
= f.label :user, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :user, class: "form-control", placeholder: "root"
.form-group
= f.label :password, class: "col-sm-2 control-label"
.col-sm-10= f.password_field :password, class: "form-control", value: @data_source.password
.form-group
= f.label :encoding, class: "col-sm-2 control-label"
.col-sm-10= f.text_field :encoding, class: "form-control"

#bigquery-config-fields.adapter-config
= f.fields_for :bigquery_config, @data_source.bigquery_config || BigqueryConfig.new do |bq|
.form-group
= bq.label :project_id, class: "col-sm-2 control-label"
.col-sm-10= bq.text_field :project_id, class: "form-control", placeholder: "project-1234"
.form-group
= bq.label :dataset, class: "col-sm-2 control-label"
.col-sm-10= bq.text_field :dataset, class: "form-control", placeholder: "public"
.form-group
= bq.label :credentials, class: "col-sm-2 control-label"
.col-sm-10= bq.file_field :credentials, class: "form-control", placeholder: "public"


.box-footer
= f.submit class: "btn btn-primary pull-right"

:javascript
$(function() {
var standardAdpaters = #{DataSourceAdapters.standard_adapter_names.to_json.html_safe};
function toggleAdapter(adapterName) {
if (standardAdpaters.includes(adapterName)) {
adapterName = 'standard';
}

$('.adapter-config').hide();
$('#' + adapterName + '-config-fields' ).show();
}

$('#data_source_adapter').change(function(){
toggleAdapter($(this).val());
});
toggleAdapter($('#data_source_adapter').val());
});

0 comments on commit 2e15025

Please sign in to comment.