Ext 热门城市选择器

 

 

/**
* #########################################
* ####### 热门城市选择器 开始 #######
* 取值时请用 selectedValue selectedText
* value rawValue :
* 还不清楚是哪里导致始终为展示的汉字...
* #########################################
*/

Ext.define('yifan.commonSelector.hotCitySelector',{
extend : 'Ext.form.field.Picker',
alias: 'widget.hotCitySelector',
triggerCls:Ext.baseCSSPrefix + 'form-search-trigger',
createPicker : function(){
var me = this;

var picker = Ext.create('Ext.tab.Panel', {
frame : true,
items: [ //这里的内容 需要参照  getProvinceStore() 一样来写 getHotCityStore() 方法来填充。
{
id:me.name+'_hotCitySelector_tab_hotCity',
title: '热门城市',
items:[
{
xtype:'button',
text:'成都',
handler:function(){
alert('成都');
}
},
{
xtype:'button',
text:'重庆',
handler:function(){
alert('重庆');
}
}
],
layout:{
type:'table',
columns:'6'
}
},
{
id:me.name+'_hotCitySelector_tab_province',
title: '省份',
layout:{
type:'table',
columns:'6'
}
},
{
id:me.name+'_hotCitySelector_tab_city',
title: '城市',
layout:{
type:'table',
columns:'6'
}
},
{
id:me.name+'_hotCitySelector_tab_area',
title: '区县',
layout:{
type:'table',
columns:'6'
}
}
],
floating: true,
hidden: true,
width : 420,
height: 250,
columnLines : true,
focusOnToFront: false
});

me.setTabTitleWidth(picker);

me.picker = picker;
me.getProvinceStore();
return picker;
},
triggers:{
clear : {
cls : 'x-form-clear-trigger',
handler : function(){
this.setRawValue(null);
this.setValue(null);
this.selectedValue = null;
this.selectedText = null;
this.getTrigger('clear').hide();
},
hidden : true
}
},
setTabTitleWidth:function(picker){

//设置页签的宽度
for(var n=0;n<picker.items.items.length;n++){
var curTab = picker.items.items[n];
if(n == 0){
curTab.tab.setWidth(100);
} else {
curTab.tab.setWidth(85);
}
}
},
selectedValue:null,//选择的数据项的值
selectedText:null,//选择的数据项的文本描述
matchFieldWidth:false,
getHotCityStore:function(){//用于获取 热门城市
},
displayCountOfRow:6,//第一行展示的个数
showSubDistrictInfo:function(tabId,record){//当点击一个选项后 判断是否设置 还是继续展示下级区域信息
var me = this,districtCode = record.districtCode;

if(tabId == me.name+'_hotCitySelector_tab_hotCity'){ //热门城市
me.setValue(districtCode);
me.setRawValue(record.districtShortName);
me.selectedValue = districtCode;
me.selectedText = record.districtShortName;
me.collapse();
me.getTrigger('clear').show();
} else if(tabId == me.name+'_hotCitySelector_tab_province'){ //省份
me.getCityStore(districtCode);
} else if(tabId == me.name+'_hotCitySelector_tab_city'){ //城市
me.getAreaStore(districtCode);
} else if(tabId == me.name+'_hotCitySelector_tab_area'){ //区县
me.setValue(districtCode);
me.setRawValue(record.districtShortName);
me.selectedValue = districtCode;
me.selectedText = record.districtShortName;
me.collapse();
me.getTrigger('clear').show();
}
},
getDistrictInfo:function(params,tabId,urlMethod){
var me = this;
var successFun = function (json) {

var districtObjList = json.districtVo.districtList;
var btnArr = [];
if(!Ext.isEmpty(districtObjList)){
Ext.each(districtObjList,function(record,index,records){

var districtCode = record.districtCode;
var districtShortName = record.districtShortName;
var districtName = record.districtName;

var curBtn = Ext.create('Ext.button.Button',{
text:districtShortName,
tooltip:districtName,
style:'width:60px;cursor:pointer;margin:5px;border:1px solid black;background-color:#bbb;',
listeners:{
'click':function(btnSelf,event,eOpts){
me.showSubDistrictInfo(tabId,record);
}
}
});

btnArr.push(curBtn);

},this);
}

var picker = me.picker,curTab = null;
if(tabId == me.name+'_hotCitySelector_tab_hotCity'){

//把省份备份
var provinceTab = picker.child('#'+me.name+'_hotCitySelector_tab_province');
var cityTab = picker.child('#'+me.name+'_hotCitySelector_tab_city');
var areaTab = picker.child('#'+me.name+'_hotCitySelector_tab_area');

//当前为 热门城市
curTab = picker.child('#'+tabId);
picker.removeAll();

//添加页签
picker.add({
id:tabId,
title:'热门城市',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

picker.add(provinceTab);
picker.add(cityTab);
picker.add(areaTab);

me.setTabTitleWidth(picker);

}else if(tabId == me.name+'_hotCitySelector_tab_province'){

var cityTab = picker.child('#'+me.name+'_hotCitySelector_tab_city');
var areaTab = picker.child('#'+me.name+'_hotCitySelector_tab_area');

curTab = picker.child('#'+tabId);
picker.remove(curTab);
picker.remove(cityTab);
picker.remove(areaTab);

picker.add({
id:tabId,
title:'省份',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

picker.add({
id:me.name+'_hotCitySelector_tab_city',
title:'城市',
layout:{
type:'table',
columns:'6'
},
items:[],
width:me.picker.width
});

picker.add({
id:me.name+'_hotCitySelector_tab_area',
title:'区县',
layout:{
type:'table',
columns:'6'
},
items:[],
width:me.picker.width
});

me.setTabTitleWidth(picker);

} else if(tabId == me.name+'_hotCitySelector_tab_city'){

var areaTab = picker.child('#'+me.name+'_hotCitySelector_tab_area');

curTab = picker.child('#'+tabId);
picker.remove(curTab);
picker.remove(areaTab);

picker.add({
id:tabId,
title:'城市',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

picker.add({
id:me.name+'_hotCitySelector_tab_area',
title:'区县',
layout:{
type:'table',
columns:'6'
},
items:[],
width:me.picker.width
});

me.setTabTitleWidth(picker);

} else if(tabId == me.name+'_hotCitySelector_tab_area'){

curTab = picker.child('#'+tabId);
picker.remove(curTab);

picker.add({
id:tabId,
title:'区县',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

me.setTabTitleWidth(picker);
}

//再获取当前点击后的页签
curTab = picker.child('#'+tabId);

//展示该页签
curTab.tab.show();

//选中该页签
picker.setActiveTab(curTab);
};

var failureFun = function (json) {
console.log(json);
};

miser.requestJsonAjax('../base/districtAction!'+urlMethod+'.action', params, successFun, failureFun,true);
},
getProvinceStore:function(){//用于获取 省份
var me = this;
var params = {
'districtVo' :{
'district' : {
'districtType' : 'PROVINCE'
}
},
'limit':100000,
'start':0
};
me.getDistrictInfo(params,me.name+'_hotCitySelector_tab_province','queryProvince');
},
getCityStore:function(provinceCode){//用于获取 城市
var me = this;
var params = {
'districtVo' :{
'district' : {
'parentDistrictCode' : provinceCode
}
},
'limit':100000,
'start':0
};
me.getDistrictInfo(params,me.name+'_hotCitySelector_tab_city','queryCity');
},
getAreaStore:function(cityCode){//用于获取 区县
var me = this;
var params = {
'districtVo' :{
'district' : {
'parentDistrictCode' : cityCode
}
},
'limit':100000,
'start':0
};
me.getDistrictInfo(params,me.name+'_hotCitySelector_tab_area','queryArea');
}
});

---恢复内容结束---

Ext.define('Miser.commonSelector.hotCitySelector',{
extend : 'Ext.form.field.Picker',
alias: 'widget.hotCitySelector',
triggerCls:Ext.baseCSSPrefix + 'form-search-trigger',
createPicker : function(){
var me = this;

var picker = Ext.create('Ext.tab.Panel', {
frame : true,
items: [
{
id:me.name+'_hotCitySelector_tab_hotCity',
title: '热门城市',
items:[
{
xtype:'button',
text:'成都',
handler:function(){
alert('成都');
}
},
{
xtype:'button',
text:'重庆',
handler:function(){
alert('重庆');
}
}
],
layout:{
type:'table',
columns:'6'
}
},
{
id:me.name+'_hotCitySelector_tab_province',
title: '省份',
layout:{
type:'table',
columns:'6'
}
},
{
id:me.name+'_hotCitySelector_tab_city',
title: '城市',
layout:{
type:'table',
columns:'6'
}
},
{
id:me.name+'_hotCitySelector_tab_area',
title: '区县',
layout:{
type:'table',
columns:'6'
}
}
],
floating: true,
hidden: true,
width : 420,
height: 250,
columnLines : true,
focusOnToFront: false
});

me.setTabTitleWidth(picker);

me.picker = picker;
me.getProvinceStore();
return picker;
},
triggers:{
clear : {
cls : 'x-form-clear-trigger',
handler : function(){
this.setRawValue(null);
this.setValue(null);
this.selectedValue = null;
this.selectedText = null;
this.getTrigger('clear').hide();
},
hidden : true
}
},
setTabTitleWidth:function(picker){

//设置页签的宽度
for(var n=0;n<picker.items.items.length;n++){
var curTab = picker.items.items[n];
if(n == 0){
curTab.tab.setWidth(100);
} else {
curTab.tab.setWidth(85);
}
}
},
selectedValue:null,//选择的数据项的值
selectedText:null,//选择的数据项的文本描述
matchFieldWidth:false,
getHotCityStore:function(){//用于获取 热门城市
},
displayCountOfRow:6,//第一行展示的个数
showSubDistrictInfo:function(tabId,record){//当点击一个选项后 判断是否设置 还是继续展示下级区域信息
var me = this,districtCode = record.districtCode;

if(tabId == me.name+'_hotCitySelector_tab_hotCity'){ //热门城市
me.setValue(districtCode);
me.setRawValue(record.districtShortName);
me.selectedValue = districtCode;
me.selectedText = record.districtShortName;
me.collapse();
me.getTrigger('clear').show();
} else if(tabId == me.name+'_hotCitySelector_tab_province'){ //省份
me.getCityStore(districtCode);
} else if(tabId == me.name+'_hotCitySelector_tab_city'){ //城市
me.getAreaStore(districtCode);
} else if(tabId == me.name+'_hotCitySelector_tab_area'){ //区县
me.setValue(districtCode);
me.setRawValue(record.districtShortName);
me.selectedValue = districtCode;
me.selectedText = record.districtShortName;
me.collapse();
me.getTrigger('clear').show();
}
},
getDistrictInfo:function(params,tabId,urlMethod){
var me = this;
var successFun = function (json) {

var districtObjList = json.districtVo.districtList;
var btnArr = [];
if(!Ext.isEmpty(districtObjList)){
Ext.each(districtObjList,function(record,index,records){

var districtCode = record.districtCode;
var districtShortName = record.districtShortName;
var districtName = record.districtName;

var curBtn = Ext.create('Ext.button.Button',{
text:districtShortName,
tooltip:districtName,
style:'width:60px;cursor:pointer;margin:5px;border:1px solid black;background-color:#bbb;',
listeners:{
'click':function(btnSelf,event,eOpts){
me.showSubDistrictInfo(tabId,record);
}
}
});

btnArr.push(curBtn);

},this);
}

var picker = me.picker,curTab = null;
if(tabId == me.name+'_hotCitySelector_tab_hotCity'){

//把省份备份
var provinceTab = picker.child('#'+me.name+'_hotCitySelector_tab_province');
var cityTab = picker.child('#'+me.name+'_hotCitySelector_tab_city');
var areaTab = picker.child('#'+me.name+'_hotCitySelector_tab_area');

//当前为 热门城市
curTab = picker.child('#'+tabId);
picker.removeAll();

//添加页签
picker.add({
id:tabId,
title:'热门城市',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

picker.add(provinceTab);
picker.add(cityTab);
picker.add(areaTab);

me.setTabTitleWidth(picker);

}else if(tabId == me.name+'_hotCitySelector_tab_province'){

var cityTab = picker.child('#'+me.name+'_hotCitySelector_tab_city');
var areaTab = picker.child('#'+me.name+'_hotCitySelector_tab_area');

curTab = picker.child('#'+tabId);
picker.remove(curTab);
picker.remove(cityTab);
picker.remove(areaTab);

picker.add({
id:tabId,
title:'省份',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

picker.add({
id:me.name+'_hotCitySelector_tab_city',
title:'城市',
layout:{
type:'table',
columns:'6'
},
items:[],
width:me.picker.width
});

picker.add({
id:me.name+'_hotCitySelector_tab_area',
title:'区县',
layout:{
type:'table',
columns:'6'
},
items:[],
width:me.picker.width
});

me.setTabTitleWidth(picker);

} else if(tabId == me.name+'_hotCitySelector_tab_city'){

var areaTab = picker.child('#'+me.name+'_hotCitySelector_tab_area');

curTab = picker.child('#'+tabId);
picker.remove(curTab);
picker.remove(areaTab);

picker.add({
id:tabId,
title:'城市',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

picker.add({
id:me.name+'_hotCitySelector_tab_area',
title:'区县',
layout:{
type:'table',
columns:'6'
},
items:[],
width:me.picker.width
});

me.setTabTitleWidth(picker);

} else if(tabId == me.name+'_hotCitySelector_tab_area'){

curTab = picker.child('#'+tabId);
picker.remove(curTab);

picker.add({
id:tabId,
title:'区县',
layout:{
type:'table',
columns:'6'
},
items:btnArr,
width:me.picker.width
});

me.setTabTitleWidth(picker);
}

//再获取当前点击后的页签
curTab = picker.child('#'+tabId);

//展示该页签
curTab.tab.show();

//选中该页签
picker.setActiveTab(curTab);
};

var failureFun = function (json) {
console.log(json);
};

miser.requestJsonAjax('../base/districtAction!'+urlMethod+'.action', params, successFun, failureFun,true);
},
getProvinceStore:function(){//用于获取 省份
var me = this;
var params = {
'districtVo' :{
'district' : {
'districtType' : 'PROVINCE'
}
},
'limit':100000,
'start':0
};
me.getDistrictInfo(params,me.name+'_hotCitySelector_tab_province','queryProvince');
},
getCityStore:function(provinceCode){//用于获取 城市
var me = this;
var params = {
'districtVo' :{
'district' : {
'parentDistrictCode' : provinceCode
}
},
'limit':100000,
'start':0
};
me.getDistrictInfo(params,me.name+'_hotCitySelector_tab_city','queryCity');
},
getAreaStore:function(cityCode){//用于获取 区县
var me = this;
var params = {
'districtVo' :{
'district' : {
'parentDistrictCode' : cityCode
}
},
'limit':100000,
'start':0
};
me.getDistrictInfo(params,me.name+'_hotCitySelector_tab_area','queryArea');
}
});

posted @ 2016-05-11 15:19  WayneSilver  阅读(205)  评论(0)    收藏  举报