Class { #name : #EcCalendar, #superclass : #Object, #instVars : [ 'events' ], #category : #EchartsPharo } { #category : #accessing } EcCalendar >> asEcScript [ ^ 'var myCalendar = echarts.init(document.getElementById(',($' asString), 'calendar', ($' asString), '));', Character cr asString, 'var option = { tooltip: {}, animation: true, animationDuration: 500, legend: { data:', self eventsLabel, ',', 'left:', ($' asString ), '0',($' asString), '}, calendar: { top:', ($' asString), 'middle', ($' asString), ',', 'left:', ($' asString),'0', ($' asString), ',', 'orient:', ($' asString), 'horizontal', ($' asString), ',', 'cellSize: 40, yearLabel: { margin: 50, fontSize: 30, color:', ($' asString), '#999', ($' asString), '}, dayLabel: { firstDay: 1, nameMap:', ($' asString), 'cn', ($' asString), '}, monthLabel: { nameMap:', ($' asString),'cn', ($' asString), ',', 'margin: 15, fontSize: 20, color:', ($' asString), '#999', ($' asString), '}, range:', self datesRangeWithMarginString, '}, series: [', Character cr asString, self eventsAsStringSnippets, '] }; myCalendar.setOption(option);' ] { #category : #accessing } EcCalendar >> asHTMLElement [ ^ '
', Character cr asString, '' ] { #category : #accessing } EcCalendar >> datesRange [ | tempEventsDates | tempEventsDates := self events collect: [ :each | each dates ]. tempEventsDates := tempEventsDates flattened collect: [ :each | each asDate ]. ^ {tempEventsDates asSortedCollection first . tempEventsDates asSortedCollection last }. ] { #category : #accessing } EcCalendar >> datesRangeString [ | datesRangeTemp | datesRangeTemp := self datesRange collect: [ :date | ($' asString), date yyyymmdd, ($' asString) ]. ^ '[', (',' join: datesRangeTemp), ']' ] { #category : #accessing } EcCalendar >> datesRangeWithMargin [ | tempEventsDates | tempEventsDates := self events collect: [ :each | each dates ]. tempEventsDates := tempEventsDates flattened collect: [ :each | each asDate ]. ^ {(tempEventsDates asSortedCollection first asDateAndTime - 10 days) asDate . (tempEventsDates asSortedCollection last) addDays: 10 }. ] { #category : #accessing } EcCalendar >> datesRangeWithMarginString [ | datesRangeTemp | datesRangeTemp := self datesRangeWithMargin collect: [ :date | ($' asString), date yyyymmdd, ($' asString) ]. ^ '[', (',' join: datesRangeTemp), ']' ] { #category : #accessing } EcCalendar >> events [ ^ events ifNil: [ events := OrderedCollection new ]. ] { #category : #accessing } EcCalendar >> eventsAsStringSnippets [ | tempEvents | tempEvents := self events. tempEvents ifNil: [ ^ self ]. ^ Character cr join: (tempEvents collect: [ :each | each asStringSnippet ]) ] { #category : #accessing } EcCalendar >> eventsLabel [ | tempEvents | tempEvents := self events collect: [ :each | each name ]. tempEvents := tempEvents collect: [ :each | ($' asString), each, ($' asString) ]. ^ '[', (',' join: tempEvents), ']' ]