This commit is contained in:
156
WebRoot/js/HoorayOS_mini/js/hros.widget.js
Normal file
156
WebRoot/js/HoorayOS_mini/js/hros.widget.js
Normal file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
** 小挂件
|
||||
*/
|
||||
HROS.widget = (function(){
|
||||
return {
|
||||
init : function(){
|
||||
//挂件上各个按钮
|
||||
HROS.widget.handle();
|
||||
//挂件移动
|
||||
HROS.widget.move();
|
||||
},
|
||||
/*
|
||||
** 创建挂件
|
||||
** 自定义挂件:HROS.widget.createTemp({url,width,height,left,top});
|
||||
** 示例:HROS.widget.createTemp({url:"http://www.baidu.com",width:800,height:400,left:100,top:100});
|
||||
*/
|
||||
createTemp : function(obj){
|
||||
var appid = obj.appid == null ? Date.parse(new Date()) : obj.appid;
|
||||
//判断窗口是否已打开
|
||||
var iswidgetopen = false;
|
||||
$('#desk .widget').each(function(){
|
||||
if($(this).attr('appid') == appid){
|
||||
iswidgetopen = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
//如果没有打开,则进行创建
|
||||
if(!iswidgetopen){
|
||||
function nextDo(options){
|
||||
$('#desk').append(widgetWindowTemp({
|
||||
'width' : options.width,
|
||||
'height' : options.height,
|
||||
'type' : 'widget',
|
||||
'id' : 'w_' + options.appid,
|
||||
'appid' : options.appid,
|
||||
'top' : options.top,
|
||||
'right' : options.right,
|
||||
'url' : options.url,
|
||||
'zIndex' : HROS.CONFIG.widgetIndexid
|
||||
}));
|
||||
HROS.CONFIG.widgetIndexid += 1;
|
||||
}
|
||||
nextDo({
|
||||
appid : appid,
|
||||
url : obj.url,
|
||||
width : obj.width,
|
||||
height : obj.height,
|
||||
top : obj.top == null ? 0 : obj.top,
|
||||
right : obj.right == null ? 0 : obj.right
|
||||
});
|
||||
}
|
||||
},
|
||||
create : function(appid){
|
||||
//判断窗口是否已打开
|
||||
var iswidgetopen = false;
|
||||
$('#desk .widget').each(function(){
|
||||
if($(this).attr('appid') == appid){
|
||||
iswidgetopen = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
//如果没有打开,则进行创建
|
||||
if(!iswidgetopen){
|
||||
function nextDo(options){
|
||||
var widgetId = '#w_' + options.appid;
|
||||
TEMP.widgetTemp = {
|
||||
'title' : options.title,
|
||||
'width' : options.width,
|
||||
'height' : options.height,
|
||||
'type' : options.type,
|
||||
'id' : 'w_' + options.appid,
|
||||
'appid' : options.appid,
|
||||
'top' : options.top,
|
||||
'right' : options.right,
|
||||
'url' : options.url,
|
||||
'zIndex' : HROS.CONFIG.widgetIndexid,
|
||||
'issetbar' : 1
|
||||
};
|
||||
$('#desk').append(widgetWindowTemp(TEMP.widgetTemp));
|
||||
$(widgetId).data('info', TEMP.widgetTemp);
|
||||
HROS.CONFIG.widgetIndexid += 1;
|
||||
}
|
||||
$(HROS.VAR.dock).each(function(){
|
||||
if(this.id == appid){
|
||||
nextDo({
|
||||
appid : this.id,
|
||||
title : this.title,
|
||||
url : this.url,
|
||||
type : this.type,
|
||||
width : this.width,
|
||||
height : this.height,
|
||||
top : typeof(this.top) == 'undefined' ? 0 : this.top,
|
||||
right : typeof(this.right) == 'undefined' ? 0 : this.right
|
||||
});
|
||||
}
|
||||
});
|
||||
$(HROS.VAR.desk).each(function(){
|
||||
if(this.id == appid){
|
||||
nextDo({
|
||||
appid : this.id,
|
||||
title : this.title,
|
||||
url : this.url,
|
||||
type : this.type,
|
||||
width : this.width,
|
||||
height : this.height,
|
||||
top : typeof(this.top) == 'undefined' ? 0 : this.top,
|
||||
right : typeof(this.right) == 'undefined' ? 0 : this.right
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
move : function(){
|
||||
$('#desk').on('mousedown', '.widget .move', function(e){
|
||||
var obj = $(this).parents('.widget');
|
||||
HROS.widget.show2top(obj.attr('appid'));
|
||||
var lay, x, y;
|
||||
x = e.clientX - obj.offset().left;
|
||||
y = e.clientY - obj.offset().top;
|
||||
//绑定鼠标移动事件
|
||||
$(document).on('mousemove', function(e){
|
||||
lay = HROS.maskBox.desk();
|
||||
lay.show();
|
||||
_r = e.clientX - x;
|
||||
_t = e.clientY - y;
|
||||
_t = _t < 0 ? 0 : _t;
|
||||
_r = $(window).width() - obj.width() - _r;
|
||||
obj.css({
|
||||
right : _r,
|
||||
top : _t
|
||||
});
|
||||
}).on('mouseup', function(){
|
||||
$(this).off('mousemove').off('mouseup');
|
||||
if(typeof(lay) !== 'undefined'){
|
||||
lay.hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
close : function(appid){
|
||||
var widgetId = '#w_' + appid;
|
||||
$(widgetId).html('').remove();
|
||||
},
|
||||
show2top : function(appid){
|
||||
var widgetId = '#w_' + appid;
|
||||
$(widgetId).css('z-index', HROS.CONFIG.widgetIndexid);
|
||||
HROS.CONFIG.widgetIndexid += 1;
|
||||
},
|
||||
handle : function(){
|
||||
$('#desk').on('click', '.widget .ha-close', function(e){
|
||||
var obj = $(this).parents('.widget');
|
||||
HROS.widget.close(obj.attr('appid'));
|
||||
});
|
||||
}
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user