/**
 * First we will load all of this project's JavaScript dependencies which
 * includes Vue and other libraries. It is a great starting point when
 * building robust, powerful web applications using Vue and Laravel.
 */

require('./bootstrap');

window.Vue = require('vue');
window.moment = require('moment');

/**
 * The following block of code may be used to automatically register your
 * Vue components. It will recursively scan this directory for the Vue
 * components and automatically register them with their "basename".
 *
 * Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
 */

// const files = require.context('./', true, /\.vue$/i)
// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))

Vue.component('example-component', require('./components/ExampleComponent.vue').default);

/**
 * Next, we will create a fresh Vue application instance and attach it to
 * the page. Then, you may begin adding components to this application
 * or customize the JavaScript scaffolding to fit your unique needs.
 */

import VueThermometer from 'vuejs-thermometer'
Vue.use(VueThermometer);

import VueDygraphs from 'vue-dygraphs';
Vue.use(VueDygraphs);

import VueTableDynamic from 'vue-table-dynamic'
Vue.use(VueTableDynamic);

import Datetime from 'vue-datetime'
Vue.use(Datetime);

Vue.component('stats-table', require('./components/StatisticsComponent.vue').default);

//(function () {
    var app = new Vue({
      el: '#app',
      data: {
        tmin: -10,
        tmax: 50,
        temperature: 0,
        time: null,
        startdate: null,
        enddate: null,
        componentKey: 0,
        params: {
          data: [],     
          border: true,
          stripe: true
        },
        options: {
          temperature: {
            legend: 'always',
            title: 'Teplotný graf',
            xlabel: 'Dátum',
            labels: ['Dátum','Teplota'],
            ylabel: 'Stupeň',
            fillGraph: true  
          },
          humidity: {
            color: 'red',
            legend: 'always',
            title: 'Vlhkosť graf',
            xlabel: 'Dátum',
            labels: ['Dátum','Vlhkosť'],
            ylabel: 'Percent',
            fillGraph: true  
          },
          pressure: {
            color: 'blue',
            legend: 'always',
            title: 'Tlak graf',
            xlabel: 'Dátum',
            labels: ['Dátum','Tlak'],
            ylabel: 'Tlak',
            fillGraph: true  
          }
        },
        series: { "temperature" : [], "humidity" : [], "pressure": [] },
      },
      mounted: function () {
        console.log('MOUNTED');
        this.getData();
        var that = this;
        window.setInterval(function(){ 
          console.log("TIMER");
          that.getData();
        }, 60000); 
        
      },

      methods: {
        displayResults: function () {
          this.getData();
        },
        getData: function () {

        axios.get('/data', {
          params: {
          }
        })
        .then(function (response) {
            console.log("GET DATA");
            console.log(response.data.temperature);
            let data = app.params.data = [];
            data.push(['Teplota',response.data.temperature,'°C']);
            data.push(['Vlhkosť',response.data.humidity,'%']);
            data.push(['Tlak',response.data.pressure,'kHPa']);
            data.push(['Napätie',response.data.voltage,'V']);
            moment.locale('sk_SK');
            app.time = moment(response.data.time).format('LLL');
            app.temperature = response.data.temperature;
        })
        .catch(function (error) {
            console.log(error);
        });

      let vts = ["temperature","humidity","pressure"];
      for (var t in vts) {
        console.log("t=",vts[t]);
        axios.get('/data/get', {
          params: {
            type: vts[t],
            startdate: this.startdate,
            enddate: this.enddate
          }
        })
        .then(function (response) {
            console.log("GET DATA");
            console.log(response.config.params.type);
            let data = response.data.map( x => [moment(x[0]).toDate(),x[1]] );
            app.series[response.config.params.type] = data;
            app.componentKey += 1;
        })
        .catch(function (error) {
            console.log(error);
        });
      }

      },
    }

    });
//  })();
