apps/com.actionsoft.apps.addons.xpages/web/com.actionsoft.apps.addons.xpages/js/xpages.linkquickly.view.js
shangxiaoran@qq.com 2608324b68 初始化应用
2022-06-28 01:22:45 +08:00

592 lines
23 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var resourceId ,resourceType = "xpages.linkquickly.ac";
$(document).ready(function(){
refreshLinkQuicklyData();
$("#fullsearch-result").height($(window).height());
//管理員或者允许个人添加
if (isAllowAdd=="1"||isAdmin=="1"){
//$(".link-add-span").show();
//appendSettingAddButton(e);
$("#fullsearch-result").mouseenter(function(e){
$(".link-add-span").show();
//如果是图标展示则显示编辑按钮
if(viewtype=="0"){
//如果当前不是正在编辑,则显示编辑按钮
if(!$("#closeOrderLinkCard").is(':visible')) {
if(linkquicklys.length>0){
$("#orderLinkCard").show();
}else{
$("#orderLinkCard").hide();
}
}
}else{
$("#orderLinkCard").hide();
}
pauseEvent(e);
}).mouseleave(function(e){
$(".link-add-span").hide();
pauseEvent(e);
});
listSettingAddClickEvent();
}
if(isAllowAdd=="0"&&isAdmin=="0"){
$(".link-add-span").hide();
}
});
/*
保存数据
*/
function saveLinkQuicklyData() {
var parentWin = top.window.$('#id-awsui-win-frm-2013-frmaddlinkquickly');
var linkId = parentWin.contents().find("#link_id").val();
var navId = parentWin.contents().find("#navId").val();
var linkName = parentWin.contents().find("#select2-linkName-container").text();
var linkUrl = parentWin.contents().find("#linkUrl").val();
var linkTarget = parentWin.contents().find("#linkTarget").val();
var linkType = parentWin.contents().find("#linkType").val();
var linkIconUrl = parentWin.contents().find("#linkIconUrl").val();
var isCustom = parentWin.contents().find("#link_isCustom").val();
if (linkName.length>200) {
parent.top.$.simpleAlert(名称不能超过200个字符, "warning");
return false;
}
if (linkName==""||linkName==null) {
parent.top.$.simpleAlert(链接名称 + 不允许为空, "warning");
return false;
}
if (isCustom==="true"){
if (linkUrl==""||linkUrl==null) {
parent.top.$.simpleAlert(链接地址 + 不允许为空, "warning");
return false;
}
}
var params = {
linkId:linkId,
navId:navId,
groupKey:groupKey,
linkName: linkName,
linkUrl:linkUrl,
linkTarget:linkTarget,
linkType:linkType,
linkIconUrl:linkIconUrl
};
var url = './jd?sid=' + sid + '&cmd=com.actionsoft.apps.addons.xpages_linkquickly_savefunc';
awsui.ajax.post(url, params, function (responseObject) {
if (responseObject['result']=="ok"){
linkquicklys = responseObject.data.datas;
refreshLinkQuicklyData();
} else{
parent.top.$.simpleAlert(responseObject['msg'], responseObject['result']);
}
}, 'json');
return true;
}
/*
刷新数据
*/
function refreshLinkQuicklyData() {
if(viewtype=="0"){
$(".link-list").hide();
showIconType();
}else{
$(".apps_group").hide();
showListType();
}
}
/*
图标方式展示
*/
function showIconType() {
$('.apps_group').empty();
var len = linkquicklys.length;
if(len>0){
$('.apps_group').show();
$('.no-taskinstance').hide();
for(var i=0;i<len;i++){
var data = linkquicklys[i];
//console.log(data);
var orderIndex = data['orderIndex'];
var isDel = data['isDelete'];
var item = $('<div class="app_item" target="'+data['linkTarget']+'" linkid="'+data['id']+'" linkurl="'+data['linkUrl']+'" orderIndex="'+orderIndex+'"></div>');
var delIcon = $('<div class="deleteLink awsui-iconfont" onclick="deleteLinkQuicklyEvent(\''+data['id']+'\')" style="position: absolute;top:0px;right:2px;font-size:13px;color:#E8574E;cursor:pointer;z-index:999;display: none;">&#xe61c;</div>');
var editIcon = $('<div class="updateLink awsui-iconfont" onclick="updateLinkQuicklyEvent(\''+data['id']+'\')" style="position: absolute;top:-2px;right:20px;font-size:16px;color:#E8574E;cursor:pointer;z-index:10;display: none;">&#58934;</div>');
var icon = $('<div class="app_icon"></div>');
var icon_url = data['iconUrl'];
if(typeof(icon_url)=="undefined"||icon_url==""){
icon_url = "../apps/com.actionsoft.apps.addons.xpages/img/xpages-no-config.png";
}
var img = $('<img src="'+icon_url+'"/>');
var name = $('<div class="app_name">' + data['linkNameI18N'] + '</div>');
if (isDel=="1"){
item.append(delIcon).append(editIcon);
}
item.append(icon.append(img)).append(name);
$('.apps_group').append(item);
}
linkOpenEvent("app_icon");
getLinkNameStrForType0();
itemHoverEvent("app_item");
closeOrderLinkCard();
}else{
$('.apps_group').hide();
$('.no-taskinstance').show();
$("#orderLinkCard").hide();
$("#closeOrderLinkCard").hide();
if (isAllowAdd=="1"||isAdmin=="1") {
$("#settingbtn2").show();
}
}
}
/*
删除按钮点击事件
*/
function deleteLinkQuicklyEvent(linkId) {
debugger;
var params = {
linkId:linkId,
groupKey:groupKey
};
var url = './jd?sid=' + sid + '&cmd=com.actionsoft.apps.addons.xpages_linkquickly_deletefunc';
awsui.ajax.post(url, params, function (responseObject) {
if (responseObject['result']=="ok"){
linkquicklys = responseObject.data.datas;
refreshLinkQuicklyData();
} else{
$.simpleAlert(responseObject['msg'], responseObject['result']);
}
}, 'json');
return false;
}
function updateLinkQuicklyEvent(linkId) {
openUserConfigDlg(linkId);
}
/*
图标方式展示鼠标经过显示删除按钮
*/
function itemHoverEvent(param) {
$("."+param).each(function (index,element){
var target = $(element);
target.mouseenter(function(){
target.css("border","solid 1px #e6e6e6");
}).mouseleave(function(e){
target.css("border","solid 1px #ffffff");
pauseEvent(e);
});
});
}
/*
图标方式展示,追加设置按钮
*/
function appendSettingAddButton() {
$(".setting").remove();
var settingAddButton = $('<div class="setting"><div id="settingbtn" class="settingicon awsui-iconfont" style="position: absolute;top:10px;font-size:30px;color:#E8574E">&#xe726;</div></div>');
var lastParam = $(".app_item:last");
if (lastParam.length>0) {
lastParam.after(settingAddButton);
}else{
$(".apps_group").after(settingAddButton);
}
settingAddClickEvent();
}
/*
设置按钮点击事件
*/
function settingAddClickEvent() {
$("#settingbtn").off("click").on("click",function(){
openUserConfigDlg("");
});
}
function openUserConfigDlg(id) {
var userConfigDlg = top.window.FrmDialog.open({
title: 添加链接,
width : 500,
height : 330,
url : "./w",
id:"addlinkquickly",
data : {
sid : sid,
cmd : "com.actionsoft.apps.addons.xpages_linkquickly_addfunc",
linkId:id,
groupKey:groupKey
},
buttons : [{
text: 确定,
cls : "blue",
handler : function() {
var isSuccess = saveLinkQuicklyData();
if (isSuccess) {
userConfigDlg.close();
}
}
}, {
text: 关闭,
handler : function() {
userConfigDlg.close();
}
}]
});
}
/*
列表方式展示
*/
function showListType() {
$('.link-dl').empty();
var len = linkquicklys.length;
if(len>0){
$('.link-list').show();
$('.no-taskinstance').hide();
for(var i=0;i<len;i++){
var data = linkquicklys[i];
var orderIndex = data["orderIndex"];
var isDele = data['isDelete'];
var item = $('<dd class="link-item" target="'+data['linkTarget']+'" linkid="'+data['id']+'" linkurl="'+data['linkUrl']+'" orderIndex="'+orderIndex+'"></dd>');
var delIcon = $('<div class="deleteLink awsui-iconfont" onclick="deleteLinkQuicklyEvent(\''+data['id']+'\')" style="position: absolute;right:0px;font-size:16px;color:#E8574E;cursor:pointer;display: none;">&#xe61c;</div>');
var span = $('<span class="link-span"></span>');
var name = $('<a>'+data['linkName']+'</a>');
if (isDele=="1") {
item.append(delIcon);
}
item.append(span).append(name);
$('.link-dl').append(item);
}
linkOpenEvent("link-item");
if (isAllowAdd=="1"||isAdmin=="1") {
$(".link-item").each(function (index,element){
var target = $(element);
target.mouseenter(function(e){
target.find(".deleteLink").show();
e.stopPropagation();
}).mouseleave(function(e){
target.find(".deleteLink").hide();
e.stopPropagation();
});
});
//管理员可排序
//sortFunctionLink(".link-dl",".link-item");
}
}else{
if (isAllowAdd=="0"&&isAdmin=="0") {
$('.link-list').hide();
$('.no-taskinstance').show();
}
}
}
/*
列表展示-设置按钮点击事件
*/
function listSettingAddClickEvent() {
$("#settingbtn2").off("click").on("click",function(){
openUserConfigDlg("");
});
}
function settingBtnOnclickEvent() {
if (typeof (viewtype)=="undefined") {
var linkUrlobj = $("#settingbtn2").parents().find("iframe").attr("src");
if (linkUrlobj != null && linkUrlobj.cmd != null && linkUrlobj.cmd == "com.actionsoft.apps.addons.xpages_link_quickly") {
groupKey = linkUrlobj.groupKey;
isAllowAdd = linkUrlobj.isAllowAdd;
viewtype = linkUrlobj.viewType;
resourceId = "XPAGES-QUICKLY-"+groupKey;
}
}
openUserConfigDlg();
}
/*
功能链接点击事件
*/
function linkOpenEvent(param) {
$("."+param).off("click").on("click",function(e){
if ($(e.target).hasClass("deleteLink")||$(e.target).hasClass("updateLink")) {
return;
}
var target = $(this);
if (param=="app_icon"){
target = $(this).parent();
}
var linkTarget = target.attr("target");
var linkUrl = target.attr("linkurl");
if (linkTarget=="_blank"){
window.open(linkUrl);
} else if(linkTarget=="mainframe"){
var win = top.window.$('#main-frm');
if(win.length==0){
win = top.window.$('.metro-main-frame');
}
win.attr("src",linkUrl);
}else{
window.open(linkUrl);
}
e.stopPropagation();
});
return false;
}
/*
图标展示方式时,链接名称最多折两行显示
*/
function getLinkNameStrForType0() {
$(".app_name").ellipsis({maxWidth:50,maxCount:6});
}
function sortFunctionLink(p1,p2) {
$(p1).sortable({
axis : false,helper: 'clone',opacity: 0.6,revert: true ,scroll: true,distance: 10,delay: 500,cursor : 'crosshair',
start: function(event, ui) {
$(p2).css("border","1px dotted #cccccc");
},
stop: function(event, ui) {
$(".app_item").addClass("orderLinkCard");
var itemArr = [];
var itemJson = {};
var newTheItemOrder = parseInt(ui.item.attr("orderIndex"));//被移动的元素
var newTheItemId = ui.item.attr("linkid");//被移动的元素ID
itemJson.linkId = newTheItemId;
itemJson.linkOrder = newTheItemOrder;
itemArr.push(itemJson);
var preParam = ui.item.prev();
var preOrder = parseInt(preParam.attr("orderIndex"));
var nextParam = ui.item.next();//被移动元素的下一个元素
var nextParamOrdex = parseInt(nextParam.attr("orderIndex"));
var nextAllParams = ui.item.nextAll();//被移动元素之后的所有元素
var lastOrder = 0;
if(nextAllParams.length>0){
lastOrder =parseInt($(nextAllParams[nextAllParams.length-1]).attr("orderIndex")) ;
}
//需求全局类的index占据前100个人添加的在100之后
if (((newTheItemOrder<=100&&nextParamOrdex<=100&&((lastOrder+1)<=100))||(newTheItemOrder>100&&nextParamOrdex>100))&&(newTheItemOrder>=preOrder)){
var targetNewOrder = nextParamOrdex;
nextAllParams.each(function (index,ele) {
var target = $(ele);
var order = target.attr("orderIndex");
var linkId = target.attr("linkid");
var json = {};
json.linkId = linkId;
json.linkOrder = order;
itemArr.push(json);
})
saveLinkFunctionSort(itemArr,targetNewOrder);
}else{
return false;
}
}
});
}
function saveLinkFunctionSort(itemArr) {
var params = {
itemArr:awsui.encode(itemArr),
groupKey:groupKey
};
var url = './jd?sid=' + sid + '&cmd=com.actionsoft.apps.addons.xpages_linkquickly_sort_save';
awsui.ajax.post(url, params, function (responseObject) {
if (responseObject['result']=="ok"){
linkquicklys = responseObject.data.datas;
refreshLinkQuicklyData();
openOrderLinkCard();
} else{
$.simpleAlert(responseObject['msg'], responseObject['result']);
}
}, 'json');
}
/*排序".apps_group","app_item"*/
function openOrderLinkCard() {
$(".app_item").off("mouseenter");
$(".app_item").off("mouseleave");
$(".app_item").addClass("orderLinkCard");
if (isAllowAdd=="1"||isAdmin=="1") {
//显示编辑删除图标
$(".deleteLink").show();
$(".updateLink").show();
//管理员可排序
$(".orderLinkCard").each(function () {
bindMoveEvent($(this));
});
}
$("#settingbtn2").hide();
$("#orderLinkCard").hide();
$("#closeOrderLinkCard").show();
}
function closeOrderLinkCard() {
itemHoverEvent("app_item");
$(".app_item").removeClass("orderLinkCard");
$(".deleteLink").hide();
$(".updateLink").hide();
$(".app_item").each(function () {
$(this).unbind("mousedown");
});
$("#orderLinkCard").show();
$("#closeOrderLinkCard").hide();
$("#settingbtn2").show();
}
var moveArea = {};
moveArea['edit'] = false; // 编辑状态默认为false
moveArea.dragItem = {};
function bindMoveEvent(move_area_panel) {
// 准备拖曳
var dragStart = function (e, obj) {
if ($(e.target).hasClass("deleteLink")||$(e.target).hasClass("updateLink")) {
return;
}
// clone一个填充到功能菜单容器中为了可以在分页中进行移动
moveArea.dragItem = move_area_panel.clone();
moveArea.dragItem.moveable = true; // 移动模式
// 鼠标和选择块的pageX、pageY的差距
moveArea.dragItem.original_offsetTop = e.pageY - $(obj).offset().top;
moveArea.dragItem.original_offsetLeft = e.pageX - $(obj).offset().left;
var move_panel = $('.apps_group');
move_panel.after(moveArea.dragItem);
moveArea.dragItem.css('cursor', 'move').css('opacity', 0.6).css('z-index', 9)
.css('width', $(obj).width() - 2).css('height', $(obj).height() - 2).css('position', 'absolute')
.offset({
'top': $(obj).offset().top + 1,
'left': $(obj).offset().left + 1
}).css("border", "1px dashed gray");
// 将当前区域改为虚线框,并移除里面的内容
move_area_panel.addClass('temp');
move_area_panel.children().remove();
moveArea['originalId'] = move_area_panel.attr('linkid'); // 拖曳的源
pauseEvent(e);
e.stopPropagation();
}
$(move_area_panel).mousedown(function (e) {
dragStart(e, this);
e.stopPropagation();
});
$("#fullsearch-result").mousemove(function (e) {
if (!moveArea.dragItem.moveable) {
e.stopPropagation();
return false;
}
// 判断移动位置
var cur_nav_area_collection = $('.apps_group');
var nav_area_collection = cur_nav_area_collection; // 面板容器
// 是否移动到面板容器外
var drag_width_middle = moveArea.dragItem.offset().left + moveArea.dragItem.width() / 2; // 移动块的左右的中间线
var drag_height_middle = moveArea.dragItem.offset().top + moveArea.dragItem.height() / 2; // 移动块的上下的中间线
moveAreaPosition(e); // 移动块位置
var nav_area_panel_list = nav_area_collection.children();
var len = nav_area_panel_list.length;
for (var i = 0; i < len; i++) {
var obj = nav_area_panel_list.get(i);
var obj_left = $(obj).offset().left;
var obj_right = $(obj).offset().left + $(obj).width();
var obj_top = $(obj).offset().top;
var obj_bottom = $(obj).offset().top + $(obj).height();
if (drag_width_middle >= obj_left && drag_width_middle <= obj_right && drag_height_middle >= obj_top && drag_height_middle <= obj_bottom && $(obj).attr('linkid') != move_area_panel.attr('linkid')) { // 移动到目标位置
if (moveArea['targetItem'] != undefined && moveArea['targetId'] != $(obj).attr('linkid')) {
moveArea['targetId'] = $(obj).attr('linkid'); // 拖曳的目标
moveArea['targetItem'] = obj;
// 根据移动位置将功能菜单块重新排版
var nav_area_panel_temp = $('.apps_group').find('.app_item.temp');
var orderIdx_original = nav_area_panel_temp.attr('orderIndex') - 0;
var orderIdx_target = $(obj).attr('orderIndex') - 0;
if (orderIdx_original > orderIdx_target) { // 从后往前移,移动到目标位置的前面
$(obj).before(nav_area_panel_temp);
var newTheItemOrder = parseInt(nav_area_panel_temp.attr("orderIndex"));//被移动的元素
nav_area_panel_temp.attr('orderIndex',orderIdx_target);
var preParam = nav_area_panel_temp.prev();
var preOrder = parseInt(preParam.attr("orderIndex"));
var nextParam = nav_area_panel_temp.next();//被移动元素的下一个元素
var nextParamOrdex = parseInt(nextParam.attr("orderIndex"));
var nextAllParams = nav_area_panel_temp.nextAll();//被移动元素之后的所有元素
var lastOrder = 0;
if(nextAllParams.length>0){
lastOrder =parseInt($(nextAllParams[nextAllParams.length-1]).attr("orderIndex")) ;
}
//需求全局类的index占据前100个人添加的在100之后
if (orderIdx_original>100&&orderIdx_target<=100){
return false;
break;
}else{
nextAllParams.each(function (index,ele) {
var target = $(ele);
var order = target.attr("orderIndex");
target.attr("orderIndex",parseInt(order)+1);
});
}
} else { // 从前往后移,移动到目标位置的后面
$(obj).after(nav_area_panel_temp);
var objOrder = $(obj).attr('orderIndex');
var newTheItemOrder = parseInt(nav_area_panel_temp.attr("orderIndex"));//被移动的元素
nav_area_panel_temp.attr('orderIndex',orderIdx_target);
var preParam = nav_area_panel_temp.prev();
var preOrder = parseInt(preParam.attr("orderIndex"));
var nextParam = nav_area_panel_temp.next();//被移动元素的下一个元素
var nextParamOrdex = parseInt(nextParam.attr("orderIndex"));
var preAllParams = nav_area_panel_temp.prevAll();//被移动元素之前的所有元素
var firstOrder = 0;
if(preAllParams.length>0){
firstOrder =parseInt($(preAllParams[0]).attr("orderIndex")) ;
}
//需求全局类的index占据前100个人添加的在100之后
if (orderIdx_original<=100&&orderIdx_target>100){
return false;
break;
}else{
preAllParams.each(function (index,ele) {
var target = $(ele);
var order = target.attr("orderIndex");
if (order>orderIdx_original) {
target.attr("orderIndex",parseInt(order)-1);
}
});
}
}
break;
} else {
moveArea['targetId'] = $(obj).attr('linkid'); // 拖曳的目标
moveArea['targetItem'] = obj;
}
}
}
pauseEvent(e);
e.stopPropagation();
}).mouseup(function (e) {
if (moveArea.dragItem.moveable) {
moveArea.dragItem.moveable = false; // 取消移动模式
var move_area = $('#fullsearch-result').children('.app_item');
$('.apps_group').find('.app_item.temp').append(move_area.children()).removeClass('temp');
move_area.remove();
var data = [];
$('.apps_group').find('.app_item').each(function () {
var obj = {};
obj.linkId = $(this).attr("linkid");
obj.linkOrder = $(this).attr("orderIndex");
data.push(obj);
});
saveLinkFunctionSort(data);
}
pauseEvent(e);
e.stopPropagation();
});
}
// 移动块位置
var moveAreaPosition = function (e) {
moveArea.dragItem.offset({
top: e.pageY - moveArea.dragItem.original_offsetTop,
left: e.pageX - moveArea.dragItem.original_offsetLeft
});
e.stopPropagation();
};
//阻止事件冒泡
//不仅仅要stopPropagation还要preventDefault
function pauseEvent(e){
if(e.stopPropagation) e.stopPropagation();
if(e.preventDefault) e.preventDefault();
e.cancelBubble=true;
e.returnValue=false;
return false;
}