
<!--
Copyright 2017-present Open Networking Foundation

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.
-->


<div id="shell-panel">
  <div>
    Type <code>help</code> or hit <code>TAB</code> for a list of commands.
  </div>
  <div id="shell-view"></div>
</div>

<section class="component-container" ng-show="vm.componentScope">
  <div class="row">
    <div class="col-xs-6">
      <label>Config:</label>
    </div>
    <div class="col-xs-6">
      <label>data:</label>
    </div>
  </div>
  <div class="row">
    <div class="col-xs-6">
      <div ng-model="vm.componentScope.config" ui-ace></div>
    </div>
    <div class="col-xs-6">
      <div ng-model="vm.componentScope.data" ui-ace></div>
    </div>
  </div>
  <div class="row">
    <div class="col-xs-12 text-right">
      <a href="" ng-click="vm.applyScope(vm.componentScope)" class="btn btn-success">Apply Changes</a>
    </div>
  </div>
  <div id="directive-container"></div>
</section>