added 260907 version of worker toolkit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import Ember from 'ember';
|
||||
import moment from 'moment';
|
||||
import * as d3 from "d3";
|
||||
|
||||
export default Ember.Component.extend( {
|
||||
tagName: 'g',
|
||||
classNames: 'timeline',
|
||||
attributeBindings: ['transform'],
|
||||
|
||||
xAxisElementId: Ember.computed(function() {
|
||||
return "x-axis-timeline";
|
||||
}),
|
||||
|
||||
transform: Ember.computed('xScale', 'startAt', 'totalSeriesHeight', function() {
|
||||
return `translate(${ - this.get('xScale')( this.get('startAt') )},${this.get('totalSeriesHeight')})`;
|
||||
}),
|
||||
|
||||
drawAxis: Ember.on('didInsertElement', Ember.observer('xAxis', function() {
|
||||
d3.select(`g#${this.get('xAxisElementId')}`)
|
||||
.call(this.get('xAxis'))
|
||||
.selectAll('.tick')
|
||||
.on('click', this.handleDataClick.bind(this))
|
||||
.on('mouseover', this.handleMouseHover.bind(this))
|
||||
.on('mouseleave', this.handleMouseLeave.bind(this));
|
||||
})),
|
||||
|
||||
|
||||
xAxis: Ember.computed('xScale', function() {
|
||||
return d3.svg.axis().scale(this.get('xScale')).orient("bottom").ticks(this.get('timelineLength')).tickFormat(function(d){
|
||||
return moment(d).format("MMM DD");
|
||||
});
|
||||
}),
|
||||
|
||||
xScale: Ember.computed('xDomain', function() {
|
||||
return d3.time.scale()
|
||||
.range([0, this.get('width')])
|
||||
.domain(this.get('xDomain'));
|
||||
}),
|
||||
|
||||
xDomain: Ember.computed('timeline', function() {
|
||||
return d3.extent(this.get('timeline'));
|
||||
}),
|
||||
|
||||
handleDataClick(date) {
|
||||
this.get('onDateClicked')(moment(date).format("YYYY-MM-DD"));
|
||||
},
|
||||
|
||||
handleMouseHover(date) {
|
||||
var formattedDate = moment(date).format("MMM DD");
|
||||
var position = null;
|
||||
|
||||
d3.select(`g#${this.get('xAxisElementId')}`).selectAll('.tick').get(0).forEach( function(elem) {
|
||||
if(Ember.isEqual(elem.textContent, formattedDate)) {
|
||||
var clientRect = Ember.$(elem).get(0).getBoundingClientRect();
|
||||
position = clientRect.left + ( clientRect.width / 2);
|
||||
}
|
||||
});
|
||||
|
||||
this.get('onMouseHover')(formattedDate, position );
|
||||
},
|
||||
|
||||
handleMouseLeave(date) {
|
||||
this.get('onMouseLeave')(moment(date).format("YYYY-MM-DD") );
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user