<!--
 Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)

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

{% extends 'base.html' %}

{% block content %}
<h1>Service {{ service.service_id.service_uuid.uuid }}</h1>

<div class="row mb-3">
    <div class="col-sm-3">
        <button type="button" class="btn btn-success" onclick="window.location.href='{{ url_for('service.home') }}'">
            <i class="bi bi-box-arrow-in-left"></i>
            Back to service list
        </button>
    </div>
    <!--
    <div class="col-sm-3">
        <a id="update" class="btn btn-secondary" href="#">
            <i class="bi bi-pencil-square"></i>
            Update
        </a>
    </div>-->
    <div class="col-sm-3">
        <!-- <button type="button" class="btn btn-danger"><i class="bi bi-x-square"></i>Delete service</button> -->
        <button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#deleteModal">
            <i class="bi bi-x-square"></i>Delete service
        </button>
    </div>
</div>

<div class="row mb-3">
    <div class="col-sm-4">
        <b>UUID: </b> {{ service.service_id.service_uuid.uuid }}<br><br>
        <b>Type: </b> {{ ste.Name(service.service_type).replace('SERVICETYPE_', '') }}<br><br>
        <b>Status: </b> {{ sse.Name(service.service_status.service_status).replace('SERVICESTATUS_', '') }}<br><br>
    </div>
    <div class="col-sm-8">
        <table class="table table-striped table-hover">
            <thead>
                <tr>
                    <th scope="col">Endpoints</th>
                    <th scope="col">Device</th>
                </tr>
            </thead>
            <tbody>
                {% for endpoint in service.service_endpoint_ids %}
                <tr>
                    <td>
                        {{ endpoint.endpoint_uuid.uuid }}
                    </td>
                    <td>
                        <a href="{{ url_for('device.detail', device_uuid=endpoint.device_id.device_uuid.uuid) }}">
                            {{ endpoint.device_id.device_uuid.uuid }}
                            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                                class="bi bi-eye" viewBox="0 0 16 16">
                                <path
                                    d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z" />
                                <path
                                    d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z" />
                            </svg>
                        </a>
                    </td>
                </tr>
                {% endfor %}
            </tbody>
        </table>
    </div>
</div>
<b>Constraints:</b>
<table class="table table-striped table-hover">
    <thead>
        <tr>
            <th scope="col">Kind</th>
            <th scope="col">Type</th>
            <th scope="col">Value</th>
        </tr>
    </thead>
    <tbody>
        {% for constraint in service.service_constraints %}
        {% if constraint.WhichOneof('constraint')=='custom' %}
        <tr>
            <td>Custom</td>
            <td>{{ constraint.custom.constraint_type }}</td>
            <td>{{ constraint.custom.constraint_value }}</td>
        </tr>
        {% elif constraint.WhichOneof('constraint')=='endpoint_location' %}
        <tr>
            <td>Endpoint Location</td>
            <td>
                {{ constraint.endpoint_location.endpoint_id.device_id.device_uuid.uuid }} / {{
                constraint.endpoint_location.endpoint_id.endpoint_uuid.uuid }}
            </td>
            <td>
                {% if constraint.endpoint_location.location.WhichOneof('location')=='region' %}
                    Region: {{ constraint.endpoint_location.location.region }}
                {% elif constraint.endpoint_location.location.WhichOneof('location')=='gps_position' %}
                    Position (lat/long):
                    {{ constraint.endpoint_location.location.gps_position.latitude }} /
                    {{ constraint.endpoint_location.location.gps_position.longitude }}
                {% endif %}
            </td>
        </tr>
        {% elif constraint.WhichOneof('constraint')=='endpoint_priority' %}
        <tr>
            <td>Endpoint Priority</td>
            <td>
                {{ constraint.endpoint_priority.endpoint_id.device_id.device_uuid.uuid }} / {{
                constraint.endpoint_priority.endpoint_id.endpoint_uuid.uuid }}
            </td>
            <td>{{ constraint.endpoint_priority.priority }}</td>
        </tr>
        {% elif constraint.WhichOneof('constraint')=='sla_availability' %}
        <tr>
            <td>SLA Availability</td>
            <td>-</td>
            <td>
                {{ constraint.sla_availability.num_disjoint_paths }} disjoint paths;
                {% if constraint.sla_availability.all_active %}all{% else %}single{% endif %}active
            </td>
        </tr>
        {% else %}
        <tr>
            <td>-</td>
            <td>-</td>
            <td>{{ constraint }}</td>
        </tr>
        {% endif %}
        {% endfor %}
    </tbody>
</table>
<b>Configurations:</b>
<table class="table table-striped table-hover">
    <thead>
        <tr>
            <th scope="col">Key</th>
            <th scope="col">Value</th>
        </tr>
    </thead>
    <tbody>
        {% for config in service.service_config.config_rules %}
        {% if config.WhichOneof('config_rule') == 'custom' %}
        <tr>
            <td>
                {{ config.custom.resource_key }}
            </td>
            <td>
                <ul>
                    {% for key, value in (config.custom.resource_value | from_json).items() %}
                    <li><b>{{ key }}:</b> {{ value }}</li>
                    {% endfor %}
                </ul>
            </td>
        </tr>
        {% endif %}
        {% endfor %}
    </tbody>
</table>
<!-- Modal -->
<div class="modal fade" id="deleteModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"
    aria-labelledby="staticBackdropLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="staticBackdropLabel">Delete service?</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                Are you sure you want to delete the service "{{ service.service_id.service_uuid.uuid }}"?
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">No</button>
                <a type="button" class="btn btn-danger"
                    href="{{ url_for('service.delete', service_uuid=service.service_id.service_uuid.uuid) }}"><i
                        class="bi bi-exclamation-diamond"></i>Yes</a>
            </div>
        </div>
    </div>
</div>


<table class="table table-striped table-hover">
    <thead>
        <tr>
            <th scope="col">Connection Id</th>
            <th scope="col">Sub-service</th>
            <th scope="col">Path</th>
        </tr>
    </thead>
    <tbody>
        {% for connection in connections.connections %}
        <tr>
            <td>
                {{ connection.connection_id.connection_uuid.uuid }}
            </td>
            <td>
                <ul>
                {% for sub_service_id in connection.sub_service_ids %}
                    <li>
                        <a href="{{ url_for('service.detail', service_uuid=sub_service_id.service_uuid.uuid) }}">
                            {{ sub_service_id.service_uuid.uuid }}
                            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-eye" viewBox="0 0 16 16">
                                <path d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"/>
                                <path d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"/>
                            </svg>
                        </a>
                    </li>
                {% endfor %}
                </ul>
            </td>

            {% for i in range(connection.path_hops_endpoint_ids|length) %}
            <td>
                {{ connection.path_hops_endpoint_ids[i].device_id.device_uuid.uuid }} / {{
                connection.path_hops_endpoint_ids[i].endpoint_uuid.uuid }}
            </td>
            {% endfor %}
        </tr>
        {% endfor %}
    </tbody>
</table>





{% endblock %}