You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
5.8 KiB
164 lines
5.8 KiB
/**
|
|
* Created by Jacky.Gao on 2017-01-25.
|
|
*/
|
|
import {undoManager} from '../Utils.js';
|
|
import Tool from './Tool.js';
|
|
import {setDirty} from '../Utils.js';
|
|
import Handsontable from 'handsontable';
|
|
|
|
export default class ChartTool extends Tool{
|
|
execute(){
|
|
|
|
}
|
|
buildButton(){
|
|
const _this=this;
|
|
const group=$(`<div class="btn-group"></div>`);
|
|
const mainBtn=$(`<button type="button" class="btn btn-default dropdown-toggle" style="border:none;border-radius:0;background: #f8f8f8;padding: 6px 5px;" data-toggle="dropdown" title="${window.i18n.tools.chart.chart}">
|
|
<i class="ureport ureport-pie" style="color: #0e90d2;"></i>
|
|
<span class="caret"></span>
|
|
</button>`);
|
|
const ul=$(`<ul class="dropdown-menu" role="menu"></ul>`);
|
|
const pie=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-pie" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.pie}
|
|
</a>
|
|
</li>`);
|
|
ul.append(pie);
|
|
pie.click(function(){
|
|
_this._doClick('pie');
|
|
});
|
|
const doughnut=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-doughnut" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.doughnut}
|
|
</a>
|
|
</li>`);
|
|
ul.append(doughnut);
|
|
doughnut.click(function(){
|
|
_this._doClick('doughnut');
|
|
});
|
|
const line=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-line" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.line}
|
|
</a>
|
|
</li>`);
|
|
ul.append(line);
|
|
line.click(function(){
|
|
_this._doClick('line');
|
|
});
|
|
const bar=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-bar" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.bar}
|
|
</a>
|
|
</li>`);
|
|
ul.append(bar);
|
|
bar.click(function(){
|
|
_this._doClick('bar');
|
|
});
|
|
const horBar=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-horizontal-bar" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.horizontalBar}
|
|
</a>
|
|
</li>`);
|
|
ul.append(horBar);
|
|
horBar.click(function(){
|
|
_this._doClick('horizontalBar');
|
|
});
|
|
const area=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-area" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.area}
|
|
</a>
|
|
</li>`);
|
|
ul.append(area);
|
|
area.click(function(){
|
|
_this._doClick('area');
|
|
});
|
|
const radar=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-radar" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.radar}
|
|
</a>
|
|
</li>`);
|
|
ul.append(radar);
|
|
radar.click(function(){
|
|
_this._doClick('radar');
|
|
});
|
|
const polar=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-polar" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.polar}
|
|
</a>
|
|
</li>`);
|
|
ul.append(polar);
|
|
polar.click(function(){
|
|
_this._doClick('polarArea');
|
|
});
|
|
const scatter=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-scatter" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.scatter}
|
|
</a>
|
|
</li>`);
|
|
ul.append(scatter);
|
|
scatter.click(function(){
|
|
_this._doClick('scatter');
|
|
});
|
|
const bubble=$(`<li>
|
|
<a href="###">
|
|
<i class="ureport ureport-bubble" style="color: #0e90d2;"></i> ${window.i18n.tools.chart.bubble}
|
|
</a>
|
|
</li>`);
|
|
ul.append(bubble);
|
|
bubble.click(function(){
|
|
_this._doClick('bubble');
|
|
});
|
|
|
|
group.append(mainBtn);
|
|
group.append(ul);
|
|
return group;
|
|
}
|
|
_doClick(category){
|
|
if(!this.checkSelection()){
|
|
return;
|
|
}
|
|
const _this=this;
|
|
const hot=_this.context.hot;
|
|
const selected=hot.getSelected();
|
|
const startRow=selected[0],startCol=selected[1],endRow=selected[2],endCol=selected[3];
|
|
let cellDef=_this.context.getCell(startRow,startCol);
|
|
let oldValue=cellDef.value,oldCellData=hot.getDataAtCell(startRow,startCol);
|
|
hot.setDataAtCell(startRow,startCol,'');
|
|
cellDef.value={
|
|
type:'chart',
|
|
chart:this._newChart(category)
|
|
};
|
|
hot.render();
|
|
setDirty();
|
|
Handsontable.hooks.run(hot, 'afterSelectionEnd',startRow,startCol,endRow,endCol);
|
|
undoManager.add({
|
|
redo:function(){
|
|
cellDef=_this.context.getCell(startRow,startCol);
|
|
oldValue=cellDef.value,oldCellData=hot.getDataAtCell(startRow,startCol);
|
|
hot.setDataAtCell(startRow,startCol,'');
|
|
cellDef.value={
|
|
type:'chart',
|
|
chart:_this._newChart(category)
|
|
};
|
|
hot.render();
|
|
setDirty();
|
|
Handsontable.hooks.run(hot, 'afterSelectionEnd',startRow,startCol,endRow,endCol);
|
|
},
|
|
undo:function(){
|
|
cellDef=_this.context.getCell(startRow,startCol);
|
|
cellDef.value=oldValue;
|
|
hot.setDataAtCell(startRow,startCol,oldCellData);
|
|
hot.render();
|
|
setDirty();
|
|
Handsontable.hooks.run(hot, 'afterSelectionEnd',startRow,startCol,endRow,endCol);
|
|
}
|
|
})
|
|
}
|
|
_newChart(category){
|
|
return {
|
|
dataset:{
|
|
type:category
|
|
}
|
|
};
|
|
}
|
|
}
|