Created
October 17, 2011 00:19
-
-
Save cpudney/1291635 to your computer and use it in GitHub Desktop.
Infinite Jest Visualization
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TODO | |
Improved year labels (mouseover -> shows full name in tooltip) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" | |
"http://www.w3.org/TR/html4/loose.dtd"> | |
<html> | |
<head> | |
<title>Infinite Jest</title> | |
<meta http-equiv="X-UA-Compatible" content="chrome=1"> | |
<link href="style.css" media="screen" rel="stylesheet" type="text/css"/> | |
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.js?2.4.5"></script> | |
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.csv.js?2.4.5"></script> | |
<style type="text/css"> | |
</style> | |
</head> | |
<body> | |
<div> | |
<table width="100%" border="0" cellspacing="0" cellpadding="0"> | |
<tr> | |
<td align="left"><span class="title">Infinte Jest v1.0</span> | |
<a href="http://creativecommons.org/licenses/by-sa/3.0/"><img align="top" alt="Creative Commons License" | |
src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png"/></a> | |
</td> | |
<td align="right">By <a href="http://vislives.com/" target="_blank">Chris Pudney</a>; | |
Data courtesy of | |
<a href="http://faculty.sunydutchess.edu/oneill/Infinite.htm" target="_blank">Dr, Keith O'Neill</a> | |
& | |
<a href="http://infinitejest.wallacewiki.com/david-foster-wallace/index.php" target="_blank">The | |
Infinite Jest Wiki</a></td> | |
</tr> | |
</table> | |
</div> | |
<div id="chart"></div> | |
<div id="infobox"></div> | |
<script src="infinite-jest.js" type="text/javascript"></script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Chapter | Scene | Page | Year | DayName | MonthDay | CharactersPresent | Synopsis | |
---|---|---|---|---|---|---|---|---|
1 | 1 | 3 | Year of Glad | Hal Incandenza | Hal narrates: interview with University of Arizona Deans. Questions regarding Hal's rather stellar record. | |||
1 | 2 | 10 | (unspecified) | Hal Incandenza | Hal narrates: Eating the mold. | |||
1 | 3 | 11 | Year of Glad | Hal Incandenza | Hal attempts to explain his record to the deans. Is there something wrong with his voice? | |||
1 | 4 | 13 | Year of Glad | Hal Incandenza | Hal restrained in a University of Arizona men's room. | |||
1 | 5 | 15 | Year of Glad | Hal Incandenza | Hal is taken away in an ambulance. | |||
2 | 6 | 17 | Year of the Depend Adult Undergarment | Ken Erdedy | Ken Erdedy, preparing for a marijuana binge, waits for a woman to deliver the goods. | |||
3 | 7 | 27 | Year of the Tucks Medicated Pad | 4/1 | Hal Incandenza;James Orin Incandenza | 12-year-old Hal goes to see a "conversation" doctor, who turns out to be his father in disguise. | ||
4 | 8 | 32 | Year of the Depend Adult Undergarment | 5/9 | Hal Incandenza;Orin Incandenza;Mario Incandenza | Hal gets phone call from Orin, Mario wakes up. | ||
5 | 9 | 33 | Year of the Depend Adult Undergarment | 4/1 | Medical Attache | The medical attaché comes home to relax and watch some "Entertainment". | ||
5 | 10 | 37 | Year of the Trial-Size Dove Bar | Clenette Henderson;Wardine | Clenette narrates: tells a tale about her friend Wardine's abusive family. | |||
5 | 11 | 38 | (unspecified) | Bruce Green;Mildred Bonk | The tale of Bruce Green and Mildred Bonk. | |||
6 | 12 | 39 | Year of the Depend Adult Undergarment | Hal Incandenza;Mario Incandenza | Hal and Mario in their room at night. They discuss Himself's funeral. | |||
6 | 13 | 42 | Year of the Depend Adult Undergarment | 4/1 | Medical Attache | The medical attaché is still watching the “Entertainment” | ||
6 | 14 | 42 | Year of the Depend Adult Undergarment | October | 10/16 | Orin Incandenza | Orin wakes up in Arizona, wishes last night's "subject" would leave. | |
7 | 15 | 49 | Year of the Depend Adult Undergarment | Hal Incandenza | 17-year-old Hal getting high in the basement of Enfield Tennis Academy. | |||
7 | 16 | 55 | Year of Dairy Products from the American Heartland | Autumn | 9/22 | Don Gately | Don Gately's criminal career comes to an end after accidentally murdering a Canadian VIP during a robbery. This VIP has ties to various anti-ONAN groups. | |
7 | 17 | 60 | Year of the Depend Adult Undergarment | Description of a state-of-the-art teleputer. | ||||
7 | 18 | 60 | Year of the Depend Adult Undergarment | 11/3 | Jim Troeltsch | Troelsch sick in bed at ETA. | ||
7 | 19 | 60 | (unspecified) | Description of 12 yr old's nightmare at ETA. | ||||
8 | 20 | 63 | Year of the Depend Adult Undergarment | James Orin Incandenza | Brief description and history of ETA and its founder, James O. Incandenza. | |||
8 | 21 | 65 | Year of the Depend Adult Undergarment | 11/1 | Orin Incandenza | Orin at football practice. | ||
9 | 22 | 66 | Year of the Depend Adult Undergarment | Michael Pemulis | Michael Pemulis as "Big Buddy," talks about drugs to his younger charges | |||
9 | 23 | 67 | Year of the Depend Adult Undergarment | Hal Incandenza | Hal, after a bong hit, relates a tennis dream. | |||
10 | 24 | 68 | Year of the Depend Adult Undergarment | Kate Gompert | Kate Gompert explains the extent of her addiction to marijuana ("Bob Hope") to a young doctor. | |||
10 | 25 | 78 | Year of the Depend Adult Undergarment | 4/2 | Medical Attache | The medical attaché's wife returns home. | ||
10 | 26 | 79 | Year of the Depend Adult Undergarment | Gerhardt Schtitt;Mario Incandenza | Gerhardt Schtitt and Mario talk game theory. | |||
10 | 27 | 85 | Year of the Depend Adult Undergarment | Tiny Ewell | Tiny Ewell and an unnamed passenger are transported to the Enfiled Marine VA hospital. | |||
11 | 28 | 87 | Year of the Depend Adult Undergarment | 4/2 | Medical Attache | The list of people who have come to the medical attaché's house to look at him. | ||
11 | 29 | 87 | Year of the Depend Adult Undergarment | 4/30 | Remy Marathe;Hugh/Helen Steeply | Tuscon, Arizona: Maranthe and special agent Hugh Steeply (in drag) meet on a hillside to discuss the appearance, earlier that month, of a special form of “Entertainment”. | ||
11 | 30 | 93 | (unspecified) | Description of a herd of feral hamsters in the Great Concavity | ||||
11 | 31 | 93 | Year of the Depend Adult Undergarment | 4/30 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | ||
11 | 32 | 95 | Year of the Depend Adult Undergarment | 11/3 | Jim Troeltsch;Michael Pemulis;John "No Relation" Wayne;Ortho "The Darkness" Stice;Jim Struck Jr.;Keith "The Viking" Freer;Hal Incandenza | Locker room banter at ETA. Troelsch, Pemulis, Wayne, Stice, Struck, Freer and Hal are present. | ||
11 | 33 | 97 | Year of the Depend Adult Undergarment | 4/30 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. Sunset. | ||
11 | 34 | 97 | Year of the Depend Adult Undergarment | 11/3 | Jim Troeltsch;Michael Pemulis;John "No Relation" Wayne;Ortho "The Darkness" Stice;Jim Struck Jr.;Keith "The Viking" Freer;Hal Incandenza | More banter in the locker room. Complaints about Schtitt's expectations of them. | ||
11 | 35 | 105 | Year of the Depend Adult Undergarment | 4/30 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. Talk of love. | ||
11 | 36 | 109 | Year of the Depend Adult Undergarment | 11/3 | Jim Troeltsch;John "No Relation" Wayne;Ortho "The Darkness" Stice;Jim Struck Jr.;Hal Incandenza;Idris Arslanian;Evan Ingersoll;Kent Blott | Hal with his "little buddies" (Kent Blott, Idris Arslanian, Ingersol). He convinces them that their resentment of Schtitt is engineered by Schtitt and his staff. Switches to John (NR) Wayne, Troelsch, Struck, and Stice, each with his group of younger students. | ||
11 | 37 | 121 | Year of the Depend Adult Undergarment | Mid October | 10/16 | Mario Incandenza;"USS" Millicent Kent | “Mario Incandenza's first and Only Even Remotely Romantic Experience, Thus Far". It is indeed only remote, with "USS" Millicent Kent. | |
11 | 38 | 126 | Year of the Depend Adult Undergarment | 4/30 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | ||
11 | 39 | 127 | Year of the Depend Adult Undergarment | 4/30 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. (One line) | ||
12 | 40 | 127 | Year of the Depend Adult Undergarment | Lyle | First description of the ETA's oiled guru, Lyle. | |||
12 | 41 | 128 | (unspecified) | Poor Tony Krause | "Yrstruly" narrates a gruesome story involving C, Poor Tony and the despicable Dr. Wo in Chinatown. C ODs | |||
13 | 42 | 135 | Year of the Depend Adult Undergarment | 11/3 | Hal Incandenza;Orin Incandenza | Hal receives a phone call from Orin, who asks him about Canadian separatism. | ||
13 | 43 | 137 | (unspecified) | Introduction to the Ennet House Drug and Alcohol Recovery House (sic). | ||||
13 | 44 | 138 | Year of Dairy Products from the American Heartland | Excerpt from a letter to State Farm detailing a bricklayer's bizarre accident. This is perhaps Wallace's most obvious example of borrowing from urban myths. | ||||
13 | 45 | 140 | Year of the Perdue Wonderchicken | Hal Incandenza | Hal's seventh-grade essay comparing "Hawaii-Five-O"'s Steve McGarrett with "Hill Street Blues"'s Frank Furillo. The latter is a post-modern, more complicated, and perhaps too mild hero. | |||
13 | 46 | 142 | Year of the Depend Adult Undergarment | 8/10 | Hugh/Helen Steeply;Poor Tony Krause | "Helen" Steeply's Moment article about a woman who carried her artificial heart in her purse. She was mugged. Poor Tony was the purse snatcher. | ||
13 | 47 | 144 | (unspecified) | Alphabetic list of anti-ONAN groups. | ||||
13 | 48 | 144 | (unspecified) | Why videophony didn't work. | ||||
14 | 49 | 151 | Year of the Depend Adult Undergarment | 10/15 | Michael Pemulis | Urine tests at ETA; Pemulis sells clean samples. | ||
15 | 50 | 157 | 1960 | James Orin Incandenza | James Incandenza's father narrates (addressing 10-year-old Jim): Discusses Marlon Brando, tennis, and his own father's reaction when he blew out his knee at a match. | |||
15 | 51 | 169 | Year of the Depend Adult Undergarment | 11/4 | Michael Pemulis | Pemulis scores some DMZ (Madame Psychosis). | ||
15 | 52 | 172 | Year of the Yushityu 2007 Mimetic-Resolution-Cartridge-View-Motherboard-Easy-To-Install-Upgrade For Infernatron/InterLace TP Systems For Home, Office, Or Mobile (sic) | Hal Incandenza | Hal's narration of “Tennis and the Feral Prodigy”, a film by Mario Incandenza. | |||
15 | 53 | 176 | Year of the Depend Adult Undergarment | 11/5 | Pat Montesian | Selected transcripts from Patricia Montesian's log at Ennet House. Voices of recovering drug and alcohol abusers. | ||
16 | 54 | 181 | Year of the Depend Adult Undergarment | Late October | 10/30 | Madame Psychosis;Mario Incandenza;Hal Incandenza | At WYYY, “Sixty Minutes More or Less” with Madame Psychosis, is about to go on. The late shift engineer goes to the roof to drink a Millennial Fizzy and listen to the show. Mario, with Hal at the Headmaster's House listens to the show. | |
16 | 55 | 193 | Year of the Depend Adult Undergarment | Description of units 1-7 of Ennet House. | ||||
16 | 56 | 198 | Year of the Depend Adult Undergarment | 11/6 | Keith "The Viking" Freer;Eliot Kornspan;Graham Rader;Lyle;Michael Pemulis | Freer and Kornspan work out while Rader consults with Lyle. Pemulis eavesdrops. | ||
16 | 57 | 200 | Year of the Depend Adult Undergarment | Tiny Ewell | More detailed introduction to Ennet House and its residents. Tiny Ewell's obsession with tattoos. | |||
16 | 58 | 211 | Year of the Depend Adult Undergarment | Michael Pemulis | Michael Pemulis explains that he has scored some DMZ, the "Yale U. of the Ivy League of Acid" from some Canadian insurgents. The boys decide to plan on taking it the weekend before the WhataBurger Invitational. | |||
17 | 59 | 219 | Year of the Depend Adult Undergarment | 11/7 | Joelle Van Dyne;Molly Nitkin | Joelle Van Dyne, star of Jim Incandenza's movies, goes to Molly Notkin's MA thesis party. | ||
17 | 60 | 223 | Year of Glad | Chronology of Subsidized Time. | ||||
17 | 61 | 223 | Year of the Depend Adult Undergarment | Joelle Van Dyne;Orin Incandenza;James Orin Incandenza | Joelle thinks about Orin and his father, the "world's best hailer of Boston cabs”. | |||
17 | 62 | 227 | Year of the Depend Adult Undergarment | Hugh/Helen Steeply;Poor Tony Krause | Helen P. Steeply's (putative) Curriculum Vitae. | |||
17 | 63 | 227 | Year of the Depend Adult Undergarment | Joelle Van Dyne;Molly Nitkin | Joelle attempts to overdose in the bathroom at a party of cinema graduate students. | |||
18 | 64 | 240 | Year of the Depend Adult Undergarment | Geographical description of Enfield, Massachusetts. | ||||
18 | 65 | 242 | Year of the Depend Adult Undergarment | 11/5 | Hal Incandenza;Orin Incandenza | Hal and Orin on the telephone. Now Orin wants to discuss Himself's suicide. (He put his head in a microwave) Meanwhile, Hal is clipping his toenails and making miraculous shots into the wastepaper basket. | ||
19 | 66 | 258 | Year of the Depend Adult Undergarment | 11/6 | Hal Incandenza;John "No Relation" Wayne;Michael Pemulis;Ted Schacht | Tennis meet at Port Washington Tennis Academy, Long Island, New York. Descriptions of Hal and John "No Relation" Wayne playing their respective games. Pemulis gets sick, Schacht plays a French-Canadian. | ||
19 | 67 | 270 | Year of the Depend Adult Undergarment | Don Gately;Geoffrey Day;Charlotte Treat;Randy Lenz | Gately (substance-free for 421 days) is now on staff at Ennet House. Geoffrey Day, Charlotte Treat, Randy Lenz all appear. | |||
19 | 68 | 281 | Year of the Depend Adult Undergarment | ETA returns from Long Island Triumphant. | ||||
20 | 69 | 283 | (unspecified) | Orin Incandenza;Joelle Van Dyne | The story of Orin and Joelle, the Prettiest Girl of All Time (PGOAT). His switch from tennis to football in college. | |||
20 | 70 | 299 | Year of the Depend Adult Undergarment | 11/14 | Poor Tony Krause | Poor Tony goes through withdrawal in the bathroom stall of a Boston public library. | ||
21 | 71 | 306 | Year of the Depend Adult Undergarment | 11/6 | Hal Incandenza;Jim Troeltsch | Mary Esther Thode's "The Personal is the Political is the Pathological”. Example of an exam on psychopathological double-binds. Troelsch's broadcast of the morning's games on WETA (ETA's intercom). Hal is in Theirry Poutrincourt's class on Canadian political history. Some details of anti-ONAN activity (large mirrors across highways). | ||
21 | 72 | 312 | (unspecified) | Mario Incandenza | Mario's surprise birth, and a description of some of his deformaties. | |||
21 | 73 | 317 | Year of the Depend Adult Undergarment | Around midnight April 30 | 5/1 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | |
22 | 74 | 321 | Year of the Depend Adult Undergarment | 11/8 | Michael Pemulis;Hal Incandenza;Evan Ingersoll;Jim Troeltsch;LaMont Chu;Jim Struck Jr.;Otis P. Lord;Trevor "The Axehandle" Axford;Josh Gopnik;J. J. Penn;Keiran McKenna;Todd "Postal Weight" Poselthwaite;Ann Kittenplan;Timmy "Sleepy TP" Peterson;Mary Esther Thode | Interdependence Day. A game of Eschaton. | ||
22 | 75 | 343 | Year of the Depend Adult Undergarment | 11/8 | Don Gately;Joelle Van Dyne | Boston AA meeting: description of several speakers (a "fifty year old immigrant" waxes eloquently about his first solid bowel movement in years) and the "crocodiles". Gately is curious about new girl Joelle. | ||
22 | 76 | 367 | (unspecified) | The Statue of Liberty's product is changed every January 1st. | ||||
22 | 77 | 367 | Year of the Depend Adult Undergarment | Boston AA meeting: a young girl describes her foster father sexually abusing her paraplegic stepsister. | ||||
22 | 78 | 375 | Year of the Depend Adult Undergarment | Around midnight April 30 | 5/1 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | |
22 | 79 | 375 | (unspecified) | James Orin Incandenza;Lyle | James Incandenza's “Found Drama” came out of a late-night session with Lyle. | |||
22 | 80 | 376 | Year of the Depend Adult Undergarment | 11/8 | Boston AA meeting: story of baby's death. | |||
22 | 81 | 379 | (unspecified) | James Orin Incandenza;Lyle | James Incandenza and Lyle in the weight room. | |||
23 | 82 | 380 | Year of the Depend Adult Undergarment | 11/8 | Mario Incandenza | Mario Incandenza's film interpretation of the formation of ONAN. | ||
23 | 83 | 386 | Year of the Depend Adult Undergarment | 11/8 | Lyle;Mario Incandenza;Marlon Bain | Lyle in the weightroom with sweaty ETA student Marlon and others (Anton "Booger" Douchette). Return to Mario's film, which is now covering major political events with a montage of newspaper headlines. History of Johnny Genlte's CUSP and the Great Concavity. | ||
23 | 84 | 394 | Year of the Depend Adult Undergarment | 11/8 | Lyle;Ortho "The Darkness" Stice | Lyle tells Ortho "The Darkness" Stice,"Do not underestimate objects". Stice's bed has been moving at night. | ||
23 | 85 | 395 | Year of the Depend Adult Undergarment | 11/8 | Hal Incandenza | Hal watching Mario's film. Description of Himself's “The Medusa vs. the Odalisque” and “THE JOKE”. | ||
23 | 86 | 398 | Year of the Depend Adult Undergarment | 11/8 | Hal Incandenza | Continuation of Mario's film, with more headlines and a puppet show of Gentle and Rodney Tine, Chief, US Office of Unspecified Services. The story of legendary tennis player Eric Clipperton and his Glock 17 semiautomatic. | ||
23 | 87 | 410 | Year of the Depend Adult Undergarment | 11/8 | Hal Incandenza | Hal watching Mario's film. History of Interlace, proliferation of advertising, and garbage in space. | ||
23 | 88 | 418 | Year of the Depend Adult Undergarment | Around midnight April 30 | 5/1 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | |
23 | 89 | 430 | (unspecified) | Eric Clipperton's death. | ||||
23 | 90 | 434 | Year of the Depend Adult Undergarment | Don Gately | Gately's other job: cleaning bathrooms. | |||
23 | 91 | 436 | Year of the Depend Adult Undergarment | Hal Incandenza | Mario's film continued. More headlines and puppets. The origin of subsidized time. | |||
24 | 92 | 442 | Year of the Depend Adult Undergarment | Gately's relationship with the crocodiles. He remembers the death of his mother. | ||||
24 | 93 | 449 | Year of the Depend Adult Undergarment | Very late October | 10/31 | James Orin Incandenza;Lyle | Hal's bad dream. | |
24 | 94 | 450 | Year of the Depend Adult Undergarment | 11/9 | Morning drills at ETA. | |||
24 | 95 | 461 | Year of the Depend Adult Undergarment | Don Gately | Don Gately's responsibilities at Ennet House. His boss, Pat Montesian. | |||
24 | 96 | 470 | Year of the Depend Adult Undergarment | Pre-dawn May 1 | 5/1 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. Discussion of BS governmentt experiments on human subjects. | |
24 | 97 | 475 | Year of the Depend Adult Undergarment | Don Gately;Pat Montesian | Gately out in Pat Montesian's car. Interesting shift, via a piece of garbage, to Lucien and Bertraud Anitoi's store. Arrival of and interrogation by the dreaded ATF. | |||
25 | 98 | 490 | Year of the Depend Adult Undergarment | Pre-dawn May 1 | 5/1 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | |
25 | 99 | 491 | 1963 | James Orin Incandenza | Jim Incandenza helps his father fix a mattress. | |||
25 | 100 | 503 | Year of the Depend Adult Undergarment | Ken Erdedy | At a NA meeting, Ken Erdedy gets a hug. | |||
25 | 101 | 507 | Year of the Depend Adult Undergarment | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | |||
25 | 102 | 508 | Year of the Depend Adult Undergarment | Hal Incandenza;Charles Tavis;"Lateral" Alice Moore;Avril Incandenza | Hal anticipates an official scolding from Charles Tavis for the Eschaton game. He waits in "Lateral" Alice Moore's office, overhears Avril counseling the pre-teen female ETAs. | |||
25 | 103 | 528 | Year of the Depend Adult Undergarment | Pre-dawn May 1 | 5/1 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. | |
25 | 104 | 531 | Year of the Depend Adult Undergarment | 11/11 | Don Gately;Joelle Van Dyne | Discussion between Gately and Joelle. The latter explains her membership in UHID. | ||
26 | 105 | 538 | Year of the Depend Adult Undergarment | Randy Lenz | Randy Lenz discovers his penchant for killing animals. | |||
26 | 106 | 548 | Year of the Depend Adult Undergarment | No door at Ennet House. | ||||
26 | 107 | 548 | Year of the Depend Adult Undergarment | Early November | 11/1 | Rodney Tine Sr. | Rodney Tine and his special metric ruler. | |
26 | 108 | 550 | Year of the Depend Adult Undergarment | Michael Pemulis;John "No Relation" Wayne;Avril Incandenza | Pemulis interrupts John Wayne and Avril Incandenza in a game of sexual football. | |||
26 | 109 | 553 | Year of the Depend Adult Undergarment | Randy Lenz;Bruce Green | Randy Lenz and Bruce Green walking Boston at night. | |||
26 | 110 | 560 | Year of the Depend Adult Undergarment | Hal Incandenza;John "No Relation" Wayne | Hal in bed after lunch. John Wayne stops by. | |||
26 | 111 | 560 | Year of the Depend Adult Undergarment | Randy Lenz;Bruce Green | Randy Lenz and Bruce Green walking Boston at night. | |||
26 | 112 | 563 | Year of the Depend Adult Undergarment | 11/11 | Don Gately | Selected snippets of Gately's interactions with Ennet House residents. | ||
26 | 113 | 565 | Year of the Depend Adult Undergarment | Orin Incandenza | Orin and a Swiss hand model in a motel room. | |||
26 | 114 | 567 | Year of the Depend Adult Undergarment | Idris Arslanian;Ted Schacht;Michael Pemulis | Idris Arslanian, in a blindfold, runs into first Ted Schacht and then Mike Pemulis. | |||
26 | 115 | 574 | Year of the Depend Adult Undergarment | Orin Incandenza | Orin at motel door with a man in a wheelchair. | |||
26 | 116 | 575 | Year of the Depend Adult Undergarment | Randy Lenz;Bruce Green | Bruce Green and Randy Lenz. Green remembers the death of his mother (coiled toy snake in a can). Lenz separates, kills a dog tied up in yard of a house having a Hawaiian party. | |||
26 | 117 | 589 | Year of the Depend Adult Undergarment | Mario Incandenza | Mario, who can't sleep, walks outside. | |||
26 | 118 | 593 | Year of the Depend Adult Undergarment | Don Gately | More of Gately's responsibilities at Ennet House. | |||
26 | 119 | 596 | Year of the Depend Adult Undergarment | Orin Incandenza | Still at the motel door, Orin answers the man in the wheelchair's "survey". | |||
26 | 120 | 601 | Year of the Depend Adult Undergarment | Don Gately | Gately's showdown with the Canadians. Gately seriously wounded. | |||
27 | 121 | 620 | Year of the Depend Adult Undergarment | "The new millennium's passion for standing live witness to things". Grad student engineer for WYYY is kidnapped by a man in a wheelchair. | ||||
27 | 122 | 627 | Year of the Depend Adult Undergarment | 11/11 | Jim Troeltsch | Suppertime at ETA. Troelsch's conspiracy theory that the milk is powdered. | ||
27 | 123 | 638 | Year of the Depend Adult Undergarment | 5/1 | Remy Marathe;Hugh/Helen Steeply | Maranthe and Steeply continued. Steeply's father's addiction to BS-era show "M*A*S*H". | ||
27 | 124 | 648 | Year of the Depend Adult Undergarment | 11/13 | Kate Gompert;Geoffrey Day;Bruce Green | Kate Gompert, Geoffrey Day and Bruce Green late-night rap session. Day describes the "large, dark, billowing, black shape" he's felt twice in his life. | ||
27 | 125 | 651 | Year of the Depend Adult Undergarment | 11/11 | Ortho "The Darkness" Stice;Hal Incandenza;Don Gately;Poor Tony Krause;Michael Pemulis;Jim Struck Jr.;Hugh/Helen Steeply;Charles Tavis;Orin Incandenza;Aubrey DeLint | The match between Stice and Hal. Narrrative "clicks" to scan Gatley, Poor Tony, Pemulis and Struck, Steeply's sedan, CT and even Orin in Arizona. Steeply chats with Aubrey deLint as they watch the match. | ||
27 | 126 | 663 | Year of the Depend Adult Undergarment | Hugh/Helen Steeply;Mildred Bonk | Epistolary exchange between Steeply and Marlon Bain, friend of Orin's during adolescence. | |||
27 | 127 | 666 | Year of the Depend Adult Undergarment | 11/11 | Sub-14 males in ETA's tunnels on clean-up detail. There are rumors of feral hamsters but instead they find a refrigerator full of rotting food. | |||
27 | 128 | 673 | Year of the Depend Adult Undergarment | 11/11 | Hugh/Helen Steeply | Steeply speaks, in French, to female prorector Thierry Poutrincourt. | ||
27 | 129 | 682 | Year of the Depend Adult Undergarment | 11/11 | Matty Pemulis | Matty Pemulis, male prostitute, eats in a diner. Memories of sexual abuse from his father. | ||
27 | 130 | 686 | Year of the Depend Adult Undergarment | 11/11 | Matty Pemulis | After supper Hal decides to watch some of Himself's films. Description of “Wave Bye-Bye to the Bureaucrat”. | ||
27 | 131 | 689 | Year of the Depend Adult Undergarment | 11/14 | Poor Tony Krause | Poor Tony contemplates a purse snatching before he heads to the Antitois' shop. | ||
27 | 132 | 692 | Year of the Depend Adult Undergarment | Geoffrey Day;Randy Lenz | Geoffrey Day: almost misses Lenz "brandishing the Hog" in the three-man room. | |||
27 | 133 | 692 | Year of the Depend Adult Undergarment | Kate Gompert | On Kate Gompert's depression and depression in general. Himself's “The American Century as Seen Through a Brick” described. | |||
27 | 134 | 698 | Year of the Depend Adult Undergarment | 11/14 | Kate Gompert;Ruth van Cleve;Poor Tony Krause | Kate Gompert and Ruth van Cleve on the street, followed by Poor Tony Krause. | ||
27 | 135 | 700 | Year of the Depend Adult Undergarment | Jim Troeltsch | Troelsch puts in a pro-wrestling cartridge. | |||
27 | 136 | 700 | Year of the Depend Adult Undergarment | Michael Pemulis | Pemulis adjusts a ceiling tile in subdorm B. | |||
27 | 137 | 700 | Year of the Depend Adult Undergarment | Lyle | Lyle sitting. | |||
27 | 138 | 701 | Year of the Depend Adult Undergarment | Mario Incandenza;Gerhardt Schtitt | Coach Schtitt with Mario in his BMW. | |||
27 | 139 | 701 | Year of the Depend Adult Undergarment | Avril Incandenza | Avril calling Arizona. | |||
27 | 140 | 701 | Year of the Depend Adult Undergarment | Hal Incandenza;Joelle Van Dyne | Hal watches “Blood Sister: One Tough Nun”. The plot of this film in detail. Hal thinks about another of his father's films, “Low-Temperature Civics”. Switches to Joelle at a Cocaine Anonymous meeting, listening to a speaker describe his lowest moment (walking out on his wife and child). | |||
27 | 141 | 711 | Year of the Depend Adult Undergarment | Hal Incandenza | The end of “Blood Sister: One Tough Nun”. | |||
27 | 142 | 714 | Year of the Depend Adult Undergarment | Kate Gompert;Poor Tony Krause | Kate Gompert right after Poor Tony snatched her purse. | |||
27 | 143 | 716 | Year of the Depend Adult Undergarment | Randy Lenz | Lenz, high on coke, plans to rob the "oriental women". | |||
27 | 144 | 719 | Year of the Depend Adult Undergarment | The plan of Les Assassins des Fauteuil Rollents. | ||||
27 | 145 | 719 | Year of the Depend Adult Undergarment | Poor Tony Krause;Ruth van Cleve | Poor Tony running from Ruth van Cleve. | |||
27 | 146 | 721 | Year of the Depend Adult Undergarment | M. Fortier | AFR's USA cell's leader, M. Fortier: how the AFR found the Entertainment at the Antitois' shop. | |||
27 | 147 | 723 | Year of the Depend Adult Undergarment | M. Fortier | M. Fortier enjoys the USA's condescension toward the wheelchaired. | |||
27 | 148 | 723 | Year of the Depend Adult Undergarment | Joelle Van Dyne;Molly Nitkin | Joelle worries about her teeth. | |||
27 | 149 | 724 | Year of the Depend Adult Undergarment | The Wheelchair Assassins discover the samizdat “Entertainment”. | ||||
27 | 150 | 728 | Year of the Depend Adult Undergarment | Randy Lenz | Lenz in a back alley after robbing the Asian women. | |||
27 | 151 | 729 | Year of the Depend Adult Undergarment | Remy Marathe | Maranthe at Ennet House. | |||
27 | 152 | 736 | Year of the Depend Adult Undergarment | Joelle Van Dyne | Joelle cleaning her room. How Joelle and Himself became close. Descriptions of “Prenuptual Agreement of Heaven and Hell” and “The Medusa vs. The Odalisque”. Thanksgiving dinner at the Incandenza house. | |||
27 | 153 | 747 | Year of the Depend Adult Undergarment | Remy Marathe | Maranthe's entry interview (with Pat Montesian) at Ennet House. | |||
27 | 154 | 751 | Year of the Depend Adult Undergarment | Joelle Van Dyne | Joelle cleaning. | |||
27 | 155 | 752 | Year of the Depend Adult Undergarment | Remy Marathe;Pat Montesian | Maranthe's entry interview (with Pat Montesian) at Ennet House continued. | |||
27 | 156 | 755 | Year of the Depend Adult Undergarment | 11/11 | Mario Incandenza;Avril Incandenza;LaMont Chu | Mario filming for his documentary. Interviews Felicity Zweig, LaMont Chu, and then the Moms. He asks her,"How can tell if somebody's sad?" | ||
27 | 157 | 769 | Year of the Depend Adult Undergarment | Mario Incandenza;Hal Incandenza | Mario and Hal talk in their room. Hal describes how Pemulis talked his way out of the urine test. | |||
27 | 158 | 775 | Year of the Depend Adult Undergarment | Remy Marathe;Kate Gompert | Maranthe and Kate Gompert meet in a bar. | |||
27 | 159 | 782 | Year of the Depend Adult Undergarment | Remy Marathe;Hal Incandenza | Mario tells Hal that he seems sad. | |||
27 | 160 | 785 | Year of the Depend Adult Undergarment | 11/17 | Hal Incandenza | Johnette lets an upscale kid (Hal) into Ennet House. | ||
27 | 161 | 787 | (unspecified) | Footnote 324. | ||||
27 | 162 | 787 | Year of the Depend Adult Undergarment | Molly Nitkin;Rodney Tine Jr. | Results of Rodney Tine Jr.'s interrogation of Molly Notkin. Description of Thanksgiving dinner at Joelle's parents house, YTMP. | |||
27 | 163 | 795 | (unspecified) | Footnote 332. | ||||
27 | 164 | 795 | Year of the Depend Adult Undergarment | Hal Incandenza | Hal at what he thinks is a meeting for Narcotics Anonymous. Turns out the meeting focuses on the Inner Infant, and one of the speakers is Kevin Bain, Orin's friend Marlon's brother. | |||
28 | 165 | 809 | Year of the Depend Adult Undergarment | Don Gately;Tiny Ewell;Joelle Van Dyne;Pat Montesian | Gately in the hospital. Interactions with Tiny Ewell, Joelle, Pat Montesian and Calvin Thrust. | |||
28 | 166 | 827 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital. The Wraith. Gately remembers the MP that used to live with his mother. | |||
28 | 167 | 845 | Year of the Depend Adult Undergarment | 11/16 | The AFR's plan to replace the Quebecois tennis players en route to ETA. | |||
28 | 168 | 846 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital: His memories of Mrs. Waite and his vision of Joelle as death. | |||
28 | 169 | 851 | Year of the Depend Adult Undergarment | 11/20 | Hal Incandenza | Hal narrates: he wakes up after a bad dream. | ||
28 | 170 | 854 | Year of the Depend Adult Undergarment | Don Gately;Joelle Van Dyne | Gately in the hospital: Joelle visits him. | |||
28 | 171 | 864 | Year of the Depend Adult Undergarment | Ortho "The Darkness" Stice | Hal narrates: Ortho "The Darkness" Stice with his forehead stuck to a window in the dorm's hallway. Late introduction of Kenkle and Brandt, ETA janitorial staff. | |||
28 | 172 | 876 | Year of the Depend Adult Undergarment | 11/20 | Rodney Tine Sr. | Meeting between Rodney Tine, Sr. (and staff) with Glad regarding Year of Glad and "Fully Functional Phil" the prancing ass. | ||
28 | 173 | 883 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital” Memories of "Nom" from "Cheers!". Ferocious Francis visits. More about Gatley's past: how he started crewing. | |||
28 | 174 | 896 | Year of the Depend Adult Undergarment | Hal Incandenza | Hal narrates: in his room, he lies down and is unable to get up. | |||
28 | 175 | 902 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital: the history of his substance abuse. | |||
28 | 176 | 906 | Year of the Depend Adult Undergarment | Hal Incandenza;Michael Pemulis | Hal narrates: he talks with Pemulis then watches part of his father's film “Good-Looking Men in Small Clever Rooms That Utilize Every Centimeter of Available Space with Mind-Boggling Efficiency”. | |||
28 | 177 | 911 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital: remembers working for Willie Sorkin with Gene Fackelmann. | |||
28 | 178 | 916 | Year of the Depend Adult Undergarment | Michael Pemulis | Pemulis finds several drop-ceiling panels on the floor of subdorm B. He's looking for an old sneaker behind the relevant panel. | |||
28 | 179 | 916 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital: memories of Gene Fackelmann. His ex-girlfriend Pamela Hoffman-Jeep. His dream about a kid and Joelle in a graveyard… "Too Late". | |||
28 | 180 | 934 | Year of the Depend Adult Undergarment | Joelle Van Dyne | Joelle is apprehended. | |||
28 | 181 | 934 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital: remembers getting high with Gene on the drugs Gene bought with stolen money. | |||
28 | 182 | 938 | Year of the Depend Adult Undergarment | Joelle Van Dyne;Hugh/Helen Steeply | Joelle being interviewed by Helen Steeply. | |||
28 | 183 | 941 | Year of the Depend Adult Undergarment | Hal Incandenza;Mario Incandenza | Hal narrates: Mario and Kyle Dempy Coyle are also watching one of Himself's films. Explanation of what happened to Stice. Description of “Accomplice!” | |||
28 | 184 | 958 | Year of the Depend Adult Undergarment | Joelle Van Dyne | Joelle returns to Ennett House, sees a police car stationed outside. | |||
28 | 185 | 958 | Year of the Depend Adult Undergarment | Mikey, a "sick fuck", tells his story at an AA meeting. | ||||
28 | 186 | 960 | Year of the Depend Adult Undergarment | Pat Montesian | An ADA talks with Pat Montesian about the Ninth Step. He needs to Gately to forgive him. | |||
28 | 187 | 964 | Year of the Depend Adult Undergarment | 11/20 | Immediately pre-Fundraiser Exhibition Fête. Narrated by an unnamed ETA student. | |||
28 | 188 | 971 | Year of the Depend Adult Undergarment | Orin Incandenza | Orin in a huge inverted glass, interrogation by Luria P------ | |||
28 | 189 | 972 | Year of the Depend Adult Undergarment | Don Gately | Gately in the hospital: after the drug binge, Bobby C arrives to punish Gene Fackelman. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Dimensions. | |
const DIMENSIONS = getWindowDimensions(); | |
const WIDTH = DIMENSIONS.width; | |
const HEIGHT = DIMENSIONS.height - 100; | |
// Padding. | |
const INSETS = {'left': 200, 'right': 200, 'top': 0, 'bottom': 60}; | |
// Tick length. | |
const TICK_LENGTH = 7; | |
// Max label length. | |
const MAX_LABEL_LENGTH = 35; | |
// Radius highlight factor. | |
const RADIUS_HIGHLIGHT_FACTOR = 1.5; | |
// Years. | |
const YEARS = [ | |
"(unspecified)", | |
"1960", | |
"1963", | |
"Year of the Whopper", | |
"Year of the Tucks Medicated Pad", | |
"Year of the Trial-Size Dove Bar", | |
"Year of the Perdue Wonderchicken", | |
"Year of the Whisper-Quiet Maytag Dishmaster", | |
"Year of the Yushityu 2007 Mimetic-Resolution-Cartridge-View-Motherboard-Easy-To-Install-Upgrade For Infernatron/InterLace TP Systems For Home, Office, Or Mobile (sic)", | |
"Year of Dairy Products from the American Heartland", | |
"Year of the Depend Adult Undergarment", | |
"Year of Glad" | |
]; | |
// Months. | |
const MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; | |
const CHARACTERS = { | |
'INCANDENZA FAMILY': [ | |
'Avril Incandenza', | |
'Hal Incandenza', | |
'James Orin Incandenza', | |
'Orin Incandenza', | |
'Mario Incandenza' | |
], | |
'ENFIELD TENNIS ACADEMY': [ | |
'Ann Kittenplan', | |
'Aubrey DeLint', | |
'Charles Tavis', | |
'Clenette Henderson', | |
'Eliot Kornspan', | |
'Evan Ingersoll', | |
'Gerhardt Schtitt', | |
'Graham Rader', | |
'Idris Arslanian', | |
'J. J. Penn', | |
'Jim Struck Jr.', | |
'Jim Troeltsch', | |
'John "No Relation" Wayne', | |
'Josh Gopnik', | |
'Keiran McKenna', | |
'Keith "The Viking" Freer', | |
'Kent Blott', | |
'LaMont Chu', | |
'Lyle', | |
'Marlon Bain', | |
'Mary Esther Thode', | |
'Michael Pemulis', | |
'Ortho "The Darkness" Stice', | |
'Otis P. Lord', | |
'Ted Schacht', | |
'Timmy "Sleepy TP" Peterson', | |
'Tiny Ewell', | |
'Todd "Postal Weight" Poselthwaite', | |
'Trevor "The Axehandle" Axford', | |
'"Lateral" Alice Moore', | |
'"USS" Millicent Kent' | |
], | |
'ENNET HOUSE': [ | |
'Bruce Green', | |
'Charlotte Treat', | |
'Don Gately', | |
'Geoffrey Day', | |
'Joelle Van Dyne', | |
'Kate Gompert', | |
'Ken Erdedy', | |
'Pat Montesian', | |
'Randy Lenz', | |
'Ruth van Cleve' | |
], | |
'OTHER': [ | |
'Hugh/Helen Steeply', | |
'M. Fortier', | |
'Madame Psychosis', | |
'Matty Pemulis', | |
'Medical Attache', | |
'Mildred Bonk', | |
'Molly Nitkin', | |
'Poor Tony Krause', | |
'Remy Marathe', | |
'Rodney Tine Jr.', | |
'Rodney Tine Sr.', | |
'Wardine'] | |
}; | |
// Chapters. | |
var chapters = []; | |
// Characters. | |
var characters = []; | |
// Maps characters to their categories. | |
var categoryMap = {}; | |
// Legend entries. | |
var legendEntries = []; | |
// Scales. | |
var scales = []; | |
// Circle glyph sets. | |
var sceneCircles; | |
var legendText; | |
// Scene glyph radius. | |
var radius; | |
// Visualize when document has loaded. | |
window.onload = function() { | |
// Read the data set. | |
d3.csv("infinite-jest.csv", function(d) { | |
visualize(parseData(d)); | |
}); | |
}; | |
// Process the data set. | |
function parseData(data) { | |
// Calendar values. | |
var year = 2004; | |
var daysPerYear = 366.0; | |
var mSecPerDay = 86400000; | |
var undefDay = 0; | |
var jan1st = new Date(year, 0, 1); | |
// Create year map. | |
var yearMap = {}; | |
for (var i = 0; | |
i < YEARS.length; | |
i++) { | |
yearMap[YEARS[i]] = i; | |
} | |
// Create character array. | |
var cat = 0; | |
for (var group in CHARACTERS) { | |
// Append to characters list. | |
var groupCharacters = CHARACTERS[group]; | |
characters.push.apply(characters, groupCharacters); | |
// Add legend entries. | |
legendEntries.push(null); | |
legendEntries.push(group); | |
legendEntries.push.apply(legendEntries, groupCharacters); | |
// Build categories map. | |
categoryMap[group] = cat; | |
for (var g = 0; g < groupCharacters.length; g++) { | |
var character = groupCharacters[g]; | |
categoryMap[character] = cat; | |
} | |
cat++; | |
} | |
// Initialize chapter index. | |
var chapter = {"index": 0}; | |
// Process each row. | |
for (var r = 0; | |
r < data.length; | |
r++) { | |
var row = data[r]; | |
// Process each column. | |
for (var prop in row) { | |
// Parse numbers. | |
var value = row[prop].trim(); | |
if (!isNaN(value) && value.length > 0) { | |
row[prop] = parseFloat(value); | |
} | |
} | |
// Look up year. | |
if (row.Year in yearMap) { | |
row.YearNumber = yearMap[row.Year]; | |
} | |
// Day of year. | |
var doy = row.MonthDay.split('/', 2); | |
row.DayOfYear = | |
(doy.length == 2 ? Math.ceil((new Date(year, doy[0] - 1, doy[1]) - jan1st) / mSecPerDay) : undefDay) | |
/ (daysPerYear - 1); | |
if (row.DayName.length == 0 && doy.length == 2) { | |
row.DayName = MONTHS[doy[0] - 1] + " " + doy[1]; | |
} | |
// Chapter bounds. | |
if (row.Chapter != chapter.index) { | |
chapter = {"index": row.Chapter, "start": row.Scene, "end": row.Scene}; | |
chapters.push(chapter); | |
} | |
else { | |
chapter.end = row.Scene; | |
} | |
// Characters. | |
row.present = row.CharactersPresent.split(';'); | |
if (row.present.length == 1 && row.present[0].length == 0) { | |
row.present = []; | |
} | |
// Check characters are known. | |
// for (var j = 0; j < row.present.length; j++) { | |
// | |
// if (characters.indexOf(row.present[j]) < 0) { | |
// | |
// console.log("Unknown character " + row.present[j]); | |
// } | |
// } | |
} | |
return data; | |
} | |
// Create the visualization. | |
function visualize(data) { | |
// Scene range. | |
var sceneMin = d3.min(data, | |
function(d) { | |
return d.Scene; | |
}); | |
var sceneMax = d3.max(data, | |
function(d) { | |
return d.Scene; | |
}); | |
// Radius. | |
radius = (WIDTH - INSETS.left - INSETS.right) / (sceneMax - sceneMin) / 2; | |
// Calculate scales. | |
scales.scenes = d3.scale.linear() | |
.domain([sceneMin, sceneMax]) | |
.range([INSETS.left + radius, WIDTH - INSETS.right - radius]); | |
scales.years = d3.scale.linear() | |
.domain([0, YEARS.length]) | |
.range([HEIGHT - INSETS.bottom - radius, radius + INSETS.top]); | |
scales.legend = d3.scale.linear() | |
.domain([0, legendEntries.length - 1]) | |
.range([radius + INSETS.top, HEIGHT - INSETS.bottom - radius]); | |
scales.categories = d3.scale.category10(); | |
// Root panel. | |
var vis = d3.select("#chart") | |
.append("svg:svg") | |
.attr("width", WIDTH) | |
.attr("height", HEIGHT); | |
// Year tick-lines. | |
vis.selectAll("line.year") | |
.data(scales.years.ticks(YEARS.length)) | |
.enter() | |
.append("svg:line") | |
.attr("class", "tickLine year") | |
.attr("x1", scales.scenes(sceneMin)) | |
.attr("x2", scales.scenes(sceneMax)) | |
.attr("y1", function (d) { | |
return scales.years(d); | |
}) | |
.attr("y2", function (d) { | |
return scales.years(d); | |
}) | |
.style("visibility", function(d) { | |
var label = YEARS[d]; | |
return isUndefined(label) ? "hidden" : "visible"; | |
}); | |
// Year tick labels. | |
vis.selectAll("text.rule.year") | |
.data(scales.years.ticks(YEARS.length)) | |
.enter() | |
.append("svg:text") | |
.attr("class", "rule year") | |
.attr("x", INSETS.left) | |
.attr("y", function (d) { | |
return scales.years(d); | |
}) | |
.attr("dy", "0.35em") | |
.attr("text-anchor", "end") | |
.text(function(d) { | |
var label = YEARS[d]; | |
var len = typeof label === 'undefined' ? 0 : label.length; | |
if (len > MAX_LABEL_LENGTH + 5) { | |
var delLen = len - MAX_LABEL_LENGTH; | |
label = label.replace(label.substring((len - delLen) / 2, (len + delLen) / 2), " ... "); | |
} | |
return typeof label === 'undefined' ? "" : label; | |
}); | |
// Chapter ticks. | |
vis.selectAll("line.chapter") | |
.data(chapters) | |
.enter() | |
.append("svg:line") | |
.attr("class", "tickLine chapter") | |
.attr("x1", function(d) { | |
return scales.scenes(d.start); | |
}) | |
.attr("x2", function(d) { | |
return scales.scenes(d.start); | |
}) | |
.attr("y2", function () { | |
return scales.years(0); | |
}) | |
.attr("y1", function (d, i) { | |
return scales.years(0) + (isMajorChapterTickMark(i) ? 2.0 * TICK_LENGTH : TICK_LENGTH); | |
}); | |
// Chapter tick labels. | |
vis.selectAll("text.rule.chapter") | |
.data(chapters) | |
.enter() | |
.append("svg:text") | |
.attr("class", "rule chapter") | |
.attr("x", function(d) { | |
return scales.scenes(d.start); | |
}) | |
.attr("y", function () { | |
return HEIGHT; | |
}) | |
.attr("dy", "-4.0em") | |
.attr("text-anchor", "middle") | |
.text(function(d, i) { | |
return isMajorChapterTickMark(i) ? "Ch. " + d.index : null; | |
}); | |
// Scene circles. | |
sceneCircles = vis.selectAll("circle") | |
.data(data) | |
.enter() | |
.append("svg:circle") | |
.attr("cy", function(d) { | |
return scales.years(d.YearNumber + d.DayOfYear); | |
}) | |
.attr("cx", function(d) { | |
return scales.scenes(d.Scene); | |
}) | |
.attr("r", radius) | |
.on("mouseover", function(d) { | |
showInfoBox(d); | |
highlight(this, d.present.length > 0 ? scales.categories(categoryMap[d.present[0]]) : null); | |
highlightLegend(d.present) | |
}) | |
.on("mouseout", function() { | |
hideInfoBox(); | |
unHighlight() | |
}); | |
// Character legend. | |
var legendX = WIDTH - INSETS.right + radius; | |
legendText = vis.selectAll("text.character") | |
.data(legendEntries) | |
.enter() | |
.append("svg:text") | |
.attr("x", legendX) | |
.attr("dx", "0.35em") | |
.attr("dy", "0.35em") | |
.attr("y", function (d, i) { | |
return scales.legend(i); | |
}) | |
.text(function(d) { | |
return d; | |
}) | |
.on("mouseover", function(d) { | |
var chars = d in CHARACTERS ? CHARACTERS[d] : []; | |
chars.push(d); | |
highlightLegend(chars); | |
highlightScenes(chars); | |
}) | |
.on("mouseout", function() { | |
unHighlight(); | |
}); | |
} | |
// Highlight characters in the legend | |
function highlightLegend(characters) { | |
// List of nodes to highlight. | |
var highlights = []; | |
legendText | |
.each(function(d) { | |
if (characters.indexOf(d) >= 0) { | |
highlights.push(this); | |
} | |
}); | |
// Apply highlighting. | |
d3.selectAll(highlights) | |
.style("fill", function(d) { | |
return scales.categories(categoryMap[d]); | |
}) | |
.attr("class", function() { | |
return "highlight"; | |
}); | |
} | |
// Highlight character in the scenes. | |
function highlightScenes(characters) { | |
// List of nodes to highlight. | |
var highlights = []; | |
sceneCircles | |
.each(function(d) { | |
var present = false; | |
for (var c = 0; !present && c < characters.length; c++) { | |
present = d.present.indexOf(characters[c]) >= 0; | |
} | |
if (present) { | |
highlights.push(this); | |
} | |
}); | |
// Apply highlighting. | |
d3.selectAll(highlights) | |
.style("fill", function() { | |
return scales.categories(categoryMap[characters[0]]); | |
}) | |
.attr("r", function() { | |
return radius * RADIUS_HIGHLIGHT_FACTOR; | |
}) | |
.attr("class", function() { | |
return "highlight"; | |
}); | |
} | |
// Highlight an element. | |
function highlight(obj, color) { | |
d3.select(obj) | |
.attr("r", radius * RADIUS_HIGHLIGHT_FACTOR) | |
.attr("class", "highlight") | |
.style("fill", color); | |
} | |
// Remove highlights. | |
function unHighlight() { | |
legendText | |
.attr("class", "") | |
.style("fill", null); | |
sceneCircles | |
.attr("r", radius) | |
.attr("class", "") | |
.style("fill", null); | |
} | |
// Display the info box. | |
function showInfoBox(d) { | |
// Create text strings. | |
var date = (d.DayName.length > 0 ? (d.DayName + ", ") : "") + d.Year; | |
// Display the box. | |
d3.select("#infobox") | |
.attr("class", "text") | |
.style('left', INSETS.left + "px") | |
.style('top', HEIGHT + "px") | |
.style('width', (WIDTH - INSETS.left - INSETS.right) + "px") | |
.style('display', 'inline') | |
.html("Ch. " + d.Chapter + " (scene " + d.Scene + "; page " + d.Page + ") — " + date + "<br/>" | |
+ "<blockquote>" + d.Synopsis + "</blockquote>"); | |
} | |
// Hide the info box. | |
function hideInfoBox() { | |
d3.select("#infobox") | |
.style('display', 'none'); | |
} | |
// Is this a major tick mark? | |
function isMajorChapterTickMark(i) { | |
// Is first, last or divisible by five. | |
return i == 0 || i + 1 == chapters.length || (i + 1) % 5 == 0; | |
} | |
// Tests whether a value is defined. | |
function isUndefined(value) { | |
return typeof value === 'undefined'; | |
} | |
// Gets the window dimensions. | |
function getWindowDimensions() { | |
var width = 630; | |
var height = 460; | |
if (document.body && document.body.offsetWidth) { | |
width = document.body.offsetWidth; | |
height = document.body.offsetHeight; | |
} | |
if (document.compatMode == 'CSS1Compat' && document.documentElement && document.documentElement.offsetWidth) { | |
width = document.documentElement.offsetWidth; | |
height = document.documentElement.offsetHeight; | |
} | |
if (window.innerWidth && window.innerHeight) { | |
width = window.innerWidth; | |
height = window.innerHeight; | |
} | |
return {'width': width, 'height': height}; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body { | |
margin: 0; | |
padding: 0; | |
background-color: #ffffff; | |
font-family: sans-serif; | |
font-size: 12px; | |
color: #666666; | |
overflow: hidden; | |
} | |
a { | |
color: #003399; | |
cursor: pointer; | |
text-decoration: none; | |
} | |
a.active { | |
color: #6699ff; | |
} | |
circle { | |
fill: #999999; | |
} | |
.highlight { | |
font-weight: bold; | |
} | |
line.tickLine { | |
stroke: #999999; | |
} | |
text { | |
font-family: sans-serif; | |
font-size: 9px; | |
fill: #999999; | |
} | |
#infobox { | |
position: absolute; | |
height: auto; | |
padding: 8px; | |
display: none; | |
background: #eeeeee; | |
color: #333333; | |
font-family: sans-serif; | |
font-size: 11px; | |
} | |
.title { | |
color: #000000; | |
font-weight: bold; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment