Ext.onReady(function(){
Ext.QuickTips.init();
Ext.loadMask = new Ext.LoadMask(Ext.getBody(), {msg:"加载中..."});
/**
* author : sumin
* time : 2011-3-28
*(0不可见1可用2不可用)
*
* 将菜单的id作为session的name
* @memberOf {TypeName}
*/
Ext.override(Ext.Button,{
initComponent: Ext.Button.prototype.initComponent.createSequence(function(){
this.on({
beforerender : function(btn){
var buttonResource = {};
for(var i=0;i<ziyuanlist.length;i++){
if(ziyuanlist[i].panelid == btn.id){
buttonResource.panelid = ziyuanlist[i].panelid;
buttonResource.ziyuanzhuangtai = ziyuanlist[i].ziyuanzhuangtai
}
}
if(buttonResource.panelid == btn.id){
btn.hidden = buttonResource.ziyuanzhuangtai == 0 //不可见的状态
btn.disabled = buttonResource.ziyuanzhuangtai == 2//不可编辑的状态
alert(buttonResource.ziyuanzhuangtai)
}
}
});
})
})
/**
* @ author sumin
* @time 2011 3 25
* 需要一个store,加载后台module类
*
*/
zyerp.system.PrimaModuleStore = Ext.extend(Ext.data.JsonStore,{
proxy : new Ext.data.HttpProxy({
url: '/zyerp/module/module!loadPrimaModules',
method : "POST"
}),
autoLoad : false,
root : "list", //不要使用Reader,会报TypeError: record is undefined
totalProperty : "total",
idProperty : "id",
fields : [
{ name : "primaModuleId", mapping : "primaModuleId", type : "int" },
{ name : "panelId", mapping : "panelId", type : "string" },
{ name : "name", mapping : "name", type : "string" },
{ name : "visible", mapping : "visible", type : "boolean" },
{ name : "icon", mapping : "icon", type : "string" },
{ name : "orderNum", mapping : "orderNum", type : "int" },
{ name : "resources", mapping : "resources", type : "array" }
],
constructor : function(conf) {
conf = conf || {};
Ext.applyIf(conf, this);
zyerp.system.PrimaModuleStore.superclass.constructor.call(this,
conf
);
}
});
/**
* @auther sumin
* @time 2011 3 25 21:59
* 单击事件 导航树节点单击出后加载相应界面
* contentPanel 分成每一个window的center
*/
zyerp.system.moduleHandler = function (module, contentPanel){
//加载的界面放置到contentPanel中
if(Ext.getCmp(module.panelid)){
contentPanel.setActiveTab(Ext.getCmp(module.panelid));
}else{
if(! module.jsfile) return;
Ext.loadMask.show();
Ext.Ajax.request({
url : module.jsfile,
success : function(response) {
eval(response.responseText);
var tab = Ext.getCmp(module.panelid);
tab.show();
contentPanel.add(tab);
contentPanel.doLayout(true);
contentPanel.setActiveTab(tab);
Ext.loadMask.hide();
},
failure : function(response) {
Ext.MessageBox.alert("错误", "系统加载失败,请稍后重试或联系管理员.");
Ext.loadMask.hide();
}
});
}
}
/**
* author 苏民
* time 2011-3-25
* 导航树所在的panel
*/
zyerp.system.oERPPanel = new Ext.Panel({
title : "功能列表",
region : "west",
width : 180,
height : 300,
layout : 'accordion',
collapsible : true,
layoutConfig : {
activeOnTop : false,
animate : false
},
listeners : {
afterrender : function() {
zyerp.system.moduleStore.load();
}
}
});
/**
* author : sumin
* time : 2011-3-25
* 导航树
* @memberOf {TypeName}
*/
zyerp.system.navigaterTree = Ext.extend(Ext.tree.TreePanel,{
split : true,
width : 180,
autoLoad : false,
autoScroll : true,
rootVisible : false,
module : null,
initComponent : function(){
var oThis = this;
this.loader = new Ext.tree.TreeLoader({
dataUrl : "/zyerp/resource/resource!loadNavigaterTreeNode",
method : "post",
listeners : {
beforeload : function(treeloader,node){
//所在的panel
this.baseParams.moduleId = oThis.module.primaModuleId
this.baseParams.nodeId = node.id;
},
loadexception: function(oThis, node, response) {
alert(Ext.util.JSON.encode(response));
}
}
});
/* 根节点 */
this.root = new Ext.tree.AsyncTreeNode({
id : "0",
text : "客户目录",
expanded : true,
leaf : false
});
zyerp.system.navigaterTree.superclass.initComponent.call(this);
}
})
/**
* @author sumin
* @time 2011 3 25
* 实现erp.sys.PrimaModuleStore 监听store 的load事件
* 监听的过程中,将导航栏的菜单画出
*/
zyerp.system.moduleStore = new zyerp.system.PrimaModuleStore({
listeners: {
beforeload : function(s,opt){
s.loadMask = new Ext.LoadMask(zyerp.system.oERPPanel.body,{
msg : "正在加载……"
})
s.loadMask.show();
},
load : function(s, records, options){
s.each(function(r){
//获得模块
if(!r) return;
var module = r.data;
//创建一个panel
//将panel放置在界面上一个window的导航panel中
//加载该module的submodules
//将加载的submodules放置成一棵树
//设置树节点的单击事件:加载对应的界面
var primaPanel = new zyerp.system.navigaterTree({
title : module.name,
module : module,
listeners : {
expand : function() {
this.doLayout();// 重新布局
},
click : function(node,e){
if(node.isLeaf()){
var module = {};
module.jsfile = node.attributes.jsfile;
module.panelid = node.attributes.panelid;
zyerp.system.moduleHandler(module,zyerp.system.oContent)
}
}
}
});
zyerp.system.oERPPanel.add(primaPanel)
primaPanel.doLayout();
})
zyerp.system.oERPPanel.doLayout();
s.loadMask.hide();
}
}
})
/**
* author : sumin
* time : 2011-3-25
* 导航树节点单击的js在这个tabpanel中渲染
* @param {Object} t
* @param {Object} p
*/
zyerp.system.oContent = new Ext.TabPanel({
region : "center",
resizeTabs:true, // turn on tab resizing
minTabWidth: 115,
tabWidth:135,
enableTabScroll:true,
defaults: {autoScroll:true},
plugins: new Ext.ux.TabCloseMenu(),
listeners : {
'tabchange': function(t, p) {
t.doLayout();
}
}
})
/**
* author : sumin
* time : 2011-3-25
* 我的工作台窗口
*/
zyerp.system.oDeskWin = new Ext.Window({
title: "我的工作台",
x: 20,
y: 20,
resizable: false,
minimizable: true,
maximizable: true,
width: 200,
height: 280,
layout : "border",
items:[zyerp.system.oERPPanel,zyerp.system.oContent]
});
zyerp.system.oDeskWin.show();
})
分享到:
相关推荐
"定制某一个页面导航栏样式(页面加载前)"这个主题涉及到的核心知识点主要集中在Objective-C(OC)编程语言,以及UIKit框架中的UINavigationController和UIBarItem等相关类。下面我们将深入探讨如何在页面加载前实现...
3. **LoadOperation** 对于MVVM(Model-View-ViewModel)架构,通常使用INavigationService的LoadOperation来处理页面加载过程,包括导航参数的传递和处理。 ### 控件动态加载 动态加载控件涉及到以下几个关键点:...
并处理html页面中的javascript事件”探讨了如何利用WebView来加载本地HTML文件,并且如何处理HTML页面中的JavaScript事件,这对于创建混合型应用或实现特定功能(如在原生应用中展示动态内容)非常有用。 首先,...
- 性能优化:对控件进行优化,减少不必要的处理,提高页面加载速度。 - 用户界面定制:根据项目需求,创建具有独特外观和交互的控件。 - 代码复用:创建自定义控件库,方便在多个项目中重复使用。 2. 控件重写的...
5. **动态加载Tab**:根据实际需求,可以动态地添加或删除Tab,以适应内容的变化。 在“自定义tabhost使用了不同默认的上标签切换页面”这一描述中,我们可以理解为每个Tab可能展示不同的内容,而这些内容可能是...
在数据加载完成后,动态添加Button控件到相应的单元格。 通过以上步骤,你就可以在VB.NET的VS2005环境下实现DataGridView中Button的添加和功能实现。这个功能增强了用户界面的交互性,使得用户能更直观地对数据进行...
在`jquery-latest.js`和`jquery-latest.pack.js`中,包含了最新的jQuery库,这两个文件都是压缩版,`pack.js`是进一步压缩过的,以减少页面加载时间。 为了重写`alert`,我们可以创建一个自定义的函数,例如`custom...
对于`PagerAdapter`的自定义,我们需要重写`instantiateItem()`、`destroyItem()`等方法,确保正确地创建和销毁页面。滑动动画可以通过`ViewPager.addOnPageChangeListener()`监听页面滑动事件,并设置相应的过渡...
使用`LayoutInflater.from(context).inflate(R.layout.button_layout, parent, false)`加载布局,然后使用`parent.addView(button)`将按钮添加到指定容器。 4. **按钮点击事件**: 设置按钮的点击事件通常有两种...
本文将详细介绍如何在Android中替换WebView加载网页失败时的默认页面,实现自定义错误提示页面。 首先,我们需要创建一个新的布局文件,用于存放自定义的错误页面。这个布局可以包含任何希望展示给用户的元素,比如...
`ViewPager`通过适配器(如`FragmentPagerAdapter`或`PagerAdapter`)来管理这些页面,适配器负责加载和显示相应的数据。你可以自定义`PagerAdapter`来填充你想要展示的视图,例如图片、文本或者动画,以增加视觉...
本项目"android适应横竖屏登录模块toolsbar重写BaseAdapter.zip"主要展示了如何实现一个登录界面,该界面能够根据设备的横竖屏自动调整布局,并且在主页面中对ToolBar进行了自定义,利用重写的BaseAdapter实现了类似...
在Android应用开发中,Fragment是实现界面动态性和灵活性的关键组件。Fragment可以理解为一个可插入到Activity中的小型视图层次结构,它有自己的生命周期,并且可以在需要时被添加、替换或移除。本教程将深入探讨...
为了在用户离线时自动加载缓存的页面,我们还需要重写`onReceivedSslError()`方法,接受所有SSL证书(这一步仅用于演示,实际应用中需谨慎处理): ```java webView.setWebViewClient(new WebViewClient() { ... ...
当生成HTML页面时,考虑到网络传输效率,可以使用GZip或Deflate等压缩算法对HTML进行压缩,减少页面加载时间。同时,合并CSS和JavaScript文件、优化图片等也是提高性能的关键。 6. **SEO优化**: 生成静态HTML有...
要使ViewPager工作,你需要创建一个继承自`PagerAdapter`的类,例如`FragmentPagerAdapter`或`FragmentStatePagerAdapter`,并重写`instantiateItem()`和`destroyItem()`方法,以便在ViewPager中加载和销毁页面。...
伪静态技术是将动态页面的URL转换为静态页面的URL形式,以提高网站的加载速度和SEO优化效果。在ASP中实现伪静态,通常会利用IIS(Internet Information Services)服务器的重写规则或者通过服务器端的URLRewrite模块...
2. **初始化Duilib**:在MFC的主窗口类(通常是CMainFrame或CDialog)中,重写 OnInitInstance() 方法,加入Duilib的初始化代码,例如: ```cpp bool CMainFrame::OnInitInstance() { // ...其他MFC初始化代码.....