<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you 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="rightbar" ng-controller="SideBarCtrl" class="" style="background-color:#262626;">

    <div id="side-bar-stats" class="row" style="border-bottom:5px solid #060606;margin-left:0;margin-right:0">

        <!--<div class="row-container">-->
        <div class="col-xs-12 col-md-12 col-lg-6 " id="sidebar-option">

            <div >

                <div class="sidebar-stat-center">
                    <img src="/img/sidebar1.png" >
                    <span><a class="bark-link" href="#!/dataassets">{{datasets}}&nbsp;Data Assets</a></span>
                </div>

                <div class="sidebar-stat-center">
                    <img src="/img/sidebar2.png">
                    <span><a class="bark-link" href="#!/metrics">{{metrics}}&nbsp;DQ Metrics</a></span>
                </div>

            </div>

        </div>
        <div class="col-xs-12 col-md-12 col-lg-6">
            <div id="data-asset-pie"></div>
        </div>
        <!--</div>-->
    </div>


    <div id="side-bar-metrics" class="row" style="margin-top:20px;overflow-y:auto;overflow-x:hidden;margin-left:0;margin-right:0;height:1px;">
        <div ng-repeat="outerItems in finalData">
            <div class="well" style="padding:0px;background:transparent;border:0px;position:relative; ">
                <!-- <img class="bullseye" src="/img/bullseye.png" title="image1" > -->
                <div class="col-sm-4 col-lg-4 col-md-4 "><h4 ><a href="#!/metrics/{{outerItems.name}}"> {{outerItems.name}}</a></h4></div>
                <div class="col-sm-3 col-lg-3 col-md-3 " style="display: flex;justify-content: center;height:46px;"><div ng-class="outerItems.dq >=90 ? 'led-green':'led-yellow'" style="align-self: center;"></div></div>
                <!-- <div class="col-sm-5 col-lg-5 col-md-5 " style="display: flex;justify-content: center;height:46px;"><a style="align-self: center;" class="btn btn-primary" href="https://github.com/eBay/DQSolution/issues" target="_blank">Report&nbsp;issue</a></div> -->
            </div>
            <br/>
            <div class="well side-bar-scroll">
                <div class="panel-group" ng-repeat="items in outerItems.metrics" style="margin-bottom:0px;background:transparent;">
                    <div class="panel panel-default" style="position:relative;background:transparent;">
                        <div class="panel-heading" style="background:transparent;">
                            <h4 class="panel-title side-metrics">
                                <a data-toggle="collapse" href={{"#"+outerItems.name+$index}} ng-init="items.tag=true" ng-click="items.tag=!items.tag;draw(items, $parent.$index, $index);" >
                                    <i class="faChevron" ng-class="items.tag ? 'fa fa-caret-right':'fa fa-caret-down'" style="width:10px"></i>

                                    <i class="fa fa-line-chart faArrows"></i>
                                    <span class="side-date">{{items.timestamp | date:'MM/dd HH:mm'}}</span>
                                    &nbsp;&nbsp;
                                    <span class="side-name" title="{{items.name}}">{{items.name |strShorten}}</span>
                                    <span ng-if="items.dq <= 100" class="pull-right" ng-class="items.dqfail?'side-percent-red':'side-percent'">{{items.dq | number:2}}%</span>
                                    <span ng-if="items.dq > 100" class="pull-right" ng-class="items.dqfail?'side-percent-red':''">{{items.dq/1000 | number:0}}K</span>
                                </a>
                            </h4>
                        </div>
                        <div id={{outerItems.name+$index}} class="panel-collapse collapse">
                            <!-- <div class="panel-body">
                              <highchart config="items.chartId">
                            </div> -->
                            <div class="panel-body" style="cursor:pointer;padding:0px 15px;">
                                <div id={{'chart'+$parent.$index+'-'+$index}} class="side-chart"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
