var tbarChartLang={
"en_us":{
chartTbarBtn:'Diagrams',
chartTitle:'Diagrams',
chooseLayer:'Choose Layer',
x_axis:'X Axis',
y_axis:'Y Axis',
chartType:'Chart Type',
chartShowBtn:'Show Chart',
chartTypePie:'Pie Chart',
chartTypeColumn:'Column Chart',
chartTypeLine:'Line Chart',
columnCountTitle:'Count'
},
"el_gr":{
chartTbarBtn:'Διαγράμματα',
chartTitle:'Διαγράμματα',
chooseLayer:'Επιλογή Επιπέδου',
x_axis:'Άξονας Χ',
y_axis:'Άξονας Υ',
chartType:'Τύπος Διαγράμματος',
chartShowBtn:'Εμφάνιση Διαγράμματος',
chartTypePie:'Διάγραμμα Πίτας',
chartTypeColumn:'Διάγραμμα Στηλών',
chartTypeLine:'Διάγραμμα Γραμμής',
columnCountTitle:'Πλήθος'
}
}
var chartStore = "";
var chartBtnGeneralTab=[
{xtype: 'tbseparator'},
{
xtype:'button',
iconCls:'chart',
tooltip:tbarChartLang[language].chartTitle,
handler:function(){
var _w = new fn_ChartWinSettings('');
_w.show();
}
}];
var tbarChartWindowBtn={
xtype:'button',
iconCls:'chart',
tooltip:tbarChartLang[language].chartTbarBtn,
handler:function(){
var _layerId;
if (typeof Ext.getCmp(this.findParentByType("grid").id)._layerId!=="undefined")
{
var _store = Ext.getCmp(this.findParentByType("grid").id).getStore();
_layerId = Ext.getCmp(this.findParentByType("grid").id)._layerId;
var _w = fn_ChartWinSettings(_store,_layerId);
_w.show();
var record = Ext.getCmp("chartLayerCombo").getStore().findRecord('_layerId', _layerId);
Ext.getCmp("chartLayerCombo").fireEvent('select', Ext.getCmp("chartLayerCombo"), [record]);
Ext.getCmp("chartLayerCombo").disable();
}
}
}
function init_chart()
{
fetureGridTopBarRightBtns.push(tbarChartWindowBtn);
//Ext.getCmp("maptab_toolbar_north").add(chartBtnGeneralTab);
mapOnRemoveLayer(chartLayersComboStorePopulate);
mapOnAddLayer(chartLayersComboStorePopulate);
chartLayersComboStorePopulate();
}
init_onload_fn.push(init_chart);
function chartLayersCombo()
{
var _arr = new mapGetlayersBy("isBaseLayer",false);
}
var chartLayerStore = Ext.create('Ext.data.Store', {
fields: ['_layerTitle', '_layerId','_layerLegend'],
data: []
});
function chartLayersComboStorePopulate()
{
chartLayerStore.removeAll();
var overlayers=mapGetlayersBy("isBaseLayer",false);
for(var i=(overlayers.length-1);i>=0;i--)
{
if (typeof overlayers[i]._layerObject!=="undefined")
{
if (overlayers[i]._layerObject._attributesFields!=null)
{
if (overlayers[i]._layerObject._attributesFields.length>0)
{
chartLayerStore.add({
_layerTitle:overlayers[i]._layerObject._layerTitle,
_layerId:overlayers[i]._layerObject._layerId,
_layerLegend:overlayers[i]._layerObject._layerLegend
});
}
}
}
}
}
function chartLayerAttributeStore()
{
}
function fn_ChartWinSettings(_store,_layerId)
{
if (typeof _layerId==="undefined")
{
_layerId = "";
}
var chartwin = Ext.create('Ext.window.Window', {
width: 400,
height: 300,
modal:true,
closeAction:'destroy',
hidden: false,
id:'chartgeneralwin_id',
maximizable: true,
title: tbarChartLang[language].chartTitle,
layout: 'fit',
padding:5,
items:[{
xtype:'panel',
layout:'form',
items:[{
xtype:'combo',
fieldLabel:tbarChartLang[language].chooseLayer,
id:'chartLayerCombo',
store:chartLayerStore,
editable:false,
queryMode: 'local',
displayField: '_layerTitle',
valueField: '_layerId',
value:_layerId,
forceSelection: true,
triggerAction: 'all',
selectOnFocus: false,
listConfig: {
getInnerTpl: function() {
var tpl = '{_layerTitle}';
return tpl;
}
},
listeners:{
select:function(combo, record, eOpts)
{
var _layerId = Ext.getCmp('chartLayerCombo').getValue();
var _x_Store = new fn_createAttributesComboStore(mapFindLayerById(_layerId)._layerObject._attributesFields);
var _y_Store = new fn_createAttributesComboStore(mapFindLayerById(_layerId)._layerObject._attributesFields);
Ext.getCmp("chartXAxisCombo").bindStore(_x_Store);
Ext.getCmp("chartYAxisCombo").bindStore(_y_Store);
}
}
},{
xtype:'combo',
fieldLabel:tbarChartLang[language].x_axis,
id:'chartXAxisCombo',
queryMode: 'local',
displayField: '_attributeTranslation',
valueField: '_attributeName',
emptyText:_maptab_east_search_panel_criteria_choose_attribute,
value:"",
forceSelection: true,
selectOnFocus: false,
triggerAction: 'all',
tpl: new Ext.XTemplate('' + '' + '{_attributeTranslation}' + ''),
editable: false
},{
xtype:'combo',
fieldLabel:tbarChartLang[language].y_axis,
id:'chartYAxisCombo',
queryMode: 'local',
displayField: '_attributeTranslation',
valueField: '_attributeName',
emptyText:_maptab_east_search_panel_criteria_choose_attribute,
value:"",
forceSelection: true,
selectOnFocus: false,
triggerAction: 'all',
tpl: new Ext.XTemplate('' + '' + '{_attributeTranslation}' + ''),
editable: false
},{
xtype:'combo',
fieldLabel:tbarChartLang[language].chartType,
id:'chartTypeCombo',
store: new Ext.data.SimpleStore({
fields: ['title','value'],
data: [
[tbarChartLang[language].chartTypePie,"pie"],
[tbarChartLang[language].chartTypeColumn,"column"],
[tbarChartLang[language].chartTypeLine,"line"]
]
}),
displayField: 'title',
valueField: 'value',
emptyText:tbarChartLang[language].chartTypePie,
value:"pie",
forceSelection: true,
triggerAction: 'all',
selectOnFocus: false,
mode: 'local',
editable: false
}]
}],
bbar:[
'->',
{
xtype:'button',
text:tbarChartLang[language].chartShowBtn,
tooltip:tbarChartLang[language].chartShowBtn,
iconCls:'chart',
handler:function(){
var _type = Ext.getCmp("chartTypeCombo").getValue();
switch(_type)
{
case "pie":
var y_axis = Ext.getCmp("chartYAxisCombo").getValue();
var _w = fn_createPieChartWin(_store, mapFindLayerById(_layerId)._layerObject._attributesFields, y_axis);
_w.show();
break;
case "column":
var x_axis = Ext.getCmp("chartXAxisCombo").getValue();
var x_axis_record = Ext.getCmp("chartXAxisCombo").getStore().findRecord("_attributeName",x_axis,0,false,true,true);
var y_axis = Ext.getCmp("chartYAxisCombo").getValue();
var y_axis_record = Ext.getCmp("chartXAxisCombo").getStore().findRecord("_attributeName",y_axis,0,false,true,true);
var _w = fn_createColumnChartWin(_store, mapFindLayerById(_layerId)._layerObject._attributesFields, x_axis_record.data, y_axis_record.data);
_w.show();
break;
case "line":
var x_axis = Ext.getCmp("chartXAxisCombo").getValue();
var x_axis_record = Ext.getCmp("chartXAxisCombo").getStore().findRecord("_attributeName",x_axis,0,false,true,true);
var y_axis = Ext.getCmp("chartYAxisCombo").getValue();
var y_axis_record = Ext.getCmp("chartXAxisCombo").getStore().findRecord("_attributeName",y_axis,0,false,true,true);
var _w = fn_createLineChartWin(_store, mapFindLayerById(_layerId)._layerObject._attributesFields, x_axis_record.data, y_axis_record.data);
_w.show();
break;
}
}
}],
listeners:{
"show":function(){
}
}
});
return chartwin;
}
function fn_createColumnChartWin(_store, _attributesFields, x_axis, y_axis)
{
var cmbId=Ext.id();
var chartBars=[];
if ((typeof y_axis!=="undefined") && (y_axis!="") && (y_axis!=null))
{
var target = Ext.create('Ext.data.Store', {
model: _store.model
});
Ext.each(_store.getRange(), function (record) {
var newRecordData = Ext.clone(record.copy().data);
var model = new _store.model(newRecordData, newRecordData.id);
target.add(model);
});
var y_axis_title = y_axis._attributeTranslation;
var y_axis_field = y_axis._attributeName;
if (y_axis._attributeName == x_axis._attributeName)
{
target.group(y_axis._attributeName);
var groups = target.getGroups();
var groupStore = Ext.create('Ext.data.Store', {
fields: [{
name: x_axis._attributeName, mapping: 'name'
},{
name: 'total', convert: function(value, record){
return record.raw.children.length;
}
}],
data: groups
});
y_axis_title = tbarChartLang[language].columnCountTitle;
y_axis_field = 'total';
}else{
var groupStore = target;
}
chartBars.push(Ext.create('Ext.chart.Chart', {
style: 'background:#fff',
animate: true,
shadow: true,
store: groupStore,
axes: [{
type: 'Numeric',
position: 'left',
fields: [y_axis_field],
/*label: {
renderer: Ext.util.Format.numberRenderer('0,0')
},*/
title: y_axis_title,
grid: true,
minimum: 0
}, {
type: 'Category',
position: 'bottom',
fields: [x_axis._attributeName],
title: x_axis._attributeTranslation
}],
series: [{
type: 'column',
axis: 'left',
highlight: true,
tips: {
trackMouse: true,
width: 160,
height: 28,
renderer: function(storeItem, item) {
this.setTitle(storeItem.get(x_axis._attributeName)+"
"+storeItem.get(y_axis_field));
}
},
label: {
display: 'insideEnd',
'text-anchor': 'middle',
field: y_axis._attributeTranslation,
renderer: Ext.util.Format.numberRenderer('0'),
orientation: 'vertical',
color: '#333'
},
xField: x_axis._attributeName,
yField: y_axis_field
}]
}))
}
var chartwin = Ext.create('Ext.window.Window', {
width: 800,
height: 600,
minHeight: 400,
minWidth: 550,
hidden: false,
maximizable: true,
title: 'Column Chart',
layout: 'fit',
items:chartBars
});
return chartwin;
}
function fn_createLineChartWin(_store, _attributesFields, x_axis, y_axis)
{
var cmbId=Ext.id();
var chartBars=[];
if ((typeof y_axis!=="undefined") && (y_axis!="") && (y_axis!=null))
{
var target = Ext.create('Ext.data.Store', {
model: _store.model
});
Ext.each(_store.getRange(), function (record) {
var newRecordData = Ext.clone(record.copy().data);
var model = new _store.model(newRecordData, newRecordData.id);
target.add(model);
});
var y_axis_title = y_axis._attributeTranslation;
var y_axis_field = y_axis._attributeName;
if (y_axis._attributeName == x_axis._attributeName)
{
target.group(y_axis._attributeName);
var groups = target.getGroups();
var groupStore = Ext.create('Ext.data.Store', {
fields: [{
name: x_axis._attributeName, mapping: 'name'
},{
name: 'total', convert: function(value, record){
return record.raw.children.length;
}
}],
data: groups
});
y_axis_title = tbarChartLang[language].columnCountTitle;
y_axis_field = 'total';
}else{
var groupStore = target;
}
chartBars.push(Ext.create('Ext.chart.Chart', {
style: 'background:#fff',
animate: true,
shadow: true,
store: groupStore,
axes: [{
type: 'Numeric',
position: 'left',
fields: [y_axis_field],
/*label: {
renderer: Ext.util.Format.numberRenderer('0,0')
},*/
title: y_axis_title,
grid: true
}, {
type: 'Category',
position: 'bottom',
fields: [x_axis._attributeName],
title: x_axis._attributeTranslation,
label: {
rotate: {
degrees: 90
}
}
}],
series: [{
type: 'line',
axis: 'left',
smooth: true,
highlight: true,
tips: {
trackMouse: true,
width: 240,
smooth: true,
renderer: function(storeItem, item) {
this.setTitle(storeItem.get(x_axis._attributeName)+"
"+storeItem.get(y_axis_field));
}
},
label: {
display: 'insideEnd',
'text-anchor': 'middle',
field: y_axis._attributeTranslation,
renderer: Ext.util.Format.numberRenderer('0'),
orientation: 'vertical',
color: '#333'
},
xField: x_axis._attributeName,
yField: y_axis_field,
markerConfig: {
type: 'circle',
size: 4,
radius: 4,
'stroke-width': 0
}
}]
}))
}
var chartwin = Ext.create('Ext.window.Window', {
width: 800,
height: 600,
minHeight: 400,
minWidth: 550,
hidden: false,
maximizable: true,
title: 'Column Chart',
layout: 'fit',
items:chartBars/*[{
xtype:'grid',
store:groupStore,
columns:[{
header:'x_axis',
dataIndex:x_axis._attributeName
},{
header:'y_axis',
dataIndex:y_axis_field
}]
}]*/
});
return chartwin;
}
function fn_createPieChartWin(_store, _attributesFields, _groupField)
{
var cmbId=Ext.id();
var chartBars=[];
if ((typeof _groupField!=="undefined") && (_groupField!="") && (_groupField!=null))
{
var target = Ext.create('Ext.data.Store', {
model: _store.model
});
Ext.each(_store.getRange(), function (record) {
var newRecordData = Ext.clone(record.copy().data);
var model = new _store.model(newRecordData, newRecordData.id);
target.add(model);
});
target.group(_groupField);
var groups = target.getGroups();
var groupStore = Ext.create('Ext.data.Store', {
fields: [{
name:_groupField, mapping: 'name'
}, {
name: 'total', convert: function(value, record){
return record.raw.children.length;
}
}],
data: groups
});
chartBars.push(Ext.create('Ext.chart.Chart', {
style: 'background:#fff',
animate: true,
shadow: true,
store: groupStore,
series: [{
type: 'pie',
field: 'total',
showInLegend: true,
donut: false,
highlight: {
segment: {
margin: 20
}
},
tips: {
trackMouse: true,
width: 160,
height: 28,
renderer: function(storeItem, item) {
this.setTitle(storeItem.get(_groupField) + ': ' + storeItem.get('total'));
}
},
label: {
field: _groupField,
display: 'rotate',
contrast: true,
font: '18px Arial'
}
}]
}))
}
if (Ext.getCmp("chartwin_id"))
{
Ext.getCmp("chartwin_id").destroy();
}
var chartwin = Ext.create('Ext.window.Window', {
width: 800,
height: 600,
minHeight: 400,
minWidth: 550,
hidden: false,
id:'chartwin_id',
maximizable: true,
title: 'Column Chart',
layout: 'fit',
items:chartBars
});
return chartwin;
}