49 lines
2.0 KiB
Smalltalk
49 lines
2.0 KiB
Smalltalk
accessing
|
|
exportHistogramFor: aDictionary By: aTypeString
|
|
"TODO: quotes and retweets"
|
|
| messagesDict histogram diagram tempMessages labels subtotals |
|
|
tempMessages := self perform: (aDictionary at: 'messagesType') asSymbol.
|
|
|
|
tempMessages ifEmpty: [ self exportEmptyHistogramNamed:
|
|
(aDictionary at: 'messagesType'), '-histogram' ].
|
|
|
|
((((aDictionary at: 'messagesType') = 'tweets') or: [(aDictionary at: 'messagesType') = 'replies'])
|
|
and: aTypeString isNumber)
|
|
ifTrue: [ messagesDict := tempMessages splitBytimeSpansOf: aTypeString ].
|
|
(aTypeString = 'day' or: [ aTypeString = 'days' ])
|
|
ifTrue: [ messagesDict := tempMessages splitByDays ].
|
|
(aTypeString = 'week' or: [ aTypeString = 'weeks' ])
|
|
ifTrue: [ messagesDict := tempMessages splitByWeeks ].
|
|
|
|
(((aDictionary at: 'messagesType') = 'retweets') or: [ (aDictionary at: 'messagesType') = 'quotes' ])
|
|
ifTrue: [
|
|
messagesDict := tempMessages asMessagesUserNamesSortedByOccurrences.
|
|
((aTypeString > messagesDict size) or: [ aTypeString = 1 ])
|
|
ifFalse: [ | keysToRemove |
|
|
keysToRemove := OrderedCollection new.
|
|
1 to: messagesDict size - aTypeString do:
|
|
[ :i | keysToRemove add: (messagesDict keys at: i + aTypeString) ].
|
|
messagesDict removeKeys: keysToRemove. ].
|
|
labels := messagesDict keys.
|
|
labels := labels collect: [ :profiles | ('@', profiles) ].
|
|
subtotals := messagesDict values
|
|
]
|
|
ifFalse: [ labels := messagesDict keys.
|
|
subtotals := (messagesDict values collect: [ :collection | collection size ])].
|
|
|
|
histogram := RSChart new.
|
|
histogram extent: (aDictionary at: 'extent').
|
|
diagram := RSBarPlot new
|
|
y: subtotals.
|
|
diagram color: (aDictionary at: 'color').
|
|
histogram addPlot: diagram.
|
|
histogram addDecoration: (RSHorizontalTick new
|
|
fromNames: labels;
|
|
labelRotation: 0;
|
|
fontSize: 68 /messagesDict size;
|
|
yourself).
|
|
histogram addDecoration: (RSVerticalTick new
|
|
integer;
|
|
fontSize: 68 /messagesDict size).
|
|
histogram build.
|
|
^ histogram canvas exportAsFileNamed: (aDictionary at: 'messagesType'), '-histogram' into: self folder |