An Emotion entry is one feeling, logged as a word: Anxious, Content, Proud. You pick the word and say how strongly you felt it, and optionally what it was about. Everything else the app knows about the feeling comes from the word itself, which sits in a catalog the way a food sits in Food: where it falls on three axes and which family it belongs to. You log an amount of a food and never type its calories; you log an emotion and never place it on the axes.
The Emotions module (Modules) makes the catalog and three trackables, filed under Signals: Emotions, which you log, and Pleasantness and Stress, read from it. It is emotionModule in packages/core/src/modules.ts, over the word list in packages/core/src/emotions.ts.
The Emotion catalog
119 words in 11 families, each with three values from −1 to 1 and a family:
- Pleasantness and Energy, the two axes of the circumplex model of affect (Russell, 1980).
- Control, the dominance axis of the PAD model (Mehrabian and Russell, 1974). It is what tells anger, which feels in control, from fear, which does not.
- Family, a Category (Catalog Entities), starting from Plutchik’s wheel of emotions (1980): Joy, Love (his Trust), Interest (his Anticipation), Surprise, Fear, Anger, Disgust and Sadness, and three of Datler’s own beside them: Calm for the quiet pleasant feelings, Shame for the self-conscious ones and Tiredness for the worn-out ones. Each family has its colour.
The words and where each sits are Datler’s own; no word list is taken from a published lexicon or another app. A test holds the quadrants to the model: Excited is pleasant and high in energy, Calm pleasant and low, Sad unpleasant and low, Anxious unpleasant and high, Angry in control and Afraid not. The catalog’s source names the three papers and is shown under its name on its page; the Emotion glossary term carries the same citations.
Logging one
Emotions is a record of two fields:
- Emotion, an item field on the Emotion catalog, required, that carries the entry’s amount. The amount is on a scale of its own, Intensity, from 0.05 to 1 in steps of 0.05, rather than a quantity in the item’s units. Once a word is picked, the log panel shows a slider for it, with nothing written on the scale, starting at 0.5.
- Subject, what the feeling was about: a text field that remembers its words, offering past ones as you type, the most used first, and taking a new one as readily. It is a word rather than a catalog, since it has nothing to read but itself. Being anxious about work and about money is two entries, each with its own intensity.
An entry reads as “Anxious at 0.7 · Work”. Picking three emotions logs three entries. The trackable is asked once a day in the Rundown, answered by any emotion, and its own Reading is a Count. A day of entries lists them rather than totalling them, and a table calls the amount by its scale’s label.
An item field’s amount can be a scale like this one (amount: { label, min, max, step, start }, read by amountScaleOf in packages/core/src/value-schema.ts) or a quantity in the item’s units, as Diet’s Food field is (Diet and Nutrition).
Reading them
Because each entry is an amount of an item, the item’s values are read through the entry as what it contained (The List Model), scaled by the intensity, the way a food’s calories are scaled by the grams:
- Pleasantness, a derived trackable: the Mean over the day’s emotions of each one’s pleasantness times its intensity. It is how pleasant the day felt, from −1 to 1.
- Stress, a derived trackable: the Sum of the intensities of the day’s emotions in the Fear and Anger families. A day with emotions logged and none of those reads 0; a day with none logged has no value.
- An axis is a derived trackable over Emotions whose Aggregate formula reads the item’s
energyorcontrol, as Pleasantness reads itspleasantness: the trackable form offers an item’s number values, and the Intensity itself, for a trackable whose item field carries the amount (Derived Trackables). A Reading on a card or in a visualization chooses only a reduce, so it does not reach an axis (Readings). - A family is a derived trackable over Emotions with a Category filter on Family, as Stress is, which the trackable form offers (Catalog Categories). Following one emotion on its own would need a filter on the item itself, which no form offers.
Energy stays a separate daily check, in the Energy module: how the body feels rather than a feeling.
In the demo profiles
Chad’s and John’s emotions come from their simulated days: a daily emotion placed from how the day went (the direction from the middle gives the word, how pleasant the day was the intensity), each stressful thing as a Fear or an Anger at its level with what it was about, and for Chad a quieter one some evenings, calm after meditating. They are drawn separately, so the rest of each profile is unchanged. Their planted patterns hold: a night’s sleep and the next day’s Pleasantness, and meditation and lower Stress.
Related
Catalog Entities · Readings · The List Model · Modules · Diet and Nutrition