/** Modified from original Node-Red source, for audio system visualization * vim: set ts=4: * Copyright 2013 IBM Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ RED.library = (function() { function loadFlowLibrary() { $.getJSON("library/flows",function(data) { //console.log(data); var buildMenu = function(data,root) { var i; var li; var a; var ul = document.createElement("ul"); ul.className = "dropdown-menu"; if (data.d) { for (i in data.d) { if (data.d.hasOwnProperty(i)) { li = document.createElement("li"); li.className = "dropdown-submenu pull-left"; a = document.createElement("a"); a.href="#"; a.innerHTML = i; li.appendChild(a); li.appendChild(buildMenu(data.d[i],root+(root!==""?"/":"")+i)); ul.appendChild(li); } } } if (data.f) { for (i in data.f) { if (data.f.hasOwnProperty(i)) { li = document.createElement("li"); a = document.createElement("a"); a.href="#"; a.innerHTML = data.f[i]; a.flowName = root+(root!==""?"/":"")+data.f[i]; a.onclick = function() { $.get('library/flows/'+this.flowName, function(data) { RED.view.importNodes(data); }); }; li.appendChild(a); ul.appendChild(li); } } } return ul; }; var menu = buildMenu(data,""); $("#flow-menu-parent>ul").replaceWith(menu); }); } loadFlowLibrary(); function createUI(options) { var libraryData = {}; var selectedLibraryItem = null; var libraryEditor = null; function buildFileListItem(item) { var li = document.createElement("li"); li.onmouseover = function(e) { $(this).addClass("list-hover"); }; li.onmouseout = function(e) { $(this).removeClass("list-hover"); }; return li; } function buildFileList(root,data) { var ul = document.createElement("ul"); var li; for (var i=0;i/ '+dirName+''); $("a",bcli).click(function(e) { $(this).parent().nextAll().remove(); $.getJSON("library/"+options.url+root+dirName,function(data) { $("#node-select-library").children().first().replaceWith(buildFileList(root+dirName+"/",data)); }); e.stopPropagation(); }); var bc = $("#node-dialog-library-breadcrumbs"); $(".active",bc).removeClass("active"); bc.append(bcli); $.getJSON("library/"+options.url+root+dirName,function(data) { $("#node-select-library").children().first().replaceWith(buildFileList(root+dirName+"/",data)); }); } })(); li.innerHTML = ' '+v+""; ul.appendChild(li); } else { // file li = buildFileListItem(v); li.innerHTML = v.name; li.onclick = (function() { var item = v; return function(e) { $(".list-selected",ul).removeClass("list-selected"); $(this).addClass("list-selected"); $.get("library/"+options.url+root+item.fn, function(data) { console.log(data); selectedLibraryItem = item; libraryEditor.setText(data); }); } })(); ul.appendChild(li); } } return ul; } $('#node-input-name').addClass('input-append-left').css("width","65%").after( '
'+ ''+ '
' ); $('#node-input-'+options.type+'-menu-open-library').click(function(e) { $("#node-select-library").children().remove(); var bc = $("#node-dialog-library-breadcrumbs"); bc.children().first().nextAll().remove(); libraryEditor.setText(''); $.getJSON("library/"+options.url,function(data) { $("#node-select-library").append(buildFileList("/",data)); $("#node-dialog-library-breadcrumbs a").click(function(e) { $(this).parent().nextAll().remove(); $("#node-select-library").children().first().replaceWith(buildFileList("/",data)); e.stopPropagation(); }); $( "#node-dialog-library-lookup" ).dialog( "open" ); }); e.preventDefault(); }); $('#node-input-'+options.type+'-menu-save-library').click(function(e) { //var found = false; var name = $("#node-input-name").val().replace(/(^\s*)|(\s*$)/g,""); //var buildPathList = function(data,root) { // var paths = []; // if (data.d) { // for (var i in data.d) { // var dn = root+(root==""?"":"/")+i; // var d = { // label:dn, // files:[] // }; // for (var f in data.d[i].f) { // d.files.push(data.d[i].f[f].fn.split("/").slice(-1)[0]); // } // paths.push(d); // paths = paths.concat(buildPathList(data.d[i],root+(root==""?"":"/")+i)); // } // } // return paths; //}; $("#node-dialog-library-save-folder").attr("value",""); var filename = name.replace(/[^\w-]/g,"-"); if (filename === "") { filename = "unnamed-"+options.type; } $("#node-dialog-library-save-filename").attr("value",filename+".js"); //var paths = buildPathList(libraryData,""); //$("#node-dialog-library-save-folder").autocomplete({ // minLength: 0, // source: paths, // select: function( event, ui ) { // $("#node-dialog-library-save-filename").autocomplete({ // minLength: 0, // source: ui.item.files // }); // } //}); $( "#node-dialog-library-save" ).dialog( "open" ); e.preventDefault(); }); require(["orion/editor/edit"], function(edit) { libraryEditor = edit({ parent:document.getElementById('node-select-library-text'), lang:"js", readonly: true }); }); $( "#node-dialog-library-lookup" ).dialog({ title: options.type+" library", modal: true, autoOpen: false, width: 800, height: 450, buttons: [ { text: "Ok", click: function() { if (selectedLibraryItem) { for (var i=0;i