<!DOCTYPE html>
<html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">

<!--
  Copyright 2013, 2014 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.
-->
<head>
<!--<title>Node-RED</title>-->
<title>Directed Graph Builder</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="jquery/css/smoothness/jquery-ui-1.10.3.custom.min.css" rel="stylesheet" media="screen">
<link rel="stylesheet" type="text/css" href="orion/built-editor.css"/>
<link rel="stylesheet" type="text/css" href="font-awesome/css/font-awesome.min.css"/>
<link rel="stylesheet" href="style.css">
</head>
<body spellcheck="false">
<div id="header">
    <!--<span class="logo"><img src="node-red.png"> <span>Node-RED</span></span>-->
    <!--<span class="logo"><img src="node-red.png"> <span>Directed Graph Builder</span></span>-->
    <span class="logo"><img src="node-red.png"> <span>Directed Graph Builder</span><span id='processingStatusId' ></span></span>
    <div class="pull-right">
	<span id='releaseId' ></span>
        <a id="btn-deploy" class="button action-deploy disabled" href="#"><i id="btn-icn-deploy" class="fa fa-download"></i>Save</a>
        <a id="btn-sidemenu" class="button dropdown-toggle" data-toggle="dropdown" href="#"><i class="fa fa-bars"></i></a>
    </div>
</div>
<div id="main-container" class="sidebar-closed">
    <div id="palette">
        <img src="spin.svg" class="palette-spinner"/>
        <div id="palette-container" class="palette-scroll">
        </div>
        <div id="palette-search">
            <i class="fa fa-search"></i><input id="palette-search-input" type="text" placeholder="filter"><a href="#" id="palette-search-clear"><i class="fa fa-times"></i></a></input>
        </div>
    </div><!-- /palette -->

    <div id="workspace">
        <ul id="workspace-tabs"></ul>
        <div id="workspace-add-tab"><a id="btn-workspace-add-tab" href="#"><i class="fa fa-plus"></i></a></div>
        <div id="chart"></div>
        <div id="workspace-toolbar">
            <div class="btn-group">
                <a class="btn btn-small" href="#"><i class="fa fa-search-minus"></i></a>
                <a class="btn btn-small" href="#"><i class="fa fa-dot-circle-o"></i></a>
                <a class="btn btn-small" href="#"><i class="fa fa-search-plus"></i></a>
            </div>
        </div>
    </div>

    <div id="chart-zoom-controls">
        <div class="btn-group">
            <a class="btn btn-mini" id="btn-zoom-out" href="#"><i class="fa fa-search-minus"></i></a>
            <a class="btn btn-mini" id="btn-zoom-zero" href="#"><i class="fa fa-dot-circle-o"></i></a>
            <a class="btn btn-mini" id="btn-zoom-in" href="#"><i class="fa fa-search-plus"></i></a>
        </div>
    </div>

    <div id="sidebar">
        <ul id="sidebar-tabs"></ul>
        <div id="sidebar-content"></div>
    </div>

    <div id="sidebar-separator"></div>

</div>

<div id="notifications"></div>
<div id="dropTarget"><div>Drop the flow here<br/><i class="fa fa-download"></i></div></div>

<div id="dialog" class="hide"><form id="dialog-form" class="form-horizontal"></form></div>
<div id="node-config-dialog" class="hide"><form id="dialog-config-form" class="form-horizontal"></form><div class="form-tips" id="node-config-dialog-user-count"></div></div>

<div id="node-dialog-confirm-deploy" class="hide">
    <form class="form-horizontal">
        <div id="node-dialog-confirm-deploy-config" style="text-align: center; padding-top: 30px;">
         Some of the nodes are not properly configured. Are you sure you want to deploy?
        </div>
        <div id="node-dialog-confirm-deploy-unknown" style="text-align: center; padding-top: 10px;">
         The workspace contains some unknown node types:
         <ul style="width: 300px; margin: auto; text-align: left;" id="node-dialog-confirm-deploy-unknown-list"></ul>
         Are you sure you want to deploy?
        </div>
    </form>
</div>

<div id="node-help" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="node-help-label" aria-hidden="true">
  <div class="modal-header">
    <h5 id="node-help-label">Keyboard Shortcuts <!-- <span style="float: right;"><a href="http://node-red.github.io/docs" target="_blank">Open help in new window &raquo;</a></span> -->
</h5>
  </div>
  <div class="modal-body">
    <table>
        <tr>
          <td><span class="help-key">?</span></td><td>Help</td>
          <td><span class="help-key">Ctrl</span> <span class="help-key">a</span></td><td>Select all nodes</td>
        </tr>
        <tr>
          <td><span class="help-key">Ctrl</span> <span class="help-key">Space</span></td><td>Toggle sidebar</td>
          <td><span class="help-key">Shift</span> <span class="help-key">Click</span></td><td>Select all connected nodes</td>
        </tr>
        <tr>
          <td><span class="help-key">Ctrl</span> <span class="help-key">z</span></td><td>Undo</td>
          <td><span class="help-key">Ctrl</span> <span class="help-key">Click</span></td><td>Add/remove node from selection</td>
        </tr>
        <tr>
          <td><span class="help-key">Ctrl</span> <span class="help-key">m</span></td><td>Toggle Node Palette</td>
          <td><span class="help-key">Delete</span></td><td>Delete selected nodes or link</td>
        </tr>
        <tr>
          <td><span class="help-key">Ctrl</span> <span class="help-key">x</span></td><td>Cut selected nodes</td>
          <td><span class="help-key">Ctrl</span> <span class="help-key">b</span></td><td>Find Node</td>
        </tr>
        <tr>
          <td><span class="help-key">Ctrl</span> <span class="help-key">c</span></td><td>Copy selected nodes</td>
          <td><span class="help-key">Ctrl</span> <span class="help-key">v</span></td><td>Paste nodes</td>
        </tr>
        <tr>
          <td><span class="help-key">Ctrl</span> <span class="help-key">i</span></td><td>Import nodes</td>
          <td><span class="help-key">Ctrl</span> <span class="help-key">e</span></td><td>Export selected nodes</td>
        </tr>
        <tr>
          <td colspan="2"></td>
        </tr>
        <tr>
          <td><span class="help-key">Ctrl</span> <span class="help-key">+</span></td><td>Zoom in</td>
          <td><span class="help-key">Ctrl</span> <span class="help-key">-</span></td><td>Zoom out</td>
        </tr>
    </table>
  </div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
  </div>
</div>

<div id="node-dialog-library-save-confirm" class="hide">
    <form class="form-horizontal">
        <div style="text-align: center; padding-top: 30px;">
         A <span id="node-dialog-library-save-type"></span> called <span id="node-dialog-library-save-name"></span> already exists. Overwrite?
        </div>
    </form>
</div>

<div id="node-dialog-library-save" class="hide">
    <form class="form-horizontal">
        <div class="form-row">
            <label for="node-dialog-library-save-folder"><i class="fa fa-folder-open"></i> Folder</label>
            <input type="text" id="node-dialog-library-save-folder" placeholder="Folder">
        </div>
        <div class="form-row">
            <label for="node-dialog-library-save-filename"><i class="fa fa-file"></i> Filename</label>
            <input type="text" id="node-dialog-library-save-filename" placeholder="Filename">
        </div>
    </form>
</div>

<div id="node-dialog-library-lookup" class="hide">
    <form class="form-horizontal">
        <div class="form-row">
            <ul id="node-dialog-library-breadcrumbs" class="breadcrumb">
                <li class="active"><a href="#">Library</a></li>
            </ul>
        </div>
        <div class="form-row">
            <div style="vertical-align: top; display: inline-block; height: 100%; width: 30%; padding-right: 20px;">
                <div id="node-select-library" style="border: 1px solid #999; width: 100%; height: 100%; overflow:scroll;"><ul></ul></div>
            </div>
            <div style="vertical-align: top; display: inline-block;width: 65%; height: 100%;">
                <div style="height: 100%; width: 95%;" class="node-text-editor" id="node-select-library-text" ></div>
            </div>
        </div>
    </form>
</div>
<div id="node-dialog-rename-workspace" class="hide">
    <form class="form-horizontal">
        <div class="form-row">
            <label for="node-input-workspace-name" ><i class="fa fa-tag"></i> Name:</label>
            <input type="text" id="node-input-workspace-name">
        </div>
    </form>
</div>
<div id="node-dialog-delete-workspace" class="hide">
    <form class="form-horizontal">
        <div style="text-align: center; padding-top: 30px;">
         Are you sure you want to delete '<span id="node-dialog-delete-workspace-name"></span>'?
        </div>
    </form>
</div>
<div id="xmldialog" class="hide"></div>
<div id="filter-tabs-dialog" class="hide"></div>
<div id="loop-detection-dialog" class="hide"></div>
<div id="dgnumber-find-dialog" class="hide"></div>
<div id="search-text-dialog" class="hide"></div>
<div id="dgstart-generate-xml-dialog" class="hide"></div>
<div id="update-password-dialog" class="hide"></div>
<div id="update-configuration-dialog" class="hide"></div>
<div id="dgflow-browser-dialog" class="hide"></div>
<div id="codecloud-browser-dialog" class="hide"></div>
<div id="gitlocal-browser-dialog" class="hide"></div>
<div id="gitcommands-dialog" class="hide"></div>
<div id="upload-xml-status-dialog" class="hide"></div>
<div id="flow-design-err-dialog" class="hide"></div>
<div id="sli-values-dialog" class="hide"></div>
<div id="comments-dialog" class="hide"></div>
<div id="show-errors-dialog" class="hide"></div>
<div id="yang-upload-dialog" class="hide"></div>
<div id="yang-modules-browser-dialog" class="hide"></div>
<div id="list-yang-browser-dialog" class="hide"></div>
<div id="request-input-dialog" class="hide"></div>
<script type="text/x-red" data-template-name="export-clipboard-dialog">
    <div class="form-row">
        <label for="node-input-export" style="display: block; width:100%;"><i class="fa fa-clipboard"></i> Nodes:</label>
        <textarea readonly style="font-family: monospace; font-size: 12px; background:rgb(226, 229, 255); padding-left: 0.5em;" class="input-block-level" id="node-input-export" rows="5"></textarea>
    </div>
    <div class="form-tips">
        Select the text above and copy to the clipboard with Ctrl-A Ctrl-C.
    </div>
</script>
<script type="text/x-red" data-template-name="export-library-dialog">
    <div class="form-row">
        <label for="node-input-filename" ><i class="fa fa-file"></i> Filename:</label>
        <input type="text" id="node-input-filename" placeholder="Filename">
    </div>
</script>
<script type="text/x-red" data-template-name="import-dialog">
    <div class="form-row">
        <label for="node-input-import"><i class="fa fa-clipboard"></i> Nodes:</label>
        <textarea style="font-family: monospace; font-size: 12px; background:rgb(226, 229, 255); padding-left: 0.5em;" class="input-block-level" id="node-input-import" rows="5" placeholder="Paste nodes here"></textarea>
    </div>
</script>

<script src="jquery/js/jquery-1.11.1.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="jquery/js/jquery-ui-1.10.3.custom.min.js"></script>
<script src="jquery/js/jquery.ui.touch-punch.min.js"></script>
<script src="orion/built-editor.min.js"></script>
<script src="d3.v3.min.js"></script>

<script src="red/main.js"></script>
<script src="red/comms.js"></script>
<script src="red/ui/state.js"></script>
<script src="red/nodes.js"></script>
<script src="red/history.js"></script>
<script src="red/validators.js"></script>
<script src="red/ui/menu.js"></script>
<script src="red/ui/keyboard.js"></script>
<script src="red/ui/tabs.js"></script>
<script src="red/ui/view.js"></script>
<script src="red/ui/sidebar.js"></script>
<script src="red/ui/palette.js"></script>
<script src="red/ui/tab-info.js"></script>
<script src="red/ui/tab-config.js"></script>
<script src="red/ui/editor.js"></script>
<script src="red/ui/library.js"></script>
<script src="red/ui/notifications.js"></script>
<script src="red/ui/touch/radialMenu.js"></script>


<script lang="javascript">
 $(function() {
        RED.keyboard.add(/* M */ 77,{ctrl:true},function(){RED.menu.setSelected("btn-node-panel",!RED.menu.isSelected("btn-node-panel"));d3.event.preventDefault();});
	RED.menu.setSelected("btn-node-panel",true);
    });

var sliValuesObj = {};
var rpcValues = {};
var reqInputValues = {};
$(function(){
 $.get("/initialLoadSelectedModules")
        .done(function( data ) {
		//console.dir(data);
                if(data != undefined && data != null){
		      for(var i=0;i<data.sliValuesObj.length;i++){
		        	var moduleName = data.sliValuesObj[i].moduleName;	
                        	//console.dir(data.sliValuesObj[i][ moduleName + '_PROPS']);
                        	//console.dir(data.sliValuesObj[i][moduleName + '_RPCS']);
				sliValuesObj[moduleName] = data.sliValuesObj[i][moduleName + '_PROPS'];
				rpcValues[moduleName] = data.sliValuesObj[i][ moduleName +'_RPCS'];
				for(var k=0;rpcValues[moduleName] != undefined && k<rpcValues[moduleName].length;k++){
					var rpcName = rpcValues[moduleName][k];
					reqInputValues[moduleName + "_" + rpcName] = data.sliValuesObj[i][rpcName +"-input"];
				}
			}
                }

        })
        .fail(function(err) {
		console.dir(err);
        })
        .always(function() {
        });
});

</script>
<script>
 $(document).ready(function() {

var urlPath="/getRelease";
	$.get(urlPath)
        .done(function( data ) {
		//console.dir(data);
                if(data != undefined && data != null){
			var release = data.release;
        		//document.title +=" " + release;
			$("#releaseId").text("Workspace:" + release);
			$("#releaseId").css({color:'lightgrey'});
			
                }
        })
	.fail(function(err) {
        })
        .always(function() {
        });
});
</script>
</body>
</html>
