diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 8b909e6..329860c 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -13,9 +13,6 @@ - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 0b0534c..22d9498 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,6 +4,7 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 8978d23..0ad17cb 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,3 +1,4 @@ + diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt b/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt index 943fc6d..fe81356 100644 --- a/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt +++ b/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt @@ -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 @@ -124,55 +125,78 @@ class ProjectActivity : AppCompatActivity() { } } - fun initGraph(lm : List){ + fun initGraph(lm: List) { 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 = 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(R.id.project_name) val descriptionview = findViewById(R.id.project_description)