Compare commits

..

8 Commits

Author SHA1 Message Date
b75099ddd6 add margins x 2023-09-26 08:42:20 +02:00
c194ad2c97 Añadido esperando 2023-09-26 08:18:04 +02:00
c146229699 add Loading plugin 2023-09-26 08:17:42 +02:00
a8960f71c4 disable axios 2023-09-26 08:17:22 +02:00
cfe07d0dde gitignore .vscode 2023-09-25 18:09:13 +02:00
99202436c0 instrucciones en el readme 2023-09-25 15:36:37 +02:00
a75f90dad9 update node version && url https 2023-09-25 15:30:00 +02:00
219f9dd137 new formula 2023-09-25 14:59:23 +02:00
8 changed files with 102 additions and 127 deletions

2
.gitignore vendored
View File

@@ -27,3 +27,5 @@ yarn-error.log*
*.ntvs* *.ntvs*
*.njsproj *.njsproj
*.sln *.sln
.vscode/

16
.vscode/settings.json vendored
View File

@@ -3,13 +3,9 @@
"editor.guides.bracketPairs": true, "editor.guides.bracketPairs": true,
"editor.formatOnSave": true, "editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode", "editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": [ "editor.codeActionsOnSave": ["source.fixAll.eslint"],
"source.fixAll.eslint" "eslint.validate": ["javascript", "javascriptreact", "typescript", "vue"],
], "[vue]": {
"eslint.validate": [ "editor.defaultFormatter": "esbenp.prettier-vscode"
"javascript", }
"javascriptreact", }
"typescript",
"vue"
]
}

View File

@@ -1,5 +1,5 @@
# develop stage # develop stage
FROM node:14.21.2-alpine as develop-stage FROM node:18.17.0-alpine as develop-stage
WORKDIR /app WORKDIR /app
COPY package*.json ./ COPY package*.json ./
RUN npm install -g npm@latest RUN npm install -g npm@latest
@@ -9,6 +9,7 @@ COPY . .
# build stage # build stage
FROM develop-stage as build-stage FROM develop-stage as build-stage
RUN npm i RUN npm i
RUN npx --yes update-browserslist-db@latest
RUN quasar build RUN quasar build
# production stage # production stage

View File

@@ -1,41 +1,17 @@
# PlantasCalc (plantas) # Quasar App (ejercicio_quasar)
Cálculo de los días de riego de mis plantas ### Crear la imagen
```
## Install the dependencies docker build -t regar2509231522 .
```bash
yarn
# or
npm install
``` ```
### Start the app in development mode (hot-code reloading, error reporting, etc.) ### borrar y crear contenedor
```bash ```
quasar dev docker rm -f plantas && docker run -d --name=plantas --restart unless-stopped -p 33331:80 regar2509231522
``` ```
### purgar docker
### Lint the files
```bash
yarn lint
# or
npm run lint
``` ```
docker system prune
docker image prune -a
### Format the files
```bash
yarn format
# or
npm run format
``` ```
### Build the app for production
```bash
quasar build
```
### Customize the configuration
See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js).

6
package-lock.json generated
View File

@@ -1060,9 +1060,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001473", "version": "1.0.30001539",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001473.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz",
"integrity": "sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==", "integrity": "sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {

View File

@@ -11,24 +11,23 @@
"test": "echo \"No test specified\" && exit 0" "test": "echo \"No test specified\" && exit 0"
}, },
"dependencies": { "dependencies": {
"axios": "^1.2.1",
"@quasar/extras": "^1.0.0", "@quasar/extras": "^1.0.0",
"quasar": "^2.6.0", "quasar": "^2.6.0",
"vue": "^3.0.0", "vue": "^3.0.0",
"vue-router": "^4.0.0" "vue-router": "^4.0.0"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^8.10.0",
"eslint-plugin-vue": "^9.0.0",
"eslint-config-prettier": "^8.1.0",
"prettier": "^2.5.1",
"@quasar/app-vite": "^1.0.0", "@quasar/app-vite": "^1.0.0",
"autoprefixer": "^10.4.2", "autoprefixer": "^10.4.2",
"postcss": "^8.4.14" "eslint": "^8.10.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-vue": "^9.0.0",
"postcss": "^8.4.14",
"prettier": "^2.5.1"
}, },
"engines": { "engines": {
"node": "^18 || ^16 || ^14.19", "node": "^18 || ^16 || ^14.19",
"npm": ">= 6.13.4", "npm": ">= 6.13.4",
"yarn": ">= 1.21.1" "yarn": ">= 1.21.1"
} }
} }

View File

@@ -8,9 +8,7 @@
// Configuration for your app // Configuration for your app
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js
const { configure } = require("quasar/wrappers");
const { configure } = require('quasar/wrappers');
module.exports = configure(function (/* ctx */) { module.exports = configure(function (/* ctx */) {
return { return {
@@ -20,7 +18,7 @@ module.exports = configure(function (/* ctx */) {
// exclude = [], // exclude = [],
// rawOptions = {}, // rawOptions = {},
warnings: true, warnings: true,
errors: true errors: true,
}, },
// https://v2.quasar.dev/quasar-cli/prefetch-feature // https://v2.quasar.dev/quasar-cli/prefetch-feature
@@ -29,15 +27,10 @@ module.exports = configure(function (/* ctx */) {
// app boot file (/src/boot) // app boot file (/src/boot)
// --> boot files are part of "main.js" // --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli/boot-files // https://v2.quasar.dev/quasar-cli/boot-files
boot: [ boot: [],
'axios',
],
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css
css: [ css: ["app.css"],
'app.css'
],
// https://github.com/quasarframework/quasar/tree/dev/extras // https://github.com/quasarframework/quasar/tree/dev/extras
extras: [ extras: [
@@ -49,18 +42,18 @@ module.exports = configure(function (/* ctx */) {
// 'line-awesome', // 'line-awesome',
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
'roboto-font', // optional, you are not bound to it "roboto-font", // optional, you are not bound to it
'material-icons', // optional, you are not bound to it "material-icons", // optional, you are not bound to it
], ],
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build
build: { build: {
target: { target: {
browser: [ 'es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1' ], browser: ["es2019", "edge88", "firefox78", "chrome87", "safari13.1"],
node: 'node16' node: "node16",
}, },
vueRouterMode: 'hash', // available values: 'hash', 'history' vueRouterMode: "hash", // available values: 'hash', 'history'
// vueRouterBase, // vueRouterBase,
// vueDevtools, // vueDevtools,
// vueOptionsAPI: false, // vueOptionsAPI: false,
@@ -79,7 +72,6 @@ module.exports = configure(function (/* ctx */) {
// extendViteConf (viteConf) {}, // extendViteConf (viteConf) {},
// viteVuePluginOptions: {}, // viteVuePluginOptions: {},
// vitePlugins: [ // vitePlugins: [
// [ 'package-name', { ..options.. } ] // [ 'package-name', { ..options.. } ]
// ] // ]
@@ -88,7 +80,7 @@ module.exports = configure(function (/* ctx */) {
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer
devServer: { devServer: {
// https: true // https: true
open: true // opens browser window automatically open: true, // opens browser window automatically
}, },
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework
@@ -106,7 +98,7 @@ module.exports = configure(function (/* ctx */) {
// directives: [], // directives: [],
// Quasar plugins // Quasar plugins
plugins: [] plugins: ["Loading"],
}, },
// animations: 'all', // --- includes all animations // animations: 'all', // --- includes all animations
@@ -128,7 +120,7 @@ module.exports = configure(function (/* ctx */) {
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr // https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr: { ssr: {
// ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name! // ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name!
// will mess up SSR // will mess up SSR
// extendSSRWebserverConf (esbuildConf) {}, // extendSSRWebserverConf (esbuildConf) {},
// extendPackageJson (json) {}, // extendPackageJson (json) {},
@@ -139,19 +131,19 @@ module.exports = configure(function (/* ctx */) {
// manualPostHydrationTrigger: true, // manualPostHydrationTrigger: true,
prodPort: 3000, // The default port that the production server should use prodPort: 3000, // The default port that the production server should use
// (gets superseded if process.env.PORT is specified at runtime) // (gets superseded if process.env.PORT is specified at runtime)
middlewares: [ middlewares: [
'render' // keep this as last one "render", // keep this as last one
] ],
}, },
// https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa: { pwa: {
workboxMode: 'generateSW', // or 'injectManifest' workboxMode: "generateSW", // or 'injectManifest'
injectPwaMetaTags: true, injectPwaMetaTags: true,
swFilename: 'sw.js', swFilename: "sw.js",
manifestFilename: 'manifest.json', manifestFilename: "manifest.json",
useCredentialsForManifestTag: false, useCredentialsForManifestTag: false,
// useFilenameHashes: true, // useFilenameHashes: true,
// extendGenerateSWOptions (cfg) {} // extendGenerateSWOptions (cfg) {}
@@ -167,7 +159,7 @@ module.exports = configure(function (/* ctx */) {
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor // Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
capacitor: { capacitor: {
hideSplashscreen: true hideSplashscreen: true,
}, },
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron // Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
@@ -177,17 +169,15 @@ module.exports = configure(function (/* ctx */) {
inspectPort: 5858, inspectPort: 5858,
bundler: 'packager', // 'packager' or 'builder' bundler: "packager", // 'packager' or 'builder'
packager: { packager: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store // OS X / Mac App Store
// appBundleId: '', // appBundleId: '',
// appCategoryType: '', // appCategoryType: '',
// osxSign: '', // osxSign: '',
// protocol: 'myapp://path', // protocol: 'myapp://path',
// Windows only // Windows only
// win32metadata: { ... } // win32metadata: { ... }
}, },
@@ -195,18 +185,16 @@ module.exports = configure(function (/* ctx */) {
builder: { builder: {
// https://www.electron.build/configuration/configuration // https://www.electron.build/configuration/configuration
appId: 'plantas' appId: "plantas",
} },
}, },
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex
bex: { bex: {
contentScripts: [ contentScripts: ["my-content-script"],
'my-content-script'
],
// extendBexScriptsConf (esbuildConf) {} // extendBexScriptsConf (esbuildConf) {}
// extendBexManifestJson (json) {} // extendBexManifestJson (json) {}
} },
} };
}); });

View File

@@ -1,26 +1,61 @@
<template> <template>
<div class="flex flex-center"> <div class="flex flex-center">
<h5 class="q-py-xl">{{ fecha }}</h5> <h6 v-if="fecha == '' && !presionado" class="q-py-xl q-px-md">
<q-btn class="fixed-center" color="deep-orange" glossy label="Calcular" @click="calcular()"></q-btn> Cálculo de los días de riego
</h6>
<h6 v-else-if="presionado" class="q-py-xl q-px-md">Loading...</h6>
<h6 v-else class="q-py-xl q-px-md">{{ fecha }}</h6>
<q-btn
class="fixed-center"
color="deep-orange"
glossy
label="Calcular"
@click="calcular()"
></q-btn>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from "vue"; import { ref } from "vue";
import axios from "axios"; import { date, useQuasar } from "quasar";
import { date } from "quasar";
const humedad_relativa = ref(0); const data = ref([]);
const temp_max = ref(0);
const fecha = ref(""); const fecha = ref("");
const days = ref(0);
const presionado = ref(false);
const $q = useQuasar();
const calcular = async () => {
$q.loading.show({
message: "Se está descargando la información, espere...",
});
presionado.value = true;
const result = fetch(
"https://api.openweathermap.org/data/2.5/forecast?lat=39.55&lon=-0.5667&units=metric&appid=1ce95ef35a6852cecee421a923fe4400"
)
.then((response) => {
console.log(response);
return response.json();
})
.catch((err) => console.error(err));
data.value = await result;
if (data.value != []) {
$q.loading.hide();
presionado.value = false;
}
console.log(data.value.list);
let temp = 0;
data.value.list.forEach((element) => {
temp += element.main.temp;
});
temp = temp / data.value.list.length;
// subimos el 0.25% la temperatura, openweathermap es muy fresquito!!
temp = temp * 0.75;
console.log(Math.floor(100 / temp), temp);
days.value = Math.floor(100 / temp);
const calcular = () => {
let valor = 0;
valor = temp_max.value - humedad_relativa.value * 0.2;
// ajustar
valor = valor * 0.27;
let hoy = new Date(); let hoy = new Date();
let newDate = date.addToDate(hoy, { days: Math.round(valor) }); let newDate = date.addToDate(hoy, { days: days.value });
fecha.value = newDate.toLocaleDateString("es-es", { fecha.value = newDate.toLocaleDateString("es-es", {
weekday: "long", weekday: "long",
year: "numeric", year: "numeric",
@@ -28,26 +63,4 @@ const calcular = () => {
day: "numeric", day: "numeric",
}); });
}; };
onMounted(() => {
axios
.get(
`https://api.open-meteo.com/v1/forecast?latitude=39.55&longitude=-0.57&hourly=relativehumidity_2m&models=gfs_global&daily=temperature_2m_max,temperature_2m_min&timezone=Europe%2FLondon`
)
.then((res) => {
//console.log("humedad relativa", res.data.hourly.relativehumidity_2m);
let suma_humedad = 0;
res.data.hourly.relativehumidity_2m.forEach((element) => {
suma_humedad += element;
});
humedad_relativa.value =
suma_humedad / res.data.hourly.relativehumidity_2m.length;
//console.log("temp máxima", res.data.daily.temperature_2m_max);
let suma_temp_max = 0;
res.data.daily.temperature_2m_max.forEach((element) => {
suma_temp_max += element;
});
temp_max.value = suma_temp_max / res.data.daily.temperature_2m_max.length;
});
});
</script> </script>