

<!--
    ~ 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.
    -->
<table class="table table-bordered">
    <thead>
        <tr>
            <th>Name</th>
            <th>Comment</th>
            <th ng-if="!isHiveSchema">DataType</th>
            <th ng-if="isHiveSchema">Type</th>
            <th ng-if="isTraitId">Tags </th>
            <th ng-if="isTraitId">Tools</th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="colm in schema">
            <td> 
                <a ng-if="colm['$id$']" data-ui-sref="details({id:colm['$id$'].id})">{{colm.name}}</a> 
                <span ng-if="!colm['$id$']"> {{colm.name}} </span>
            </td>
            <td>{{colm.comment}}</td>
            <td ng-if="!isHiveSchema"> {{colm.dataType}}</td>
            <td ng-if="isHiveSchema"> {{colm.type}}</td>
            <td ng-if="colm['$id$']">
                <div id="{{colm['$id$'].id}}_schema" class="wordBreak"><a class="tabsearchanchor" ng-repeat="(key, value) in colm['$traits$']" data-ui-sref="search({query: key})" title="{{key}}">{{key}}<span> </span></a></div>
            </td>
            <td ng-if="colm['$id$']" class="addTag">
                <img ng-src="img/addTag.png" tooltip="Add Tag" ng-click="openAddTagHome(colm['$id$'].id )">
            </td>
        </tr>
    </tbody>
</table>