CursosEmpresasBlogLiveConfPrecios

Resumen de datos

Clase 6 de 21 • Curso Práctico de Vue.js

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Construye una aplicación para el control de tus gastos con Vue.js

    Construye una aplicación para el control de tus gastos con Vue.js

    04:05 min
  • 2
    Creación del proyecto

    Creación del proyecto

    08:57 min

Setup inicial

  • 3
    Splashscreen

    Splashscreen

    13:49 min
  • 4
    Header y contenido

    Header y contenido

    14:27 min
  • 5
    Layout

    Layout

    13:12 min

Vista

  • 6
    Resumen de datos

    Resumen de datos

    Viendo ahora
  • 7
    Agregando formato a la moneda

    Agregando formato a la moneda

    08:12 min
  • 8
    Componente del historial

    Componente del historial

    15:40 min
  • 9
    Lista del historial

    Lista del historial

    16:56 min
  • 10
    El botón para agregar

    El botón para agregar

    17:59 min
  • 11
    Formulario para agregar

    Formulario para agregar

    14:00 min

Gráfico

  • 12
    Creación del SVG del gráfico

    Creación del SVG del gráfico

    15:34 min
  • 13
    Creación de las coordenadas en el gráfico

    Creación de las coordenadas en el gráfico

    18:50 min
  • 14
    Creación de la lógica del gráfico

    Creación de la lógica del gráfico

    12:47 min
  • 15
    Creando la interacción con el gráfico

    Creando la interacción con el gráfico

    17:14 min

Modelo

  • 16
    Modelo de datos

    Modelo de datos

    12:40 min
  • 17
    Agregar y quitar

    Agregar y quitar

    10:54 min
  • 18
    Persistencia del modelo

    Persistencia del modelo

    13:29 min
  • 19
    Últimos detalles de nuestra aplicación

    Últimos detalles de nuestra aplicación

    12:26 min

Cierre

  • 20
    Poniendo nuestra aplicación en producción en Netlify

    Poniendo nuestra aplicación en producción en Netlify

    08:42 min
  • 21
    ¿Quieres más cursos de Vue?

    ¿Quieres más cursos de Vue?

    01:27 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Ameth Ordoñez Erazo

        Ameth Ordoñez Erazo

        student•
        hace 4 años

        Los estilos del Index.vue del Resume:

        <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>
          Hans González

          Hans González

          student•
          hace 3 años

          Gracias brother

        Lucas Da Rosa

        Lucas Da Rosa

        student•
        hace 4 años

        Mi solución:

        <script> export default { props: { label: { type: String, }, amount: { type: Number, default: null, }, totalAmount: { type: Number, }, date: { type: String, }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, labelVisual() { if (this.amount == null) { return this.label; } return this.date; }, }, }; </script>
        Fabricio Orrala

        Fabricio Orrala

        student•
        hace 4 años

        Se puede usar Composition API en un archivo y Options API en otro?

          Diana Martinez

          Diana Martinez

          student•
          hace 4 años

          Claro que si

          Josue Cerron Tuesta

          Josue Cerron Tuesta

          student•
          hace 3 años

          Se puede usar ambos en un mismo archivo también. Pero se recomienda usar uno en el proyecto.

        Jaime Eduardo Falla Cardozo

        Jaime Eduardo Falla Cardozo

        student•
        hace 4 años

        Este es mi proyecto

          Felix Torres Javier Antonio

          Felix Torres Javier Antonio

          student•
          hace 4 años

          Agregalo a GitHub Pages

        Cesar González Caballero

        Cesar González Caballero

        student•
        hace 6 meses

        <style scoped>

        main {

        display: flex;

        justify-content: center;

        align-items: center;

        flex-direction: column;

        width: 100%;

        }

        h1,

        p {

        margin: 0;

        text-align: center;

        }

        h1 {

        margin-top: 14px;

        color: var(--brand-green);

        }

        .graphic {

        display: flex;

        justify-content: center;

        align-items: center;

        width: 100%;

        padding: 48px 24px;

        box-sizing: border-box;

        }

        </style>

        Wendy Mejia

        Wendy Mejia

        student•
        hace 3 años

        Tengo problemas con eslint que me manda a borrar espacios vacios, me gustaria poder usarlo para evitar errores, pero no a un nivel tan tedioso, como se le puede configurar que solo marque verdaderos errores?

          Diana Martinez

          Diana Martinez

          student•
          hace 3 años

          Puedes aprovechar el comando de eslint + --fix, para que corrija los errores fáciles de resolver automáticamente, o puedes crear y editar el archivo de configuración de eslint y meter toda la configuración a tu gusto, eso lo encuentras en la documentación de eslint. https://eslint.org/docs/latest/use/configure/

        Alexander Flores Rayme

        Alexander Flores Rayme

        student•
        hace un año

        <template>  <main class="resume">    <p>      {{ label }}    </p>    <h2>      {{ amountVisual }}    </h2>  </main></template> <script setup>import { computed } from "vue"; const { amount, label, totalAmount } = defineProps({  amount: Number,  totalAmount: Number,  label: String,}); const amountVisual = computed(() => {  return amount !== null ? amount : totalAmount;});</script>

        Nathali Anzola

        Nathali Anzola

        student•
        hace 2 años

        Hola!! les comparto mi solución<template>  <main>    <p>{{ labelVisual }}</p>    <h2>{{ amountVisual }}</h2>  </main></template> <script>export default {  props: {    label: { type: String, required: true },    date: { type: String, default: null },    amount: { type: Number, default: null },    totalAmount: { type: Number },  },  computed: {    amountVisual() {      return this.amount !== null ? this.amount : this.totalAmount;    },    labelVisual() {      return this.date || this.label;    },  },}; </script>```js <template>

        <main> <p>{{ labelVisual }}</p> <h2>{{ amountVisual }}</h2> </main> </template> <script> export default { props: { label: { type: String, required: true }, date: { type: String, default: null }, amount: { type: Number, default: null }, totalAmount: { type: Number }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, labelVisual() { return this.date || this.label; }, }, }; </script>
        Cesidio Antonio Di Benedetto Carri

        Cesidio Antonio Di Benedetto Carri

        student•
        hace 2 años

        Para hacerlo un poco mas real, cree una arreglo que tiene fechas y montos y cree una propiedad computada que devuelve el total del arreglo.

        Dejo el arreglo por si alguien mas lo quiere usar

        const data = [  {    date: "1/8/2024",    amount: 20823.79,  },  {    date: "1/24/2024",    amount: 3152.06,  },  {    date: "2/26/2023",    amount: 4430.17,  },  {    date: "7/21/2023",    amount: 15369.65,  },  {    date: "9/24/2023",    amount: 6618.09,  },  {    date: "2/7/2023",    amount: 5312.18,  },  {    date: "3/11/2023",    amount: 9195.41,  },  {    date: "11/28/2023",    amount: 17559.02,  },  {    date: "5/22/2023",    amount: 20117.18,  },  {    date: "1/16/2024",    amount: 13961.1,  },  {    date: "11/26/2023",    amount: 3652.74,  },  {    date: "8/13/2023",    amount: 18187.65,  },  {    date: "10/28/2023",    amount: 6987.19,  },  {    date: "1/12/2024",    amount: 3119.4,  },  {    date: "11/21/2023",    amount: 7542.17,  },  {    date: "3/12/2023",    amount: 17814.23,  },  {    date: "9/12/2023",    amount: 12095.57,  },  {    date: "4/27/2023",    amount: 4641.93,  },  {    date: "3/3/2023",    amount: 12634.8,  },  {    date: "9/29/2023",    amount: 17143.73,  },  {    date: "10/12/2023",    amount: 1522.53,  },  {    date: "5/6/2023",    amount: 13567.38,  },  {    date: "1/4/2024",    amount: 2977.87,  },  {    date: "3/18/2023",    amount: 7131.69,  },  {    date: "11/21/2023",    amount: 11780.8,  },  {    date: "1/18/2024",    amount: 11815.86,  },  {    date: "11/26/2023",    amount: 22926.26,  },  {    date: "9/2/2023",    amount: 7594.23,  },  {    date: "10/11/2023",    amount: 4630.2,  },  {    date: "3/13/2023",    amount: 20781.3,  },  {    date: "6/6/2023",    amount: 11390.69,  },  {    date: "4/13/2023",    amount: 16338.37,  },  {    date: "2/28/2023",    amount: 17881.87,  },  {    date: "10/11/2023",    amount: 2331.36,  },  {    date: "6/15/2023",    amount: 11103.48,  },  {    date: "11/9/2023",    amount: 2599.09,  },  {    date: "1/28/2023",    amount: 23738.82,  },  {    date: "6/19/2023",    amount: 8021.65,  },  {    date: "3/12/2023",    amount: 5604.67,  },  {    date: "3/8/2023",    amount: 21311.96,  },  {    date: "2/2/2023",    amount: 1816.74,  },  {    date: "12/23/2023",    amount: 5404.06,  },  {    date: "11/28/2023",    amount: 7744.4,  },  {    date: "4/25/2023",    amount: 10608.9,  },  {    date: "4/17/2023",    amount: 21815.45,  },  {    date: "7/5/2023",    amount: 11746.43,  },  {    date: "7/19/2023",    amount: 19824.12,  },  {    date: "8/22/2023",    amount: 19977.67,  },  {    date: "11/5/2023",    amount: 7344.03,  },  {    date: "2/17/2023",    amount: 13347.68,  },  {    date: "10/9/2023",    amount: 4904.94,  },  {    date: "6/17/2023",    amount: 11664.09,  },  {    date: "10/17/2023",    amount: 12247.04,  },  {    date: "5/10/2023",    amount: 14293.81,  },  {    date: "7/25/2023",    amount: 7425.03,  },  {    date: "6/27/2023",    amount: 4129.25,  },  {    date: "7/15/2023",    amount: 16421.45,  },  {    date: "10/23/2023",    amount: 21738.46,  },  {    date: "7/6/2023",    amount: 5455.79,  },  {    date: "10/11/2023",    amount: 17494.79,  },  {    date: "5/12/2023",    amount: 24565.4,  },  {    date: "6/17/2023",    amount: 22787.62,  },  {    date: "12/18/2023",    amount: 6659.55,  },  {    date: "4/11/2023",    amount: 10978.4,  },  {    date: "7/14/2023",    amount: 23773.24,  },  {    date: "4/14/2023",    amount: 8688.24,  },  {    date: "3/20/2023",    amount: 11118.29,  },  {    date: "2/24/2023",    amount: 19238.98,  },  {    date: "9/4/2023",    amount: 15077.51,  },  {    date: "9/9/2023",    amount: 9251.18,  },  {    date: "12/27/2023",    amount: 9307.45,  },  {    date: "10/17/2023",    amount: 5121.13,  },  {    date: "10/30/2023",    amount: 15649.65,  },  {    date: "8/11/2023",    amount: 11574.35,  },  {    date: "11/5/2023",    amount: 21995.88,  },  {    date: "1/30/2023",    amount: 14133.58,  },  {    date: "7/21/2023",    amount: 17170.08,  },  {    date: "4/5/2023",    amount: 13438.48,  },  {    date: "11/3/2023",    amount: 3522.37,  },  {    date: "8/3/2023",    amount: 17210.06,  },  {    date: "8/31/2023",    amount: 12097.81,  },  {    date: "5/7/2023",    amount: 18118.22,  },  {    date: "3/15/2023",    amount: 9370.82,  },  {    date: "8/29/2023",    amount: 13671.87,  },  {    date: "1/22/2024",    amount: 2526.03,  },  {    date: "11/16/2023",    amount: 13959.17,  },  {    date: "7/18/2023",    amount: 13273.48,  },  {    date: "9/24/2023",    amount: 19931.42,  },  {    date: "10/21/2023",    amount: 8111.76,  },  {    date: "12/30/2023",    amount: 23845.41,  },  {    date: "9/9/2023",    amount: 5140.1,  },  {    date: "4/13/2023",    amount: 10185.53,  },  {    date: "5/27/2023",    amount: 10980.17,  },  {    date: "12/20/2023",    amount: 13038.14,  },  {    date: "7/12/2023",    amount: 23479.35,  },  {    date: "6/28/2023",    amount: 5058.69,  },  {    date: "4/2/2023",    amount: 23941.86,  },  {    date: "2/8/2023",    amount: 16924.1,  },  {    date: "5/14/2023",    amount: 4597.63,  },  {    date: "11/12/2023",    amount: 13485.06,  },];

        export default data;

        Jose Alejandro Pantoja Giraldo

        Jose Alejandro Pantoja Giraldo

        student•
        hace 3 años

        Mi solucion:

        labelVisual() { return this.amount !== null ? "2023-02-22" : this.label; },
        Yefreilee Danny Samuel Parra

        Yefreilee Danny Samuel Parra

        student•
        hace 3 años

        En el amount en Home, le coloque como parametro :amount="null" y me funciono perfectamente, lo que me gustaria saber si es correcto que lo haga asi, o si por lo contrario deberia hacerle una variable y returnar el valor de null? Saludos!

          Luis Cano

          Luis Cano

          student•
          hace 3 años

          Si puedes asignar directamente null al prop de tu componente :amount=“null”, pero es mejor pasarle una variable :amount=“amount” ya que luego puedes poner un watcher al prop si quieres "escuchar" un cambio en el componente padre.

        Miguel Angel Reyes Moreno

        Miguel Angel Reyes Moreno

        student•
        hace 4 años

        Esto hice para una fecha:

        Index.vue:

        <template> <main> <p>{{ selectedDate }}</p> <h2>{{ amountVisual }}</h2> </main> </template> <script> export default { props: { label: { type: String, required: true, }, dateLabel: { type: String, default: null, }, totalAmount: { type: Number, required: true, }, amount: { type: Number, default: null, }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, selectedDate() { return this.dateLabel !== null ? this.dateLabel : this.label; }, }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>

        Home.vue:

        <template> <Layout> <template #header> <Header></Header> </template> <template #resume> <Resume :label="'Ahorro total'" :totalAmount="50000" :amount="amount" :dateLabel="dateLabel" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <script> import Header from "./Header.vue"; import Layout from "./Layout.vue"; import Movements from "./Movements.vue"; import Resume from "./Resume/Index.vue"; export default { components: { Header, Layout, Movements, Resume, }, data() { return { amount: null, dateLabel: "22/10/2022", }; }, }; </script>
          Juan Guillermo Perez Cardozo

          Juan Guillermo Perez Cardozo

          student•
          hace 3 años

          me parece una buena forma de lograr el reto

        Kenneth Leonel Cruz Ordoñez

        Kenneth Leonel Cruz Ordoñez

        student•
        hace 4 años

        Index.vue

        //se agrega función computada y se utiliza dicha función en el template labelVisual(){ const timestamp = (new Date).toLocaleString('en-US'); const label = 'Ahorro total'; return this.label !== null ? label : `${label}: ${timestamp}`; },
        //En la función data, se agrega la variable 'label' y se envía como parametro de 'label' en el template `Resume` data(){ return { amount: null, label: null, }
        Francisco Javier Cervantes Candelario

        Francisco Javier Cervantes Candelario

        student•
        hace 4 años

        Mi solución al reto:

        Home.vue

        <template> <Layout> <template #header> <Header /> </template> <template #resume> <Resume :label="'Ahorro total'" :date="date" :amount="amount" :total-amount="200000" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <script> import Layout from "./Layout.vue"; import Header from "./Header.vue"; import Resume from "./Resume/Index.vue"; import Movements from "./Movements.vue"; export default { components: { Layout, Header, Resume, Movements, }, data() { return { amount: 100, date: "26 de noviembre del 2022", }; }, }; </script> <style></style>

        Index.vue

        <template> <main> <p v-text="labelShow"></p> <h1 v-text="amountShow"></h2> </main> </template> <script> export default { props: { label: { type: String, }, date: { type: String, default: null, }, amount: { type: Number, default: null, }, totalAmount: { type: Number, }, }, computed: { amountShow() { return this.amount !== null ? this.amount : this.totalAmount; }, labelShow() { return this.date == null ? this.label : this.date; }, }, data() { return {}; }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100vh; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } </style>
        Alvaro Eduardo Armijos Sarango

        Alvaro Eduardo Armijos Sarango

        student•
        hace 4 años

        Así me quedo la parte del reto:

        Home.vue:

        <template> <Layout> <template #header> <Header /> </template> <template #resume> <Resume :label="label" :date="'06 de Abril 2022'" :total-amount="100000" :amount="amount" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <script> import Layout from "./Layout.vue"; import Header from "./Header.vue"; import Resume from "./Resume/Index.vue"; import Movements from "./Movements.vue"; export default { components: { Layout, Header, Resume, Movements, }, data() { return { amount: null, label: null, }; }, }; </script>

        Index.vue:

        <template> <main> <p>{{ labelVisual }}</p> <h2>{{ amountVisual }}</h2> </main> </template> <script> export default { props: { label: { type: String, default: null, }, date: { type: String, }, totalAmount: { type: Number, }, amount: { type: Number, default: null, }, }, computed: { amountVisual() { return this.amount !== null ? this.amount : this.totalAmount; }, labelVisual() { return this.label !== null ? this.label : this.date; }, }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>
        Javier Andrés Moreno Tocarruncho

        Javier Andrés Moreno Tocarruncho

        student•
        hace 4 años

        Va, realicé el reto de esta forma. Cualquier mejora que me sugieran será bienvenida. 😁

        El template Home

        <template> <Layout> <template #header> <Header /> </template> <template #resume> <Resume :label="'Ahorro total'" :specific-date="specificDate" :total-amount="100000" :specific-amount="specificAmount" /> </template> <template #movements> <Movements /> </template> </Layout> </template> <style></style> <script> import Layout from "./LayoutItem.vue"; import Header from "./HeaderItem.vue"; import Resume from "./Resume/IndexResume.vue"; import Movements from "./Movements/IndexMovements.vue"; export default { components: { Layout, Header, Resume, Movements, }, data() { return { specificAmount: null, specificDate: null, }; }, }; </script>

        El template Resume

        <template> <main> <p>{{ labelInfo }}</p> <h2>{{ amountToShow }}</h2> </main> </template> <script> export default { props: { label: { type: String, }, totalAmount: { type: Number, }, specificAmount: { type: Number, default: null, }, specificDate: { type: String, default: null, }, }, computed: { amountToShow() { return this.specificAmount !== null ? this.specificAmount : this.totalAmount; }, labelInfo() { return this.label !== null ? this.label : this.labelInfo; }, }, }; </script> <style scoped> main { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; } h1, p { margin: 0; text-align: center; } h1 { margin-top: 14px; color: var(--brand-green); } .graphic { display: flex; justify-content: center; align-items: center; width: 100%; padding: 48px 24px; box-sizing: border-box; } </style>