-1

I try to view some date from the DB on an Apex Char it already worked but now I only get Date or Datetime issues so pls somebody can Help me with this.

The Model that I am Using is this:

class Temperature (models.Model):
    temperature = models.DecimalField(max_digits=5,decimal_places=2)
    sensor_id=models.CharField(max_length=50)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['created']

Then I build view to get the Data sorted in all last6days ans last week:

def temperature_all_data_view(request):
    data = Temperature.objects.all().values('created', 'temperature')
    data_list = [{'created': entry['created'].isoformat(), 'temperature': entry['temperature']} for entry in data]
    return JsonResponse(data_list, safe=False)
def temperature_last_six_hours_data_view(request):
    six_hours_ago = datetime.now() - timedelta(hours=6)
    data = Temperature.objects.filter(created__gte=six_hours_ago).values('created', 'temperature')
    data_list = [{'created': entry['created'].isoformat(), 'temperature': entry['temperature']} for entry in data]
    return JsonResponse(data_list, safe=False)
def temperature_last_seven_days_data_view(request):
    seven_days_ago = datetime.now() - timedelta(days=7)
    data = Temperature.objects.filter(created__gte=seven_days_ago).values('created', 'temperature')
    data_list = [{'created': entry['created'].isoformat(), 'temperature': entry['temperature']} for entry in data]
    return JsonResponse(data_list, safe=False)

then I fetch the Data in JS and try to sort them into the ApexChart:

let chart = null;

async function fetchData(url) {
  const response = await fetch(url);
  const data = await response.json();

  data.sort((a, b) => new Date(a.created) - new Date(b.created));

  return data;
}

function renderChart(x_data, y_data, html_name) {
  if (chart) {
    chart.destroy();
  }
  
  const options = {
    chart: {
      height: 300,
      type: "area"
    },
    dataLabels: {
      enabled: false
    },
    series: [
      {
        name: "Temperature",
        data: y_data
      }
    ],
    fill: {
      type: "gradient",
      gradient: {
        shadeIntensity: 1,
        opacityFrom: 0.7,
        opacityTo: 0.9,
        stops: [0, 90, 100]
      }
    },
    xaxis: {
      categories: x_data,
      type: 'datetime'
    }
  };
  
  chart = new ApexCharts(document.querySelector(html_name), options);
  chart.render();
}

async function timeFrameTemperature(period) { 
  let data = null;
  
  if (period.value === 'all') {
    data = await fetchData('all_data_view/');  
  } else if (period.value === 'last_six_hours') {
    data = await fetchData('last_six_hours_data_view/');
  } else if (period.value === 'last_seven_days') {
    data = await fetchData('last_seven_days_data_view/');
  }
  
  const x_data = data.map(entry => new Date(entry.created));
  const y_data = data.map(entry => entry.temperature);

  renderChart(x_data, y_data, "#TemperatureChart");
}

async function Temperature_init() {
  const data = await fetchData('all_data_view/');
  const x_data = data.map(entry => new Date(entry.created));
  const y_data = data.map(entry => entry.temperature);

  renderChart(x_data, y_data, "#TemperatureChart");
}

Temperature_init();

But I see nothing I tried everything but I always get 2 issuses in the Browser log:

Uncaught (in promise) Error: You have provided invalid Date format. Please provide a valid JavaScript Date
    at c (apexcharts:6:122063)
    at t.value (apexcharts:6:123235)
    at t.value (apexcharts:6:125633)
    at t.value (apexcharts:14:37373)
    at t.create (apexcharts:6:4708)
    at apexcharts:14:36373
    at new Promise (<anonymous>)
    at t.value (apexcharts:14:21677)
    at renderChart (area_chart.js:57:9)
    at Temperature_init (area_chart.js:81:3)

and:

area_chart.js:70 Uncaught (in promise) TypeError: Object.prototype.toLocaleString called on null or undefined
    at toLocaleString (<anonymous>)
    at area_chart.js:70:36
    at Array.map (<anonymous>)
    at timeFrameTemperature (area_chart.js:70:23)

Thank you for your Help :) LG Erik

I tried to format the Date for Apex but nothing changed. 1 week ago it worked I tried to get the Time to the right Timezone and then I got this problem.

0 Answers0