<!--
~ Copyright 2019-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.
-->
<svg:defs xmlns:svg="http://www.w3.org/2000/svg">
    <!-- Template explanation: Define an SVG Filter that in
        line 1) render the target object in to a bit map and apply a blur to it
            based on its alpha channel
        line 2) take that blurred layer and shift it down and to the right by 4
        line 3) Merge this blurred and shifted layer and overlay it with the
            original target object
    -->
    <svg:filter id="drop-shadow" x="-25%" y="-25%" width="200%" height="200%">
        <svg:feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur" />
        <svg:feOffset in="blur" dx="4" dy="4" result="offsetBlur"/>
        <svg:feMerge >
            <svg:feMergeNode in="offsetBlur" />
            <svg:feMergeNode in="SourceGraphic" />
        </svg:feMerge>
    </svg:filter>
    <svg:linearGradient id="diagonal_blue" x1="0%" y1="0%" x2="100%" y2="100%">
        <svg:stop offset= "0%" style="stop-color: #7fabdb;" />
        <svg:stop offset= "100%" style="stop-color: #5b99d2;" />
    </svg:linearGradient>
</svg:defs>
<!-- Template explanation: Creates an SVG Group and in
    line 1) transform it to the position calculated by the d3 force graph engine
    line 2) Give it various CSS styles depending on attributes
    line 3) When it is clicked, call the method that toggles the selection and
        emits an event.
    Other child objects have their own description
-->
<svg:g xmlns:svg="http://www.w3.org/2000/svg"
       [attr.transform]="'translate(' + device?.x + ',' + device?.y + '), scale(' + scale + ')'"
        [ngClass]="['node', 'device', device.online?'online':'', selected?'selected':'']"
        (click)="toggleSelected(device)">
    <svg:desc>Device {{device.id}}</svg:desc>
    <!-- Template explanation: Creates an SVG Rectangle and in
        line 1) set a css style and shift so that it's centred
        line 2) set the initial width and height - width changes with label
        line 3) link to the animation 'deviceLabelToggle', pass in to it a width
            calculated from the width of the text, and additional padding at the end
        line 4) Apply the filter defined above to this rectangle (even as its
            width changes
    -->
    <svg:rect
            class="node-container" x="-18" y="-18"
            width="36" height="36"
            [@deviceLabelToggle]="{ value: labelToggle, params: {txtWidth: (36 + labelTextLen() * 1.1)+'px' }}"
            filter= "url(#drop-shadow)">
    </svg:rect>
    <!-- Template explanation: Creates an SVG Rectangle slightly smaller and
        overlaid on the above. This is the blue box, and its width and height does
        not change
    -->
    <svg:rect x="-16" y="-16" width="32" height="32" style="fill: url(#diagonal_blue)">
    </svg:rect>
    <!-- Template explanation: Creates an SVG Text element and in
        line 1) make it left aligned and slightly down and to the right of the last rect
        line 2) set its text length to be the calculated value - see that function
        line 3) because of kerning the actual text might be shorter or longer than
            the pre-calculated value - if so change the spacing between the letters
            (and not the letter width to compensate)
        line 4) link to the animation deviceLabelToggleTxt, so that the text appears
            in gently
        line 5) The text will be one of 3 values - blank, the id or the name
    -->
    <svg:text
            text-anchor="start" y="0.3em" x="22"
            [attr.textLength]= "labelTextLen()"
            lengthAdjust= "spacing"
            [ngStyle]="{'transform': 'scale(' + scale + ')'}"
            [@deviceLabelToggleTxt]="labelToggle">
        {{ labelToggle == 0 ? '': labelToggle == 1 ? device.id:device.props.name }}
    </svg:text>
    <svg:use [attr.xlink:href]="'#' + deviceIcon()" width="36" height="36" x="-18" y="-18">
    </svg:use>
</svg:g>