diff --git a/web-app/src/App.vue b/web-app/src/App.vue
index 2b70f69..4ccb4fc 100644
--- a/web-app/src/App.vue
+++ b/web-app/src/App.vue
@@ -9,24 +9,12 @@
@@ -38,7 +26,7 @@ import ChartComponent from "./components/ChartComponent.vue";
import ControlPanel from "./components/ControlPanel.vue";
import { HttpClient } from "./Services/HttpClient";
import { TimeSeriesManager } from "./Measures/TimeSeriesManager";
-import { URL, USERNAME, PASSWORD, USER, ROOM, DEVICE, APP_NAME } from "./const";
+import { URL, USERNAME, PASSWORD, APP_NAME } from "./const";
import { Serie } from "./Measures/Serie";
let httpClient = new HttpClient(URL, USERNAME, PASSWORD);
@@ -53,53 +41,8 @@ export default defineComponent({
data() {
return {
manager,
- series: [] as any[],
- loading: true,
- error: undefined as string | undefined,
- showTemperature: true,
- showHumidity: true,
};
},
- methods: {
- addTemperature() {
- // Implement your functionality here
- console.log("Add temperature clicked");
- manager
- .getNewValue(USER, ROOM, DEVICE)
- .then((result) => {})
- .catch((error) => {
- console.error("Error asking data:", error);
- this.error = "Failed to load data. Please try again later.";
- this.loading = false;
- });
- },
-
- refreshData() {
- console.log("Refreshing data...");
- this.fetchData();
- },
-
- fetchData() {
- this.loading = true;
- this.error = undefined;
-
- manager
- .getTimeSeriesData(USER, ROOM, DEVICE)
- .then((result) => {
- this.series = result;
- this.loading = false;
- })
- .catch((error) => {
- console.error("Error fetching data:", error);
- this.error = "Failed to load data. Please try again later.";
- this.loading = false;
- });
- },
- },
- mounted() {
- // Fetch data when component is mounted
- this.fetchData();
- },
});
diff --git a/web-app/src/Measures/TimeSeriesManager.ts b/web-app/src/Measures/TimeSeriesManager.ts
index f5533b7..532f585 100644
--- a/web-app/src/Measures/TimeSeriesManager.ts
+++ b/web-app/src/Measures/TimeSeriesManager.ts
@@ -57,16 +57,17 @@ export class TimeSeriesManager {
},
];
+ error = ref(false);
+ loading = ref("");
+
+ series = ref([]);
+
constructor(client: HttpClient) {
this.client = client;
}
- async getTimeSeriesData(
- user: string,
- room: string,
- device: string
- ): Promise {
- return this.client
+ async getTimeSeriesData() {
+ this.client
.getValues(
this.selected_user.tag,
this.selected_room.tag,
@@ -112,20 +113,20 @@ export class TimeSeriesManager {
const temperatureSerie = new Serie(
TEMPERATURE,
temperatureRecordsProcessed,
- user,
- room,
- device
+ this.selected_user.user,
+ this.selected_room.room,
+ this.selected_device.device
);
const humiditySerie = new Serie(
HUMIDITY,
humidityRecordProcessed,
- user,
- room,
- device
+ this.selected_user.user,
+ this.selected_room.room,
+ this.selected_device.device
);
- return [temperatureSerie, humiditySerie];
+ this.series.value = [temperatureSerie, humiditySerie];
})
.catch((error) => {
console.error("Error fetching time series data:", error);
@@ -133,10 +134,16 @@ export class TimeSeriesManager {
});
}
- async getNewValue(user: string, room: string, device: string) {
- this.client.newValue(user, room, device).catch((error) => {
- console.error("Error asking new values:", error);
- throw error;
- });
+ async getNewValue() {
+ this.client
+ .newValue(
+ this.selected_user.user,
+ this.selected_room.room,
+ this.selected_device.device
+ )
+ .catch((error) => {
+ console.error("Error asking new values:", this.selected_device.device);
+ throw error;
+ });
}
}
diff --git a/web-app/src/components/ChartComponent.vue b/web-app/src/components/ChartComponent.vue
index a2475ee..ae00c55 100644
--- a/web-app/src/components/ChartComponent.vue
+++ b/web-app/src/components/ChartComponent.vue
@@ -1,8 +1,8 @@
-
Loading data...
-
{{ error }}
+
Loading data...
+
{{ manager.error }}
, // Use PropType to specify array of Serie
default: () => [],
},
- showTemperature: {
- type: Boolean,
- default: true,
- },
- showHumidity: {
- type: Boolean,
- default: true,
- },
- loading: {
- type: Boolean,
- default: false,
- },
- error: {
- type: String as PropType,
- default: null,
+ manager: {
+ type: Object as PropType,
+ required: true,
},
},
setup(props) {
const chartData = computed(() => {
- let series_prepared = props.series.map((s: Serie) => {
- return s.getSerie();
- });
+ if (
+ props.manager ||
+ ((props.manager as TimeSeriesManager).series.value as Serie[])
+ ) {
+ let series_prepared = (props.manager.series.value as Serie[]).map(
+ (s: Serie) => {
+ return s.getSerie();
+ }
+ );
- return {
- datasets: series_prepared,
- };
+ return {
+ datasets: series_prepared,
+ };
+ } else {
+ return {
+ datasets: [],
+ };
+ }
});
const chartOptions = {
diff --git a/web-app/src/components/ControlPanel.vue b/web-app/src/components/ControlPanel.vue
index 8ef220f..36b92ba 100644
--- a/web-app/src/components/ControlPanel.vue
+++ b/web-app/src/components/ControlPanel.vue
@@ -1,10 +1,10 @@
-
@@ -57,8 +57,6 @@ import "vue-multiselect/dist/vue-multiselect.css"; // Add
import { ref } from "vue";
import { TimeSeriesManager } from "@/Measures/TimeSeriesManager";
-let options = [{ code: "CA", country: "Canada" }];
-
export default defineComponent({
name: "ControlPanel",
@@ -74,23 +72,34 @@ export default defineComponent({
manager: {
type: TimeSeriesManager,
required: true,
- }
-
+ },
},
- emits: [
- "add-temperature",
- "update:showTemperature",
- "update:showHumidity",
- "refresh",
- "simulate-data",
- ],
components: {
Multiselect,
},
methods: {
- setSelected(value: any) {
- // trigger a mutation, or dispatch an action
+ addTemperature() {
+ // Implement your functionality here
+ console.log("Add temperature clicked");
+ this.manager
+ .getNewValue()
+ .then((result) => {})
+ .catch((error) => {
+ console.error("Error asking data:", error);
+ });
},
+ fetchData() {
+ console.log("Fetch data");
+ this.manager
+ .getTimeSeriesData()
+ .then((result) => {})
+ .catch((error) => {
+ console.error("Error fetching data:", error);
+ });
+ },
+ },
+ mounted() {
+ this.fetchData();
},
});