comindware-gantt-elastic
Version:
Gantt chart. Elastic javascript gantt chart. Vue and standalone gantt. Project manager responsive gantt
65 lines (61 loc) • 1.48 kB
JavaScript
/**
* @fileoverview Task mixin
* @license MIT
* @author Rafal Pospiech <neuronet.io@gmail.com>
* @package GanttElastic
*/
export default {
computed: {
/**
* Get view box
*
* @returns {string}
*/
getViewBox() {
const task = this.task;
return `0 0 ${task.width} ${task.height}`;
},
/**
* Get group transform
*
* @returns {string}
*/
getGroupTransform() {
return `translate(${this.task.x} ${this.task.y})`;
},
/**
* Should we display expander?
*
* @returns {boolean}
*/
displayExpander() {
const expander = this.root.state.options.chart.expander;
return expander.display || (expander.displayIfTaskListHidden && !this.root.state.options.taskList.display);
}
},
methods: {
/**
* Emit event
*
* @param {string} eventName
* @param {Event} event
*/
emitEvent(eventName, event) {
if (!this.root.state.options.scroll.scrolling) {
this.root.$emit(`chart-${this.task.type}-${eventName}`, { event, data: this.task });
}
},
/**
* Handler for click event
*
* @param {Event} event
*/
onBarClick(event) {
const callBacks = this.root.state.options.callBacks;
if (callBacks && callBacks.onTaskClick) {
callBacks.onTaskClick({ event, taskData: { id: this.task.id, title: this.task.title } });
}
this.emitEvent('click', event);
}
}
};