dorado

///校验名称长度 end/////////
---------------------------------------------------------------------------------------

var type = arg.data.get("TYPE");
var change =  arg.data.get("CHANGE_STATE");
if(type != 3){
 if(change == "A"){//绿色
  arg.dom.style.background = "#37FF37" //"#37B44A" 
 }else if(change == "U"){//蓝色
  arg.dom.style.background = "#C1EFEF"//"#00BFF3" 
 }else if(change == "D"){//红色
  arg.dom.style.background = "#FDDFED"//"#EE1D24" 
 }else{
  arg.dom.style.background = "" 
 }
}else{
 arg.dom.style.background = "" 
}
arg.processDefault = true;
-----------------------------------------------------
遍历树结构的表
SELECT *
  FROM ocm_kpi_write_act_v
 WHERE ocm_graph_card_id = ‘8a58bc943f9d7e35013f9d7fb2dc0003‘
CONNECT BY PRIOR ID = parent_id
 START WITH parent_id = ‘-1‘;

select *
  from ocm_kpi_write_act_vs m
 where m.OCM_GRAPH_CARD_ID = ‘8a58bc943f9d7e35013f9d7fb2dc0003‘;
------------------------------------------------------------------
SELECT * 
  FROM OCM_KPI_WRITE_V 
  WHERE ocm_graph_card_id=‘8a58bc883f884a4d013f88666ad90006‘ 
 CONNECT BY PRIOR ID = parent_id 
 START WITH parent_id =‘-1‘
  --8a58bc943f9d7e35013f9d7fb2dc0003
  
select * 
  from ocm_kpi_write_vs t 
  where t.OCM_GRAPH_CARD_ID =‘8a58bc943f9d7e35013f9d7fb2dc0003‘;

OCM_KPI_WRITE_V
  
  OCM_KPI_WRITE_VS
  ----------------------------------------------
-----------dataType属性beforeDataChange------判断开始日期小于结束日期
switch(arg.property){
 case "ACT_START_DATE" :
  var endDate = arg.entity.get("ACT_END_DATE")
  var startDate = arg.newValue;
  var ds = view.id("dataSetOcmActPlan").getData("#");
  if(startDate>endDate){
   dorado.MessageBox.alert("字段【开始时间】不能大于字段【结束时间】");
  arg.entity.set("ACT_END_DATE",arg.newValue)
  }
 break;
 case "ACT_END_DATE" :
  var startDate = arg.entity.get("ACT_END_DATE")
   var endDate = arg.newValue;
   var ds = view.id("dataSetOcmActPlan").getData("#");
   if(startDate>endDate){
    dorado.MessageBox.alert("字段【结束时间】不能小于字段【开始时间】");
   arg.entity.set("ACT_START_DATE",arg.newValue)
   }
 break;
}
------------------------------------------------------------------------------------
dataTree的宽窄属性:position:200;
--------------从session中获取当前登录人的部门ID-------------------------------------------------------------------
public String getSessionDeptId(){
  return SessionHelper.getCurrentDeptId();
 }
String userId = SessionHelper.getLoginSysUserId();
  String ip = SessionHelper.getClientIp();

----------------------------------------
部门ID转NAME---:要注意名字的统一
@Transient
 public String getHrDeptName() {
  SysDeptLoader sdLoader = SpringFactory.getBean("SysDeptLoader");
  String hrDeptName = sdLoader.getSysDeptNameBySysDeptId(this.getHrDeptId(), "zh_CN");
  return hrDeptName;
 }
--------------------------------
POJO首页返回流程状态
---
@Autowired
 @JdbcDaor
 private IJdbcDao jdbcDao;
 
 @Autowired
 CommonHibernateDao commonHibernateDao;
 
 @DataProvider
 public void getDataWithBpmEntryV(Criteria criteria, Object parameter, Page page) {
  jdbcDao.page("CompositeOcmGraphCard", criteria, parameter, page);
  Collection<Record> records = page.getEntities();
  for (Record r: records){
   String activityNames=new BpmEntity().getEntityActivityNamesByFormId(commonHibernateDao,r.getString("ID").toString());
   /*//String activityNames = "测试综合图卡";
   bpmToolService.getActivityNamesByFormId(r.getString("ID").toString()) ;
   //String state = "已经完成";
   bpmToolService.getProcessStateByFormId(r.getString("ID").toString()) ;*/
   String state = new BpmEntity().getEntityStateByFromId(commonHibernateDao,r.getString("ID").toString());
   //流程实例ID
   String entryId =  new BpmEntity().getEntityIdByFromId(commonHibernateDao, r.getString("ID").toString());
   String executionId =  new BpmEntity().getExecutionId(commonHibernateDao, r.getString("ID").toString());
   String taskId =  new BpmEntity().getTaskId(commonHibernateDao, r.getString("ID").toString());
   
   r.put("ATTRIBUTE_10", entryId);
   r.put("ACTIVITY_NAMES", activityNames);
   r.put("ACTIVITY_STATE", state);
   r.put("ATTRIBUTE_09", executionId);
   r.put("ATTRIBUTE_08", taskId);
  }
 }
--------------------------------------------------------------------- 
var data = view.get("#dataSetAddForm.data:#");
--------------------------------

dataTree树上高亮显示
---------------
var ocmKpiWriteId =view.get(‘#dataSetOcmActPlan‘).getData(‘#‘).get(‘ocmKpiWriteId‘);
var firstNode =view.get("#dataTree").get(‘firstNode‘);
queryNode(firstNode,true);
return true;
------------------树节点上取值-----
   var currentEntity = this.id("treeGrid").get("currentEntity");
if (currentEntity) {
 //根节点和战略角度节点不能被删除
        if (currentEntity.get("PARENT_ID") !=-1 && currentEntity.get("TYPE") !="3" ) {
---
//递归查找树上对应节点  mac2013-7-10
function queryNode(node,sign){
 if(sign){
  var nodes=node.get(‘nodes‘);
  nodes.each(function(obj){  
       var OCM_KPI_WRITE_ID=obj.get(‘data‘).get(‘OCM_KPI_WRITE_ID‘);
   //alert(obj.get(‘data‘).get(‘NAME‘)+"OCM_KPI_WRITE_ID---"+OCM_KPI_WRITE_ID+"---"+ocmKpiWriteId);
          if(obj.get(‘data‘).get(‘OCM_KPI_WRITE_ID‘)==ocmKpiWriteId){
     //alert(obj.get(‘data‘).get(‘NAME‘)+‘!!!!!‘);
    obj.highlight(); 
    return false;
    }else{
     var sd=queryNode(obj,true);
    }
  });
 }else{
  //alert(1);
  return false;
 }
}
----------------------------------------------------------
table行高亮显示
--
var change = arg.data.get("CHANGE_STATE");
if (change == "A") {//绿色
    arg.dom.style.background = "#fff100" //"#37B44A" 
}else if (change == "U") {//蓝色
        arg.dom.style.background = "#00FF00"//"#00BFF3" 
}else if (change == "D") {//红色
            arg.dom.style.background = "#EE1D24" 
}else {
  arg.dom.style.background = ""
}
arg.processDefault = true;
----------------操作,详细链接--------------------------------------
var id = arg.data.get("id");

jQuery(arg.dom).empty();
jQuery(arg.dom).xCreate({
    tagName: "A",
    href: "#",
    content: "详细",
    style: "font-size:13px",
    onclick: function(){
  view.get("#detailIframe").set("path","${web.contextPath}/avicit/ocm/kpimanager/ocmactplan/view/actsubproject/OcmActSubProjectDetail.d7?isFlow=true&id=" + id);
  view.get("#dialogDetail").show();
 }});
------------------------------------------------
var button1 = $DomUtils.xCreate({
 tagName: "button",
 id:"button1",
 content: "Click Me",// 定义按钮的标题 
 onclick: function(){
  // 定义onclick事件    
  alert("Button clicked.");
 }},{
 tagName: "button",
 content: "Click You",// 定义按钮的标题 
 onclick: function(){
  // 定义onclick事件   
 }}  
);
-------------------------------------------
//找到dataTreeGrid的property列绑定onGetCellEditor监听事件
view.get("#dataTreeGrid1").findColumns(property)[0].set({
    trigger: view.get("#recommendDropdown"),   //绑定下拉框
    onGetCellEditor :function(self, arg){
        //获取ajax对象
        var ajaxGetListAction = view.get("#ajaxGetDropDownItem");
       
        //设置ajax请求参数
        ajaxGetListAction.set("parameter",param);

//执行ajaxAction请求获取下拉框值
        ajaxGetListAction.execute(function(result){
        view.get("#recommendDropdown").set("items",result);
        });
    }
});
----------------------------
onGetCellEditor :function(self, arg){
    arg.editor.set("trigger",view.get("#recommendDropdown"))
 }
-----------------
---------------------------table设置某一列的只读---------
 view.get("#MainData").findColumns("YEAR_FROM")[0].set({
   // trigger: ,   //绑定下拉框
    onRenderCell :function(self, arg){
 var v= arg.data.get("YEAR_FROM");
       if(v==‘2012‘){     
    arg.cellEditor.createEditorControl();//获取对应的Editor对象
  // arg.editor.set("readOnly",true);
    }else{
    // arg.editor.set("readOnly",false);
    }
    }
});
--------------------------------------------
jQuery(arg.dom).empty();
jQuery(arg.dom).xCreate({
    tagName: "A",
    href:"#",
    content:arg.data.get("YEAR_FROM"),
 style:"font-size:12px;color:red"
});
----------------------------------
---js替换访问路径------------------
$ReportRoot="rqreport/reportJsp/showReport.jsp?raq=/subjectOcmCardReport.raq&cardId=";
var rootPath=‘${web.contextPath}‘;
var ServerNAME=rootPath.substring(1);
localPath=rootPath.replace(ServerNAME,$ReportRoot);
-------------------------------------------

----------------------------------------
dynaRowHeight : boolean from AbstractGrid[WriteBeforeReady] 
是否支持动态行高的功能。
----------------------------------------------
stretchcolumnsmode
表格列的宽度调整模式
---------------

--dataTreeGrid的Column的属性onRenderCell事件
var context = {};
var status = arg.data.get("planType");
var png="";
if(status == ‘晴天‘){
 png = "qing";
}else if(status == ‘阴天‘){
 png = "yin";
} else if(status == ‘大雨‘){
 png = "yu";

} else if(status == ‘多云‘){
 png = "duoyun";
} else{
 arg.dom.innerHtml ="<a href=#>"+status+"</a>";
}
arg.dom.innerHTML="<img src =‘../../../../images/"+png+".png‘ height = ‘20px‘ alt ="+status+">"+status;
dorado.TipManager.initTip(arg.dom.parentNode, {
  content : {
   tagName : "IMG",
   src : $url("../../../../images/"+png+".png"),
   style : "width: 128px; height: 128px; margin: 8px"
  },
  arrowDirection : "top",
  arrowAlign : "left"
 });
------------------------------------
table判断当前数据是否存在
var table = view.get("#MainDataprofession");
if(null!=table.getCurrentItem()){ 
-------------------------------------
view.get("#menuOrg").show({
 position:{
  left:arg.event.pageX,
  top:arg.event.pageY
 }
});
-------------------------------
平台选人页
[{loginName:CREATED_BY},{name:CREATED_BY_NAME}]

selectUser_Trigger
---------------------、
树节点onRenderNode()事件
var selected = arg.node.get("data.searchSelectedFlag");
arg.dom.style.fontWeight = selected ? "bold" : "";
arg.dom.style.background = selected ? "#3399ff" : "";
arg.dom.style.padding = selected ? "0 4px" : "";
arg.dom.style.color = selected ? "white" : "";
arg.processDefault = true;
-------------------------------------------------
El表达式
两种EL表达式
–静态EL表达式:${expression} ,在创建目标对象癿过程中一次性癿求值。
–劢态EL表达式:$${expression},以劢态代理癿方式创建目标对象,并在外界每一次读取相应属性时迕行求值。
?基本诧法
–${3x2} =6
–${3>2} =true
–${empty(foo)} - empty()是内置癿函数,用亍刞断传入参数是否为null戒空字符串。
–${foo>0? "enabled":"disabled"} - 条件表达式。
–${foo["bar"]}戒${foo.bar]} - 读取map中癿bar键值。
-----------------------------------------------------
----dorado系统变量和参数
不线程无关(仸何配置文件中都可以使用)
–null - 表示null
–env - 用亍获取系统环境变量。${env.JAVA_HOME}戒${env["JAVA_HOME"]}
–system - Java癿系统属性,即System.getProperties()对象。
–configure - 用亍获取Dorado7癿配置信息。${configure["runMode"]}
?不线程相关(通常仅在处理Http请求癿线程中可以使用)
–argument - 用亍获取当前配置文件中癿参数值,仅可用亍View.xml
–context - 当前线程中癿DoradoContext。
–ctx - 用亍简化对DoradoContext癿getAttribute方法癿访问。${ctx["foo"]}相当亍${context.getAttribute("foo")}
–util - 基本工具类,见com.bstek.dorado.core.el.ExpressionUtilsObject癿javadoc。
–request - 当前癿HttpServletRequest对象。
–req - 用亍简化对request癿getAttribute方法癿访问。 ${req["foo"]}相当亍${request.getAttribute("foo")}
–param - 用亍简化对request癿getParameter方法癿访问。 ${param["foo"]}相当亍${request.getParameter("foo")}
–session - 当前癿HttpSession对象。
–servletContext - 当前癿SerlvetContext对象。
–web - 基本工具类,见com.bstek.dorado.web.WebExpressionUtilsObject癿javadoc。
?如有需要,开发人员可以自行扩展出更多癿隐式变量。
------------------------------------------------------------------
特殊EL隐式变量
$${this}或$${this.foo}
–此种隐式变量通常只用在DataType癿Reference属性中。
this表示当前正在处理癿数据实体对象,即系统正在尝试获取该数据实体对象癿Reference属性癿值。
–此种EL表达式癿实际求值范围是在Client端癿JavaScript环境中
------------------------------------------------------------------
------------布局
Dorado7目前提供癿布局管理器:
–DockLayout 停靠式布局
–AnchorLayout 锚定式布局
–FormLayout 表单时布局
–HBoxLayout 水平箱式布局
–VBoxLayout 垂直箱式布局
–NativeLayout (其实什么都丌做癿布局)
-----------------------------------------------
----添加事件
一个事件下可添加多个监听函数,可使用下面癿两种方法。
button1.set("onClick", function(self) {
// 此方法只能定义一个监听函数
});

button1.addListener("onClick", function(self) {
//此方法可以为一个事件添加多个监听函数
});
?Dorado7中所有癿事件都只支持self和arg返两个事件参数。
–self总是激发事件癿对象自身。
–arg癿类型不具体癿事件类型有关,很多情况下是一个JSON对象,其中可能包含有非常丰富癿传入信息。

-----------------------------------------
---processDefault----
很多beforeXXX事件癿arg参数中都支持一个名为processDefault癿可写属性,用亍通知系统是否要执行该事件所代表癿后续操作。
employeeDataType.addListener("beforeRemove", function(self, arg) {
if (arg.entity.get("married")) {
dorado.MessageBox.alert("已婚癿员工丌能被初除!");
arg.processDefault = false;
}
});
?抛出一个异常,同样可以达刡类似癿目癿。
employeeDataType.addListener("beforeRemove", function(self, arg) {
if (arg.entity.get("married")) {
throw new dorado.Exception("已婚癿员工丌能被初除!");
}
});
-------------------------------------
---手动创建一个button按钮拥戴了特殊的$type类型
例如下面癿代码也可以用来创建一个Button。
{
$type: "Button",
caption: "Say Hello",
onClick: function(self, arg) {
dorado.MessageBox.alert("Hello!");
}
}
------------------------------
获取控件推荐的方法
–this.get("#buttonOK") 今后推荐癿方法,原因是当你需要迕一步操作buttonOK时会非常方便。
例如this.get("#buttonOK.caption")可以直接获得Button癿caption属性。
-------------------------------
根据标签获得一批对象癿方法包括:
this.get("^foo") 今后推荐癿方法。例如:this.set("^foo.disabled", true)
this.tag("foo") 今后丌再推荐。
------------------------------
View癿get和set中更多使用技巧
–this.get("title") - 读取View自身癿属性
–this.get("#buttonOK")
–this.get("^foo")
–this.get("@DataTypeProduct") - 根据名称获得某个DataType
----------------------------------------
?$url() - 用亍转换URL
–">images/icon.gif"将转换为"/appContextPath/images/icon.gif"
–"skin>widget.css"将转换为Dorado当前当前皮肤路徂下癿widget.css癿URL。
因为skin是预设癿URL前缀代表当前皮肤癿根路径
--------------------------------------
?$DomUtils.xCreate() - 根据以JSON形式定义癿组件癿模板信息快速癿创建DOM元素
$DomUtils.xCreate({
tagName: "button",
content: "Click Me",// 定义按钮癿标题
style: {// 定义按钮癿style
border: "1px black solid",
backgroundColor: "white"
},
onclick: function() {// 定义onclick事件
alert("Button clicked.");
}
});
-----------------------------------
dorado遍历循环数组list
数组.each() - Dorado7扩展了标准癿Array使乊可支持each迭代,
除Array之外Dorado7还提供EntityList、KeyedList等集合特性癿对象也支持each迭代。
var s = ‘‘;
[‘A‘, ‘B‘, ‘C‘].each(function(item) {
s += item;
});
// 最终绌果为s == "ABC"
--------------------
刜步接触一系列对象
–DataSet - 数据集
–DataType - 数据类型(通常用亍描述以数据实体及其中各个属性)
–DataProvider - 用亍为Dorado提供数据(即将业务逡辑层中癿数据寻入刡Dorado中)
–DataResolver - 不DataProvider癿作用相反,用亍将Dorado中癿数据交迓给业务逡辑层。
--------------------------------------------
DataPath癿一些示例(1)
null(即空) - 相当亍直接迒回被查询癿数据。
 - 同上。
[#current] -表示顶层集合中癿当前Department。
# - 同上。
[#dirty] - 表示顶层集合中所有在客户端被改变过癿(包含被初除癿)Department。
#.employees - 表示顶层集合中当前Department中所有癿Employee。
#.#employees - 表示顶层集合中当前Department中癿当前Employee。
.departments(R) - 表示除顶层Department外所有其它Department癿集合。
#departments(R) - 表示各层当前Department癿集合。
#departments(leaf) - 表示最末端癿当前Department。即通过丌断癿尝试获取当前Department中癿当前Department,直刡最末端那个Department。
departments(R).employees[@.get("salary")>5000 && @.get("sex")=="male"] - 表示所有Department中癿薪水高亍5000癿男性Employee。
departments(R).employees.id - 表示迒回所有Employee对象癿id属性值癿集合。
----------取值--------------------------------------
DataSet.getData和DataSet.queryData
–getData默认只迒回DataPath命中癿第一笔数据,可能是Entity,也可能是EntityList。
–queryData返回DataPath完整的执行结果,且默认只返回Entity(只在使用#等确定只可能有最多一个命中数据实体癿DataPath时)或Entity癿数组。

-----------------------------------------------
Trigger表示文本编辑框右侧癿快捷按钮
DropDown是Trigger癿一种特例,特指各种下拉框
TabControl比较常用的属性包括:
? AwaysShowButtons 显示导航按钮
? CurrentTab 当前默认的标签页
? ShowMenuButton 显示菜单按钮
? TabMinWidth 标签页签的最小宽度
? TabPlacment 标签页签的显示位置
其它属性可以通过Client API查询。
------------------------

----
在树节点的OnDataRowClick中编写代码打开tab标签页
我们用IframeTab打开tabControl;

// 定义Tab变量
var tab = {};
// self 代表事件所属的控件,此处指 Tree对象
// self.get("currentNode")表示获取当前被点击的节点。
with (self.get("currentNode")) {
// 制定当前的tab为IFrameTab
tab.$type = "IFrame";
// 定义新Tab的标签
tab.caption = get("label");
// 定义Tab的Path
// get("userData")表示获取当前节点的UserData属性,
// 也就是刚才设定的 sample.chapter01.HelloWorld.d
tab.path = get("userData");
tab.name = get("label");
tab.closeable = true;
}
// 如果当前节点有指定的Path则打开新的tab
if (tab.path) {
with (this.get("#tabControl")) {
// 根据name查找是否已经打开过当前的Tab。
// 如果没有打开过,则需要添加一个新的Tab
var currentTab = getTab(tab.name);
if(currentTab){
tab = currentTab;
}else{
// 获取ID为tabControl的对象,并添加一个新的Tab
// 设定ID为tabControl的对象的当前Tab为新创建的Tab
tab = addTab(tab);
}
// 设定当前的Tab为制定的tab
set("currentTab", tab);
}
}
------------------------------------
在action的onSuccess事件中
self.get("returnValue")的含义就是获得ajax调用返回的结果;
例子:
// 获取用户在editor中的输入值
var value = this.get("#editor1.value");
// 把输入的值作为参数传递给action2并触发Ajax2的执行
// 当ajax2执行成功后会触发回调函数方法,在这里就是function(result){..}
// 执行结果作为参数传递给方法。这里的执行结果为result对象
this.get("#action2").set("parameter",value).execute(function(result){
dorado.MessageBox.alert(result);
})

----------------
在button1的onclick事件中编写的代码:
// 获取AjaxAction对象
var action = this.get("#aciton1");
// 调用Dorado提供的prompt方法
dorado.MessageBox.prompt("Please input two numbers here", {
// 默认的值
defaultText: "3,5",
// 当用户提交输入的数值时触发的回调方法,参数为输入的值
callback: function(text){
var nums = text.split(",");
// 将参数拼装成JSON形式
var parameter = {
num1: nums[0],
num2: nums[1]
};
// 调用AjaxAction
action.set("parameter", parameter).execute(function(result){
dorado.MessageBox.alert(nums[0] + " * " + nums[1] + " = " + result);
});
}
});
--------------------=======================================================
ajax返回多个参数例子
后台方法:
@Expose
public Properties getSystemInfo() {
Properties info = new Properties();
info.setProperty("product", DoradoAbout.getProductTitle());
info.setProperty("vendor", DoradoAbout.getVendor());
info.setProperty("version", DoradoAbout.getVersion());
return info;
}
--
在action的onSuccess事件中编写代码:
var info = self.get("returnValue");
dorado.MessageBox.alert("product :" + info.product + "\n" +
"vendor :" +
info.vendor +
"\n" +
"version : " +
info.version);
------------------------------------------------------------------
Listener:这样配置
listener :spring:dynaView1#beforeButton2Init(类#方法名)类注解@Component
Caption :测试按钮
id :button2
-------
 if(str.substr(0,4)!="010-" || str.substr(4).length!=8 || 
             isNaN(parseFloat(str.substr(4)))) 
   alert("无效的电话号码!");

ocm_commom_if_p.Get_DeptName_ByIds(ISSUE_RANGE) AS ISSUE_RANGE_NAME,

pt6.get_session_info.Get_User_Id  NAME,
-----------------
jsp获取根路径
<%@page import="avicit.platform6.commons.utils.ViewUtil"%>
<%
/* String path = request.getContextPath();
out.println(path); */
out.print(ViewUtil.getRequestPath(request)+"platform/ocm/OcmKpiWriteChangeAction/updateZlMapXml.action");
%>
---
路由设条件
流程expr脚本写法
#{流程变量=="1"}
-------------------
数据库里边更改流程按钮的顺序
bpm_button流程按钮
由字段button_order控制

getProcessTaskParameter(formId);
---
||||||||||||||||||||||||||||||||||||||||||||||
流程引擎入口
processEngine
---
组织机构适配器
OrganAdapter比如取所有的用户,或者通过用户id取对象;
|||||||||||||||||||||||||||||||||||||||||||
流程发布主表 bpm_deployment
流程发布子表 bpm_deployprop
流程大字段 表:bpm_lob

流程表单权限配置表: bpm_ext_form_securior

bpm_ext_task_attribute t where t.pd_id=‘‘;流程定义id可以把废的流程从表里删掉
bpm_form 流程表单

bpm_hist_procinst t 流程实例表
bpm_hist_task  流程代办表

---
bpm_track  流程跟踪表   流程实例id:hprocl_  select * from bpm_track t where t.hprocl_=‘20143233‘;

---------------------
如果只是单线流程
只有一个流程实例id一个executeId;
--------------------
如果有分支的话,有一个流程实例id,多个executeId;
------------------------
保存表单
固定js写法
window.saveFormData = function(processInstanceId,executionId){}
------------------------------------
dataType的onDataChange事件里边
switch(arg.property){
 case "ISSUE_RANGE":
 var id = arg.newValue;
 if($dialogFlag =="PubEdit"){
  //通过手写回传值
 view.id($subDataName).getCurrentItem().set("issueRange",id)
 }else{
 //通过手写回传值
 view.id($subDataName).getCurrentItem().set("ISSUE_RANGE",id)
 }
 break;
 case "ISSUE_RANGE_NAME":
 var deptName = arg.newValue;
  if($dialogFlag =="PubEdit"){
   //通过手写回传值
  view.id($subDataName).getCurrentItem().set("issueRangeName",deptName)
  }else{
  //通过手写回传值
  view.id($subDataName).getCurrentItem().set("ISSUE_RANGE_NAME",deptName) 
  }
 break;
}
-----------------
js处理日期
var date = new Date();

2 date.formatDate("Y-m-d");   // 返回类似"2000-09-25"的字符串

3 date.formatDate("H:i:s");   // 返回类似"23:10:30"的字符串

4 date.formatDate("Y年m月d日 H点i分s秒");   // 返回类似"2000年09月25日 23点10分30秒"的字符串

var dateFrom =review_Date.formatDate("Y-m-d 00:00:00");
var dateTo =review_Date.formatDate("Y-m-d 23:59:59");
dbm文件的日期格式必须是TIMESTAMP-DateTime否则查不出来

parameter.set("P_REVIEW_DATE_From",dateFrom);
parameter.set("P_REVIEW_DATE_To",dateTo);
-----------------------
流程详细页,启动按钮打开详细页方法
top.addTab("人生若只如初见",encodeURI("${web.contextPath}/"+taskUrl+""),"dorado/client/skins/~current/common/icons.gif","taskTodo"," -0px -120px");
替换//parent.window.location.replace(getPath()+"/"+taskUrl);
----------------------------------------------
现在生产的模块实现类里边会报红
1SysLogUtil
import avicit.platform6.modules.system.syslog.service.SysLogUtil;
把上面的替换成下面的这个
import avicit.platform6.core.api.system.syslog.service.SysLogUtil;
-------------------------
/**
 * Date转String
 * @param {Object} date
 */
date2Str =  function(date){
 if (date != null) {
  var newDate = new Date();
  newDate.setTime(date);
  var year = newDate.getFullYear();
  var month = newDate.getMonth() < 9 ? "0" + (newDate.getMonth() + 1) : (newDate.getMonth() + 1);
  var day = newDate.getDate() < 9 ? "0" + newDate.getDate() : newDate.getDate();
  var dateStr = year + "-" + month + "-" + day;
  return dateStr;
 }else{
  return "";
 }
}
---------------------------------------
/**
  * 获取当前登录用户所在部门id以及用户id
  */
 @Expose
 public String getCurrentDeptId(){
  String name = SessionHelper.getLoginSysUser().getName();
  String id = SessionHelper.getLoginSysUser().getId();
  return SessionHelper.getCurrentDeptId()+","+SessionHelper.getCurrentDeptTl().getDeptName();
 }
-----dorodo获取当前登陆用户id当前登录人id
 var currentUser = ‘${session.getAttribute(‘userId‘)}‘;
----=dorado获取部门id 
 var currentDeptId = ‘${session.getAttribute(‘CURRENT_DEPT‘).getId()}‘;
 --------------------------getSecretLevel
 var currentUser = ‘${session.getAttribute(‘CURRENT_LOGINUSER‘).getId()}‘;
 var currentUser = ‘${session.getAttribute(‘CURRENT_LOGINUSER‘).getSecretLevel()}‘;
 //$deptId=‘${session.getAttribute(‘CURRENT_DEPT‘).getId()}‘;
//$secretLevel=‘${session.getAttribute(‘CURRENT_LOGINUSER‘).getSecretLevel()}‘;
---------------------------------------------------------------------------
 
 一:在数据的添加时一般注意的方法
在主从表中的添加方法中,在datapilot中的onSubControlAction(self.arg)中的代码是:
 var code = arg.code;
   
   switch(code){
     case "+":
     //得到主表的数据集对象
     var dataset = this.get("#dataSetMainSubAddForm");
     
     //得到主表的数据集
     var ds = dataset.getData("#");
     
     //根据主表的数据集得到其中的那个reference对应的数据集
     var subdataset = ds.get("ocmStraPlanMainChild");
     
     //根据得到的数据集向其中插入一条对象,注意的是:这里的deptId不是数据库中的字段,而是实体类的属性
     subdataset.insert({deptId:currentDept.get("id")});
     
     //防止系统自动的添加一行
     arg.processDefault = false;
     break;
   }
-------------------------------------------------
http://blog.csdn.net/q326527970/article/details/6966317
http://blog.csdn.net/q326527970/article/category/928276
http://wiki.bsdn.org/pages/viewpage.action?pageId=9176117
http://wiki.bsdn.org/pages/viewpage.action?pageId=3670442
var dsBranch = this.id("dsBranch");var branch = dsBranch.getData("#");//获取当前的分公司实体对象var dept = dsBranch.getData("#.#.dept");//获取当前分公司的当前部门实体对象var employee = dsBranch.getData("#.#dept.#employee");//获取当前分公司的当前部门的当前员工实体对象 
------------------------------
var parameter = view.get("#queryForm.entity");
var actCode = parameter.get("actCode");
---------------table 列上的onGetCellEditor事件置空列值
arg.data.set("ISSUE_RANGE_NAME",‘‘)
arg.data.set("ISSUE_RANGE",‘‘)
--------------table列上onRenderCell 上语法dom对象
arg.dom.innerHTML="";
------------查询处理日期
var dateFrom = view.get("#dataSetQuery").getData("#").get("P_CHECK_DATE_FROM");
var dateTo = view.get("#dataSetQuery").getData("#").get("P_CHECK_DATE_TO");
//将查询区审核开始时间设置为当天最小时间--审核结束时间设置为最大时间
if(typeof(dateFrom)!=‘undefined‘){
dateFrom = dateFrom.formatDate("Y-m-d 00:00:00")
view.get("#dataSetQuery").getData("#").set("P_CHECK_DATE_FROM",dateFrom)
}
if(typeof(dateTo)!=‘undefined‘){
dateTo = dateTo.formatDate("Y-m-d 23:59:59")
view.get("#dataSetQuery").getData("#").set("P_CHECK_DATE_TO",dateTo)
}
var parameter = view.get("#queryForm.entity");
view.get("#dataSetMcjBusinessInfo").set("parameter",parameter).flushAsync();

--------------------------------
form中的Link
href:javascript:window.showMainFileUpload("QUALITY_MANAGE_FILE")
------------------------------

///控制列表只能单选 begin 2013-07-07 DingRui/
var dataGrid = view.get("#MainData");
var selections = dataGrid.get("selection"); 
if (selections.length == 0) {
 dorado.MessageBox.alert("请选择记录");
 return "false";
}
if (selections.length > 1) {
 dorado.MessageBox.alert("只允许选择一条数据记录!");
 return "false";
}
///控制列表只能单选 end/
parseInt($secretLevel);
planDate.substring(0,4)

var date = new Date();
var Y=date.getFullYear();
var M=(date.getMonth())+1;
var D=date.getDate();
----------------table 行背景颜色-----------------
//反馈时间
var factFinishDate =  arg.data.get("FACT_FINISH_DATE");
//里程碑时间
var planDate =  arg.data.get("PLAN_DATE");
//当前系统时间
var date = new Date();
var Y=date.getFullYear();
var M=(date.getMonth())+1;
var D=date.getDate();
//里程碑年\月\日
planDateY = planDate.formatDate("Y-m-d").substring(0,4);//2012-12-09
planDateM = planDate.formatDate("Y-m-d").substring(5,7);
planDateD = planDate.formatDate("Y-m-d").substring(8,10);

//反馈时间
var factFinishDate =  arg.data.get("FACT_FINISH_DATE");
//里程碑时间
var planDate =  arg.data.get("PLAN_DATE");
//当前系统时间
var date = new Date();
var date1=     date.formatDate("Y-m-d");
var date2 =  date1.replace(/-/g,"/");
var toDate = new Date(date2);
var planDate1= planDate.formatDate("Y-m-d");
var planDate2=  planDate1.replace(/-/g,"/");
var toPlan = new Date(planDate2);
if(factFinishDate != null && factFinishDate !=""){ 
var factFinishDate1= factFinishDate.formatDate("Y-m-d");
var finishDate2=  factFinishDate1.replace(/-/g,"/");
var toFinish= new Date(finishDate2);
       if(toFinish.getTime()>toPlan.getTime()){
     arg.dom.style.background = "#FFFF00";//黄色
    }else{
     arg.dom.style.background = "#00B050";//绿色
    }
}else{
 if(toDate.getTime()>toPlan.getTime()){
  arg.dom.style.background = "#FF0000";//红色
 }else{
  arg.dom.style.background = "#000798";//蓝色
 }
}
//alert(toFinish.getTime());
--------------------------------------------------------------------------
/**
 * 随机生成32位字符串
 */
$getRandomString = function(){
   len = 32;
    var $chars = ‘0123456789abcdefhijkmnprstwxyz‘; // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1
    var maxPos = $chars.length;
    var pwd = ‘‘;
    for (i = 0; i < len; i++) {
        pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return pwd;
}
----------------------------------
//在保存按钮的事件里边调用检验中文长度的校验
///获得中文字符长度 begin 2013-07-01 DingRui//////////
String.prototype.getBytes = function(){
    var cArr = this.match(/[^\x00-\xff]/ig);
    return this.length + (cArr == null ? 0 : cArr.length);
}
///获得中文字符长度 end//////////

///校验字段的长度 begin 2013-07-01 DingRui//////////
//在dataType的字段上,添加自定义效验,
lengthValidate = function(fields, describe, length){
 var flag = true;
 var data = view.get("#dataSetOcmKpiWrite.data:#");
 var field = data.get(fields);
 if(field != null){
  if(field.getBytes() > length){
   dorado.MessageBox.alert("【" + describe + "】文本内容过多,长度应小于" + length + "个字符!");
   flag = false;
  }
 }
 return flag;
}
///校验字段的长度 end//////
例子:if(describe != null){
 if(describe.getBytes() > 1000){
  dorado.MessageBox.alert("【描述】文本内容过多,长度应小于1000个字符!");
  return;
 }
}
////金额格式 displayFormat:#,##0.00
///////////////////////////
 var adata = arg.data;
 var id = adata.get("ID");
 var data = view.get("#dataSetFeedBack.data").first(); 
 var count = 0;
 while(data!=null){
  var fid = data.get("MCJ_PRODUCT_INFO_ID");
  if(fid==id){
   count++;
  }
  data = view.get("#dataSetFeedBack.data").next();
 }
 if(count>0){
  var javaScript ="javascript:showFeedInfo(‘"+arg.data.get("ID")+"‘,‘"+arg.data.get("PRODUCT_NAME")+"‘)" ;
  arg.dom.innerHTML="<a href = # onclick ="+javaScript+">编辑</a>"
 }else{
  var javaScript ="javascript:showFeedInfo(‘"+arg.data.get("ID")+"‘,‘"+arg.data.get("PRODUCT_NAME")+"‘)" ;
  arg.dom.innerHTML="<a href = # onclick ="+javaScript+">填写</a>"
 }
-----------------------------------------------------------------
view 的onCreate事件中调用后台
$importDocByArmyDemand= function(){
 //获取查询区数据
  var data =  view.get("#dataSetQuery").getData("#");
  var unitName = typeof(data.get("P_UNIT_NAME")) == ‘undefined‘ ? "" : data.get("P_UNIT_NAME") ;
  var manageDept = typeof(data.get("P_MANAGE_DEPT")) == ‘undefined‘? "" : data.get("P_MANAGE_DEPT") ;
  var hrDeptName = typeof(data.get("P_HR_DEPT_NAME")) == ‘undefined‘ ? "" : data.get("P_HR_DEPT_NAME") ;
  var unitType = typeof(data.get("P_UNIT_TYPE")) == ‘undefined‘? "" : data.get("P_UNIT_TYPE") ;
  var provinceCode = typeof(data.get("P_PROVINCE_CODE")) == ‘undefined‘? "" : data.get("P_PROVINCE_CODE") ;
  var dataParas = "unitName="+unitName+"&manageDept="+manageDept+"&hrDeptName="+hrDeptName+ "&unitType="+unitType+"&provinceCode="+provinceCode;
  dorado.MessageBox.confirm(‘确认生成军用单位名录编制?‘,function(){
   var urls = ‘${web.contextPath}/platform/mcj/mcjarmyinfoword/mcjArmyInfoExpWord?‘+ encodeURI(dataParas);
      window.open(urls,"_self");
  });
}

------------------------------------------------------------------------------
---view全选然后将对象放入数组中
!function(){
 var uploadAction = view.get(‘#uaUpload2‘);
 var selections = view.get(‘#dgFiles.selection‘);

if(!selections || selections.length == 0){
  return;
 }
 if(!selections.length){
  selections = [selections];
 }

var selectionCopy = [];
 for (var i = 0; i < selections.length; i++) {
  selectionCopy.push(selections[i]);
 }
    
 for(var i=0;i<selectionCopy.length;i++){
  var entity = selectionCopy[i];
  if(entity){
   uploadAction.removeFile(entity.get(‘id‘));
   entity.remove();
  }
 }
};
----------------------------------------------
获取dataset对应的查询form表单的值
var entityList = this.id("dataSetOmsMonthReportGrid").queryData ();
--------------------------------------------
dataTyp中只有id的时候,还有一种方式显示name页不用写视图
引入一个虚拟字段.reference,设置属性:dataProvider:类#方法
parameter:$${this.BUSINESS_TYPE}
-0-------------------------
给文本框赋值
this.get("#TextEditor_Id").doSetText("我的全部");
取值
this.get("#TextEditor_Id.value")
---------------------
------------------------===
文本框的Map属性加通用代码,trigger属性设置属性
给文本框加一个下拉列表,在属性上绑定trigger/然后在TextEditor的属性onAttributeChange中写入下面代码
实现树动态扩展层次。(dataTreeGrid控件的层次扩展)
var treeGird = this.id("weaveOmsPlanOperateTreeGrid");

switch (this.get("#treeExpendText.value")) {
    case "1":
        treeGird.get("bindingConfigs")[0].expandLevel = 1;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "2":
        treeGird.get("bindingConfigs")[0].expandLevel = 2;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "3":
        treeGird.get("bindingConfigs")[0].expandLevel = 3;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "4":
        treeGird.get("bindingConfigs")[0].expandLevel = 4;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "5":
        treeGird.get("bindingConfigs")[0].expandLevel = 5;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
}
------------------------------------------------------------
给树节点添加图表
在dataTreeGrid的属性onRenderNode事件里边写下面代码
var node = arg.node,data = node.get("data");

if (data.get("planType") == ‘1‘) {
    $(arg.dom).empty().xCreate([{
        tagName: "IMG",
        src: $url(">images/wbs.gif"),
        style: "left: 4px;top: 4px"
    },{
        tagName: "SPAN",
        contentText: node.get("label")
    }]);
}
if (data.get("planType") == ‘2‘) {
    $(arg.dom).empty().xCreate([{
        tagName: "IMG",
        src: $url(">images/task.gif"),
        style: "left: 4px;top: 4px"
    },{
        tagName: "SPAN",
        contentText: node.get("label")
    }]);
}

if (data.get("planType") == ‘PRO‘) {
    $(arg.dom).empty().xCreate([{
        tagName: "IMG",
        src: $url(">images/pro.gif"),
        style: "left: 4px;top: 4px"
    },{
        tagName: "SPAN",
        contentText: node.get("label")
    }]);
}
-----------------------------------------------
当前树,判断满足逻辑条件后的节点显示显影
///////////
var treeGrid = this.id("weaveOmsPlanOperateTreeGrid");
//获去项目信息节点实例
var firstNode = treeGrid.get("firstNode");
var firstEntity = firstNode.get("data");

var fbUserId = firstEntity.get("puid");//项目信息节点发布范围人员userIds
var projPrincipal = firstEntity.get("projPrincipal"); //项目信息节点项目主管
var hrDeptId = arg.data.get("hrDeptId");//当前树节点部门id

if(arg.data.get("planName")!=undefined){
 //当前节点不为根节点时
if(arg.data.get("id")!=firstEntity.get("id")){
 //当前用户 不为 项目信息项目主管 
if(projPrincipal!=$currentUserId){
 //当前登录人部门与经营计划节点责任部门不一致时
 if($currentDeptId!=hrDeptId){
  //当前登录人不在项目信息节点的发布范围内
  fbUserId=","+fbUserId+",";
  var curUserId = ","+$currentUserId+",";
  if(fbUserId.indexOf(curUserId)==-1){
   var currentNodes = 0;
   var currentParents = 0; 
   var childCommand = view.get("#selectActionChildIsYz");
   childCommand.set("parameter",{nodeId:arg.data.get("id")}).execute(function(result){
    currentNodes = result;
   });
   var selectParentNodesMatchHrDeptId = view.get("#selectParentNodesMatchHrDeptId");
   selectParentNodesMatchHrDeptId.set("parameter",{id:arg.data.get("id"),hrDeptId:hrDeptId}).execute(function(result){
    currentParents = result ;
   });
   //alert("currentNodes="+currentNodes+"currentParents="+currentParents);
   if(currentNodes !=1 && (currentParents==0 || currentParents==null)){
     //删除当前节点
     arg.node.remove(); 
   }
   
  }
 }
 }
}
}

-----------------------------------------------------------------------------------------------
根据条件动态的给树节点显示复选框,树的onDataNodeCreate事件中
if (arg.data.get("planStatus")=="1" && arg.data.get("planStatus")!="9"){
   arg.node.set("checkable",true);
 }

if (arg.data.get("planStatus")=="9" && arg.data.get("parentId")==‘ROOT‘ && arg.data.get("planType")==‘PRO‘){
 var action = view.get("#issueCountAction");
 var id = arg.data.get("id");
     action.set(‘parameter‘,{‘id‘:id}).execute(function(result){
  if (result !=1 ){
   arg.node.set("checkable",true);
  }
 })
}
----------------------------------------
在dataTreeGrid的事件onNodeCheckedChange

var treeGrid = view.get("#omsPlanOperateTreeGridSendAuditing");
 var currentNode = treeGrid.get("currentNode");
//当前数据的父节点
 var checkable = currentNode.get("checkable");
 if (checkable==true){
  if  (currentNode.get("checked")==true){
               $checkchild(currentNode);
        }else{
      $uncheckchild(currentNode);
  }
 }

/**
 * 选中所有的子节点
 * @param {Object} treeGrid
 */
$checkchild = function(currentNode){
 // 判断是否存在复选框
  currentNode.set("checked",true);
  var hasChildIs = currentNode.get("hasChild")
      if (hasChildIs==true) {
          currentNode.expand();
          var nodes = currentNode.get("nodes");
          var curNode;
          if (nodes != null) {
              var iter = nodes.iterator();
              while (iter.hasNext()) {
                  curNode = iter.next();
       var checkable = curNode.get("checkable");
        if (checkable==true){
            curNode.set("checked",true);
        }
                  $checkchild(curNode);
              }        
      } 
       }    
}
---
/**
 * 不选中所有的子节点
 * @param {Object} treeGrid
 */
$uncheckchild = function(currentNode){
 // 判断是否存在复选框
  currentNode.set("checked",false);
  var hasChildIs = currentNode.get("hasChild")
      if (hasChildIs==true) {
          currentNode.expand();
          var nodes = currentNode.get("nodes");
          var curNode;
          if (nodes != null) {
              var iter = nodes.iterator();
              while (iter.hasNext()) {
                  curNode = iter.next();
      var checkable = curNode.get("checkable");
       if (checkable==true){
         curNode.set("checked",false);
       }
                  $uncheckchild(curNode);
              }        
      } 
       }    
}
--------------------------------------------------------------------

时间: 2024-10-23 14:13:47

dorado的相关文章

用“8”个字谈谈华为Dorado V3产品和技术

转载本号文章请注明作者.出处和二维码及全文信息,否则视为侵权. 前不久华为发布Dorado V3全闪存产品,很多专业媒体和自媒体对该产品进行了全方位报道,听闻该产品采用了很多如NVMe.LDCP算法.FlashLink等新技术,所以我也是抱着好学的态度和对技术的热情一一拜读了技术相关文章.细读后发现,关于该产品技术解读却少之又少,后来通过一次技术交流才算对该产品有了比较深入的了解.今天我就把近期所学进行总结并分享给大家,通过技术和产品分析,让大家对Dorado V3及全闪产品也有深入了解. 闪存

关于dorado studio5.4启动后未自动打开浏览器问题解决

本人从事软件开发数年有余,涉猎广泛,整编资料无数.一直未发于网络,自今始,将以后工作及学习中心得体会进行梳理,共享与网络,互相学习! 近日突然想一下Dorado的示例时,怎么启动总是无反应呢?静心细想,原为最近处理大数据等要求,将系统JDK默认设置成了1.8.0.74,如下图1: 决绝方法: 直接将系统JDK换回1.6版本 [注:经本人测试,JDK1.7也不行] 再次启动,问题解决: 由于Dorado5.4发布时间较早,故不支持新版本的JDK. 注:转载请注明出处,谢谢!

dorado 删除

DataGird中添加dataColum 列 事件onRenderCell 中编写代码如下 //$(arg.dom).empty().xCreate({// tagName: "IMG",// src: $url(">/images/CaoZuo.jpg"),// style: "margin: 2px"//});if(arg.dom.getAttribute("hasRender")==1) { return;}arg

dorado中的creationType选择类型

新建model层中 DataType类型的时候,有几个属性creationType,matchType时候需要在右侧选择对应的javaBean,这是时候要在弹出的对话框搜索. 此时,只要搜索javaBean的名字就好了,千万不要搜索路径,不然花一百年都找不到的. dorado中的creationType选择类型

dorado单表查询

(冒号是参数声明,表示是一个参数) 单表的查询选dataset1后点“向导”按钮,点where标签,选一个字段右移过去....value填变量名如“:Employee_ID”必须带冒号 ,ok(向导完成后在dataset1下的MatchRule文件夹下可看到设置好的条件,相同步骤:右击MatchRule文件夹-insert-BaseMatchRule) 预览jsp文件,看到没有数据输出.原因是要将MatchRule文件夹属性的ecacpaeEnabled属性设为true.ecacpaeEnabl

dorado国际化问题

用dorado开发后台好几年了,刚刚才发现一个问题,在IE下dorado的控件都是以英文显示. 如下: 在FireFox和Chrome下,显示中文,如下: 搜索了下dorado的文档: http://wiki.bsdn.org/pages/viewpage.action?pageId=9928924 原来Dorado国际化底层用的是: <bean id="dorado.localeResolver" class="com.bstek.dorado.view.resour

dorado listener属性

每一个控件都有一个listener属性,可以用来定位一个服务定位表达式,通过这个表达式, 它最终可以映射为spring里面一个javaBean的一个java方法 例如设置DynaView1.view.xml里边的按钮button1的listener的属性值为 spring:dynaView1#onButton1Init  (注意这里的dynaView的第一字母是小写) 然后新建DynaView1.java(注意这里的DynaView的第一字母是大写),并且在开始加@Component注入到Spr

dorado中的视图实现类和监听器

视图模型实现类(DefaultViewModel.java)的主要功能:  1. Dataset的初始化以及数据导入  2. 各种View组件的初始化工作 DefaultViewModel也是动态创建的,由他来管理dataset的数据分批请求操作以及dataset的数据提交操作 每一次DefaultViewModel.java被创建的时候都会触发该类中的init方法,不同的初始化方式,该方法的参数会有所不同: init方法的申明如下: public void init(int state) th

dorado 常用

如果要设置模糊查询, 一般要在QueryCommand中这样写: var name = dsQuery.getValue("NAME"); var parameters = command.parameters(); if (name) { parameters.setValue("NAME", "%" + name + "%") } dataset如果没有分页的话, 默认一次是只取100条, 这也意味着如果记录超过100条就