Эх сурвалжийг харах

[notebook] Double click on a snippet name adds a new snippet before it

Enrico Berti 10 жил өмнө
parent
commit
419e1d9b69

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

@@ -2067,4 +2067,15 @@
       }
     }
   };
+
+  ko.bindingHandlers.dblclick = {
+    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
+      var fn = valueAccessor();
+      $(element).dblclick(function () {
+        var data = ko.dataFor(this);
+        fn.call(viewModel, data);
+      });
+    }
+  };
+
 }));

+ 9 - 0
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -858,6 +858,15 @@
       return snippet;
     };
 
+    self.newSnippetAbove = function (id) {
+      self.newSnippet();
+      var idx = 0;
+      self.snippets().forEach(function (snippet, cnt) {
+        if (snippet.id() == id) idx = cnt;
+      });
+      self.snippets(self.snippets().move(self.snippets().length - 1, idx));
+    }
+
     self.getContext = function() {
      return {
          id: self.id,

+ 1 - 1
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -331,7 +331,7 @@ ${ require.config() }
 
       <h5 class="card-heading-print" data-bind="text: name, css: {'visible': name() != ''}"></h5>
 
-      <h2 class="card-heading simple" data-bind="visible: type() != 'text' || $root.isEditing()">
+      <h2 class="card-heading simple" data-bind="visible: type() != 'text' || $root.isEditing(), dblclick: function(){ $parent.newSnippetAbove(id()) }">
 
         <div class="dropdown inline widget-type" data-bind="visible: type() != 'text' || $root.isEditing()">
           <a class="dropdown-toggle no-underline" data-toggle="dropdown" href="javascript:void(0)">