Browse Source

[oozie] Swapped sortable for droppables

Enrico Berti 11 năm trước cách đây
mục cha
commit
1333d15

+ 5 - 5
apps/oozie/src/oozie/templates/editor/workflow_editor.mako

@@ -168,12 +168,12 @@ ${ commonheader(_("Workflow Editor"), "Oozie", user) | n,unicode }
     <div data-bind="template: { name: 'row-template', data: oozieStartRow }"></div>
 
     <div class="container-fluid" data-bind="visible: $root.isEditing() && oozieRows().length > 0">
-      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, sortable: { data: drops, isEnabled: $root.isEditing, 'afterMove': function(event){var widget=event.item; var _r = $data.addEmptyRow(true, 1); _r.addWidget(widget); columnDropAdditionalHandler(widget)}, options: {'placeholder': 'drop-target-highlight', 'greedy': true, 'stop': function(event, ui){}}}"></div>
+      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, droppable: {enabled: $root.isEditing, onDrop: function(){ var _w = $root.addDraggedWidget($data, true); widgetDraggedAdditionalHandler(_w); } }"></div>
     </div>
     <div data-bind="template: { name: 'internal-row-template', foreach: oozieRows}">
     </div>
     <div class="container-fluid" data-bind="visible: $root.isEditing() && rows().length > 0">
-      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, sortable: { data: drops, isEnabled: $root.isEditing, 'afterMove': function(event){var widget=event.item; var _r = $data.addEmptyRow(false, $data.rows().length - 1); _r.addWidget(widget); columnDropAdditionalHandler(widget)}, options: {'placeholder': 'drop-target-highlight', 'greedy': true, 'stop': function(event, ui){}}}"></div>
+      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, droppable: {enabled: $root.isEditing, onDrop: function(){ var _w = $root.addDraggedWidget($data, false); widgetDraggedAdditionalHandler(_w); } }"></div>
     </div>
 
     <div data-bind="template: { name: 'row-template', data: oozieEndRow }"></div>
@@ -184,12 +184,12 @@ ${ commonheader(_("Workflow Editor"), "Oozie", user) | n,unicode }
 <script type="text/html" id="internal-column-template">
   <div data-bind="css: klass">
     <div class="container-fluid" data-bind="visible: $root.isEditing()">
-      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, sortable: { data: drops, isEnabled: $root.isEditing, 'afterMove': function(event){var widget=event.item; var _r = $data.addEmptyRow(true); _r.addWidget(widget); columnDropAdditionalHandler(widget)}, options: {'placeholder': 'drop-target-highlight', 'greedy': true, 'stop': function(event, ui){}}}"></div>
+      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, droppable: {enabled: $root.isEditing, onDrop: function(){ var _w = $root.addDraggedWidget($data, true); widgetDraggedAdditionalHandler(_w); } }"></div>
     </div>
     <div data-bind="template: { name: 'internal-row-template', foreach: rows}">
     </div>
     <div class="container-fluid" data-bind="visible: $root.isEditing()">
-      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, sortable: { data: drops, isEnabled: $root.isEditing, 'afterMove': function(event){var widget=event.item; var _r = $data.addEmptyRow(); _r.addWidget(widget); columnDropAdditionalHandler(widget)}, options: {'placeholder': 'drop-target-highlight', 'greedy': true, 'stop': function(event, ui){}}}"></div>
+      <div data-bind="css: {'drop-target': true, 'is-editing': $root.isEditing}, droppable: {enabled: $root.isEditing, onDrop: function(){ var _w = $root.addDraggedWidget($data, false); widgetDraggedAdditionalHandler(_w); } }"></div>
     </div>
   </div>
 </script>
@@ -216,7 +216,7 @@ ${ commonheader(_("Workflow Editor"), "Oozie", user) | n,unicode }
     <div class="row-fluid" data-bind="visible: $index() > 0 && $root.isEditing() && ! $root.isRowBeforeJoin($data) && ! $root.isRowAfterFork($data)" style="margin-bottom: 10px">
       <div data-bind="css: {'span1': true, 'readonly': ! $root.isEditing()}"></div>
       <div data-bind="css: {'span10': true, 'readonly': ! $root.isEditing()}">
-        <div style="text-align: left" data-bind="visible: $root.isEditing(), css: {'drop-target': true, 'is-editing': $root.isEditing}, droppable: {enabled: $root.isEditing, onDrop: function(){ var _w = $root.addDraggedWidget($data, true); widgetDraggedAdditionalHandler(_w); } }"></div>
+        <div style="text-align: left" data-bind="visible: $root.isEditing(), css: {'drop-target': true, 'is-editing': $root.isEditing}, droppable: {enabled: $root.isEditing, onDrop: function(){ var _w = $root.addDraggedWidget($data); widgetDraggedAdditionalHandler(_w); } }"></div>
       </div>
       <div data-bind="css: {'span1': true, 'readonly': ! $root.isEditing()}"></div>
     </div>

+ 15 - 9
apps/oozie/static/js/workflow-editor.ko.js

@@ -389,18 +389,24 @@ var WorkflowEditorViewModel = function (layout_json, workflow_json, credentials_
     self.currentlyDraggedWidget = widget;
   }
 
-  self.addDraggedWidget = function (row, atBeginning) {
+  self.addDraggedWidget = function (target, atBeginning) {
     if (self.currentlyDraggedWidget != null) {
-      var _parentCol = self.getRowParentColumn(row.id());
+      var _parentCol = target instanceof Column ? target : self.getRowParentColumn(target.id());
 
-      var _rowIdx = 0;
-      $.each(_parentCol.rows(), function (i, irow) {
-        if (irow.id() == row.id()) {
-          _rowIdx = i;
-        }
-      });
+      var _newRow = null;
+      if (typeof atBeginning != "undefined"){
+        _newRow = _parentCol.addEmptyRow(atBeginning);
+      }
+      else {
+        var _rowIdx = 0;
+        $.each(_parentCol.rows(), function (i, irow) {
+          if (irow.id() == target.id()) {
+            _rowIdx = i;
+          }
+        });
 
-      var _newRow = _parentCol.addEmptyRow(false, _rowIdx);
+        _newRow = _parentCol.addEmptyRow(false, _rowIdx);
+      }
       var _w = new Widget({
         size: self.currentlyDraggedWidget.size(),
         id: UUID(),

+ 1 - 1
desktop/core/static/js/ko.layout.js

@@ -76,7 +76,7 @@ var Column = function (size, rows) {
       self.rows.splice(atIndex, 0, row);
     }
     else {
-      if (typeof atBeginning == "undefined" || atBeginning == null) {
+      if (typeof atBeginning == "undefined" || atBeginning == null || !atBeginning) {
         self.rows.push(row);
       }
       else {