From 03d1f9fb20f12fe996a97805c74baf63ca6967ea Mon Sep 17 00:00:00 2001 From: kerboul Date: Wed, 12 Mar 2025 07:10:01 +0000 Subject: [PATCH 1/3] Build --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fd85b89..2a22e5b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ variables: image: ubuntu:20.04 before_script: - # Installer Java, SDK tools et dépendances + # Installer Java, SDK tools et dépendances SANS - apt-get update -qq && apt-get install -qq -y openjdk-17-jdk wget unzip - wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O android-commandlinetools.zip - mkdir -p $ANDROID_SDK_ROOT/cmdline-tools From f1655d2713c796050be4f5a6d7b6d694e91b40eb Mon Sep 17 00:00:00 2001 From: arussac Date: Thu, 13 Mar 2025 09:31:21 +0100 Subject: [PATCH 2/3] =?UTF-8?q?Correction=20des=20graphiques=20d'affichage?= =?UTF-8?q?=20d'humidit=C3=A9=20et=20temp=C3=A9rature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/AndroidProjectSystem.xml | 6 ++ .idea/deploymentTargetSelector.xml | 3 - .idea/gradle.xml | 2 +- .idea/misc.xml | 1 + .idea/runConfigurations.xml | 17 ++++ .../dreamteam/timelapse/ProjectActivity.kt | 78 ++++++++++++------- 6 files changed, 76 insertions(+), 31 deletions(-) create mode 100644 .idea/AndroidProjectSystem.xml create mode 100644 .idea/runConfigurations.xml 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) From 5d908dca42e1f96785aee7850f8a7042fb45c134 Mon Sep 17 00:00:00 2001 From: arussac Date: Thu, 13 Mar 2025 09:40:08 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20l=C3=A9gendes?= =?UTF-8?q?=20des=20graphiques?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dreamteam/timelapse/ProjectActivity.kt | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt b/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt index fe81356..a040e65 100644 --- a/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt +++ b/app/src/main/java/com/dreamteam/timelapse/ProjectActivity.kt @@ -177,6 +177,34 @@ class ProjectActivity : AppCompatActivity() { xAxis.labelRotationAngle = -90f xAxis.position = XAxis.XAxisPosition.BOTTOM + // Configure the left y-axis + val leftYAxis = temperatureHumidityChart.axisLeft + leftYAxis.labelCount = 6 // Set the number of labels + leftYAxis.setLabelCount(6, true) + leftYAxis.setDrawLabels(true) + leftYAxis.setDrawAxisLine(true) + leftYAxis.setDrawGridLines(true) + leftYAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return "${value.toInt()} C°" // Append "C°" to the temperature values + } + } + + // Configure the right y-axis + val rightYAxis = temperatureHumidityChart.axisRight + rightYAxis.labelCount = 6 // Set the number of labels + rightYAxis.axisMinimum = 0f // Set minimum value if needed + rightYAxis.axisMaximum = 100f // Set maximum value to 100% + rightYAxis.setLabelCount(6, true) + rightYAxis.setDrawLabels(true) + rightYAxis.setDrawAxisLine(true) + rightYAxis.setDrawGridLines(false) + rightYAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return "${value.toInt()} %" // Append "%" to the humidity values + } + } + // Add datasets to the chart val dataSets: MutableList = ArrayList() dataSets.add(temperatureDataSet)