RippleHabit
Build Emotional Awareness Daily
What are you feeling?
π Angry
π Happy
π¨ Afraid
π³ Ashamed
π Lonely
β Back
You selected:
Save Reflection
β Back
Your Emotional Check-Ins
const emotionMap = {
sad: [‘Disappointed’, ‘Grief’, ‘Hopeless’, ‘Hurt’, ‘Depressed’, ‘Ashamed’, ‘Lonely’, ‘Isolated’, ‘Miserable’, ‘Heartbroken’, ‘Let down’, ‘Gloomy’, ‘Empty’, ‘Discouraged’, ‘Downcast’, ‘Rejected’, ‘Powerless’, ‘Sorrowful’, ‘Apathetic’, ‘Tearful’, ‘Numb’, ‘Withdrawn’],
angry: [‘Frustrated’, ‘Irritated’, ‘Bitter’, ‘Annoyed’, ‘Resentful’, ‘Hostile’, ‘Jealous’, ‘Agitated’, ‘Furious’, ‘Mad’, ‘Rageful’, ‘Enraged’, ‘Fuming’],
happy: [‘Joyful’, ‘Excited’, ‘Content’, ‘Grateful’, ‘Playful’, ‘Proud’, ‘Energized’, ‘Inspired’, ‘Loving’, ‘Optimistic’, ‘Satisfied’, ‘Cheerful’],
afraid: [‘Anxious’, ‘Insecure’, ‘Scared’, ‘Worried’, ‘Panicked’, ‘Overwhelmed’, ‘Dread’, ‘Helpless’, ‘Vulnerable’, ‘Hesitant’, ‘Fearful’],
ashamed: [‘Embarrassed’, ‘Guilty’, ‘Humiliated’, ‘Regretful’, ‘Inadequate’, ‘Ashamed’, ‘Self-conscious’, ‘Remorseful’],
lonely: [‘Abandoned’, ‘Alienated’, ‘Neglected’, ‘Empty’, ‘Unwanted’, ‘Disconnected’, ‘Unseen’, ‘Unloved’]
};
let selectedPrimary = ”;
let selectedSecondary = ”;
function selectPrimary(primary) {
selectedPrimary = primary;
document.getElementById(‘step1’).classList.add(‘hidden’);
document.getElementById(‘step2’).classList.remove(‘hidden’);
document.getElementById(‘selectedPrimary’).innerText = `You selected: ${primary}`;
const select = document.getElementById(‘subEmotionSelect’);
select.innerHTML = ‘Select a specific emotion’;
emotionMap[primary].forEach(em => {
const option = document.createElement(‘option’);
option.value = em;
option.innerText = em;
select.appendChild(option);
});
}
function selectSecondary(secondary) {
selectedSecondary = secondary;
document.getElementById(‘step2’).classList.add(‘hidden’);
document.getElementById(‘step3’).classList.remove(‘hidden’);
document.getElementById(‘finalEmotion’).innerText = secondary;
}
function saveEntry() {
const note = document.getElementById(‘journal’).value.trim();
const entry = {
emotion: selectedSecondary,
note,
date: new Date().toLocaleString()
};
const existing = JSON.parse(localStorage.getItem(’emotionHistory’) || ‘[]’);
existing.unshift(entry);
localStorage.setItem(’emotionHistory’, JSON.stringify(existing));
document.getElementById(‘journal’).value = ”;
document.getElementById(‘step3’).classList.add(‘hidden’);
document.getElementById(‘step1’).classList.remove(‘hidden’);
loadHistory();
}
function goBackToStep1() {
document.getElementById(‘step2’).classList.add(‘hidden’);
document.getElementById(‘step1’).classList.remove(‘hidden’);
}
function goBackToStep2() {
document.getElementById(‘step3’).classList.add(‘hidden’);
document.getElementById(‘step2’).classList.remove(‘hidden’);
}
function loadHistory() {
const container = document.getElementById(‘historyList’);
container.innerHTML = ”;
const history = JSON.parse(localStorage.getItem(’emotionHistory’) || ‘[]’);
history.slice(0, 5).forEach(entry => {
const div = document.createElement(‘div’);
div.className = ‘history-entry’;
div.innerHTML = `${entry.emotion} ${entry.date}
${entry.note}`;
container.appendChild(div);
});
}
loadHistory();