/**
* webos 1.2
* JS采用面向对象编写
* 仿webQQ基本功能
* 1.1 新加拖拽 桌面切换 右键 1级栏布局切换 应用自适应布局
* 1.2 新加全局桌面 代码借鉴1kb.js
* @xiaofan
* @2012.3.9
*/
var menujson=null;
var datajson=null;
var iconjson=null;
var totalnum =null;
var DATA=new Object();
//update-begin--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
var iconCookieKey = "iconCookieKey";
var iconCookieKeyForSlider = "iconCookieKeyForSlider";
var cookieParam = {expires: 30};
/*默认左侧菜单*/
var defaultIconForSlider = [
// '297e20104620167201462016b5fe001f',/*用户管理*/
// '297e20104620167201462016b6020021' /*角色管理*/
];
//update-end--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
//增加数据动态处理的过程
////这里使用menuString来替换掉每个一级二级菜单的数据
function dataFlush(){
$.ajax({
url: "loginController.do?getPrimaryMenuForWebos",
datatype: "json",
async:false,
type: "post",
success: function (data) {
//修改webOS界面菜单不出现的问题
var menu;
menu = eval("(" +data+")");
var array = menu.msg.split("$$");
menujson=array[0];
menujson = eval("("+menujson+")");
iconjson=array[1];
iconjson = eval("("+iconjson+")");
datajson=array[2];
datajson = eval("("+datajson+")");
var totalnum1=array[3];
totalnum = totalnum1 - 1;
calcuIconJson();
}
});
}
//update-begin--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
/**
* 转换用户的桌面
*/
function calcuIconJson() {
var iconCookieData = $.cookie(iconCookieKey);
var iconCookieDataForSlider = $.cookie(iconCookieKeyForSlider);
if (iconCookieData) {
var allIconIdArrOfCookie = new Array(); // cookie中所有的菜单图标Id
var tempIconJson = {}; // 临时的图标对象
for (var attr in iconjson) {
tempIconJson[attr] = new Array();
}
// 处理桌面菜单
var arrColumn = iconCookieData.split('|');
$.each(arrColumn, function (index, content) {
var iconName = content.split(':')[0]; //iconName
var arrIconId = content.split(':')[1] ? content.split(':')[1].split('@') : ""; //单个序列ID
$.each(arrIconId, function (index, content) {
if (content) {//排除空值
tempIconJson[iconName].push(content);
allIconIdArrOfCookie.push(content);
}
});
});
// 处理左侧菜单
if(iconCookieDataForSlider) {
DATA.sApp = {};
defaultIconForSlider = new Array();
var arrIconId = iconCookieDataForSlider.split('@'); //单个序列ID
$.each(arrIconId, function (index, content) {
if (content) {//排除空值
for (var attrName in datajson.app) {
if(content == attrName) {
DATA.sApp[attrName] = datajson.app[attrName];
break;
}
}
defaultIconForSlider.push(content);
allIconIdArrOfCookie.push(content);
}
});
}
// 处理新增的菜单图标id
for (var attrName in iconjson) {
for(var iconIndex in iconjson[attrName]) {
var iconId = iconjson[attrName][iconIndex];
if(allIconIdArrOfCookie.indexOf(iconId) == -1) {
tempIconJson[attrName].push(iconId);
}
}
}
iconjson = tempIconJson;
}
}
//update-end--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
//工具类
Util = {
formatmodel : function (str, model) {
for (var k in model) {
var re = new RegExp("{" + k + "}", "g");
str = str.replace(re, model[k])
}
return str
}
}
//面板类
Panel=function(){
return me={
hitTest:function(panel,x,y){//碰撞检测,检测坐标[x,y]是否落在panel里面
var pl,pt;
return !(
x<(pl=panel.offset().left)
||y<(pt=panel.offset().top)
||x>pl+panel.width()
||y>pt+panel.height()
);
},
getIdx:function(panel){//获取节点在panel是第几个儿子节点
var ci=0;
while(panel=panel.prev()){
ci++;
}
return ci;
},
unSelecte:function(){//清除选中
return window.getSelection?function(){window.getSelection().removeAllRanges();}:function(){document.selection.empty();};
}()
};
}();
//BODY
Body=function(me){
//优先刷新出后台的数据以便其他方法中使用替换
dataFlush();
return me={
init:function(){
me.create();
me.bindEvent();
},
create:function(){
me.box=$('body');
me.setStyle();
},
bindEvent:function(){//清除选中
function move(evt){
window.getSelection?window.getSelection().removeAllRanges():document.selection.empty();
}
function up(evt){
$(document).unbind('mousemove',move).unbind('mouseup',up);
}
$(document).bind('mousedown',function(){
$(document).bind('mousemove',move).bind('mouseup',up);
});
},
addPanel:function(panel){
me.box.append(panel);
},
setStyle:function(){
me.box.css({
backgroud:"none repeat scroll 0 0 transparent",
display: "block",
height:"500px"
});
}
};
}();
//创建桌面最外层类
Desktop=function(me){
return me={
init:function(){
me.create();
//me.setMenu();//绑定右键
return me;
},
create:function(){
me.box=$("
";
var desktopContainer = "
";
var desktopAppListener = "
";//内部监听容器
var defaultIndex = 0,
////替换掉具体的一级菜单数量
defaultNum = 15,
defautlSpace ={//默认尺寸
left:0,
top:0,
right:0,
bottom:120
}
return me ={
init:function(ops, firstLoad){
me.create();
me.addIcons(ops);
me.space(defautlSpace);
me.refresh(firstLoad);
me.bindEvent();
me.addCurrnet(defaultIndex);
return me;
},
create:function(){
me.box=$(desktopWrapper);//桌面外层面板
me.desktopsContainer = $(desktopsContainer);
me.createDesktopsContainer(defaultNum); //创建桌面外层容器
me.box.append(me.desktopsContainer);
me.box.css({"left": "73px","right": "0px"});
me.desktopsContainer.css("left",73);
Desktop.addPanel(me.box);
me.Icon=[];
},
bindEvent:function(){
//桌面图标拖拽
me.desktopsContainer.find(".appListContainer").each(function(){
var desk = $(this);
var index = desk.attr("index");
desk.sortable({
items:".appButton",
connectWith :".dock_middle",
opacity :"0.6",
start:function(event,ui){
},
stop: function(event, ui) {
var p = ui.item.parent();
if(p.hasClass("dock_middle"))ui.item.removeAttr("style");//落在侧边栏
Deskpanel.switchCurrent(index);
Deskpanel.refreshIcon();
}
}).disableSelection();
});
//浏览器改变刷新
$(window).resize(me.refresh);
},
createDesktopsContainer:function(n){//桌面外层容器 n创建几层桌面
if(n&&n!=0){
for(var i =1;i<=n;i++){
me.desktopsContainer.append(me.addContainer(i))//填充容器
}
}
},
addContainer:function(i){ //添加容器
var c = me.createDesktopContainer(i);
var a = me.createDesktopAppListener(i);
c.append(a);
return c ;
},
createDesktopContainer:function(n){ //容器项
return $(Util.formatmodel(desktopContainer,{"index":n-1}));
},
createDesktopAppListener:function(n){//容器监听项
return $(Util.formatmodel(desktopAppListener,{"index":n-1}));
},
addIcons:function(ops){//添加应用
for(var i in ops){
var key = i.substring(i.length-1,i.length);
me.addIcon(ops[i],key);
}
},
addIcon:function(icon,idx){//添加应用 idx 第几桌面
if(icon){
if($.isArray(icon)){//传入是数组
$.each(icon,function(){
me.addIcon(this.valueOf(),idx);//添加应用程序
});
return me ;
}
var Icon = typeof icon=='string'?appIcon_t1(icon):icon;//传入的是ID还是图标对象
me.Icon.push(Icon);
me.box.find("div[customacceptdrop='"+parseInt(idx-1)+"']").append(Icon.box);
}
},
addCurrnet:function(n){//根据index设置当前桌面样式
me.desktopsContainer.find(".desktopContainer[index='"+n+"']").addClass("desktop_current");
},
removeCurrent:function(n){//根据index移除当前桌面样式
me.desktopsContainer.find(".desktopContainer[index='"+n+"']").removeClass("desktop_current");
},
switchCurrent:function(n){//切换index桌面样式
var dc = me.desktopsContainer;
dc.find(".desktopContainer[index='"+n+"']")
.addClass("desktop_current")
.siblings().removeClass("desktop_current");
},
space:function(ops){//设置桌面各面板尺寸位置
('top' in ops)&&(typeof ops.top=='string'?me.spaceTop+=ops.top:me.spaceTop=+ops.top||0);
('left' in ops)&&(typeof ops.left=='string'?me.spaceLeft+=ops.top:me.spaceLeft=+ops.left||0);
('right' in ops)&&(typeof ops.right=='string'?me.spaceRight+=ops.top:me.spaceRight=+ops.right||0);
('bottom' in ops)&&(typeof ops.bottom=='string'?me.spaceBottom+=ops.top:me.spaceBottom=+ops.bottom||0);
return me;
},
refresh:function(firstLoad){//刷新桌面
var ww = $(window).width(),//浏览器宽
wh = $(window).height();//浏览器高
me.width = ww-me.spaceRight -me.spaceLeft;//容器宽
me.height =wh-me.spaceTop - me.spaceBottom;//容器高
var desktopContainer = me.desktopsContainer.find(".desktopContainer");
var appContainer = desktopContainer.find(".appListContainer");
$(desktopContainer).each(function(i){//容器宽高
$(this).css({
left:me.width*i,
height:me.height-me.spaceBottom
});
})
$("#zoomWallpaperGrid,#zoomWallpaper").width(ww).height(wh);//背景图片div
var r = me.row = ~~(me.height/112);//行数
me.desktopsContainer.css({//设置应用容器样式和位置
left:me.spaceLeft,
top:me.spaceTop,
width:me.width,
height:me.height
});
appContainer.each(function(){
$(this).css({
width:me.width,
height:me.height,
"margin-left": 28,
"margin-top": 46,
display: "block"
});
});
me.refreshIcon(firstLoad);
},
// update-begin--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
refreshIcon:function(firstLoad){//刷新应用
var r = ~~(me.height/112);
var curIndex = 1;
var iconCookieData = "";
me.desktopsContainer.find(".appListContainer").each(function(){
iconCookieData += "Icon" + curIndex + ":";
var icon = $(this).children();
for(var j= 0 ;jidx2){//往前移
me.box.children(".appListContainer[index='1']").append(icon.box,idx2);
}else if(idx
");
Desktop.addPanel(this.box);
},
addPanel:function(sidebar){
this.box.append(sidebar.pbox);
}
});
return me ={
init : function(ops){
me.create(ops.location);
me.movePanel();
me.addIcon(ops.Icon);
me.addToolList();
me.initDrag();
},
create:function(location){//创建
//创建上左右 侧边栏容器
me.leftPanel = SideBox({location:'left'});
me.rightPanel = SideBox({location:'right'});
me.topPanel = SideBox({location:'top'});
me.box = $('
');
me.pbox = $('
');
//创建父边栏容器
me[location+'Panel'].addPanel(me.pbox);
me.location = location;
me.Icon = [];
me.pbox.addClass("dock_pos_"+location);
me.pbox.append(me.box);
me.leftPanel.box.append(me.pbox);
Desktop.addPanel(me.leftPanel.box);
Desktop.addPanel(me.rightPanel.box);
Desktop.addPanel(me.topPanel.box);
me.createStartTool();
me.createPinyinTool();
me.createSoundTool();
me.createSettingTool();
me.createThemeTool();
},
movePanel:function(){ //移动panel
//初始化拖拽效果box
dockEffectBox.init();
//绑定鼠标按下事件
me.pbox.bind("mousedown",function(e){
if($(e.target).css("cursor")=='pointer')return
$(document).bind({
'mousemove':drag,
'mouseup':drop
});
e.preventDefault();
e.stopPropagation();
});
//判断是否在拖动
var flag = 0,deskWidth,deskHeight,location;
function drag(e){
Panel.unSelecte();
if(!flag){
flag=1;
deskWidth=Desktop.box.outerWidth();
deskHeight=Desktop.box.outerHeight();
dockEffectBox.show();
}
var ex = e.pageX;
var ey = e.pageY;
if(ey
");
//update-end--Author:JueYue Date:20140511 for:点击两次才才显示的bug
me.start.powerFloat({
eventType: "click",
offsets:{x:getX,y:-100},
target: $("#startMenuContainer")
});
//update-begin--Author:xuelin Date:20170708 for:TASK #2217 【bug】云桌面,点击左下角加号,弹出系统操作页面,被遮挡-------------------
function getX(){
var p =me.pbox.parent();
var pid = p.attr("id");
var key = pid.substring(0,pid.length-3);
if(key=="left"){
if(p.css("height").replace("px","")<=825)
return -60;
else
return 60;
}else if(key=="top"){
return 0;
}else{
return 60;
}
}
//update-end--Author:xuelin Date:20170708 for:TASK #2217 【bug】云桌面,点击左下角加号,弹出系统操作页面,被遮挡----------------------
//update-end--Author:JueYue Date:20140511 for:点击两次才才显示的bug
},
createPinyinTool :function(){//输入法
me.pinyin =$(Util.formatmodel(tool_a,{
"cmd":"Pinyin",
"title":"输入法",
"key":"pinyin"
}));
},
createSoundTool:function(){//声音设置
var sound = me.sound= $(Util.formatmodel(tool_a,{
"cmd":"Sound",
"title":"静音",
"key":"sound"
}));
sound.toggle(function(){
$(this).addClass("dock_tool_sound_mute").attr("title","取消静音");
},function(){
$(this).removeClass("dock_tool_sound_mute").attr("titile","静音");
});
},
createSettingTool:function(){//系统设置
me.settingtool = $(Util.formatmodel(tool_a,{
"cmd":"Setting",
"title":"系统设置",
"key":"setting"
}));
},
createThemeTool:function(){//主题设置
var theme = me.theme= $(Util.formatmodel(tool_a,{
"cmd":"Theme",
"title":"主题设置",
"key":"theme"
}));
me.bindTheme();
},
bindTheme:function(){
var themsSetting = $("#themeSetting_wrap");
me.theme.click(function(){
Windows.openSys({
id :'themSetting',
title :'设置主题',
width :650,
height:500,
content :document.getElementById("themeSetting_wrap")
});
});
//update-end--Author:gaofeng Date:20140615 for:云桌面主题功能修复
$("a",themsSetting).live("click",function(){
//update-end--Author:gaofeng Date:20140615 for:云桌面主题功能修复
var a = $(this);
var themeid = a.attr("themeid");
var src = themeid.substring(themeid.indexOf("_")+1,themeid.length);
var h = $(window).height();
var w = $(window).width();
$("#zoomWallpaper").attr("src","plug-in/sliding/images/bg/"+src+".jpg").width(w).height(h);
// update-end--Author:gaofeng Date:20140617 for:保存主题背景到cookie中不消失
$.cookie("myskin","plug-in/sliding/images/bg/"+src+".jpg",cookieParam);
// update-end--Author:gaofeng Date:20140617 for:保存主题背景到cookie中不消失
$("#zoomWallpaperGrid").width(w).height(h);
$("a",themsSetting).removeClass("themeSetting_selected");
a.addClass("themeSetting_selected");
});
},
addIcon:function(icon,idx){
if(icon){
if($.isArray(icon)){//传入的是数组
$.each(icon,function(){
me.addIcon(this.valueOf());
});
return me;
}
if(me.Icon.length==6){
var last=me.Icon[5];////替换掉具体的一级菜单数量
me.Icon.length=6;
$(last.box).remove();
return;
}
var Icon=typeof icon=='string'?appIcon_t2(icon):icon;//传入的是程序的fid还是Icon对象
if(idx!=undefined){
me.Icon.splice(idx,0,Icon);
me.box.append(Icon.box,idx);
}else{
me.Icon.push(Icon);
me.box.append(Icon.box);
}
}
},
removeIcon:function(icon){
var idx = (Panel.getIdx(icon.box));
me.Icon.splice(idx,1);
$(icon.box).remove();
},
getIdx:function(ex,ey){//获得位置
var off =me.pbox.offset();
switch(me.location){
case 'top':
return~~((ex-off.left)/142);
case 'left':
case 'right':
return~~((ey-off.top)/112);
}
},
addStyle:function(){//添加拖拽后的样式
me.pbox.removeClass().addClass("dock_container dock_pos_"+me.location);
switch(me.location){
case "top":
me.topPanel.box.css({"width":"100%","height":"73px"}).show();
me.leftPanel.box.css({"width":"0","height":"0"}).hide();
me.rightPanel.box.css({"width":"0%","height":"0"}).hide();
Deskpanel.box.css({"left":0,"right": 0});
Deskpanel.desktopsContainer.css("top",73);
break;
case "left":
me.leftPanel.box.css({"width": "73px","height":"100%"}).show();
me.topPanel.box.css({"width":"0","height":"0"}).hide();
me.rightPanel.box.css({"width":"0%","height":"0"}).hide();
Deskpanel.box.css({"left": "73px","right": "0px"});
Deskpanel.desktopsContainer.css("left",73);
break;
case "right":
me.rightPanel.box.css({"width": "73px","height":"100%"}).show();
me.leftPanel.box.css({"width": "0","height":"0"}).hide();
me.topPanel.box.css({"width":"0","height":"0"}).hide();
Deskpanel.box.css({"left":0,"right":73});
Deskpanel.desktopsContainer.css("top",0);
break;
}
},
initDrag:function(){//绑定元素拖拽
var desk =Deskpanel.desktopsContainer.find(".appListContainer");
me.box.sortable({
connectWith: desk,
items:".appButton",
opacity :"0.6",
scroll :true,
start:function(event,ui){
},
stop:function(event,ui){
var item = ui.item;
var p = item.parent();
if(p.hasClass("appListContainer")){
item.css("position","absolute");
}
Deskpanel.refreshIcon();
}
}).disableSelection();
}
}
}();
//导航栏
Navbar =function(me){
//优先刷新出后台的数据以便其他方法中使用替换
// dataFlush();
var _box = "
";
var _innerBox = "
";
var _userbox = "";
var _abox = "{num} ";
var _abox2 = " ";
var num =totalnum+1 ,////替换掉一级菜单的总数量
defaultnum=1,
title = "请登录",
usericon = "plug-in/sliding/images/jeecg.png";
return me = {
init :function(){
me.create();
me.bindEvent();//绑定导航按钮单击事件
me.setPosition();
},
bindEvent:function(){
me.innerbox.find("a[cmd='switch']").click(function(){
var _this = $(this);
var cmd = _this.attr("cmd[switch]");
var classname = $.trim(me.innerbox.attr("class"));
var currentindex = parseInt(classname.substring(classname.length-1));
var index = parseInt(_this.attr("index"));
me.bindSwitchDesktopAnimate(index,currentindex);
me.innerbox.removeClass().addClass("indicator_container nav_current_"+parseInt(index+1));
});
me.box.draggable();
},
bindSwitchDesktopAnimate:function(t,c){//切换动画事件 t 目标桌面 c当前桌面
var left = 0;
var c = parseInt(c-1);
if(t ");
me.box.find(".indicator_wrapper").append(me.createInnerbox());
Desktop.addPanel(me.box);
},
createInnerbox:function(){//创建内部容器
var con = me.innerbox = $(Util.formatmodel(_innerBox,{
"index":defaultnum
}));
con.append(me.createUser());
me.createIndicator();
con.append(me.createSearch());
con.append(me.createManage());
return con;
},
createUser:function(){//创建用户头像
var user = me.userbox = $(Util.formatmodel(_userbox,{
"url":usericon,
"title":title
}));
user.click(function(){
alert("It's xiaofan ");
});
return user
},
createIndicator:function(){//创建导航项
//增加数据动态处理的过程
////这里使用menuString来替换掉每个一级二级菜单的数据
// dataFlush();
var i = 0;
$.each(menujson,function(n,value){
var obj = Util.formatmodel(_abox,{
"num":i+1,
"id":value.id,
"index":i,
"name":value.name
});
i++;
me.innerbox.append(obj);
})
// for(var i =0;i<5;i++){
//// alert(ss[i].id);
// var obj = Util.formatmodel(_abox,{
// "num":i+1,
// "index":i
// });
// me.innerbox.append(obj);
// }
},
createSearch : function(){//搜索
var search = me.search = $(Util.formatmodel(_abox2,{
"key":"search",
"title":"搜索"
}));
//创建搜索栏
var pagelet_search_bar = $("
");
var pageletSearchInput = $("
",{
"class" : "pagelet_search_input",
value : "搜索功能模块和应用..."
});
var pageletSearchButton = $("
",{
id : "pageletSearchButton",
"class" : "pagelet_search_button",
title :"搜索..."
});
var pagelet_search_suggest =$("
");
var sb_resultbox = $("
");
// update-end--Author:gaofeng Date:20140615 for:云桌面搜索框屏蔽掉多余的展示内容
var sb_app_item_1 =$("
");
var sb_app_item_2 = $("
");
pagelet_search_suggest.append(sb_resultbox).append(sb_app_item_1).append(sb_app_item_2);
// update-end--Author:gaofeng Date:20140615 for:云桌面搜索框屏蔽掉多余的展示内容
pagelet_search_bar.append(pageletSearchInput).append(pageletSearchButton);
Body.addPanel(pagelet_search_bar);
Body.addPanel(pagelet_search_suggest);
search.powerFloat({
width: pagelet_search_bar.width(),
eventType:"click",
offsets: {
x: 5,
y: 20
},
position:"3-1",
target: pagelet_search_bar,
showCall: function(){
//设置suggest结果框位置
var _offset = pagelet_search_bar.offset();
pagelet_search_suggest.offset({top:_offset.top+32,left:_offset.left});
}
});
pageletSearchInput.focus(function(){
$(this).val("");
}).blur(function(){
toggleSearchSuggest();
//update-end--Author:gaofeng Date:20140614 for:云桌面搜索菜单,点击进入功能,搜索可直接连接到百度
var searchhtnl=$(this).val();
$(this).val("搜索功能模块和应用...");
$(".fsb_resultList").show();
//update-end--Author:gaofeng Date:20140614 for:云桌面搜索菜单,点击进入功能,搜索可直接连接到百度
}).keyup(function(){
var _this = $(this);
var _val = _this.val();
$(".sb_resultBox_key").html(_val);
if(_val=="o"){
$("#sb_resultBox").append("
新奥尔
")
.show();
pagelet_search_suggest.show();
}
if(_val==""){
pagelet_search_suggest.hide();
}
});
var toggleSearchSuggest =function(){
var _val = pageletSearchInput.val();
if(_val==""){
pagelet_search_suggest.hide();
}else{
pagelet_search_suggest.show()
}
}
return search ;
},
createManage :function(){//全局视图
var manage = me.manage = $(Util.formatmodel(_abox2,{
"key":"manage",
"title":"全局视图"
}));
manage.click(function(){
//显示全局桌面 关闭正常桌面
if(appManagerPanel){
appManagerPanel.show();
appManagerPanel.showItemsTurn();
appManagerPanel.resize();
Desktop.hide();
//设置列表区的高度
}
});
return manage;
},
setPosition :function(){//设置位置
var ww = $(window).width();
var mw = me.box.width();
me.box.css("left",parseInt(ww/2)-parseInt(mw/2));
}
}
}();
//全局应用管理
appManagerPanel = function(me){
var appManagerPanel ="
";//创建全局桌面容器
var aMg_Close="
";//关闭按钮
var aMg_dock_container ="
";
var aMg_line_x = "
";//x轴线
var aMg_line_y = "
";//y轴线
var aMg_App_container = "
";//应用容器
var folderitem ="
";
// update-begin--Author:zhangguoming Date:20140605 for:云桌面全局视图,菜单区内容的高度bug修复(有滚动条时,最后一个菜单被windows底部菜单栏遮盖的bug)
// var folderinner ="
";
var folderinner ="
";
// update-end--Author:zhangguoming Date:20140605 for:云桌面全局视图,菜单区内容的高度bug修复(有滚动条时,最后一个菜单被windows底部菜单栏遮盖的bug)
var scrollBar ="
";
return me = {
init : function(){
me.create();
me.bindEvent();
me.resize();
},
create:function(){
me.box = $(appManagerPanel);
me.aMg_close = $(aMg_Close);
me.box.append(me.aMg_close)
.append(me.cSidebarApp())
.append(aMg_line_x)
.append(me.cDeskApp());
Body.addPanel(me.box);
},
cSidebarApp:function(){//创建侧边栏界面
me.aMg_dock_container = $(aMg_dock_container);
me.loadSidebarData();
return me.aMg_dock_container;
},
loadSidebarData:function(){//侧边栏应用克隆到顶部
var sItems = Sidebar.box.find(".appButton").clone().appendTo(me.aMg_dock_container);
},
cDeskApp:function(){//创建全局界面
me.aMg_App_container = $(aMg_App_container);
me.loadDeskData();
return me.aMg_App_container;
},
loadDeskData:function(){//加载当前桌面应用数据 到全局界面
Deskpanel.desktopsContainer.find(".appListContainer").each(function(){
var _this = $(this);
var _index = parseInt(_this.attr("index"));
var item = $(Util.formatmodel(folderitem,{
"index":_index,
"key":_index+1
}));
var inner = $(Util.formatmodel(folderinner,{
"index":_index,
"key":_index+1
}))
var outer =item.find(".folderOuter");
_this.children().each(function(){
inner.append(appIcon_amg1($(this).attr("fid")).box);
});
outer.append(inner);
outer.append(scrollBar);
if(_index!=0){
outer.after(aMg_line_y);//纵轴线
}
me.aMg_App_container.append(item);
});
},
bindEvent:function(){
var folderitems =$(".folderItem",me.box);
me.aMg_close.click(function(){//绑定关闭
me.hide();
folderitems.removeClass("folderItem_turn");
Desktop.show();
});
var item = folderitems.find(".folderInner");//绑定拖拽
item.sortable({
items:".appButton",
connectWith :[item,me.aMg_dock_container],
opacity :"0.6",
stop: function(event, ui) {
var item = ui.item;
var p = item.parent();
if(item.parent().hasClass("aMg_dock_container")){
item.removeClass("amg_folder_appbutton");
}
}
}).disableSelection();
me.aMg_dock_container.sortable({
items:".appButton",
connectWith :".folderInner",
opacity :"0.6",
stop: function(event, ui) {
item = ui.item;
var p = item.parent();
if(p.hasClass("folderInner")){
item.addClass("amg_folder_appbutton");
}
}
}).disableSelection();
},
showItemsTurn:function(){
$(".folderItem",me.box).show().addClass("folderItem_turn");
},
show:function(){
me.box.show();
},
hide:function(){
me.box.hide();
},
resize:function(){
var h = $(window).height() -60 ;
me.aMg_App_container.height(h);
}
};
}();
//拖拽效果容器
dockEffectBox = function(me){
var _tbox ="
";
var _lbox ="
";
var _rbox ="
";
var _proxybox ="
";
var _maskbox="
";
return me = {
init : function(){
me.create();
},
create :function(){
me.tbox = $(_tbox);
me.lbox = $(_lbox);
me.rbox = $(_rbox);
me.proxybox = $(_proxybox);
me.maskbox = $(_maskbox);
me.addDesktop();
},
addDesktop :function(){
Desktop.addPanel(me.tbox);
Desktop.addPanel(me.lbox);
Desktop.addPanel(me.rbox);
Desktop.addPanel(me.proxybox);
Desktop.addPanel(me.maskbox);
},
show:function(){
me.tbox.show();
me.lbox.show();
me.rbox.show();
me.maskbox.show();
},
hide:function(){
me.tbox.hide();
me.lbox.hide();
me.rbox.hide();
me.maskbox.hide();
}
};
}();
//底部栏容器类
BottomBar = function(me){
var _box = "
";
var _NextBox = "
";
var _PreBox = "
";
var _taskContainner = "
";
var bottonbarbg = "
";
var bottomBarBgTask = "
";
return me = {
init:function(){
me.create();
Desktop.addPanel(me.box);
Desktop.addPanel(bottonbarbg);
Desktop.addPanel(bottomBarBgTask);
},
create:function(){
var box =me.box = $(_box);
me.innerbox = $("
");
me.taskContainner = $(_taskContainner);
me.taskContainner.append(me.innerbox);
box.append(_NextBox);
box.append(me.taskContainner);
box.append(_PreBox);
},
addItem:function(item){//像底部任务栏添加任务项
me.innerbox.append(item);
var len = me.innerbox.children().length;
var id = item.attr("id");
var w = item.width()*len+20;
me.taskContainner.width(w);
me.innerbox.css({"margin-right": 0,"width":(w)});
me.setCurrent(id);
},
getItem:function(id){//根据ID查询底部任务栏
return me.innerbox.find("a[tid='"+id+"']");
},
getItemNum:function(){//得到当前任务数
return me.innerbox.children().size();
},
setCurrent:function(id){
me.addCurrent(id);
me.removeItemSibling(id);
},
addCurrent:function(id){//设置当前任务栏样式
me.innerbox
.find("#"+id)
.addClass("taskCurrent");
},
removeItemSibling:function(id){//移除当前任务同类样式
me.innerbox
.find("#"+id)
.siblings()
.removeClass("taskCurrent");
},
getALLItemID :function(){//得到当前任务栏所有任务ID
var items = me.innerbox.children();
var idArray =[];
items.each(function(){
var id =$(this).attr("id");
id =id.substring(id.lastIndexOf("_")+1,id.length);
idArray.push(id);
})
return idArray ;
}
}
}();
//任务类
Task = $.Class({
init :function(op){
this.create(op);
this.rightMenu();
},
create:function(op) {
var task =$("
", {
"class": "taskGroup taskGroupAnaWidth",
id: "taskGroup_"+op.id+"_"+op.id
});
var taskItemIcon = $("
",{
"class":"taskItemIcon"
});
$("
").appendTo(taskItemIcon);
var taskItemTxt = $("
",{
"class":"taskItemTxt",
text : op.title
});
var taskItemBox = $("
",{
"class":"taskItemBox",
});
var taskA =$("
",{
"class":"taskItem fistTaskItem",
"href" :"#",
id : "taskItem_"+op.id,
"title" :op.title,
"tid" :op.id,
"appid":op.id+"_"+op.id
});
taskA.append(taskItemIcon).append(taskItemTxt);
taskItemBox.append(taskA);
task.append(taskItemBox);
this.box = task ;
},
rightMenu:function(){
var taskmenu = [
[{
text:"最大化",
func:function(){
var id = $(this).attr("id");
wid =id.substring(id.lastIndexOf("_")+1,id.length);
$.dialog.list[wid].show().max();
}
},
{
text:"最小化",
func:function(){
}
}
],
[{
text:"关闭",
func:function(){
var id = $(this).attr("id");
wid =id.substring(id.lastIndexOf("_")+1,id.length);
$.dialog.list[wid].close();
$("#"+id).remove();
}
}]
]
this.box.smartMenu(taskmenu, {
name: "taskmenu" ,
offsetX :-100,
offsetY :-100
});
}
});
//窗体类 集成artDialog
Windows = function(me){
return me = {
showWindow : function(id){//art弹出
var array= $.dialog.list;
var taskIds = BottomBar.getALLItemID();
var taskLen = taskIds.length;
var api=array[id];
//update-end--Author:JueYue Date:20140511 for:底下菜单点击不消失的bug
function changeLhgDialogFocus() {
var foucsApi = null;
for(var obj in $.dialog.list){
obj = $.dialog.list[obj];
var wrap = obj.DOM.wrap;
var $wrap = $(wrap);
if($wrap.css("visibility") == 'visible'){
if(foucsApi == null){
foucsApi = obj
}else{
foucsApi = $wrap[0].style.zIndex > foucsApi.DOM.wrap[0].style.zIndex
?obj:foucsApi;
}
}
}
if(foucsApi){
$.dialog.focus.DOM.border.removeClass('ui_state_focus');
$.dialog.focus = foucsApi;
foucsApi.DOM.border.addClass('ui_state_focus');
}
}
var wrap = api.DOM.wrap;
var $wrap = $(wrap);
if(taskLen >1){//判断任务个数 显示切换和焦点切换
if($wrap.css("visibility") == 'hidden'){
api.show().zindex();
}else{
if(!api.DOM.border.hasClass('ui_state_focus')){
api.zindex();
}else{
api.hide();
changeLhgDialogFocus();
}
}
}else{
if($wrap.css("visibility") == 'visible'){
api.hide();
}else{
api.show();
}
}
//update-end--Author:JueYue Date:20140511 for:底下菜单点击不消失的bug
},
hideWindow :function(id){//隐藏
$.dialog.list[id].hide();
},
closeMinTask:function(id){//关闭任务
$("#taskGroup_"+id+"_"+id).remove();
},
closeAllWindow:function(){//关闭所有窗体
var list = $.dialog.list;
for (var i in list) {
list[i].close();
};
},
openSys :function(op){//打开系统窗体
$.dialog({
id :op.id,
title :op.title,
width :op.width,
height:op.height,
max:false,
min:false,
content :op.content
});
},
openApp:function(id,title,url,icon,width,height){//打开应用窗体
var taskInner =BottomBar.innerbox;
var taskItem = BottomBar.getItem(id);
if(taskItem.length==1){
return ;
}else{
var len = BottomBar.getItemNum();// 任务图标集合 大于7 不让添加
if(len>7&&len!=0){
return false;
}
var task = Task({//创建最小化任务图标
"id":id,
"title":title,
"icon":icon
});
BottomBar.addItem(task.box);
task.box.click(function(){
me.showWindow(id);
BottomBar.setCurrent(task.box.attr("id"));
});
//update-end--Author:JueYue Date:20140425 for:统一弹出插件
$.dialog({
id:id,
lock : false,
// update-end--Author:gaofeng Date:20140616 for:云桌面修复弹窗的多重覆盖问题
zIndex:1000+getDialogLength(),
// update-end--Author:gaofeng Date:20140616 for:云桌面修复弹窗的多重覆盖问题
width:width,
height:height,
title:title,
opacity : 0.3,
min:false,
content:'url:'+url,
close:function(){
me.closeMinTask(id);
}
}).zindex();
//update-end--Author:JueYue Date:20140425 for:统一弹出插件
/*art.dialog.open(url,*//** 弹出ART窗体*//*
{
"id" :id,
title: title,
width:width,
height:height,
close:function(){
me.closeMinTask(id);
}
}
);*/
}
}
}
}();
function getDialogLength(){
var length = 0;
for( var i in $.dialog.list ){
length++;
}
return length;
}
//图标基类
appIcon_amg= $.Class({
create:function(t) {
this.box = $("
");
}
});
//图标类t0
appIcon_t0 = $.Class({
create :function(t){
this.box = $("
");
this.setRightMenu();
},
setRightMenu:function(){
}
});
//全局应用图标
appIcon_amg1 = appIcon_amg.extend({
init : function(fid){
this.fid = fid;
//替换data.js数据——这里的方法貌似没有用到
this.app = datajson.app[fid];
// this.app = DATA.app[fid];
this.tx ="app";
this.create();
this.bindEvent();
},
create:function(){
this._super(1);
this.box.attr({
id:"icon_app_"+this.app.appid+"_"+this.app.asc,
appid:this.app.appid,
fileid : this.app.appid,
title:this.app.name,
// update-begin--Author:zhangguoming Date:20140605 for:云桌面全局视图,添加菜单点击功能(弹出菜单后,关闭全局视图并返回桌面)
url: this.app.url,
// update-end--Author:zhangguoming Date:20140605 for:云桌面全局视图,添加菜单点击功能(弹出菜单后,关闭全局视图并返回桌面)
uid :"app_"+this.app.appid
});
var appIcon =$("",{
id : "icon_app_"+this.app.appid+"_"+this.app.asc+"_icon_div",
"class" : "appButton_appIcon"
});
appIcon.append($("
",{
alt:this.app.name ,
/*update-begin--Author:zhangguoming Date:20140509 for:云桌面图标管理*/
// src:'plug-in/sliding/icon/'+this.app.icon,
src:this.app.icon,
/*update-end--Author:zhangguoming Date:20140509 for:云桌面图标管理*/
"class":"appButton_appIconImg",
id:'icon_app_'+this.app.appid+'_'+this.app.asc+'_img'
}));
var nameDiv = $("
");
var name_inner = $("
",{
"class":'appButton_appName_inner',
id:'icon_app_'+this.app.appid+'_'+this.app.asc+'_name',
text:this.app.name
});
var name_right =$("
");
nameDiv.append(name_inner).append(name_right);
var notify = $("
",{
"class": 'appButton_notify',
id :'icon_app_'+this.app.appid+'_'+this.app.asc+'_notify',
});
$("
").appendTo(notify);
var deleteDiv = $("
",{
title:'卸载应用' ,
id :'icon_app_'+this.app.appid+'_'+this.app.asc+'_delete',
"class":'appButton_delete'
});
this.box.append(appIcon).append(nameDiv).append(notify).append(deleteDiv);
},
bindEvent:function(){
// update-begin--Author:zhangguoming Date:20140605 for:云桌面全局视图,添加菜单点击功能(弹出菜单后,关闭全局视图并返回桌面)
this.box.click(function(e){
e.preventDefault();
e.stopPropagation();
var _this = $(this);
var id = _this.attr("appid");
var title = $.trim(_this.text());
var url =_this.attr("url");
var icon =_this.find("img").attr("src").split("/")[3];
Windows.openApp(id,title,url,icon,1000,500);
appManagerPanel.hide();
Desktop.show();
// update-end--Author:zhangguoming Date:20140605 for:云桌面全局视图,添加菜单点击功能(弹出菜单后,关闭全局视图并返回桌面)
});
}
});
//来至桌面的图标
appIcon_t1 = appIcon_t0.extend({
init : function(fid){
this.fid = fid;
// //替换data.js数据
this.app = datajson.app[fid];
// this.app = DATA.app[fid];
this.tx =1;
this.create(fid);
this.bindEvent();
},
create:function(fid){
this._super(1);
this.box.attr({
id:"icon_app_"+this.app.appid+"_"+this.app.asc,
appid:this.app.appid,
fileid : this.app.appid,
title:this.app.name,
uid :"app_"+this.app.appid ,
fid: fid,
//TODO:加载url地址
url:this.app.url
// url:"userController.do?user"
});
var appIcon =$("
",{
id : "icon_app_"+this.app.appid+"_"+this.app.asc+"_icon_div",
"class" : "appButton_appIcon"
});
appIcon.append($("
",{
alt:this.app.name ,
/*update-begin--Author:zhangguoming Date:20140509 for:云桌面图标管理*/
// src:'plug-in/sliding/icon/'+this.app.icon,
src:this.app.icon,
/*update-end--Author:zhangguoming Date:20140509 for:云桌面图标管理*/
"class":"appButton_appIconImg",
id:'icon_app_'+this.app.appid+'_'+this.app.asc+'_img'
}));
var nameDiv = $("
");
var name_inner = $("
",{
"class":'appButton_appName_inner',
id:'icon_app_'+this.app.appid+'_'+this.app.asc+'_name',
text:this.app.name
});
var name_right =$("
");
nameDiv.append(name_inner).append(name_right);
var notify = $("
",{
"class": 'appButton_notify',
id :'icon_app_'+this.app.appid+'_'+this.app.asc+'_notify'
});
$("
").appendTo(notify);
var deleteDiv = $("
",{
title:'卸载应用' ,
id :'icon_app_'+this.app.appid+'_'+this.app.asc+'_delete',
"class":'appButton_delete'
});
this.box.append(appIcon).append(nameDiv).append(notify).append(deleteDiv);
},
bindEvent:function(){//绑定事件
this.box.click(function(e){
e.preventDefault();
e.stopPropagation();
var _this = $(this);
var id = _this.attr("appid");
var title = $.trim(_this.text());
// var url ="http://www.jeecg.org";
var url =_this.attr("url");
var icon =_this.find("img").attr("src").split("/")[3];
Windows.openApp(id,title,url,icon,1400,600);
});
}
});
//来至侧边框的图标
appIcon_t2 = appIcon_t0.extend({
init:function(fid){
this.fid = fid;
this.sApp = DATA.sApp[fid];
this.tx = 2;
this.create();
this.bindEvent();
},
create : function(){
this._super(2);
this.box.attr({
id:"icon_app_"+this.sApp.appid+"_"+this.sApp.asc,
appid:this.sApp.appid,
fileid : this.sApp.appid,
title:this.sApp.name,
// update-begin--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
uid :"app_"+this.sApp.appid,
url:this.sApp.url
// update-end--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
});
var appIcon =$("
",{
id : "icon_app_"+this.sApp.appid+"_"+this.sApp.asc+"_icon_div",
"class" : "appButton_appIcon"
});
appIcon.append($("
",{
alt:this.sApp.name ,
// update-begin--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
// src:'plug-in/sliding/icon/'+this.sApp.icon,
src:this.sApp.icon,
// update-end--Author:zhangguoming Date:20140521 for:云桌面图标拖拽、用户自定义桌面
"class":"appButton_appIconImg",
id:'icon_app_'+this.sApp.appid+'_'+this.sApp.asc+'_img'
}));
var nameDiv = $("
");
var name_inner = $("
",{
"class":'appButton_appName_inner',
id:'icon_app_'+this.sApp.appid+'_'+this.sApp.asc+'_name',
text:this.sApp.name
});
var name_right =$("
");
nameDiv.append(name_inner).append(name_right);
var deleteDiv = $("