<!DOCTYPE html>
<html>
  <head>
    <link type="text/css" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" integrity="sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" crossorigin="anonymous">
    <link type="text/css" rel="stylesheet" href="//cdn.leafletjs.com/leaflet-0.7.5/leaflet.css" />
    <link type="text/css" rel="stylesheet" href="style.css" />
    <script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="//cdn.leafletjs.com/leaflet-0.7.5/leaflet.js"></script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.js"></script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.14.3/ui-bootstrap-tpls.min.js"></script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highcharts/4.1.9/highcharts.js"></script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highcharts/4.1.9/themes/dark-unica.js"></script>
    <script type="text/javascript" src="app.js"></script>
  </head>
  <body>
    <div ng-app="app" ng-controller="leaflet" leaflet></div>
  </body>
</html>
angular.module('app', [
  'ui.bootstrap'
])

angular.module('app').controller('leaflet', [
           '$scope', '$uibModal',
  function ($scope,   $uibModal) {
    $scope.openModal = function (event) {
      $uibModal.open({
        'template': '<div highchart></div>',
        'controller': 'highchart',
        'resolve': {
          'data': function () {
            return { 
              series: [{
                name: "Hestavollane",
                data: [0.2, 0.8, 0.8, 0.8, 1, 1.3, 1.5, 2.9, 1.9, 2.6, 1.6, 3, 4, 3.6, 4.5, 4.2, 4.5, 4.5, 4, 3.1, 2.7, 4, 2.7, 2.3, 2.3, 4.1, 7.7, 7.1, 5.6, 6.1, 5.8, 8.6, 7.2, 9, 10.9, 11.5, 11.6, 11.1, 12, 12.3, 10.7, 9.4, 9.8, 9.6, 9.8, 9.5, 8.5, 7.4, 7.6]
              }, {
                name: "Vik",
                data: [0, 0, 0.6, 0.9, 0.8, 0.2, 0, 0, 0, 0.1, 0.6, 0.7, 0.8, 0.6, 0.2, 0, 0.1, 0.3, 0.3, 0, 0.1, 0, 0, 0, 0.2, 0.1, 0, 0.3, 0, 0.1, 0.2, 0.1, 0.3, 0.3, 0, 3.1, 3.1, 2.5, 1.5, 1.9, 2.1, 1, 2.3, 1.9, 1.2, 0.7, 1.3, 0.4, 0.3]
              }]
            }
          }
        }
      })
    }
    $scope.$on('leaflet', function (event, leaflet) {
      leaflet.setView([61.056944, 6.578056], 9)
      new L.Marker([61.056944, 6.578056])
        .on('click', $scope.openModal)
        .addTo(leaflet)
    })
  }
])

angular.module('app').controller('highchart', [
           '$scope', '$uibModalInstance', 'data',
  function ($scope,   $uibModalInstance,   data) {
    $scope.$uibModalInstance = $uibModalInstance
    $scope.data = data
  }
])

angular.module('app').directive('leaflet', [
  function () {
    return {
      link: function (scope, element, attributes) {
        scope.$broadcast('leaflet', new L.Map(element[0], {
          'center': [0, 0],
          'zoom': 0,
          'layers': [
            new L.tileLayer('http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png', {
              attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://cartodb.com/attributions">CartoDB</a>'
            })
          ]
        }))
      }
    }
  }
])

angular.module('app').directive('highchart', [
           'chart',
  function (chart) {
    return {
      'link': function (scope, element, attributes) {
        var data = angular.extend(scope.data, chart)
        $(element[0]).highcharts(data)
      }
    }
  }
])

angular.module('app').value('chart', {
  chart: {
      type: "spline"
  },
  title: {
      text: "Wind speed during two days"
  },
  subtitle: {
      text: "May 31 and and June 1, 2015 at two locations in Vik i Sogn, Norway"
  },
  xAxis: {
      type: "datetime",
      labels: {
          overflow: "justify"
      }
  },
  yAxis: {
      title: {
          text: "Wind speed (m/s)"
      },
      minorGridLineWidth: 0,
      gridLineWidth: 0,
      alternateGridColor: null,
      plotBands: [{
          from: 0.3,
          to: 1.5,
          color: "rgba(68, 170, 213, 0.1)",
          label: {
              text: "Light air",
              style: {
                  color: "#606060"
              }
          }
      }, {
          from: 1.5,
          to: 3.3,
          color: "rgba(0, 0, 0, 0)",
          label: {
              text: "Light breeze",
              style: {
                  color: "#606060"
              }
          }
      }, {
          from: 3.3,
          to: 5.5,
          color: "rgba(68, 170, 213, 0.1)",
          label: {
              text: "Gentle breeze",
              style: {
                  color: "#606060"
              }
          }
      }, {
          from: 5.5,
          to: 8,
          color: "rgba(0, 0, 0, 0)",
          label: {
              text: "Moderate breeze",
              style: {
                  color: "#606060"
              }
          }
      }, {
          from: 8,
          to: 11,
          color: "rgba(68, 170, 213, 0.1)",
          label: {
              text: "Fresh breeze",
              style: {
                  color: "#606060"
              }
          }
      }, {
          from: 11,
          to: 14,
          color: "rgba(0, 0, 0, 0)",
          label: {
              text: "Strong breeze",
              style: {
                  color: "#606060"
              }
          }
      }, {
          from: 14,
          to: 15,
          color: "rgba(68, 170, 213, 0.1)",
          label: {
              text: "High wind",
              style: {
                  color: "#606060"
              }
          }
      }]
  },
  tooltip: {
      valueSuffix: " m/s"
  },
  plotOptions: {
      spline: {
          lineWidth: 4,
          states: {
              hover: {
                  lineWidth: 5
              }
          },
          marker: {
              enabled: false
          },
          pointInterval: 3600000, 
          pointStart: Date.UTC(2015, 4, 31, 0, 0, 0)
      }
  },
  navigation: {
      menuItemStyle: {
          fontSize: "10px"
      }
  }
})
body, html, .leaflet-container {
  height: 100%;
}