description: >

  This Service visualizes data of a the simulated-shop floor connectivity
  layer.

metadata:

  name: Data Visualization
  version: 1.0.0
  icon: https://www.cybus.io/wp-content/uploads/2017/10/for-whom3.svg
  provider: cybus
  homepage: https://www.cybus.io

parameters:

  connectivityService:
    type: string
    default: connectivitylayer

definitions:

  CYBUS_MQTT_ROOT: cybus/baz-simulator

resources:

  dashboard:
    type: Cybus::Container
    properties:
      image: registry.cybus.io/cybus-services/baz-dashboard:0.2.3
      volumes:
        - !sub '${dashboardData}:/root/.node-red'
      environment:
        MQTT_HOST: !ref Cybus::MqttHost
        MQTT_USER: !ref Cybus::MqttUser
        MQTT_PASS: !ref Cybus::MqttPassword
        MQTT_PORT: !ref Cybus::MqttPort
        HTTP_ROOT: /

  dashboardData:
    type: Cybus::Volume

  dashboardRoute:
    type: Cybus::IngressRoute
    properties:
      container: !ref dashboard
      type: http
      slug: dashboard
      target:
        path: /
        port: 1880

  dashboardLink:
    type: Cybus::Link
    properties:
      ingressRoute: !ref dashboardRoute
      href: ui/
      name: Dashboard

  mapping:
    type: Cybus::Mapping
    properties:
      mappings:
        - subscribe:
            endpoint: !ref '${connectivityService}::currentState'
          publish:
            topic: !sub '${CYBUS_MQTT_ROOT}/current-state'

        - subscribe:
            endpoint: !ref '${connectivityService}::currentTool'
          publish:
            topic: !sub '${CYBUS_MQTT_ROOT}/current-tool'

        - subscribe:
            endpoint: !ref '${connectivityService}::coolantLevel'
          publish:
            topic: !sub '${CYBUS_MQTT_ROOT}/coolant-level'

        - subscribe:
            endpoint: !ref '${connectivityService}::spindleSpeed'
          publish:
            topic: !sub '${CYBUS_MQTT_ROOT}/spindle-speed'

        # debug

        - subscribe:
            endpoint: !ref '${connectivityService}::spindleSpeed'
          rules:
            - transform:
                expression: |
                  {
                    "value": $
                  }
          publish:
            topic: debug/spindleSpeed
