service.hrmbrowser.result_wev8.js 5.09 KB
define("mService/hrmbrowser/result", ["mUtil"], function(mUtil) {
	function a($page, success, closeCallback, _parentResult) {
		this.$page = $page;
		this.selectedData = [];
		this.$resultWrap = $(".result-wrap", $page);
        this.$okBtn = $(".ok-btn", $page);
		this.success = success;
		this.closeCallback = closeCallback;
		this.isReady = false;
		this.initSelectedIds = "";
		this._parentResult = _parentResult;
	}
	a.prototype = {
		addSelectedData : function(d){
			this.selectedData.push(d);
		},
		indexOfSelectedData : function(id){
			var index = -1;
			for(var i = 0; i < this.selectedData.length; i++){
				if(this.selectedData[i].id == id){
					index = i;
					break;
				}
			}
    		return index;
    	},
    	removeSelectedData : function(id){
    		var dIndex = this.indexOfSelectedData(id);
    		if(dIndex != -1){
    			this.selectedData.splice(dIndex, 1);
    		}
    	},
    	getSelectedNum : function(){
    		return this.selectedData.length;
    	},
    	getSelectedIds : function(){
    		var that = this;
    		if(!that.isReady){
    			return that.initSelectedIds;
    		}else{
    			var ids = "";
    			for(var i = 0; i < that.selectedData.length; i++){
    				ids += that.selectedData[i].id + ",";
    			}
    			if(ids != ""){
    				ids = ids.substring(0, ids.length - 1);
    			}
    			return ids;
    		}
    	},
    	init: function(selectedIds){
    		var that = this;
    		that.initSelectedIds = selectedIds;
    		if(selectedIds != ""){
    			var url = mUtil.jionActionUrl("com.api.mobilemode.web.mobile.browser.HrmBrowserAction", "action=getSelectedDatas");
            	mUtil.getJSON(url, {"selectedIds": selectedIds}, function(result){
            		var datas = result["datas"];
            		$.each(datas, function(i, d){
            			that.innerAdd(d);
            		});
            		initOkBtn();
            		that.isReady = true;
            	});
    		}else{
    			initOkBtn();
    			that.isReady = true;
    		}
    		
    		function initOkBtn(){
        		that.$okBtn.click(function(){
        			var id = "";
        			var text = "";
        			var datas = that.selectedData;
        			for(var i = 0; i < datas.length; i++){
        				id += datas[i].id;
        				text += datas[i].lastname;
        				if(i != (datas.length - 1)){
        					id += ",";
        					text += ",";	
        				}
            		}
        			that.onOk(id, text);
        		});
    		}
    	},
    	add: function(data){
    		var that = this;
    		if(!that.isReady){
    			return;
    		}
    		that.innerAdd(data, true);
    		if(that._parentResult){
    			that._parentResult.add(data);
    		}
    	},
    	innerAdd: function(data, moveToit){
    		var that = this;
    		
    		that.addSelectedData(data);
    		
    		var id = data["id"];
    		var avatar = {};
    		if (data.hasOwnProperty("avatar")){
				avatar = data.avatar;
			}
    		$(".wev-table-view-cell[data-id='"+id+"']", that.$page).addClass("selected");
    		
    		var html = "<div data-id=\""+id+"\">";
    		var headFormat = data["headformat"] || avatar["headFormat"];
    		if (headFormat == "1" || headFormat == "3"){
				html += "<div style='background: "+ (data["background"] || avatar["background"]) +"; color: "+ (data["fontcolor"] || avatar["fontColor"]) +"'>"+(data["shortname"] || avatar["shortname"])+"</div>";
			} else {
				html += "<img src=\""+ (data["messagerurl"] || avatar["messagerUrls"]) +"\">";
			}
    		html += "</div>";
    		
    		var $r = $(html).css("opacity", "0");
    		that.$resultWrap.append($r);
    		if(moveToit){
    			$r[0].scrollIntoView(false);
    		}
    		setTimeout(function(){
    			$r.css("opacity", "1");
    		}, 1);
    		
    		$r.click(function(){
    			that.remove(data);
    		});
    		
    		that.refreshOkBtn();
    	},
    	remove: function(data){
    		var that = this;
    		var id = data["id"];
    		$("div[data-id='"+id+"']", that.$resultWrap).remove();
    		$(".wev-table-view-cell[data-id='"+id+"']", that.$page).removeClass("selected");
    		
    		that.removeSelectedData(id);
    		
    		that.refreshOkBtn();
    		
    		if(that._parentResult){
    			that._parentResult.remove(data);
    		}
    	},
    	refreshOkBtn: function(){
    		var that = this;
    		var n = that.getSelectedNum();
    		$("span", that.$okBtn).html(n > 0 ? "("+n+")" : "");
    	},
    	onOk: function(id, text){
    		var that = this;
    		var callback = that.success;
			callback && callback(id, text);
			var closeCallback = that.closeCallback;
			closeCallback && closeCallback();
			
			if(id == ""){
				return;
			}
			var storeName = "mobilemode_hrm_history";
			var hd = localStorage.getItem(storeName);
			if(hd == null || hd == ""){
				hd = [];
			}else{
				hd = JSON.parse(hd);
			}
			var idArr = String(id).split(",");
			$.each(idArr, function(i, d){
				var index;
				if((index = hd.indexOf(d)) != -1){
					hd.splice(index, 1);
				}
				if(hd.length >= 20){
					hd.pop();
				}
				hd.unshift(d);
			});
			localStorage.setItem(storeName, JSON.stringify(hd));
			
    	}
	};
	
	return function($page, success, closeCallback, _parentResult){return new a($page, success, closeCallback, _parentResult);};
});