Bladeren bron

[oozie] Support shift-click for selecting multiple table items

Johan Ahlen 10 jaren geleden
bovenliggende
commit
3735c2c

+ 4 - 0
apps/oozie/src/oozie/templates/dashboard/list_oozie_bundles.mako

@@ -152,6 +152,9 @@ ${layout.menubar(section='bundles', dashboard=True)}
   </div>
 </div>
 
+<script src="${ static('desktop/ext/js/knockout.min.js') }" type="text/javascript" charset="utf-8"></script>
+<script src="${ static('desktop/ext/js/knockout-mapping.min.js') }" type="text/javascript" charset="utf-8"></script>
+<script src="${ static('desktop/js/ko.hue-bindings.js') }" type="text/javascript" charset="utf-8"></script>
 <script src="${ static('oozie/js/dashboard-utils.js') }" type="text/javascript" charset="utf-8"></script>
 <script src="${ static('desktop/ext/js/datatables-paging-0.1.js') }" type="text/javascript" charset="utf-8"></script>
 
@@ -448,6 +451,7 @@ ${layout.menubar(section='bundles', dashboard=True)}
         }
         numRunning = data.jobs.length;
 
+        ko.bindingHandlers.multiCheck.init(runningTable[0], function() { return '#' + runningTable[0].id})
         window.setTimeout(refreshRunning, 20000);
       }).fail(function (xhr, textStatus, errorThrown) {
         $(document).trigger("error", xhr.responseJSON['detail']);

+ 4 - 0
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinators.mako

@@ -174,6 +174,9 @@ ${layout.menubar(section='coordinators', dashboard=True)}
   </div>
 </div>
 
+<script src="${ static('desktop/ext/js/knockout.min.js') }" type="text/javascript" charset="utf-8"></script>
+<script src="${ static('desktop/ext/js/knockout-mapping.min.js') }" type="text/javascript" charset="utf-8"></script>
+<script src="${ static('desktop/js/ko.hue-bindings.js') }" type="text/javascript" charset="utf-8"></script>
 <script src="${ static('oozie/js/dashboard-utils.js') }" type="text/javascript" charset="utf-8"></script>
 <script src="${ static('desktop/ext/js/datatables-paging-0.1.js') }" type="text/javascript" charset="utf-8"></script>
 
@@ -594,6 +597,7 @@ ${layout.menubar(section='coordinators', dashboard=True)}
               }
             }
           });
+        ko.bindingHandlers.multiCheck.init(runningTable[0], function() { return '#' + runningTable[0].id})
         window.setTimeout(refreshProgress, 30000);
       });
     }

+ 4 - 0
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflows.mako

@@ -180,6 +180,9 @@ ${ layout.menubar(section='workflows', dashboard=True) }
 }
 </style>
 
+<script src="${ static('desktop/ext/js/knockout.min.js') }" type="text/javascript" charset="utf-8"></script>
+<script src="${ static('desktop/ext/js/knockout-mapping.min.js') }" type="text/javascript" charset="utf-8"></script>
+<script src="${ static('desktop/js/ko.hue-bindings.js') }" type="text/javascript" charset="utf-8"></script>
 <script src="${ static('oozie/js/dashboard-utils.js') }" type="text/javascript" charset="utf-8"></script>
 <script src="${ static('desktop/ext/js/datatables-paging-0.1.js') }" type="text/javascript" charset="utf-8"></script>
 
@@ -499,6 +502,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
 
         runningTable.fnDraw();
         runningTimeout = window.setTimeout(refreshRunning, 5000);
+        ko.bindingHandlers.multiCheck.init(runningTable[0], function() { return '#' + runningTable[0].id})
       }).fail(function (xhr, textStatus, errorThrown) {
         $(document).trigger("error", xhr.responseJSON['detail']);
       });

+ 1 - 1
apps/oozie/src/oozie/templates/editor2/list_editor_bundles.mako

@@ -86,7 +86,7 @@ ${ layout.menubar(section='bundles', is_editor=True) }
     <tbody data-bind="foreach: { data: jobs }">
       <tr>
         <td data-bind="click: $root.handleSelect" class="center" style="cursor: default" data-row-selector-exclude="true">
-          <div data-bind="css: { 'hueCheckbox': true, 'fa': true, 'fa-check': isSelected }" data-row-selector-exclude="true"></div>
+          <div data-bind="multiCheck: '#workflowTable', css: { 'hueCheckbox': true, 'fa': true, 'fa-check': isSelected }" data-row-selector-exclude="true"></div>
           <!-- ko if: ! uuid() -->
             <a data-bind="attr: { 'href': '${ url('oozie:open_old_bundle') }?bundle=' + id() }" data-row-selector="true"></a>
           <!-- /ko -->

+ 1 - 1
apps/oozie/src/oozie/templates/editor2/list_editor_coordinators.mako

@@ -86,7 +86,7 @@ ${ layout.menubar(section='coordinators', is_editor=True) }
     <tbody data-bind="foreach: { data: jobs }">
       <tr>
         <td data-bind="click: $root.handleSelect" class="center" style="cursor: default" data-row-selector-exclude="true">
-          <div data-bind="css: { 'hueCheckbox': true, 'fa': true, 'fa-check': isSelected }" data-row-selector-exclude="true"></div>
+          <div data-bind="multiCheck: '#workflowTable', css: { 'hueCheckbox': true, 'fa': true, 'fa-check': isSelected }" data-row-selector-exclude="true"></div>
           <!-- ko if: ! uuid() -->
             <a data-bind="attr: { 'href': '${ url('oozie:open_old_coordinator') }?coordinator=' + id() }" data-row-selector="true"></a>
           <!-- /ko -->

+ 1 - 1
apps/oozie/src/oozie/templates/editor2/list_editor_workflows.mako

@@ -87,7 +87,7 @@ ${ layout.menubar(section='workflows', is_editor=True) }
     <tbody data-bind="foreach: { data: jobs }">
       <tr>
         <td data-bind="click: $root.handleSelect" class="center" style="cursor: default" data-row-selector-exclude="true">
-          <div data-bind="css: { 'hueCheckbox': true, 'fa': true, 'fa-check': isSelected }" data-row-selector-exclude="true"></div>
+          <div data-bind="multiCheck: '#workflowTable', css: { 'hueCheckbox': true, 'fa': true, 'fa-check': isSelected }" data-row-selector-exclude="true"></div>
           <!-- ko if: ! uuid() -->
             <a data-bind="attr: { 'href': '${ url('oozie:open_old_workflow') }?workflow=' + id() }" data-row-selector="true"></a>
           <!-- /ko -->

+ 3 - 3
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -192,7 +192,7 @@
 
       var $container = $(ko.unwrap(valueAccessor()));
       $(element).click(function (e, shouldIgnore) {
-        var $self = $(this);
+        var $self = $(e.target);
         if ($self.data('noMultiCheck')) {
           $self.data('noMultiCheck', false);
           return;
@@ -206,7 +206,7 @@
           }
           for (var i = 0; i < allCheckboxes.length; i++) {
             var checkbox = allCheckboxes[i];
-            if (checkbox === this || checkbox === $container.data('last-clicked-checkbox')) {
+            if (checkbox === e.target || checkbox === $container.data('last-clicked-checkbox')) {
               if (insideGroup) {
                 break;
               }
@@ -222,7 +222,7 @@
             }
           }
         }
-        $container.data('last-clicked-checkbox', this);
+        $container.data('last-clicked-checkbox', e.target);
         $container.data('last-clicked-checkbox-state', shouldCheck);
       });
     },