
<!--
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 class="row" ng-show="vm.elines.length == 0">
    <div class="col-xs-10 col-xs-offset-1 text-center">
        <div class="jumbotron" style="margin-top: 100px">
            <div class="row">
                <div class="col-sm-4">
                    <img ng-src="{{'/imgs/'+user.image+'.jpg'}}" class="img-responsive img-rounded">
                </div>
                <div class="col-sm-8">
                    <h1>Hello, {{currentUser.name}}</h1>
                    <p style="padding-top: 20px">
                        Looks like you have not yet created any E-LINE!
                    </p>
                    <div style="margin-top: 60px">
                        <a class="btn btn-success btn-lg" href="#/eline" role="button">Start now</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<div class="row" ng-show="vm.elines.length > 0">
    <div class="col-sm-6">
        <div class="panel panel-primary animate-vertical" ng-hide="vm.elines.length == 0">
            <div class="panel-heading">
                <h3 class="panel-title">E-LINES</h3>
            </div>
            <div class="panel-body">
                <elan-map elan="vm.elines"></elan-map>
            </div>
        </div>
    </div>
    <div class="col-sm-6 eline-list">
        <div class="panel panel-primary table-container" ng-show="vm.elines.length >
        0">
            <!-- <pre>{{elans | json}}</pre> -->
            <table class="table">
                <thead>
                <tr>
                    <th>E-LINE</th>
                    <th>Unis</th>
                </tr>
                </thead>
                <tbody>
                <tr ng-repeat="eline in vm.elines | orderBy:'id'" ng-click="vm.selectEline(eline)">
                    <td>{{eline.sid}}</td>
                    <td>
                <span> - </span>
                  {{eline.uni1.location}}
                     {{eline.uni1.pid}}
                </span>
                <span> - </span>
                  {{eline.uni2.location}}
                     {{eline.uni2.pid}}
                </span>
                    </td>
                </tr>
                </tbody>
            </table>
        </div>
        <a class="btn btn-success btn-lg btn-block" href="#/eline" role="button">Create a new E-LINE!</a>
    </div>
</div>