Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Meu ordenaDatas não funcionou

Boa noite, meu ordenaDatas não funcionou. Podem me ajudar?

Segue meu código.

data.js:

export const removeDatasRepetidas = function (parametro) {

    const datasUnicas = []

    parametro.forEach(function(element) {

        if (datasUnicas.indexOf(element.dataFormatada) === -1) {


            datasUnicas.push(element.dataFormatada)
        }
    })

    return datasUnicas

}

export const ordenaDatas = function (parametro) {

    parametro.sort(function (a, b) {

        const primeiraData = moment(a, 'DD/MM/YYYY').format('YYYYMMDD')
        const segundaData = moment(b, 'DD/MM/YYYY').format('YYYYMMDD')

        return segundaData - primeiraData
    })
}

carregaTarefa.js:

export const carregaTarefa = function () {

    const tarefasAtualizadas = JSON.parse(localStorage.getItem('tarefas')) || []

    document.querySelector('[data-list]').innerHTML = " " 

    ordenaDatas(removeDatasRepetidas(tarefasAtualizadas))

    removeDatasRepetidas(tarefasAtualizadas).forEach(function(element) {

        document.querySelector('[data-list]').appendChild(criaData(element))

    })

}

criaTarefa.js:

import { carregaTarefa } from "./carregaTarefa.js";
import BotaoConclui from "./concluiTarefa.js";
import BotaoDeleta from "./deletaTarefa.js";

export const handleNovoItem = function(evento) {

    evento.preventDefault();

    const tarefasSalvas = JSON.parse(localStorage.getItem('tarefas')) || []
    //"tarefas", no projeto do professor.

    //<input class="form-input" type="text" data-form-input>
    const valorInput = document.querySelector('[data-form-input]').value

    const data = moment(document.querySelector('[data-form-date]').value)
    const dataFormatada = data.format('DD/MM/YYYY')

    const horario = data.format('HH:mm')

    const concluida = false

    const dadosNovaTarefa = {
        valorInput,
        dataFormatada,
        horario,
        concluida
    }

    const tarefasAtualizadas = [...tarefasSalvas, dadosNovaTarefa]

    localStorage.setItem('tarefas', JSON.stringify(tarefasAtualizadas))

    document.querySelector('[data-form-input]').value = " "

    carregaTarefa()

}

export const Tarefa = function({valorInput, horario, concluida}, index) {
    const conteudo = `<p class='content'>${horario} * ${valorInput}</p>`

    const criaTarefa = document.createElement('li')

    if (concluida) {
        criaTarefa.classList.add("done")
    }
    criaTarefa.classList.add("task")    
    criaTarefa.innerHTML = conteudo
    criaTarefa.appendChild(BotaoConclui(carregaTarefa, index))
    criaTarefa.appendChild(BotaoDeleta(carregaTarefa, index))

    return criaTarefa

}
1 resposta
solução!

Oi Bruno, tudo certo?

No seu arquivo carregaTarefa.js faltou as seguintes importações:

import { ordenaDatas, removeDatasRepetidas } from "../service/data.js";
import { criaData } from './criaData.js';

Além disso, na sua função de ordenar as datas, a ordenaDatas no arquivo data.js não está funcionando de maneira esperada pois você está subtraindo segundaData de primeiraData, e na verdade deveria ser ao contrário:

return primeiraData - segundaData;

Assim, ele irá comparar sempre a primeira com a segunda.

Espero ter ajudado, bons estudos =)