/** * 任务栏管理系统 */ Namespace.register("U.MD.D.T.taskbar"); //任务栏 命名空间 /** * 任务管理函数 * @param applyinfo {object} 任务信息 * 形如:{ * id: _taskId, //任务识别id * backgroundPostion: _taskbar[0], //任务图标定位 * name: _taskbar[1], //任务名称 * forms: _taskbar[2], //任务所在的窗体 * click: function () { U.MD.D.I.openApplication(str, obj); } //任务点击打开的函数 * } * @param taskbarEle 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素 */ U.MD.D.T.taskbar = function (applyinfo, taskbarEle) { taskbarEle = taskbarEle || U.selectEl("#U_MD_D_RW")[0]; //任务管理器所在的元素 var _tasks = U.selectEl('#U_MD_D_T_taskbar_' + applyinfo.id, taskbarEle)[0]; //查找当前任务是否存在 //如果不存在则创建任务 if (!_tasks) { //创建任务 U.MD.D.T.taskbar.create(applyinfo, taskbarEle); //检查任务是否过多 U.MD.D.T.taskbar.multitask(taskbarEle); } else { _tasks.forms = applyinfo.forms; } } //是否触发拖动监听变量 U.MD.D.T.taskbar.drag = 0; /** * 任务创建函数 * @param applyinfo {object} 任务信息 与任务管理函数参数相同 * @param taskbarEle {element} 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素 与任务管理函数参数相同 */ U.MD.D.T.taskbar.create = function (applyinfo, taskbarEle) { if (taskbarEle) { //动态创建任务 var _task = $$("div", { id: "U_MD_D_T_taskbar_" + applyinfo.id, className: "U_MD_D_BZMO", title: applyinfo.name, "forms": applyinfo.forms }); var _taskMain = $$("div", { className: "U_MD_D_BZMOA", //绑定点下事件 勇于拖动监听 onmousedown: U.UF.C.apply(null, function () { U.MD.D.T.taskbar.dragClose(_taskMain); }), //绑定点击事件 需判断是否在拖动状态 onclick: function () { if (!(U.MD.D.T.taskbar.drag > 1)) { applyinfo.click(); } U.MD.D.T.taskbar.drag = 0; } }, _task); //动态创建任务图标 // switch (applyinfo.name) {//根据不同的点击事件创建不同的任务图标 // case "文档": // $$("div", { className: " U_TaskbarImg U_TaskbarImg1" }, _taskMain); // break; // case "系统设置": // $$("div", { className: " U_TaskbarImg U_TaskbarImg2" }, _taskMain); // break; // case "查找好友": // $$("div", { className: " U_TaskbarImg U_TaskbarImg3" }, _taskMain); // break; // case "Excel": // $$("div", { className: "U_TaskbarImg U_TaskbarImg4" }, _taskMain); // break; // case "网盘": // $$("div", { className: " U_TaskbarImg U_TaskbarImg5" }, _taskMain); // break; // case "互联办公": // $$("div", { className: " U_TaskbarImg U_TaskbarImg6" }, _taskMain); // break; // case "文本": // $$("div", { className: "U_TaskbarImg U_TaskbarImg7" }, _taskMain); // break; // case "音乐播放器": // $$("div", { className: "U_TaskbarImg U_TaskbarImg8" }, _taskMain); // } $$("div", { className: "U_MD_D_BZMOI U_Img", style: applyinfo.style }, _taskMain); //动态创建任务名称 // $$("div", { className: "U_MD_D_BZMON U_MD_D_Text_Abbreviation", innerHTML: applyinfo.name }, _taskMain); var _taskName = $$("div", { className: "U_MD_D_T_taskbar_Name", style: { "position": "absolute", "left": "-26px", "bottom": "83px" }/*, innerHTML: applyinfo.name*/ }, _task); $$("div", { className: "U_MD_D_BZMON U_MD_D_Text_Abbreviation", style: { "float": "left", "width": "100px", "margin-top": "7%", "color": "#FFFFFF", "font-family": "MicrosoftYaHei" }, innerHTML: applyinfo.name }, _taskName); $$("div", { className: "U_MD_D_T_taskbar_Close", style: { "display": "none" }, innerHTML: "x", onclick: function () { U.UF.EV.stopBubble(); U.MD.D.T.taskbar.close(applyinfo) } }, _taskMain); $$("div", { className: "U_MD_D_T_taskbar_Close", innerHTML: "x", onclick: function () { U.UF.EV.stopBubble(); U.MD.D.T.taskbar.close(applyinfo) } }, _taskName); //添加到任务栏的最前面 if (taskbarEle) { U.selectEl(taskbarEle).append(_task, 0, taskbarEle.firstChild); } //任务栏中大于或等于28个时,才出现上下分页按钮; if ($(".U_MD_D_BZMOA").length >= 28) { U.selectEl(".U_MD_D_RW_R")[0].style.display = "block"; } else { U.selectEl(".U_MD_D_RW_R")[0].style.display = "none"; } } } //当前页监听 U.MD.D.T.taskbar.page = 1; //最大页码 U.MD.D.T.taskbar.maxPage = 1; //每页最多放置任务数 U.MD.D.T.taskbar.pageNum = 1; /** * 检查任务过多情况 * @param taskbarEle {element} 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素 与任务管理函数参数相同 */ U.MD.D.T.taskbar.multitask = function (taskbarEle) { //每页最多放置任务数 U.MD.D.T.taskbar.pageNum = Math.floor($(taskbarEle).width() / 65); //获取所有任务 var _tasks = U.selectEl(taskbarEle).Child(); //获取任务总数 var _tasksTotal = _tasks.length; //判断是否为多页情况 if (_tasksTotal > U.MD.D.T.taskbar.pageNum) { //计算最大总共有多少页 U.MD.D.T.taskbar.maxPage = Math.ceil(_tasksTotal / U.MD.D.T.taskbar.pageNum); } U.MD.D.T.taskbar.page = 1; U.MD.D.T.taskbar.switchPage(0); } /** * 多任务切换页面 * @param mark {number} 页码标记 在前台页上加或者减多少页 * @param taskbarEle {element} 任务管理器所在的元素 默认为$("#U_MD_D_T_taskbar_Bar_Main")[0]元素 与任务管理函数参数相同 */ U.MD.D.T.taskbar.switchPage = function (mark, taskbarEle) { //任务管理器位置 taskbarEle = taskbarEle || U.selectEl("#U_MD_D_RW")[0]; //页面切换设置 U.MD.D.T.taskbar.page += mark; //页面最小值限制 if (U.MD.D.T.taskbar.page < 1) { U.MD.D.T.taskbar.page = 1; } //页面最大值限制 if (U.MD.D.T.taskbar.page > U.MD.D.T.taskbar.maxPage) { U.MD.D.T.taskbar.page = U.MD.D.T.taskbar.maxPage; } //获取所有任务 var _tasks = U.selectEl(taskbarEle).Child(); //计算当前页面从第几个任务开始显示 var _startLength = (U.MD.D.T.taskbar.page - 1) * U.MD.D.T.taskbar.pageNum; //计算当前页面从第几个任务结束显示 var _endLength = Math.min(U.MD.D.T.taskbar.page * U.MD.D.T.taskbar.pageNum, _tasks.length); //影藏所有任务 U.selectEl($(taskbarEle).Child()).css('display', 'none'); //循环显示当前页面的任务 var i; for (_startLength; _startLength < _endLength; _startLength++) { U.selectEl(_tasks[_startLength]).css('display', 'block'); } } /** * 任务关闭函数 * @param applyinfo {object} 任务信息 */ U.MD.D.T.taskbar.close = function (applyinfo) { var i, _child = U.selectEl("#U_MD_D_RW").Child(), _form = U.UF.C.isElement(applyinfo.forms) ? applyinfo.forms : applyinfo.forms.form; //执行窗体关闭函数 if (applyinfo.forms) { U.UF.F.closeWindow(_form, "remove"); } //通过applyinfo删除的模式 if (applyinfo.id) { //删除任务 U.selectEl('#U_MD_D_T_taskbar_' + applyinfo.id).remove(); } else { //循环找出需要移除的form窗体 for (i = 0; i < _child.length; i++) { if (_child[i].forms == _form) { U.selectEl(_child[i]).remove(); } } } } /** * 清空任务管理器 * @param taskEle {Element} 任务管理器位置 */ U.MD.D.T.taskbar.clear = function (taskEle) { //任务管理器位置 taskEle = taskEle || U.selectEl("#U_MD_D_RW")[0]; //循环执行所有任务的关闭点击事件 var _i, _tasksClose = U.selectEl('.U_MD_D_T_taskbar_Close', taskEle); for (_i = 0; _i < _tasksClose.length; _i++) { _tasksClose[_i].onclick(); } } /** * 任务拖拽关闭函数 * @param taskEle {Element} 被操作任务的元素 */ U.MD.D.T.taskbar.dragClose = function (taskEle) { U.MD.D.T.taskbar.drag = 0; //获取鼠标位置 定义该位置为起始位置 //U.MD.D.T.taskbar.stratX = U.UF.EL.getMousePosition().x; U.MD.D.T.taskbar.stratY = U.UF.EL.getMousePosition().y; //记录当前样式 U.MD.D.T.taskbar.preStyle = U.selectEl(taskEle).css('cssText'); //设置元素绝对定位 var _taskEleCssPostion = U.selectEl(taskEle).css("postion"); if (_taskEleCssPostion == "static" || !_taskEleCssPostion) { U.selectEl(taskEle).css("position", "absolute") }; //改G //设置置顶 U.selectEl(taskEle).css("z-index", 9999); //绑定事件 U.MD.D.T.taskbar.bindDragEvent(taskEle); } /** * 拖拽事件绑定 */ U.MD.D.T.taskbar.bindDragEvent = function (taskEle) { var _event = { "mousemove": function () { //执行拖拽事件 U.MD.D.T.taskbar.dragMove(taskEle); //绑定鼠标离开元素事件,防止失焦后元素不受控制 U.selectEl(taskEle).mouseleave(function () { U.MD.D.T.taskbar.dragEnd(taskEle); }); //设置拖拽开始 U.MD.D.T.taskbar.drag++; }, "mouseup": function () { //执行拖拽结束函数 U.MD.D.T.taskbar.dragEnd(taskEle); //解绑当前绑定的函数 U.selectEl(taskEle).unbind(_event); //清楚 U.selectEl(taskEle).mouseleave(null); } }; //绑定事件 U.selectEl(taskEle).bind(_event); } /** * 拖拽函数 */ U.MD.D.T.taskbar.dragMove = function (taskEle) { //计算拖动距离 //U.MD.D.T.taskbar.dragX = U.UF.EL.getMousePosition().x - U.MD.D.T.taskbar.stratX; U.MD.D.T.taskbar.dragY = U.MD.D.T.taskbar.stratY - U.UF.EL.getMousePosition().y; //根据拖动距离计算透明度 最大拖动距离为100 //var _opacity = 100 - U.MD.D.T.taskbar.dragX; var _opacity = 100 - U.MD.D.T.taskbar.dragY; //限制透明度值最小为1 if (_opacity < 1) { _opacity = 1 }; //设置CSS透明度属性 U.selectEl(taskEle).css({ //left: U.MD.D.T.taskbar.dragX + "px", bottom: U.MD.D.T.taskbar.dragY + "px", filter: "alpha(opacity=" + _opacity + ")", "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + _opacity + ")", //ie兼容设置 "-moz-opacity": _opacity / 100, "-khtml-opacity": _opacity / 100, //其他浏览器兼容 firefox safari、chrome "opacity": _opacity / 100 }); } /** * 拖拽结束函数 */ U.MD.D.T.taskbar.dragEnd = function (taskEle) { if (U.MD.D.T.taskbar.dragY > 50) { //若拖动距离大于40则执行关闭任务函数 U.selectEl('.U_MD_D_T_taskbar_Close', taskEle)[0].onclick(); } else { //否则执行打开函数,并设置回元素的样式 U.selectEl(taskEle).css("cssText", U.MD.D.T.taskbar.preStyle); //taskEle.click(); } } $(window).bind('onsize', U.MD.D.T.taskbar.multitask);