/**
*
* @param divId
* one container
* @param info
* operation result message to show in the up DIV, such as: "Add
* Successfully!"
* @param isSuccess
* one sign whether operate successfully.Just two values:true or
* false.true means success.
* @returns undefined
*/
function showOperationResultInfo(divId,info,isSuccess){
$("#"+divId).removeAttr("style");
if(isSuccess){
$("#"+divId).attr("style","color:green");
}else{
$("#"+divId).attr("style","color:red");
}
$("#"+divId).empty();
$("#"+divId).html(info);
}
/**
* @param url
* format must be xxx.action?eventName=
* @param params
* format must consist of "key=value",such as deleteId=10
* @param doDeleteCallback
* do works after servers response
* @param validateFun
* do validation before submitting deletion request
* @param deleteNoteMess
* popup warning information. if not passing,to use default value
* @returns {Boolean} whether this function operates successfully or not
*
* How to use: commonDeleteEntireObjectFun(URL.deleteInstance,"id=3",deleteCallback,deleteValidationFun);
* function deleteCallback(data){
var flag = isSuccessRetun(data);
if(flag){
location.href=URL.loadInstanceListPage;
}else{
toShowResponseResMessWithoutParsingData("operationTipMess","operationTipMess_error",data);
}
}
*
* function deleteValidationFun(params)
{
return commonValidateFun(URL.validateInstanceUsed,params);
}
*
*
*/
function commonDeleteEntireObjectFun(url,params,doDeleteCallback,validateFun,deleteNoteMess){
var flag = false;
if(validateFun&&$.isFunction(validateFun)){
flag = validateFun(params);
if(flag=="true"){
alert("The record is still referenced and cannot be deleted.");
return false;
}
}
if(!validateFun||flag){
var confirmObj="";
if(deleteNoteMess){
confirmObj = confirm(deleteNoteMess);
}else{
confirmObj = confirm(Messages.deleteConfirmMess);
}
if(confirmObj){
$.post(url+"&"+params,function(data){
doDeleteCallback(data);
});
return false;
}else {
return false;
}
}
return false;
}
// to show servers' response messages in the current page
function toShowResponseResMessWithoutParsingData(divId,className,data){
$("#"+divId).empty();
$("#"+divId).html(data);
$("#"+divId).attr("class",className);
}
// whether servers respone successfully or not
function isSuccessRetun(data){
if(!data.startWith("error")){
return true;
} else{
return false;
}
}
/**
* Description: simple function to set data given to hidden area
*
* @param hiddenId
* html id of hidden area
* @param data
* value to be set,format:json,such as,{"objectId":"100"}
* @param jsonKey
* json key
*/
function setSingleHiddenAreaValue(hiddenId,data,jsonKey){
if(data!=undefined&&data!=null&&""!=$.trim(data)){
var value = $.parseJSON(data);
$("#"+hiddenId).empty();
$("#"+hiddenId).val(value[jsonKey]);
}
}
/**
* * Description: simple function to send ajax reqeuest
*
* @param url
* reqeust address,format:xxxx.action,such as ContactGroupForm.action
* @param params
* request params,format:json.such as,{name:"Keifer",dept:"dev"}
* @param callback
* do work after response successfully
* @returns json data if callback exists,data handled by it. Or return orignal
* data responed
*/
function commonPreAction(url,params,callback){
var returnValue="";
$.ajaxSetup({
cache:false,
async:false
});
$.post(url,params,function(data){
if(callback&&$.isFunction(callback)){
if(callback&&$.isFunction(callback)){
callback(data);
}
}
returnValue=data;
});
return returnValue;
}
/**
* Description: simple common function to send ajax reqeuest
*
* @param url
* reqeust address,format:xxxx.action?eventName=,such as
* ContactGroupForm.action?validateRecordUsed=
* @param params
* request params,format:string.such as,'name="Keifer"&dept="dev"'
* @param callback
* do work after response successfully
* @returns json data if callback exists,data handled by it. Or return orignal
* data responed
*/
function simpleCommonSubmitAction(url,params,callback){
var returnValue="";
$.ajaxSetup({
cache:false,
async:false
});
$.post(url+"&"+params,function(data){
if(callback&&$.isFunction(callback)){
if(callback&&$.isFunction(callback)){
callback(data);
}
}
returnValue=data;
});
return returnValue;
}
/**
* Description: simple common function to send ajax reqeuest for validation
*
* @param url
* reqeust address,format:xxxx.action?eventName=,such as
* ContactGroupForm.action?validateRecordUsed=
* @param params
* request params,format:string.such as,'name="Keifer"&dept:"dev"'
* @returns json data return orignal data responed
*/
function commonValidateFun(url,params){
var returnValue="";
$.ajaxSetup({
cache:false,
async:false
});
$.post(url+"&"+params,function(data){
returnValue=data;
});
return returnValue;
}
/**
* Description: simple function to show single hidden element
*
* @param elementId
* id of element to show
* @param specifiedStyle
* specified style to show
* @returns undefined
*/
function showHtmlElement(elementId,specifiedStyle){
$("#"+elementId).removeAttr("style");
$("#"+elementId).attr("style",specifiedStyle);
}
/**
* Description: simple function to hide single element
*
* @param elementId
* id of element to show
* @returns undefined
*/
function hideHtmlElement(elementId){
$("#"+elementId).attr("style","display:none");
}
/**
* Description: simple function to set value from select element to hidden area
*
* @param inputId
* id of hidden input
* @param selectId
* id of select id
* @param sperator
* sperator between one value and another,such as 11-12
* @returns undefined
*/
function simpleSetHiddenValueFromSelectElement(inputId,selectId,sperator)
{
var hiddenValueStr = "";
$.each($("#"+selectId+" option"),function(){
var value = $(this).val();
if(value){
hiddenValueStr += value+sperator;
}
});
$("#"+inputId).val(hiddenValueStr);
}
/**
* Description: simple function to move one option of select element to another
* select element
*
* @param selectOneId
* id of select one
* @param selectTwoId
* id of select two
* @param actionNames
* action name,such as move,delete,append
* @param selectOneButtonIds
* one array to store up element ids as the same direction
* @param selectTwoButtonIds
* one array to store up element ids as the same direction
* @returns {Boolean} if occurring error,to return false
*
* How to use:simpleCommonMouseClickFun("selectionLeftId", "selectionRightId", ['move'],['selection_RightMoveleft', 'selection_AllRightMoveleft' ], ['selection_LeftMoveRight', 'selection_AllLeftMoveRight' ],true,"----","skillLevelOnPIC");
* or simpleCommonMouseClickFun('selectionLeftId', 'selectionRightId', ['move'],['selection_RightMoveleft', 'selection_AllRightMoveleft' ], ['selection_LeftMoveRight', 'selection_AllLeftMoveRight' ]);
*
*/
function simpleCommonMouseClickFun(selectOneId, selectTwoId, actionNames,
selectOneButtonIds, selectTwoButtonIds,isWithSkillLevel,separator,inputId) {
if(actionNames.length==1){
actionName = actionNames[0];
}else{
moveActionName = actionNames[0];
deleteActionName = actionNames[1];
}
$("#" + selectOneId).dblclick(function() {
if(isWithSkillLevel){
var isNumber_=OptionWithSkillLevel.removeSkilLevel(selectOneId, false, separator);
if(!isNumber_) return false;
}
$.listTolist(selectOneId, selectTwoId, actionName, false);
commonSortSelect(selectTwoId,true,"ASC");
return true;
});
$("#" + selectTwoId).dblclick(function() {
if(isWithSkillLevel){
var isNumber_=OptionWithSkillLevel.addSkilLevel(selectTwoId, false, separator, inputId);
if(!isNumber_) return false;
}
$.listTolist(selectTwoId, selectOneId, actionName, false);
commonSortSelect(selectOneId,true,"ASC");
return true;
});
if (selectOneButtonIds instanceof Array || selectOneButtonIds
&& typeof selectOneButtonIds == 'object'
&& 'length' in selectOneButtonIds) {
$.each(selectOneButtonIds, function(index, item) {
$("#" + item).bind("click",function() {
if (index < 1) {
if(isWithSkillLevel){
var isNumber_=OptionWithSkillLevel.addSkilLevel(selectTwoId, false, separator, inputId);
if(!isNumber_) return false;
}
$.listTolist(selectTwoId, selectOneId,actionName, false);
commonSortSelect(selectOneId,true,"ASC");
return true;
} else {
if(isWithSkillLevel){
var isNumber_= OptionWithSkillLevel.addSkilLevel(selectTwoId, true, separator, inputId);
if(!isNumber_) return false;
}
$.listTolist(selectTwoId, selectOneId,actionName, true);
commonSortSelect(selectOneId,true,"ASC");
return true;
}
});
});
$.each(selectTwoButtonIds, function(index, item) {
$("#" + item).bind("click",function() {
if (index < 1) {
if(isWithSkillLevel){
var isNumber_= OptionWithSkillLevel.removeSkilLevel(selectOneId, false, separator);
if(!isNumber_) return false;
}
$.listTolist(selectOneId, selectTwoId,actionName, false);
commonSortSelect(selectTwoId,true,"ASC");
return true;
} else {
if(isWithSkillLevel){
var isNumber_=OptionWithSkillLevel.removeSkilLevel(selectOneId, true,separator);
if(!isNumber_) return false;
}
$.listTolist(selectOneId, selectTwoId,actionName, true);
commonSortSelect(selectTwoId,true,"ASC");
return true;
}
});
});
} else {
alert('Parameter error!');
return false;
}
}
var OptionWithSkillLevel={
validateSkillLevelNumber:function(inputId){
var skillLevel = $("#"+inputId).val();
if(skillLevel){
var inputValue = checkIsPositiveInteger(skillLevel);
if(!inputValue){
alert(Messages.numberrequired);
return false;
}
}
return true;
},
validateSkillLevelNull:function(inputId){
var skillLevel = $("#"+inputId).val();
if($.trim(skillLevel)==""){
return false;
}
return true;
},
addSkilLevel:function(selectId,isAll,separator,inputId){
var options ;
if(isAll){
options = $("#"+selectId+" option");
}else{
options = $("#"+selectId+" option:selected");
}
var skillLevelNull = OptionWithSkillLevel.validateSkillLevelNull(inputId);
if(!skillLevelNull){
alert("Skill Level"+Messages.unnull);
return false;
}else if(OptionWithSkillLevel.validateSkillLevelNumber(inputId)){
var skillLevel = $("#"+inputId).val();
$.each(options,function(){
var textField = $(this).text();
$(this).text(textField+separator+skillLevel);
});
return true;
}else{
return false;
}
},
removeSkilLevel:function(selectId,isAll,separator){
var options ;
if(isAll){
options = $("#"+selectId+" option");
}else{
options = $("#"+selectId+" option:selected");
}
var flag = true;
$.each(options,function(){
var textField = $(this).text();
var skillLevel = textField.split(separator)[1];
var subsystem = textField.split(separator)[0];
if(skillLevel){
var inputValue = checkIsPositiveInteger(skillLevel);
if(!inputValue){
alert(Messages.numberrequired);
flag=false;
return;
}else{
if(subsystem){
$(this).text(subsystem);
}
}
}
});
return flag;
}
};
function simpleCommonCreateSelect(data,textfieldKey,valuefiledKey,selectId){
$("#"+selectId).empty();
// var result = eval(data);
var result = data;
$.each(result,function(index,item){
$("#"+selectId).AddOption(item[textfieldKey],item[valuefiledKey],false,index);
});
}
/**
* DESC:Append option element to the selection
* @param text text on show in the selection
* @param value value on show in the attribute "value" of option
* @param selected whether selected current option,two values:true,false
* @param index add option to special index
* Such as <option value='value'>text</option>
*/
jQuery.fn.AddOption = function(text, value, selected, index) {
option = new Option(text, value);
this[0].options.add(option, index);
this[0].options[index].selected = selected;
};
/**
* @param url
* @param selectOneId
* @param selectTwoId
* {selectId:"selGroupId",inputId:"groupId"}
* @param params
* {datatype:"json",textfield:"group",valuefiled:"id",parameter:"contactParams.detailId"}
* @param callback
* one function without params that is usesd to do final something
*/
function simpleCommonCascade(url,selectOneId,selectTwoId,params,callback){
$("#"+selectOneId).bind("change",function(){
try{
var text =$("#"+selectOneId+" option:selected")[0].value;
if(text==""||"Create"==text){
$("#"+selectTwoId.selectId).empty();
$("#"+selectTwoId.inputId).val("");
return false;
}
}catch(e){}
var data = simpleCommonSubmitAction(url,params.parameter+"="+$("#"+selectOneId+" option:selected").val());
$("#"+selectTwoId.selectId).empty();
var result = eval(data);
if(result.length>1){
var groupId = $("#"+selectOneId+" option:selected")[0].alt;
$.each(result,function(index,item){
$("#"+selectTwoId.selectId).AddOption(item[params.textfield],item[params.valuefiled],false,index);
if(item[params.valuefiled]==groupId){
$("#"+selectTwoId.selectId)[0].selectedIndex=index;
}
});
}else if(result.length==1){
$("#"+selectTwoId.selectId).AddOption(result[0][params.textfield],result[0][params.valuefiled],true,0);
}
$("#"+selectTwoId.inputId).val($("#"+selectTwoId.selectId+" option:selected").text());
callback();
});
}
/**
* @param selectId
* select element id that needs to sort.
* @param sOrder
* if to sort. true means by sort
* @param sortType
* format:String. Just two values:"ASC","DESC"
*
* How to use : commonSortSelect("selectionId",true,"ASC");
*/
function commonSortSelect(selectId,sOrder,sortType){
function addOption(object, object2) {
each(object2, function(o, index) {
object.options[index] = o;
});
}
function sortlist(sortName,isDesc,sortType) {
var what = document.getElementById(sortName);
this._options = map(what.options, function(o) {
return o;
});
this._options.sort(
function(a, b) {
if(sortType=="DESC"){
if (a.text > b.text) {
return isDesc == true ? 1 : -1;
} else {
return isDesc == true ? -1 : 1;
}
}else if(sortType=="ASC"){
if (a.text > b.text) {
return isDesc == true ? -1 : 1;
} else {
return isDesc == true ? 1 : -1;
}
}
}
);
what.options.length = 0;// clear current options
addOption(what, this._options);
}
function map(object, callback, thisp) {
var ret = [];
each.call(thisp, object, function() {
ret.push(callback.apply(thisp, arguments));
});
return ret;
}
function each(object, callback) {
if (undefined === object.length) {
for ( var name in object) {
if (false === callback(object[name], name, object))
break;
}
} else {
for ( var i = 0, len = object.length; i < len; i++) {
if (i in object) {
if (false === callback(object[i], i, object))
break;
}
}
}
}
function sort(){
if(sOrder){
sOrder = false;
}else{
sOrder = true;
}
sortlist(selectId,sOrder,sortType);
}
sort();
}
function simpleManuallyAssembleSelect(data,selectId,valueKey,textKey,isAlt,altKey){
var optionHtml ="";
if(isAlt){
if(!altKey){
alert("Parameter error!");
return false;
}
if(data&&data.length>1){
optionHtml = "<option value='' alt=''></option>";
}
if(data){
$.each(data,function(index,item){
optionHtml +="<option value="+item[valueKey]+" alt="+item[altKey]+">"+item[textKey]+"</option>";
});
}
}else{
if(data&&data.length>1){
optionHtml = "<option value=''></option>";
}
if(data){
$.each(data,function(index,item){
optionHtml +="<option value="+item[valueKey]+">"+item[textKey]+"</option>";
});
}
}
$("#"+selectId).empty();
$(optionHtml).appendTo($("#"+selectId));
}
function simpleManuallyAssembleSelect3(data,selectId,valueKey,textKey){
var optionHtml ="";
if(data){
$.each(data,function(index,item){
optionHtml +="<option value="+item[valueKey]+">"+item[textKey]+"</option>";
});
}
$("#"+selectId).empty();
$(optionHtml).appendTo($("#"+selectId));
}
function simpleManuallyAssembleSelect2(data,selectId,valueKey,textKey,objectKey,isAlt,altKey){
var optionHtml ="";
if(isAlt){
if(!altKey){
alert("Parameter error!");
return false;
}
if(data&&data.length>1){
optionHtml = "<option value='' alt=''></option>";
}
if(data){
$.each(data,function(index,item){
optionHtml +="<option value="+item[objectKey][valueKey]+" alt="+item[altKey]+">"+item[objectKey][textKey]+"</option>";
});
}
}else{
if(data&&data.length>1){
optionHtml = "<option value=''></option>";
}
if(data){
$.each(data,function(index,item){
optionHtml +="<option value="+item[objectKey][valueKey]+">"+item[objectKey][textKey]+"</option>";
});
}
}
$("#"+selectId).empty();
$(optionHtml).appendTo($("#"+selectId));
}
/**
* DESC:add tip for selection
* how to use : selectionShowTipFun.addSelectionTip("demoId");
*/
var selectionShowTipFun = {
showSelectionTip:function(e,selectId){
var Tip = document.getElementById("Tip");
if (Tip == null || Tip == 'undefined')
Tip = document.createElement("div");
var target = e.srcElement ? e.srcElement : e.target;
var scrollT = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
Tip.innerHTML = $("#"+selectId+" option:selected").text();
Tip.setAttribute("id", "Tip");
Tip.style.display = "block";
Tip.style.backgroundColor = "#FFFFCC";
Tip.style.width = 250;
Tip.style.height = 15;
Tip.style.left = (parseInt(e.clientX) + 10 ) + "px";
Tip.style.top = (parseInt(e.clientY) + parseInt(scrollT) + 3) + "px";
Tip.style.position = "absolute";
document.body.appendChild(Tip);
},
closeSelectionTip:function(){
var Tip = document.getElementById("Tip");
Tip.style.display = "none";
},
addSelectionTip:function(selectId){
var selectItem = $("#"+selectId);
var showText = $.trim($("#"+selectId+" option:selected").val());
// add event handlers in order that selection light up
if(showText){
selectItem.hover(function() {
selectionShowTipFun.showSelectionTip(event,selectId);
},function() {
selectionShowTipFun.closeSelectionTip();
});
}
}
};