Correction des graphiques d'affichage d'humidité et température

This commit is contained in:
arussac
2025-03-13 09:31:21 +01:00
parent 03d1f9fb20
commit f1655d2713
6 changed files with 76 additions and 31 deletions

6
.idea/AndroidProjectSystem.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidProjectSystem">
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
</component>
</project>

View File

@@ -13,9 +13,6 @@
</DropdownSelection>
<DialogSelection />
</SelectionState>
<SelectionState runConfigName="ProjectActivity">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates>
</component>
</project>

2
.idea/gradle.xml generated
View File

@@ -4,6 +4,7 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
@@ -12,7 +13,6 @@
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
</GradleProjectSettings>
</option>
</component>

1
.idea/misc.xml generated
View File

@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">

17
.idea/runConfigurations.xml generated Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@@ -8,13 +8,14 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import com.dreamteam.timelapse.data.ApiService
import com.dreamteam.timelapse.data.Measurement
import com.dreamteam.timelapse.data.Project
import com.dreamteam.timelapse.data.ProjectRepository
import com.dreamteam.timelapse.data.VideoRepository
import com.dreamteam.timelapse.databinding.ProjectBinding
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.data.LineData
import com.github.mikephil.charting.data.LineDataSet
@@ -127,52 +128,75 @@ class ProjectActivity : AppCompatActivity() {
fun initGraph(lm: List<Measurement>) {
val temperatureHumidityChart = this.binding.temperatureHumidityChart
val temperatures = lm.sortedBy { p -> p.order_id }
.map { m -> Pair(m.temperature, m.timestamp) }
val humidities = lm.sortedBy { p -> p.order_id }
.map { m -> Pair(m.humidity, m.timestamp) }
// Sort measurements by order_id and map to pairs of value and timestamp
val temperatures = lm.sortedBy { it.order_id }
.map { m -> Pair(m.temperature, m.order_id) }
val humidities = lm.sortedBy { it.order_id }
.map { m -> Pair(m.humidity, m.order_id) }
// Ajouter des points de données (exemples)
val temperatureEntries = temperatures.map { pair ->
Entry((pair.second.time).toFloat(), pair.first) // (timestamp, température)
// Create entries for temperature and humidity using timestamps
val temperatureEntries = temperatures.mapIndexed { index, pair ->
Entry(index.toFloat(), pair.first) // Use index for order, but display timestamp
}
val humidityEntries = humidities.map { pair ->
Entry((pair.second.time).toFloat(), pair.first) // (timestamp, humidité)
val humidityEntries = humidities.mapIndexed { index, pair ->
Entry(index.toFloat(), pair.first) // Use index for order, but display timestamp
}
// Créer des LineDataSet pour chaque série de données
val temperatureDataSet = LineDataSet(temperatureEntries, "Température")
val humidityDataSet = LineDataSet(humidityEntries, "Hygrométrie")
Log.i("ProjectActivity", temperatureEntries.toString())
val minX = temperatureEntries.minOf { it.x } // La valeur minimale de x
val maxX = temperatureEntries.maxOf { it.x } // La valeur maximale de x
// Create LineDataSet for each data series
val temperatureDataSet = LineDataSet(temperatureEntries, "Température").apply {
color = Color.RED // Keep color red
valueTextColor = Color.BLACK
valueTextSize = 12f
}
val humidityDataSet = LineDataSet(humidityEntries, "Hygrométrie").apply {
color = Color.BLUE // Keep color blue
valueTextColor = Color.BLACK
valueTextSize = 12f
}
// Set up the x-axis to display timestamps
val xAxis = temperatureHumidityChart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
val date = Date(value.toLong())
val sdf = SimpleDateFormat("hh:mm", Locale.getDefault())
// Map the index back to the corresponding timestamp
val timestamp = lm.sortedBy { it.order_id }[value.toInt()].timestamp
val date = Date(timestamp.time)
val sdf = SimpleDateFormat("dd/MM/yyyy:HH:mm:ss", Locale.getDefault())
return sdf.format(date)
}
}
// Set the minimum and maximum x-axis values based on indices
val minX = 0f
val maxX = (lm.size - 1).toFloat()
xAxis.axisMinimum = minX
xAxis.axisMaximum = maxX
// Ajouter les datasets au graphique
xAxis.granularity = 1f // Ensure each index is plotted
xAxis.labelRotationAngle = -90f
xAxis.position = XAxis.XAxisPosition.BOTTOM
// Add datasets to the chart
val dataSets: MutableList<ILineDataSet> = ArrayList()
dataSets.add(temperatureDataSet)
dataSets.add(humidityDataSet)
// val lineData = LineData(temperatureDataSet, humidityDataSet)
//Log.e("Graph", lineData.getDataSetByIndex(0).entryCount.toString())
temperatureHumidityChart.data = LineData(dataSets)
val description = temperatureHumidityChart.description
description.text = " "
// Customize the legend
val legend: Legend = temperatureHumidityChart.legend
legend.textColor = Color.BLACK
legend.textSize = 12f
// Personnaliser le graphique (par exemple, couleur, légende, etc.)
temperatureDataSet.color = Color.RED
humidityDataSet.color = Color.BLUE
temperatureHumidityChart.invalidate() // Rafraîchir le graphique
// Refresh the chart
temperatureHumidityChart.invalidate()
}
fun initProjectInfo(){
val nameview = findViewById<TextView>(R.id.project_name)
val descriptionview = findViewById<TextView>(R.id.project_description)