<!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="font-awesome/css/font-awesome.min.css"/>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="ace/ace-styles.css">
<script src="ace/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="ace/ace-diff.js"></script>
<script src="ace/diff_match_patch.js"></script> 
<script src="ace/mode-json.js"></script> 
<!-- <script src="ace/mode-javascript.js"></script>  -->
<script src="ace/mode-xml.js"></script> 
<!--<script src="ace/theme-dreamweaver.js"></script> -->
<script src="ace/theme-eclipse.js"></script> 
</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">Ctrl</span> <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">o</span></td><td>RPC Input</td>
	<td></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>
<div id="test-dg-dialog" class="hide"></div>
<div id="ctx-values-dialog" class="hide"></div>
<div id="list-input-browser-dialog" class="hide"></div>
<div id="diff-browser-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="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 format_xml = "Y";
var format_json = "Y";
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() {
        });
});

$.get("/getCurrentSettings")
        .done(function( data ) {
		//console.dir(data);
                if(data != undefined && data != null){
			format_xml = data.formatXML;	
			format_json = data.formatJSON;	
                }
        })
	.fail(function(err) {
        })
        .always(function() {
        });

</script>
</body>
</html>
