Pārlūkot izejas kodu

HUE-1380 [sqoop2] support for boolean type

Abraham Elmahrek 12 gadi atpakaļ
vecāks
revīzija
80e5835

+ 71 - 14
apps/sqoop/src/sqoop/templates/app.mako

@@ -350,8 +350,11 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </script>
 
 <script type="text/html" id="framework-map">
-<div data-bind="css: {'control-group': id() != null, warning: name() in $root.warnings(), error: name() in $root.errors()}">
-  <label class="control-label" data-bind="text: $root.label('framework', name()), attr: { 'title': $root.help('framework', name()) }" rel="tooltip"></label>
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('framework', name())" rel="tooltip"></label>
   <div class="controls">
     <input class="input-xlarge" data-bind="value: value, attr: {'type': (sensitive() ? 'password' : 'text'), 'name': name, 'title': $root.help('framework', name())}" rel="tooltip">
     <span data-bind="template: {'name': 'job-editor-form-field-error'}" class="help-inline"></span>
@@ -360,8 +363,11 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </script>
 
 <script type="text/html" id="framework-string">
-<div data-bind="css: {'control-group': id() != null, warning: name() in $root.warnings(), error: name() in $root.errors()}">
-  <label class="control-label" data-bind="text: $root.label('framework', name()),attr: { 'title': $root.help('framework', name()) }" rel="tooltip"></label>
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('framework', name())" rel="tooltip"></label>
   <div class="controls">
     <input class="input-xlarge" data-bind="value: value, attr: { 'type': (sensitive() ? 'password' : 'text'), 'name': name, 'title': $root.help('framework', name()) }" rel="tooltip">
     <span data-bind="template: { 'name': 'job-editor-form-field-error' }" class="help-inline"></span>
@@ -370,8 +376,11 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </script>
 
 <script type="text/html" id="framework-integer">
-<div data-bind="css: {'control-group': id() != null, warning: name() in $root.warnings(), error: name() in $root.errors() }">
-  <label class="control-label" data-bind="text: $root.label('framework', name()), attr: { 'title': $root.help('framework', name()) }" rel="tooltip"></label>
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('framework', name())" rel="tooltip"></label>
   <div class="controls">
     <input class="input-xlarge" data-bind="value: value, attr: { 'type': (sensitive() ? 'password' : 'text'), 'name': name, 'title': $root.help('framework', name()) }" rel="tooltip">
     <span data-bind="template: { 'name': 'job-editor-form-field-error' }" class="help-inline"></span>
@@ -379,9 +388,30 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </div>
 </script>
 
+<script type="text/html" id="framework-boolean">
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('framework', name())" rel="tooltip"></label>
+  <div class="controls">
+    <div class="btn-group inline" data-toggle="buttons-radio" style="display: inline">
+      <button data-bind="clickValue: value, attr: {'name': name}" type="button" value="true" class="btn" data-toggle="button">${_('True')}</button>
+      <button data-bind="clickValue: value, attr: {'name': name}" type="button" value="false" class="btn" data-toggle="button">${_('False')}</button>
+    </div>
+    <span data-bind="template: {
+                       'name': 'job-editor-form-field-error'
+                     }" class="help-inline"></span>
+  </div>
+</div>
+</script>
+
 <script type="text/html" id="connector-enum">
-<div data-bind="css: {'control-group': id() != null,  warning: name() in $root.warnings(), error: name() in $root.errors() }">
-  <label class="control-label" data-bind="text: $root.label('connector', name()), attr: { 'title': $root.help('connector', name()) }" rel="tooltip"></label>
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('connector', name())" rel="tooltip"></label>
   <div class="controls">
     <select class="input-xlarge" data-bind="'options': values, 'value': value, 'optionsCaption': '${ _('Choose...') }', attr: { 'name': name, 'title': $root.help('connector', name()) }" rel="tooltip">
     </select>
@@ -391,8 +421,11 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </script>
 
 <script type="text/html" id="connector-map">
-<div data-bind="css: {'control-group': id() != null,  warning: name() in $root.warnings(), error: name() in $root.errors() }">
-  <label class="control-label" data-bind="text: $root.label('connector', name()), attr: { 'title': $root.help('connector', name()) }" rel="tooltip"></label>
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('connector', name())" rel="tooltip"></label>
   <div class="controls">
     <input class="input-xlarge" data-bind="value: value, attr: { 'type': (sensitive() ? 'password' : 'text'), 'name': name, 'title': $root.help('connector', name()) }" rel="tooltip">
     <span data-bind="template: { 'name': 'job-editor-form-field-error' }" class="help-inline"></span>
@@ -401,8 +434,11 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </script>
 
 <script type="text/html" id="connector-string">
-<div data-bind="css: {'control-group': id() != null, warning: name() in $root.warnings(), error: name() in $root.errors() }">
-  <label class="control-label" data-bind="text: $root.label('connector', name()), attr: { 'title': $root.help('connector', name()) }" rel="tooltip"></label>
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('connector', name())" rel="tooltip"></label>
   <div class="controls">
     <input class="input-xlarge" data-bind="value: value, attr: { 'type': (sensitive() ? 'password' : 'text'), 'name': name, 'title': $root.help('connector', name()) }" rel="tooltip">
     <span data-bind="template: { 'name': 'job-editor-form-field-error' }" class="help-inline"></span>
@@ -411,8 +447,11 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </script>
 
 <script type="text/html" id="connector-integer">
-<div data-bind="css: {'control-group': id() != null, warning: name() in $root.warnings(), error: name() in $root.errors() }">
-  <label class="control-label" data-bind="text: $root.label('connector', name()), attr: { 'title': $root.help('connector', name()) }" rel="tooltip"></label>
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('connector', name())" rel="tooltip"></label>
   <div class="controls">
     <input class="input-xlarge" data-bind="value: value, attr: { 'type': (sensitive() ? 'password' : 'text'), 'name': name, 'title': $root.help('connector', name())}" rel="tooltip">
     <span data-bind="template: {'name': 'job-editor-form-field-error'}" class="help-inline"></span>
@@ -420,6 +459,24 @@ ${ commonheader(None, "sqoop", user, "40px") | n,unicode }
 </div>
 </script>
 
+<script type="text/html" id="connector-boolean">
+<div data-bind="css: {
+                  warning: name() in $root.warnings(),
+                  error: name() in $root.errors()
+                }" class="control-group">
+  <label class="control-label" data-bind="text: $root.label('connector', name())" rel="tooltip"></label>
+  <div class="controls">
+    <div class="btn-group inline" data-toggle="buttons-radio" style="display: inline">
+      <button data-bind="clickValue: value, attr: {'name': name}" type="button" value="true" class="btn" data-toggle="button">${_('True')}</button>
+      <button data-bind="clickValue: value, attr: {'name': name}" type="button" value="false" class="btn" data-toggle="button">${_('False')}</button>
+    </div>
+    <span data-bind="template: {
+                       'name': 'job-editor-form-field-error'
+                     }" class="help-inline"></span>
+  </div>
+</div>
+</script>
+
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/routie-0.3.0.min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/moment.min.js" type="text/javascript" charset="utf-8"></script>

+ 20 - 0
apps/sqoop/static/js/sqoop.utils.js

@@ -62,6 +62,26 @@ ko.bindingHandlers.editableText = {
   }
 };
 
+ko.bindingHandlers.clickValue = {
+  init: function(element, valueAccessor) {
+    var value = ko.utils.unwrapObservable(valueAccessor());
+    if ($(element).val() == value) {
+      $(element).click();
+    }
+
+    $(element).on('click', function() {
+      var observable = valueAccessor();
+      observable( $(this).val() );
+    });
+  },
+  update: function(element, valueAccessor) {
+    var value = ko.utils.unwrapObservable(valueAccessor());
+    if ($(element).val() == value) {
+      $(element).click();
+    }
+  }
+};
+
 //// JQuery Utils
 if (jQuery) {
   jQuery.extend({