apps/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.ui.debug.js
2022-07-01 09:44:34 +08:00

4598 lines
131 KiB
JavaScript
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

/**
* 用户界面JS
*/
var UI = {
init : function() {
// 修改标题
$(".diagram_title").bind("click", function() {
if ($(this).hasClass("readonly")) {
return;
}
var title = $(this).text();
$(this).hide();
$("#title_container").append("<input type='text' maxlength='400'/>");
$("#title_container").children("input").val(title.replace(/(^\s+)|(\s+$)/g, "")).select();
$("#title_container").children("input").bind("blur",
function() {
changeTitle();
}).bind("keydown", function(e) {
if (e.keyCode == 13) {
changeTitle();
}
});
});
function changeTitle() {
var newTitle = $.trim($("#title_container").children("input").val());
newTitle = newTitle.replace(/(^\s+)|(\s+$)/g, "");
var oldTitle = $(".diagram_title").text();
oldTitle = oldTitle.replace(/(^\s+)|(\s+$)/g, "");
if (newTitle != oldTitle && chartId != "") {
var msgObj = {
action : "changeTitle",
title : newTitle
};
CLB.send(msgObj);
}
var title = newTitle != "" ? newTitle : oldTitle;
$("title").text(title);
$(".diagram_title").text(title).show();
$("#title_container").children("input").remove();
// 更新父级的相关数据
awsui.ajax.request({
url : './jd?cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_updatetitle&sid='
+ encodeURIComponent(sid)
+ '&uuid='
+ ruuid
+ '&title='
+ encodeURIComponent(title)
+ '&processDefId='
+ process.processDefId
+ '&appId='
+ appId,
async : false,// 同步,默认为异步
ok : function(msg) {
//同步设置文件属性中的流程名称
$("#file_attribute").contents().find("input[id='plName']").val(title);
try {
window.opener.parent.window.top.document.main_iframe.teamAppFrame.contentWindow._d157b007c785d2d988d3d81c8ddcb1b8.contentWindow.refresh();
} catch(e) {
try {
window.opener.parent.window.top.document.main_iframe.teamAppFrame.contentWindow._d157b007c785d2d988d3d81c8ddcb1b8.contentWindow.refresh();
} catch(e) {}
}
if (parent.repositoryTree) {
parent.repositoryTree.refreshNodeById({
id : ruuid,
name : title
});
}
if (parent.awsTabs) {
parent.awsTabs.setTitle(ruuid, title);
}
if(Model.define.coeProperties ){
Model.define.coeProperties.fileName = title;
}
}
})
}
/** ############################Toolbar列表############################ */
// 撤销
$("#bar_undo").button({
onClick : function() {
MessageSource.undo();
}
});
// 恢复
$("#bar_redo").button({
onClick : function() {
MessageSource.redo();
}
});
// 格式刷
$("#bar_brush").button({
onClick : function() {
if ($("#bar_brush").button("isSelected")) {
// 取消格式刷
$("#bar_brush").button("unselect");
$("#designer_op_help").hide();
$(document).unbind("keydown.cancelbrush");
Utils.selectCallback = null;
} else {
Designer.clipboard.brush();
}
}
});
// 字体
$("#bar_font_family").button({
onMousedown : function() {
$("#font_list").dropdown({
target : $("#bar_font_family"),
onSelect : function(item) {
var font = item.text();
Designer.setFontStyle({
fontFamily : font
});
$("#bar_font_family").button("setText",
font);
}
});
// 选中
var family = $("#bar_font_family").text().trim();
$("#font_list").children().each(function() {
if ($(this).text() == family) {
$("#font_list").dropdown("select",
$(this));
return false;
}
});
}
});
// 字号
$("#bar_font_size").spinner({
min : 12,
max : 100,
step : 1,
unit : "px",
onChange : function(val) {
Designer.setFontStyle({
size : val
});
}
});
$("#bar_font_size").spinner("setValue", "13px");
// 加粗
$("#bar_font_bold").button({
onClick : function() {
var bold = !$("#bar_font_bold").button("isSelected");
Designer.setFontStyle({
bold : bold
});
$("#bar_font_bold").toggleClass("selected");
}
});
// 斜体
$("#bar_font_italic").button({
onClick : function() {
var italic = !$("#bar_font_italic")
.button("isSelected");
Designer.setFontStyle({
italic : italic
});
$("#bar_font_italic").toggleClass("selected");
}
});
// 下划线
$("#bar_font_underline").button({
onClick : function() {
var underline = !$("#bar_font_underline")
.button("isSelected");
Designer.setFontStyle({
underline : underline
});
$("#bar_font_underline").toggleClass("selected");
}
});
// 字体颜色
$("#bar_font_color").button({
onMousedown : function() {
var color = $("#bar_font_color").button("getColor");
$.colorpicker({
target : $("#bar_font_color"),
onSelect : function(color) {
Designer.setFontStyle({
color : color
});
$("#bar_font_color").button("setColor",
color)
},
color : color
});
}
});
// 文本对齐
$("#bar_font_align").button({
onMousedown : function() {
$("#font_align_list").dropdown({
target : $("#bar_font_align"),
onSelect : function(item) {
var align = {};
align[item.attr("cate")] = item
.attr("al");
Designer.setFontStyle(align);
}
});
}
});
// 填充
$("#bar_fill").button({
onMousedown : function() {
var color = $("#bar_fill").button("getColor");
$.colorpicker({
target : $("#bar_fill"),
onSelect : function(color) {
Designer.setFillStyle({
type : "solid",
color : color
});
$("#bar_fill").button("setColor", color)
},
color : color,
extend : "<div id='bar_fill_gradient' title='渐变' class='toolbar_button active'><div class='ico gradient'></div></div><!--div id='bar_fill_img' title='图片...' class='toolbar_button active'><div class='ico ico_img'></div></div--><!--div id='bar_fill_more' class='toolbar_button active'>More...</div-->"
});
$("#bar_fill_gradient").unbind().bind("click", function() {
Designer.setFillStyle({
type : "gradient"
});
$("#color_picker").dropdown("close");
});
$("#bar_fill_img").unbind().bind("click", function() {
UI.showImageSelect(function(fileId, w, h) {
Designer.setFillStyle({
type : "image",
fileId : fileId,
imageW : w,
imageH : h
});
});
$("#color_picker").dropdown("close");
});
$("#bar_fill_more").unbind().bind("click", function() {
Dock.showView("graphic");
$("#color_picker").dropdown("close");
});
}
});
// 线条颜色
$("#bar_line_color").button({
onMousedown : function() {
var color = $("#bar_line_color").button("getColor");
$.colorpicker({
target : $("#bar_line_color"),
onSelect : function(color) {
Designer.setLineStyle({
lineColor : color
});
$("#bar_line_color").button("setColor",
color)
},
color : color
});
}
});
// 线条宽度
$("#bar_line_width").button({
onMousedown : function() {
$("#line_width_list").dropdown({
target : $("#bar_line_width"),
onSelect : function(item) {
var width = parseInt(item.text());
Designer.setLineStyle({
lineWidth : width
});
}
});
// 选中
var width = Utils.getSelected()[0].lineStyle.lineWidth;
$("#line_width_list").children().each(function() {
if (parseInt($(this).text()) == width) {
$("#line_width_list").dropdown("select",
$(this));
}
});
}
});
// 线条样式
$("#bar_line_style").button({
onMousedown : function() {
$("#line_style_list").dropdown({
target : $("#bar_line_style"),
onSelect : function(item) {
var lineStyle = item.attr("line");
Designer.setLineStyle({
lineStyle : lineStyle
});
}
});
// 选中
var style = Utils.getSelected()[0].lineStyle.lineStyle;
var item = $("#line_style_list").children("li[line=" + style
+ "]");
$("#line_style_list").dropdown("select", item);
}
});
// 连接线类型
$("#bar_linkertype").button({
onMousedown : function() {
$("#line_type_list").dropdown({
target : $("#bar_linkertype"),
onSelect : function(item) {
var type = item.attr("tp");
Designer.setLinkerType(type);
var cls = item.children("div").attr("class");
$("#bar_linkertype").children("div:eq(0)").attr(
"class", cls);
}
});
}
});
// 开始箭头
$("#bar_beginarrow").button({
onMousedown : function() {
$("#beginarrow_list").dropdown({
target : $("#bar_beginarrow"),
onSelect : function(item) {
var arrow = item.attr("arrow");
Designer.setLineStyle({
beginArrowStyle : arrow
});
var cls = item.children("div").attr("class");
$("#bar_beginarrow").children("div:eq(0)").attr(
"class", cls);
}
});
// 选中
var style = Utils.getSelectedLinkers()[0].lineStyle.beginArrowStyle;
var item = $("#beginarrow_list").children("li[arrow=" + style
+ "]");
$("#beginarrow_list").dropdown("select", item);
}
});
// 结束箭头
$("#bar_endarrow").button({
onMousedown : function() {
$("#endarrow_list").dropdown({
target : $("#bar_endarrow"),
onSelect : function(item) {
var arrow = item.attr("arrow");
Designer.setLineStyle({
endArrowStyle : arrow
});
var cls = item.children("div").attr("class");
$("#bar_endarrow").children("div:eq(0)").attr("class",
cls);
}
});
// 选中
var style = Utils.getSelectedLinkers()[0].lineStyle.endArrowStyle;
var item = $("#endarrow_list").children("li[arrow=" + style
+ "]");
$("#endarrow_list").dropdown("select", item);
}
});
// 顶层底层
$("#bar_front").button({
onClick : function() {
Designer.layerShapes("front");
}
});
$("#bar_back").button({
onClick : function() {
Designer.layerShapes("back");
}
});
// 加解锁
$("#bar_lock").button({
onClick : function() {
Designer.lockShapes();
}
});
$("#bar_unlock").button({
onClick : function() {
Designer.unlockShapes();
}
});
$("#bar_link").button({
onClick : function() {
UI.showInsertLink();
}
});
$("#bar_risk").button({
onClick : function() {
UI.showRiskDlg();
}
});
$("#bar_importShape").button({
onClick : function() {
UI.showImportShapeDlg();
}
});
$("#bar_import").button({
onClick : function() {
UI.showImportDlg();
}
});
$("#bar_upfile").button({
onClick: function() {
openUpFile()
}
});
$("#bar_activityNo").button({//节点按照编号排序
onClick: function() {
UI.activityNoDlg();
}
});
/** ##############AWS新增工具栏菜单开始############# */
// 排列
$("#bar_arrange").button({
onMousedown : function() {
$("#bar_list_arrange").dropdown({
target : $("#bar_arrange"),
onSelect : function(item) {
menuSelected(item);
}
});
}
});
// 视图
$("#bar_view").button({
onMousedown : function() {
$("#bar_list_view").dropdown({
target : $("#bar_view"),
onSelect : function(item) {
menuSelected(item);
}
});
}
});
// 插入
/*
* $("#bar_insert").button({ onMousedown : function() {
* $("#bar_list_insert").dropdown({ target : $("#bar_insert"), onSelect :
* function(item) { menuSelected(item); } }); } });
*/
/** ##############AWS新增工具栏菜单结束############# */
/** ##############菜单列表############## */
$("#menu_bar").children().bind("mousedown", function(e) {
var tar = $(this);
showMenuBarList(tar);
e.stopPropagation();
});
$("#menu_bar").children().bind("mouseenter", function() {
var tar = $(this);
if ($("#ui_container").find(".options_menu:visible").length > 0) {
showMenuBarList(tar);
}
});
function showMenuBarList(menuBar) {
var menuId = menuBar.attr("menu");
// 只读
if (menuBar.hasClass("readonly")) {
return;
}
$("#" + menuId).dropdown({
target : menuBar,
onSelect : function(item) {
menuSelected(item);
}
});
if (menuId == "bar_list_page") {
if (Model.define.page.showGrid) {
$("#bar_list_page").dropdown(
"select",
$("#bar_list_page")
.children("li[ac=set_page_showgrid]"));
} else {
$("#bar_list_page").dropdown(
"unselect",
$("#bar_list_page")
.children("li[ac=set_page_showgrid]"));
}
var item = $("#bar_list_pagesize li[w="
+ Model.define.page.width + "][h="
+ Model.define.page.height + "]");
if (item.length > 0) {
$("#bar_list_pagesize").dropdown("select", item);
} else {
$("#bar_list_pagesize").dropdown("select",
$("#page_size_custom"));
}
$("#page_size_w").spinner("setValue",
Model.define.page.width + "px");
$("#page_size_h").spinner("setValue",
Model.define.page.height + "px");
item = $("#bar_list_padding").children("li[p="
+ Model.define.page.padding + "]");
$("#bar_list_padding").dropdown("select", item);
item = $("#bar_list_gridsize").children("li[s="
+ Model.define.page.gridSize + "]");
$("#bar_list_gridsize").dropdown("select", item);
} else if (menuId == "bar_list_view") {
var item = $("#bar_list_view").children(".static[zoom='"
+ Designer.config.scale + "']");
if (item.length) {
$("#bar_list_page").dropdown("select", item);
}
}
}
function menuSelected(item) {
var action = item.attr("ac");
// 编辑菜单
if (action == "rename") {
$(".diagram_title").trigger("click");
} else if (action == "close") {
if (parent.closeTabById) {
parent.closeTabById(chartId);
} else {
window.close();
}
} else if (action == "saveAs") {
UI.showSaveAs();
} else if (action == "preview") {//在线预览流程图片
UI.doPreview();
} else if (action == "saveImage") {//生成图片和缩略图
UI.saveImage();
} else if (action == "versionCompare") {
UI.showVersionCompare();
} else if (action == "output") {// 导出流程手册并预览
UI.doOutputProcess();
} else if (action == "export") {
$("#export_dialog").dlg();
} else if (action == "processExport") {
UI.processExport();
} else if (action == "undo") {
MessageSource.undo();
} else if (action == "redo") {
MessageSource.redo();
} else if (action == "cut") {
Designer.clipboard.cut();
} else if (action == "copy") {
Designer.clipboard.copy();
} else if (action == "paste") {
Designer.clipboard.paste();
} else if (action == "duplicate") {
Designer.clipboard.duplicate();
} else if (action == "brush") {
Designer.clipboard.brush();
} else if (action == "selectall") {
Designer.selectAll();
} else if (action == "openNewPage") {
UI.openNewPage();//新页面打开
} else if (action == "batchreplace") {
UI.batchReplace();
} else if (action == "delete") {
Designer.op.removeShape();
// 视图缩放
} else if (action == "zoom") {
var zoom = item.attr("zoom");
if (zoom == "in") {
Designer.zoomIn();
} else if (zoom == "out") {
Designer.zoomOut();
} else {
var zoomScale = parseFloat(zoom);
Designer.setZoomScale(zoomScale);
}
// 插入
} else if (action == "insert") {
var insertType = item.attr("in");
if (insertType == "text") {
Designer.op.changeState("creating_free_text");
} else if (insertType == "image") {
UI.showImageSelect(function(fileId, w, h) {
UI.insertImage(fileId, w, h);
});
} else if (insertType == "line") {
Designer.op.changeState("creating_free_linker");
}
// 页面
} else if (action == "set_page_size") {
var w = parseInt(item.attr("w"));
var h = parseInt(item.attr("h"));
Designer.setPageStyle({
width: w,
height: h
});
} else if (action == "set_page_padding") {
var p = parseInt(item.attr("p"));
Designer.setPageStyle({
padding: p
})
} else if (action == "set_page_showgrid") {
if (item.menuitem("isSelected")) {
item.menuitem("unselect");
Designer.setPageStyle({
showGrid: false
});
} else {
item.menuitem("select");
Designer.setPageStyle({
showGrid: true
});
}
} else if (action == "set_page_gridsize") {
var s = parseInt(item.attr("s"));
Designer.setPageStyle({
gridSize: s
})
}
// 排列
else if (action == "front") {
Designer.layerShapes("front");
} else if (action == "back") {
Designer.layerShapes("back");
} else if (action == "forward") {
Designer.layerShapes("forward");
} else if (action == "backward") {
Designer.layerShapes("backward");
} else if (action == "align_shape") {
var align = item.attr("al");
Designer.alignShapes(align);
} else if (action == "distribute_shape") {
var type = item.attr("dis");
Designer.distributeShapes(type);
} else if (action == "match_size") {
if (item.attr("custom")) {
Dock.showView("metric");
} else {
var type = {};
var w = item.attr("w");
var h = item.attr("h");
if (w) {
type.w = w;
}
if (h) {
type.h = h;
}
Designer.matchSize(type);
}
} else if (action == "lock") {
Designer.lockShapes();
} else if (action == "unlock") {
Designer.unlockShapes();
} else if (action == "group") {
Designer.group();
} else if (action == "ungroup") {
Designer.ungroup();
} else if (action == "hotkey") {
UI.showHotKey();
} else if (action == "feedback") {
UI.showFeedBack();
} else if (action == "getting_started") {
UI.gettingStart();
}
}
$("#page_size_w").spinner({
min : 200,
unit : "px",
step : 100,
onChange : function(val) {
Designer.setPageStyle({
width : val
});
}
});
$("#page_size_h").spinner({
min : 200,
unit : "px",
step : 100,
onChange : function(val) {
Designer.setPageStyle({
height : val
});
}
});
// 给设置页面背景色放一个colorpicker
var pickerHtml = $("#color_picker").html();
var newPicker = $("<div class='menu color_picker extend_menu'>"
+ pickerHtml + "</div>").appendTo($("#bar_page_color"));
newPicker.css("right", "-179px");
newPicker.children(".color_items").children("div").unbind().bind(
"click", function() {
var color = $(this).css("background-color");
color = color.replace(/\s/g, "");
color = color.substring(4, color.length - 1);
Designer.setPageStyle({
backgroundColor : color
});
$("#bar_list_page").dropdown("close");
});
// 抛出事件,控制状态
Designer.events.push("selectChanged", 0);
Designer.events.push("clipboardChanged", 0);
Designer.events.push("undoStackChanged", 0);
Designer.events.push("redoStackChanged", 0);
},
/**
* 更新UI
*/
update : function() {
var selectedIds = Utils.getSelectedIds();
var count = selectedIds.length;
var linkerIds = Utils.getSelectedLinkerIds();
var linkerCount = linkerIds.length;
var shapeIds = Utils.getSelectedShapeIds();
var shapeCount = shapeIds.length;
var lockedCount = Utils.getSelectedLockedIds().length;
var groupCount = Utils.getSelectedGroups().length;
// 排列菜单
var arrangeMenu = $("#bar_list_arrange");
if (count == 0) {
$(".toolbar").find(".selected").removeClass("selected");
// 没有选中,让某些按钮失效
if ($("#designer_op_help").is(":visible")) {
$("#bar_brush").button("enable");
$("#bar_brush").button("select");
} else {
$("#bar_brush").button("disable");
}
// 字体
$("#bar_font_family").button("disable");
$("#bar_font_size").button("disable");
$("#bar_font_bold").button("disable");
$("#bar_font_italic").button("disable");
$("#bar_font_underline").button("disable");
$("#bar_font_color").button("disable");
$("#bar_font_align").button("disable");
// 线条
$("#bar_line_color").button("disable");
$("#bar_line_width").button("disable");
$("#bar_line_style").button("disable");
// 顶层底层
$("#bar_front").button("disable");
$("#bar_back").button("disable");
// 锁定
$("#bar_lock").button("disable");
// 编辑菜单
var editMenu = $("#bar_list_edit");
editMenu.children("li[ac=cut]").menuitem("disable");
editMenu.children("li[ac=copy]").menuitem("disable");
editMenu.children("li[ac=duplicate]").menuitem("disable");
editMenu.children("li[ac=brush]").menuitem("disable");
editMenu.children("li[ac=delete]").menuitem("disable");
// 排列菜单
arrangeMenu.children("li[ac=front]").menuitem("disable");
arrangeMenu.children("li[ac=back]").menuitem("disable");
arrangeMenu.children("li[ac=forward]").menuitem("disable");
arrangeMenu.children("li[ac=backward]").menuitem("disable");
arrangeMenu.children("li[ac=lock]").menuitem("disable");
// 节点编号排序
$("#bar_activityNo").button("enable");
$("#bar_activityNo div").removeClass('extend_activityNoDisable');
$("#bar_activityNo div").addClass('extend_activityNo');
} else {
if (editable) {
// 选中,让某些按钮激活
$("#bar_brush").button("enable");
if ($("#designer_op_help").is(":visible")) {
$("#bar_brush").button("select");
}
$("#bar_font_family").button("enable");
$("#bar_font_size").button("enable");
$("#bar_font_bold").button("enable");
$("#bar_font_italic").button("enable");
$("#bar_font_underline").button("enable");
$("#bar_font_color").button("enable");
$("#bar_font_align").button("enable");
// 线条
$("#bar_line_color").button("enable");
$("#bar_line_width").button("enable");
$("#bar_line_style").button("enable");
// 顶层底层
$("#bar_front").button("enable");
$("#bar_back").button("enable");
// 锁定
$("#bar_lock").button("enable");
// 编辑菜单
var editMenu = $("#bar_list_edit");
editMenu.children("li[ac=cut]").menuitem("enable");
editMenu.children("li[ac=copy]").menuitem("enable");
editMenu.children("li[ac=duplicate]").menuitem("enable");
editMenu.children("li[ac=brush]").menuitem("enable");
editMenu.children("li[ac=delete]").menuitem("enable");
// 排列菜单
arrangeMenu.children("li[ac=front]").menuitem("enable");
arrangeMenu.children("li[ac=back]").menuitem("enable");
arrangeMenu.children("li[ac=forward]").menuitem("enable");
arrangeMenu.children("li[ac=backward]").menuitem("enable");
arrangeMenu.children("li[ac=lock]").menuitem("enable");
// 设置Toolbar样式
var shape = Model.getShapeById(selectedIds[0]);
$("#bar_font_family").button("setText", shape.fontStyle.fontFamily);
$("#bar_font_size")
.spinner("setValue", shape.fontStyle.size + "px");
if (shape.fontStyle.bold) {
$("#bar_font_bold").button("select");
} else {
$("#bar_font_bold").button("unselect");
}
if (shape.fontStyle.italic) {
$("#bar_font_italic").button("select");
} else {
$("#bar_font_italic").button("unselect");
}
if (shape.fontStyle.underline) {
$("#bar_font_underline").button("select");
} else {
$("#bar_font_underline").button("unselect");
}
$("#bar_font_color").button("setColor", shape.fontStyle.color);
$("#bar_line_color").button("setColor", shape.lineStyle.lineColor);
// 节点编号排序
$("#bar_activityNo").button("disable");
$("#bar_activityNo div").removeClass('extend_activityNo');
$("#bar_activityNo div").addClass('extend_activityNoDisable');
}
}
// AWS增加的按钮需要被控制开始
if (count == 0) {
$("#toolbar-data-attr").button("disable");
// 节点属性
$("#toolbar-data-attr").unbind("click");
$("#bar_arrange").button("disable");
} else {
$("#toolbar-data-attr").button("enable");
// 节点属性
$("#toolbar-data-attr").bind("click", function() {
showPropertiesDialog();
});
$("#bar_arrange").button("enable");
}
// AWS增加的按钮需要被控制完毕
// 通过图形的数量,判读是否可以填充
if (shapeCount == 0) {
$("#bar_fill").button("disable");
$("#toolbar-shape-attr").button("disable"); //形状属性
} else {
if (editable) {
$("#bar_fill").button("enable");
}
var shape = Model.getShapeById(shapeIds[0]);
// 图形填充
if (shape.fillStyle.type == "solid") {
$("#bar_fill").button("setColor", shape.fillStyle.color);
} else if (shape.fillStyle.type == "gradient") {
$("#bar_fill").button("setColor", shape.fillStyle.endColor);
}
if(shapeCount == 1 && shape.name == BPMN_TYPE_USER_TASK) { //控制值选择一个人工任务时形状属性可用
$("#toolbar-shape-attr").button("enable"); //形状属性
} else {
$("#toolbar-shape-attr").button("disable"); //形状属性
}
}
if (shapeCount != 1) {
$("#bar_link, #bar_risk").button("disable");
$("#dock_btn_shapeConfig").button("disable");
$("#dock_btn_shapeConfig").bind('click', function() {
$.simpleAlert("请选择形状");
});
} else {
$("#dock_btn_shapeConfig").unbind('click');
$("#dock_btn_shapeConfig").button("enable");
if (editable) {
$("#bar_link").button("enable");
}
// 关联/推送文件不显示
if ($('#bar_rmark').length == 0 && $('#bar_cancel_aws_correlate').length == 0) {
$("#bar_risk").button("enable");
} else {
$("#bar_risk").button("disable");
}
}
// 通过连接线的数量,判断是否可以修改箭头等
if (linkerCount == 0) {
$("#bar_linkertype").button("disable");
$("#bar_beginarrow").button("disable");
$("#bar_endarrow").button("disable");
} else {
$("#bar_linkertype").button("enable");
$("#bar_beginarrow").button("enable");
$("#bar_endarrow").button("enable");
var shape = Model.getShapeById(linkerIds[0]);
// 设置Toolbar的线条样式
$("#bar_linkertype").children("div:eq(0)").attr("class",
"ico linkertype_" + shape.linkerType.toLowerCase());
if ( typeof shape.lineStyle.beginArrowStyle != "undefined") {
$("#bar_beginarrow").children("div:eq(0)").attr(
"class",
"ico ico_arrow larrow_"
+ shape.lineStyle.beginArrowStyle.toLowerCase());
}
if ( typeof shape.lineStyle.endArrowStyle != "undefined") {
$("#bar_endarrow").children("div:eq(0)").attr(
"class",
"ico ico_arrow rarrow_"
+ shape.lineStyle.endArrowStyle.toLowerCase());
}
}
// 通过锁定的数量,判断是否可以解除锁定
if (lockedCount == 0) {
$("#bar_unlock").button("disable");
arrangeMenu.children("li[ac=unlock]").menuitem("disable");
} else {
$("#bar_unlock").button("enable");
arrangeMenu.children("li[ac=unlock]").menuitem("enable");
}
// 是否激活组合、对齐条件是选中图形要不少于2个
if (count < 2) {
arrangeMenu.children("li[ac=group]").menuitem("disable");
$("#bar_arrange_align").menuitem("disable");
} else {
arrangeMenu.children("li[ac=group]").menuitem("enable");
$("#bar_arrange_align").menuitem("enable");
}
// 是否激活匹配大小条件是选中形状要不少于2个
if (shapeCount < 2) {
$("#bar_arrange_match").menuitem("disable");
} else {
$("#bar_arrange_match").menuitem("enable");
}
// 是否激活排列图形菜单条件是选中图形要不少于3个
if (count < 3) {
$("#bar_arrange_dist").menuitem("disable");
} else {
$("#bar_arrange_dist").menuitem("enable");
}
// 通过组合的数量,判断是否可以取消组合
if (groupCount == 0) {
arrangeMenu.children("li[ac=ungroup]").menuitem("disable");
} else {
arrangeMenu.children("li[ac=ungroup]").menuitem("enable");
}
//文件串联分析工具在未选择图形的时候有效
if($("#dock_btn_eteanalysis").length != 0) {
if (count == 0) {
$("#dock_btn_eteanalysis").find(".awsui-iconfont").css("color","black");
$("#dock_btn_eteanalysis").button("enable");
$("#dock_btn_eteanalysis").removeAttr("onclick");
$("#dock_btn_eteanalysis").off("click").on("click", function(){
var f = $('#eteCascadeAnalysisForm');
f.find(':input[name=uuid]').val(ruuid);
f.submit();
});
} else {
$("#dock_btn_eteanalysis").find(".awsui-iconfont").css("color","gray");
$("#dock_btn_eteanalysis").button("disable");
$("#dock_btn_eteanalysis").removeAttr("onclick");
$("#dock_btn_eteanalysis").off("click");
}
}
},
/**
* 打开插入链接
*/
showInsertLink : function() {
$("#link_dialog").dlg();
var addr = Utils.getSelected()[0].link;
if (!addr) {
addr = "";
}
$("#linkto_addr").val(addr).select();
$("#linkto_addr").unbind().bind("keydown", function(e) {
if (e.keyCode == 13) {
UI.setLink();
}
});
},
/**
* 设置连接
*/
setLink : function() {
var newLink = $("#linkto_addr").val();
var shape = Utils.getSelected()[0];
shape.link = newLink;
Model.update(shape);
$('#link_dialog').dlg('close');
},
/**
* 选中图片后的回调
*
* @type {}
*/
imageSelectedCallback : null,
/**
* 打开图片选择
*/
showImageSelect : function(callback) {
if (callback) {
this.imageSelectedCallback = callback;
} else {
this.imageSelectedCallback = null;
}
this.fetchingRequest = null;
var height = $(window).height() - 200;
if (height > 550) {
height = 550;
} else if (height < 200) {
height = 200;
}
$(".image_list").height(height);
// this.showImageSelectContent("upload");
$("#image_dialog").dlg({
onClose : function() {
if (UI.fetchingRequest) {
UI.fetchingRequest.abort();
}
}
});
// 加载用户图片
if ($("#image_select_upload").is(":visible")) {
UI.loadUserImages();
};
// 左侧分类绑定事件
$(".image_sources").children().unbind().bind("click", function() {
UI.showImageSelectContent($(this).attr("ty"));
});
// 上传
$("#upload_img_res").empty();
$("#input_upload_image").unbind().bind("change", function() {
$("#upload_img_res")
.html("<span style='color: #666'>上传中...</span>");
$("#frm_upload_image").submitForm({
success : function(result) {
if (result.result == "type_wrong") {
$("#upload_img_res").html("此文件不是图片,请重新选择");
} else if (result.result == "size_wrong") {
$("#upload_img_res").html("文件大小超出要求最大2M");
} else if (result.result == "exception") {
$("#upload_img_res").html("无法使用此图片,请选择其他图片");
} else {
var img = result.image;
UI.setShapeImage(img.fileId, img.imageW,
img.imageH);
}
}
});
});
// 输入URL
$("#input_img_url").val("");
$("#img_url_area").empty();
var oldUrl = "";
function urlChanged() {
var url = $("#input_img_url").val().trim();
if (url != oldUrl) {
oldUrl = url
if (url != "") {
if (url.indexOf("http") < 0) {
url = "http://" + url;
}
$("#img_url_area")
.html("<span class='img_url_loading_tip'>正在加载预览...</span>");
var newImage = $("<img class='img_url_loading' src='" + url
+ "'/>").appendTo("#img_url_area");
newImage.unbind().bind("load", function() {
newImage.show().addClass("img_url_loaded");
$(".img_url_loading_tip").remove();
}).bind("error", function() {
$("#img_url_area")
.html("<div class='img_url_error'>无法在此地址下加载图片。<ul><li>请检查图片地址是否输入正确。</li><li>确保图片地址是公开的。</li><ul></div>");
});
}
}
}
$("#input_img_url").unbind().bind("paste", function() {
urlChanged();
}).bind("keyup", function() {
urlChanged();
});
// 搜索
$("#input_img_search").unbind().bind("keydown", function(e) {
if (e.keyCode == 13) {
UI.searchImgByGoogle();
}
});
$("#btn_img_search").unbind().bind("click", function() {
UI.searchImgByGoogle();
});
// 完成按钮
$("#set_image_submit").button("enable");
$("#set_image_submit").button({
onClick : function() {
var currentTab = $(".image_sources").children(".active")
.attr("ty");
if (currentTab == "upload") {
var selectedImg = $("#user_image_items")
.children(".image_item_selected");
if (selectedImg.length > 0) {
var fileId = selectedImg.attr("fileId");
var imageW = selectedImg.attr("w");
var imageH = selectedImg.attr("h");
UI.setShapeImage(fileId, imageW, imageH);
} else {
$("#image_dialog").dlg("close");
}
} else if (currentTab == "url") {
if ($(".img_url_loaded").length > 0) {
var url = $(".img_url_loaded").attr("src");
UI.setShapeImageByURL(url);
} else {
$("#image_dialog").dlg("close");
}
} else {
// 搜索
var selectedImg = $("#google_image_items")
.children(".image_item_selected");
if (selectedImg.length > 0) {
var url = selectedImg.attr("u");
UI.setShapeImageByURL(url);
} else {
$("#image_dialog").dlg("close");
}
}
}
});
// 取消按钮
$("#set_image_cancel").button({
onClick : function() {
$("#image_dialog").dlg("close");
}
});
$("#set_image_text").empty();
},
/**
* 显示图片设置类型
*/
showImageSelectContent : function(type) {
$(".image_list").hide();
$("#image_select_" + type).show().find("input[type=text]").select();
$(".image_sources").children().removeClass("active");
$(".image_sources").children("li[ty=" + type + "]").addClass("active");
},
/**
* 加载用户图片
*/
loadUserImages : function(refresh) {
$("#user_image_items").empty();
$.ajax({
url : "/user_image/list",
success : function(data) {
if (data.images) {
for (var i = 0; i < data.images.length; i++) {
var img = data.images[i];
UI.appendUserImage(img);
}
$("#user_image_items")
.append("<div style='clear: both'></div>");
}
}
});
$("#user_image_items").attr("loaded", "true");
},
searchIndex : 0,
searchKeywords : "",
/**
* 通过Google搜索图片
*/
searchImgByGoogle : function() {
var keywords = $("#input_img_search").val();
if (keywords.trim() != "") {
$("#google_image_items").empty();
this.searchKeywords = encodeURI(keywords);
this.searchIndex = 0;
this.loadGoogleImg();
} else {
$("#input_img_search").focus();
}
},
/**
* 加载Google图片
*/
loadGoogleImg : function() {
$
.getScript("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q="
+ this.searchKeywords
+ "&rsz=8&start="
+ (this.searchIndex * 16)
+ "&callback=UI.googleImgCallback");
$
.getScript("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q="
+ this.searchKeywords
+ "&rsz=8&start="
+ (this.searchIndex * 16 + 8)
+ "&callback=UI.googleImgCallback");
$(".gg_img_more").remove();
$("#google_image_items")
.append("<div class='img_gg_loading_tip'>正在加载图片...</div>");
this.searchIndex++;
},
/**
* Google搜索回调
*
* @param {}
* data
*/
googleImgCallback : function(data) {
var responseData = data.responseData;
var results = responseData.results;
for (var i = 0; i < results.length; i++) {
var item = results[i];
UI.appendGoogleImage(item);
}
$("#google_image_items").append("<div style='clear: both'></div>");
$(".img_gg_loading_tip").remove();
$(".gg_img_more").remove();
if (this.searchIndex <= 3) {
$("#google_image_items")
.append("<div onclick='UI.loadGoogleImg()' class='gg_img_more toolbar_button active'>显示更多结果...</div>");
}
},
/**
* 添加一个用户图片
*/
appendUserImage : function(img) {
var box = $("<div class='image_item' id='" + img.imageId + "' fileId='"
+ img.fileId + "' w='" + img.imageW + "' h='" + img.imageH
+ "'></div>").appendTo($("#user_image_items"));
box.unbind().bind("click", function() {
$(".image_item_selected")
.removeClass('image_item_selected');
$(this).addClass('image_item_selected');
}).bind("mouseenter", function() {
var target = $(this);
var remove = $("<div class='ico ico_remove_red'></div>")
.appendTo(target);
var id = target.attr("id");
remove.bind("click", function() {
target.fadeOut();
$.ajax({
url : "/user_image/remove",
data : {
imageId : id
}
});
});
}).bind("mouseleave", function() {
$(this).find(".ico_remove_red").remove();
});
var location = img.fileId;
var newImage = $("<img src='" + location + "'/>").appendTo(box);
newImage.bind("load", function() {
$(this).css("margin-top", (140 - $(this).height()) / 2);
});
},
/**
* 添加一个Google搜索的图片
*/
appendGoogleImage : function(img) {
var title = img.title + " (" + img.width + " × " + img.height + ")";
var box = $("<div class='image_item' u='" + img.url + "' title='"
+ title + "'></div>").appendTo($("#google_image_items"));
box.unbind().bind("click", function() {
$(".image_item_selected")
.removeClass('image_item_selected');
$(this).addClass('image_item_selected');
});
var newImage = $("<img src='" + img.tbUrl + "'/>").appendTo(box);
newImage.bind("load", function() {
$(this).css("margin-top", (140 - $(this).height()) / 2);
});
},
/**
* 设置形状的背景图片
*
* @param {}
* source
*/
setShapeImage : function(fileId, w, h) {
if (this.imageSelectedCallback) {
this.imageSelectedCallback(fileId, w, h);
}
$("#image_dialog").dlg("close");
},
/**
* 加载URL图片的ajax请求对象
*
* @type {}
*/
fetchingRequest : null,
/**
* 通过URL设置图片
*
* @param {}
* url
*/
setShapeImageByURL : function(url) {
$("#set_image_text").removeClass("errored").text("正在应用图片,请稍候...");
$("#set_image_submit").button("disable");
UI.fetchingRequest = $.ajax({
url : "/user_image/reference",
data : {
url : url
},
success : function(result) {
if (result.result == "exception") {
$("#set_image_text").addClass("errored")
.html("无法使用此图片,请选择其他图片");
} else {
$("#set_image_text").empty();
var img = result.image;
UI
.setShapeImage(img.fileId, img.imageW,
img.imageH);
}
}
});
},
/**
* 插入图片
*
* @param {}
* source
* @param {}
* location
* @param {}
* w
* @param {}
* h
*/
insertImage : function(fileId, w, h) {
w = parseInt(w);
h = parseInt(h);
var layout = $("#designer_layout");
var centerX = layout.width() / 2 + layout.offset().left;
var centerY = layout.height() / 2 + layout.offset().top;
var pos = Utils.getRelativePos(centerX, centerY, $("#designer_canvas"));
var shape = Model.create("standardImage", pos.x.restoreScale() - w / 2,
pos.y.restoreScale() - h / 2);
shape.props.w = w;
shape.props.h = h;
shape.fillStyle = {
type : "image",
fileId : fileId,
display : "fill",
imageW : w,
imageH : h
};
Model.add(shape);
Designer.painter.renderShape(shape);
Utils.unselect();
Utils.selectShape(shape.id);
},
/**
* 导出流程手册
*/
doOutputProcess: function () {
},
/**
* 加载预览数据
*/
doPreview: function () {
if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") {
if (editable) {
$.simpleAlert('页面中有未保存的内容,请先保存');
return;
}
}
$.simpleAlert('请稍后', 'loading');
$.post("./jd", {
cmd: "com.actionsoft.apps.coe.pal_pl_repository_df",
sid: sid,
"uuid": chartId
}, function t(msg) {
$("#previewContent .procImg").remove();
if (typeof(msg) == "string") {
msg = eval('(' + msg + ')');
}
msg = msg.data.url;
if (msg == "") {
alert("请您先保存一个版本!");
} else {
var img = $("<img class='procImg' src='" + msg + "'style='margin: 10px 10px;'>");
var hh = img.width();
$("#previewContent").append(img);
}
$("#previewDialog").dialog({
title: "预览",
width: window.innerWidth * 0.9,
height: window.innerHeight * 0.92
});
$.simpleAlert("close");
}, "text");
},
/**
* 生成图片和缩略图
*/
saveImage : function() {
if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") {
if (editable) {
$.simpleAlert('页面中有未保存的内容,请先保存');
return;
}
}
$.simpleAlert('请稍后', 'loading');
$.ajax({
type: "POST",
url: "./jd",
data: {
sid: sid,
cmd: "com.actionsoft.apps.coe.pal_pl_repository_image_save",
uuid: chartId
},
success: function (r, textStatus, jqXHR) {
if(r.result == 'ok' ) {
$.simpleAlert("close");
$.simpleAlert('图片创建完成', 'ok', 2000, {callback:function() {
var options = {
title : "提示",
content:"是否打开图片预览",
onConfirm: function(){
$.simpleAlert("close");
UI.doPreview();// 预览
},
onCancel : function(){
}
};
$.confirm(options);
}});
} else {
console.log(r);
$.simpleAlert("close");
$.simpleAlert(r.data.desc, 'error');
}
},
error: function (jqXHR, textStatus, errorThrown) {
$.simpleAlert(errorThrown, 'err');
console.log(jqXHR)
console.log(textStatus)
console.log(errorThrown)
}
});
},
showVersionCompare : function() {
$("#dialog_version_compare").dialog({
buttons:[
{text:'确定',cls:"blue",handler:function(){
var checkboxs = $("input[name='version']:checked");
var numCheck = checkboxs.length;
if (numCheck != 2) {
$.simpleAlert("请选择两个需要对比的版本", "warning");
return;
}
var firstId;
var secondId;
var values = [];
var names = [];
checkboxs.each(function (){
values.push($(this).val());
names.push($(this).data("name"));
});
firstId = values[0];
secondId = values[1];
awsui.ajax.post("./jd?sid="+sid+"&cmd=com.actionsoft.apps.coe.pal_pl_version_compare", { firstId: firstId, secondId: secondId}, function(data) {
$("#dialog_version_compare").dialog("close");
var fileAttrCompare = data.fileAttrCompare;
var shapeAttrCompare = data.shapeAttrCompare;
var fileHtml = "";
var shapeHtml = "";
if (fileAttrCompare.length > 0) {
for (var i = 0; i < fileAttrCompare.length; i++) {
fileHtml += fileAttrCompare[i] + "</br>";
}
$("#fileAttr").html(fileHtml);
}
if (shapeAttrCompare.length > 0) {
for (var i = 0; i < shapeAttrCompare.length; i++) {
shapeHtml += shapeAttrCompare[i] + "</br>";
}
$("#shapeAttr").html(shapeHtml);
}
$("#versionCompareResult").show();
$("#dialog_version_compare_result").dialog({
});
}, 'json');
}
}
]
});
},
/**
* 流程导出
*/
processExport : function() {
//先处理准备好导出的流程数据
if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") {
if (editable) {
$.simpleAlert('页面中有未保存的内容,请先保存');
return;
}
}
var repositoryIds = [];
repositoryIds.push(ruuid);
var options = {
title : "提示",
content:"确定导出并下载文件吗?",
onConfirm: function(){
$.simpleAlert('正在导出', 'loading');
$.ajax({
type: "POST",
url: "./jd",
data: {
sid: sid,
cmd: "com.actionsoft.apps.coe.pal_pl_export_handle",
repositoryIds: JSON.stringify(repositoryIds)
},
success: function (r, textStatus, jqXHR) {
if(r.result == 'ok' ) {
$.simpleAlert("close");
$.simpleAlert('导出完成', 'ok', 2000, {callback:function() {
$.simpleAlert("close");
// 下载
$.ajax({
type: "POST",
url: "./jd",
data: {
sid: sid,
cmd: "com.actionsoft.apps.coe.pal_pl_export",
exportTitle: r.data.exportTitle,
exportCount: r.data.exportCount,
dcId: r.data.dcId,
},
success: function (r, textStatus, jqXHR) {
if(r.result == 'ok' ) {
window.location.href = r.data.downLoadUrl;
} else {
console.log(r);
}
},
error: function (jqXHR, textStatus, errorThrown) {
$.simpleAlert(errorThrown, 'err');
console.log(jqXHR)
console.log(textStatus)
console.log(errorThrown)
}
});
}});
} else {
console.log(r);
$.simpleAlert("close");
}
},
error: function (jqXHR, textStatus, errorThrown) {
$.simpleAlert(errorThrown, 'err');
console.log(jqXHR)
console.log(textStatus)
console.log(errorThrown)
}
});
},
onCancel : function(){
}
};
$.confirm(options);
},
openNewPage : function() {
window.open(location.href);
},
/**
* 执行导出
*/
doExport : function() {
// var definition = JSON.stringify(Model.define);
// $("#export_definition").val(definition);
// $("#export_title").val($(".diagram_title").text());
// $("#export_form").submit();
if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") {
if (editable) {
$.simpleAlert('页面中有未保存的内容,请先保存');
return;
}
}
$.simpleAlert('请稍后', 'loading');
var type = $('input[name="type"]:checked').val();
$.post("./jd", {
cmd : "com.actionsoft.apps.coe.pal_pl_repository_download_png",
sid : sid,
"uuid" : chartId,
type : type
}, function t(msg) {
if (typeof(msg) == "string") {
msg = eval('(' + msg + ')');
}
msg = msg.data.url;
if (msg == "") {
alert("请您先保存一个版本!");
} else {
//window.open(msg);
$("#export_iframe").attr("src", msg);
}
$.simpleAlert("close");
}, "text");
$('#export_dialog').dlg('close');
},
/**
* 展示hotkey列表
*/
showHotKey : function() {
var height = $(window).height() - 175;
if (height > 500) {
height = 500 + "px";
}
$("#hotkey_list").dlg();
$("#hotkey_list").css({
"top" : "28px"
});
$("#hotkey_list .dialog_content").css({
"height" : height
});
},
/**
* 显示反馈dialog
*/
showFeedBack : function() {
$("#send_feedback").css({
width : "auto",
height : "auto"
});
var sendFeedBack = $("#send_feedback");
sendFeedBack.dlg();
$("#feedback_email").focus();
$("#feedback_message").val("");
$(".feedback_error_email_format").hide();
$(".feedback_error_msg").hide();
},
/**
* 发送反馈
*/
sendFeedBack : function(dom) {
$(".feedback_error_email_format").hide();
$(".feedback_error_msg").hide();
var email = $.trim($("#feedback_email").val());
var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
if (!reg.test(email)) {
$("#feedback_email").focus();
$(".feedback_error_email_format").show();
return;
}
var feedbackMessage = $.trim($("#feedback_message").val());
if (feedbackMessage == "") {
$("#feedback_message").val("").focus();
$(".feedback_error_msg").show();
return;
}
Util.ajax({
url : "/support/save_ask",
data : {
content : feedbackMessage,
username : $("#feedback_name").val(),
email : email,
url : location.href
},
success : function(data) {
$(".dlg_mask").remove();
$("#send_feedback").animate({
left : $(window).width(),
top : $(window).height(),
width : 0,
height : 0,
opacty : 0.2
});
}
});
},
/**
* 打开开始向导
*/
gettingStart : function(delay) {
this.showStartStep(1);
},
showStartStep : function(step, dom) {
$(".mark_content").hide();
var content = $(".mark" + step + "_content");
content.show();
var top;
var left;
if (step == 1) {
top = $("#shape_panel").offset().top + 70;
left = $("#shape_panel").offset().left + $("#shape_panel").width()
+ 10;
} else if (step == 2) {
top = $(".row2").offset().top + 30;
left = $("#menu_bar_insert").offset().left
+ $("#menu_bar_insert").width() - content.outerWidth() / 2;
} else if (step == 3) {
top = $(".toolbar").offset().top + 40;
left = 270;
} else if (step == 4) {
top = $("#dock").offset().top + 10;
left = $("#dock").offset().left - content.outerWidth() - 10
} else if (step == "created") {
top = dom.offset().top + dom.height() / 2 - content.outerHeight()
/ 2;
if (top <= 0) {
top = 0;
}
if (top + content.outerHeight() > $(window).height()) {
top = $(window).height() - content.outerHeight();
}
left = dom.offset().left + dom.width() + 10;
}
content.css({
top : top,
left : left
});
},
/**
* 关闭开始向导
*
* @param {}
* dom
*/
closeGettingStart : function(dom) {
$(".mark_content").hide();
},
/**
* Getting Start END--
*/
showAddColla : function() {
Util.ajax({
url : "/collaboration/get_colla_role_list",
data : {
chartId : chartId
},
success : function(data) {
$("#colla_dialog").find(".role_list").html(data).scrollTop(999);
$("#colla_dialog").removeClass("_update");
$("#colla_dialog").css({
"top" : ($(window).height() - $("#colla_dialog")
.outerHeight())
* 0.5 + "px"
});
$("#colla_dialog").dlg();
$("#colla_suggest_box").empty();
$("#add_prompt4").hide();
$("#add_prompt3").hide();
$("#add_prompt2").hide();
$("#add_prompt1").show();
}
});
var lastVal = "";
$("#input_add_colla").val("").unbind().bind("keyup", function() {
// 加载信息
var value = $(this).val();
if (value == lastVal) {
return;
}
lastVal = value;
if (value == "") {
$("#colla_suggest_box").empty();
$("#add_prompt4").hide();
$("#add_prompt3").hide();
$("#add_prompt2").hide();
$("#add_prompt1").show();
return;
}
Util.ajax({
url : "/collaboration/get_new_members",
data : {
value : value
},
success : function(data) {
$("#colla_suggest_box").html(data);
if ($("#colla_suggest_box").find("ul").length > 0) {
$("#add_prompt4").hide();
$("#add_prompt3").hide();
$("#add_prompt2").show();
$("#add_prompt1").hide();
} else {
$("#add_prompt4").hide();
$("#add_prompt3").hide();
$("#add_prompt2").hide();
$("#add_prompt1").show();
}
$(".colla_suggest").find("li").unbind().bind("click",
function() {
$("#add_prompt4").hide();
$("#add_prompt3").hide();
$("#add_prompt2").show();
$("#add_prompt1").hide();
var value = $.trim($("#input_add_colla").val());
$(".colla_suggest").find("li")
.removeClass("seled");
$(this).addClass("seled");
var type = $(this).attr("joinType");
var target = $(this).attr("target");
if (type == "user") {
var userName = $(this).attr("username");
$("#input_add_colla").val(userName);
$("#add_userid").val(target);
} else {
$("#input_add_colla").val(target);
$("#add_userid").val(target);
}
$("#add_type").val(type);
});
}
});
});
},
doAddCollaboration : function() {
if ($(".colla_suggest").length > 0) {
if ($(".colla_suggest").find(".seled").length == 0) {
$("#add_prompt1").hide();
$("#add_prompt2").show();
$("#add_prompt3").hide();
$("#add_prompt4").hide();
var top = ($(window).outerHeight() - 104) * 0.5 + 100;
var left = ($(window).outerWidth() - 272) * 0.5;
$("#confirm_dlg").removeClass("newSize").css({
top : top + "px",
left : left + "px"
});
$("#confirm_dlg").addClass("newSize").css({
top : ($(window).outerHeight() - $("#confirm_dlg").height())
* 0.5 + "px",
left : ($(window).outerWidth() - $("#confirm_dlg").width())
* 0.5 + "px",
display : "block"
});
} else {
var imgSrc = $(".colla_suggest").find(".seled").find("img")
.attr("src");
var userFullName = $("#input_add_colla").val();
if (userFullName.length > 30) {
userFullName = userFullName.substr(0, 30) + "...";
}
var target = $("#add_userid").val();
var role = $("#invit_role").val();
var type = $("#add_type").val();
$(".add_new_button")
.find(".designer_button")
.text("<@i18n resource='diagraming.collaboation_sending'/>");
var target_item = null;
if (type == "email") {
$(".role_list").find(".role_item").each(function() {
if ($(this).attr("type") == type
&& $(this).attr("target") == target) {
target_item = $(this);
$(this)
.find(".inviting_")
.text("<@i18n resource='diagraming.collaboation_inviting_again'/>");
}
});
}
var paramOuter = {
type : type,
target : target,
role : role,
chartId : chartId
};
Util.ajax({
url : "/collaboration/add",
data : paramOuter,
success : function(data) {
var result = data.result;
if (result == "exists") {
$("#add_prompt2").hide();
$("#add_prompt1").hide();
$("#add_prompt4").hide();
$("#add_prompt3").show();
} else {
Util.ajax({
url : "/collaboration/get_colla_role_list",
data : {
chartId : chartId
},
success : function(data) {
$(".role_list").html(data)
.scrollTop(999);
}
});
}
$(".add_new_button")
.find(".designer_button")
.text("<@i18n resource='diagraming.collaboation_send_invitation'/>");
$("#colla_dialog").addClass("_update").css({
top : ($(window).height() - $("#colla_dialog")
.outerHeight())
* 0.5 + "px"
});
if (result != "exists") {
setTimeout(function() {
$("#add_prompt3").hide();
$("#add_prompt2").hide();
$("#add_prompt1").hide();
$("#add_prompt4").show();
}, 400);
}
setTimeout(function() {
$("#add_prompt3").hide();
$("#add_prompt2").hide();
$("#add_prompt4").hide();
$("#add_prompt1").show();
$("#input_add_colla").val("");
$("#colla_suggest_box").html("");
}, 1000);
}
});
}
}
},
deleteCollaRole : function(dom) {
var parent = $(dom).parent(".role_item");
var collaborationId = parent.attr("collaborationId");
Util.ajax({
url : "/collaboration/delete",
data : {
collaborationId : collaborationId
},
success : function(data) {
if (data.result == "success")
parent.remove();
}
});
$("#colla_dialog").addClass("_update").css({
top : ($(window).height() - $("#colla_dialog").outerHeight()) * 0.5
+ "px"
});
},
changeCollaRole : function(collaborationId, dom) {
Util.ajax({
url : "/collaboration/set_role",
data : {
collaborationId : collaborationId,
role : $(dom).val()
},
success : function(data) {
if (data.result == "success") {
$(dom).parent(".given_role")
.find(".change_success").stop().animate({
"left" : "-38px"
}, 200).delay(400).animate({
"left" : "0px"
}, 200);
}
}
});
},
/**
* 打开图形管理
*/
showShapesManage : function() {
var $dialog = $("#shapes_dialog").dialog({
buttons : [{
text : '确定',
cls : "blue",
handler : UI.saveShapesManage
}, {
text : '关闭',
handler : function() {
$dialog.dialog("close");
}
}]
});
$("#shape_manage_list").children("li").unbind().bind("click",
function() {
var chkbox = $(this).find("input");
var checked = !chkbox.is(":checked");
chkbox.attr("checked", checked);
cateChanged(chkbox);
});
$("#shape_manage_list").find("input").unbind().bind("click",
function(e) {
e.stopPropagation();
cateChanged($(this));
});
// .each(function(){
// var categorys = $(this).val();
// var arr = categorys.split(",");
// var exists = true;
// for(var i = 0; i < arr.length; i++){
// var cate = arr[i];
// if(!CategoryMapping[cate]){
// //此分类下的图形,没有在当前使用中
// exists = false;
// break;
// }
// }
// $(this).attr("checked", exists);
// });
function cateChanged(chk) {
var value = chk.val();
var arr = value.split(",");
var chked = chk.is(":checked");
if (arr.length > 1) {
// 是父级节点
$("#shape_manage_list").find("input").each(function() {
var cate = $(this).val();
if (arr.indexOf(cate) >= 0) {
// 是选择父级的子节点
$(this).attr("checked", chked);
}
});
} else {
// 选择的是子节点
$("#shape_manage_list").find(".cate_parent").each(function() {
// 获取所有的父节点,判断子节点是否都全部选中了
var cates = $(this).val().split(",");
var allChked = true;
for (var i = 0; i < cates.length; i++) {
var cate = cates[i];
if (!$("#shape_manage_list").find("input[value=" + cate
+ "]").is(":checked")) {
allChked = false;
break;
}
}
$(this).attr("checked", allChked);
});
}
}
},
/**
* 保存图形管理
*/
saveShapesManage : function() {
var checked = $("#shape_manage_list")
.find("input:checked:not(.cate_parent)").map(function() {
return $(this).val();
}).get();
var a = "";
var messages = {
categories : checked.join(",")
};
// //发送消息
// var msgObj = {
// action: "changeSchema",
// messages: JSON.stringify(messages)
// };
// CLB.send(msgObj);
Designer.setSchema(checked.join(","), function() {
$("#shapes_dialog").dialog("close");
});
},
/**
* 打开用户菜单
*/
showUserMenu : function(e) {
e.stopPropagation();
$("#user_menu").dropdown({
target : $(".user"),
position : "right",
onSelect : function(item) {
var action = item.attr("ac");
if (action == "dia") {
location.href = "/diagrams";
} else if (action == "net") {
location.href = "/network";
} else if (action == "out") {
location.href = "/login/out";
}
}
});
},
/**
* 打开另存为
*/
showSaveAs : function() {
$("#saveas_dialog").dlg();
$("#saveas_title").val($(".diagram_title").text()).select();
},
doSaveAs : function() {
if ($("#saveas_title").val().trim() == "") {
$("#saveas_title").focus();
return;
}
$("#hid_saveas_id").val(chartId);
$("#saveas_form").submit();
$("#btn_dosaveas").removeAttr("onclick");
},
activityNoDlg : function() {
//创建Dialog的DOM关闭时销毁
var dialogHTML = '';
/*计算dialog高度规则
1、最小值340
2、每行26px1条件出现纵向滚动条时行>8需要根据高度行数扩大
3、最大window.height-40
*/
//获取当前节点号数组
// var filterNames = 'timerIntermediateCatchEvent,messageIntermediateCatchEvent,signalIntermediateCatchEvent,messageIntermediateThrowingEvent,signalIntermediateThrowingEvent,compensateIntermediateThrowingEvent,userTask,serviceTask,scriptTask,manualTask,businessRuleTask,sendTask,receiveTask,callActivityCallingProcess,';
var filterNames = undefined;
var taskList = UI.getTasksList(filterNames);
var dialogHeight = 340;
if (taskList.length > 8) {
dialogHeight = 340 + (taskList.length - 8) * 26
}
if (dialogHeight > ($(window).height() - 80)) {
dialogHeight = ($(window).height() - 80);
}
dialogHTML += '<div title="节点编号排序" style="width:320px;height:' + dialogHeight + 'px;display:none;" id="activityNoDialog">';
dialogHTML += '<div id="activityNoGrid"></div>';
dialogHTML += '<div id="activityNoAlert" style="position: relative;top: 6px;">提示:拖动排序,确定后请保存设计器</div>';
dialogHTML += '</div>';
$(document.body).append(dialogHTML);
//显示Dialog
$("#activityNoDialog").dialog({
onClose: function () {
$('#activityNoDialog').remove();
$('#row-drag-obj').remove();//grid拖动时产生的行鼠标拖动到document外时该div一直显示
},
buttons: [
{
text: '确定', cls: "blue",
handler: function () {
if (activityNoArr.length > 0) {
//将节点号重新设置
var allRows = activityNoGrid.awsGrid('getAllRows');
for (var shapeId in Model.define.elements) {
var shape = Model.getShapeById(shapeId);
for(var x = 0; x < allRows.length; x++) {
var obj = allRows[x];
if(obj.id == shape.id) {
if (shape.dataAttributes != undefined) {
for (var i = 0; i < shape.dataAttributes.length; i++) {
for (var i = 0; i < shape.dataAttributes.length; i++) {
var attrArr = shape.dataAttributes[i];
if (attrArr.attributesJsonArray && attrArr.attributesJsonArray.length > 0) {
for (var j = 0; j < attrArr.attributesJsonArray.length; j++) {
var attr = attrArr.attributesJsonArray[j];
if (attr.id == 'number') {
attr.value = parseInt(obj.no);
break;
}
}
break;
}
}
}
}
}
}
}
if (isAutoSave == "0" ){
$("#saving_tip").css("color", "rgb(255, 0, 0)");
$("#saving_tip").text("文件已修改,未保存");
}
}
$("#activityNoDialog").dialog('close');
}
},
{
text: '取消', handler: function () {
$("#activityNoDialog").dialog('close');
}
}
]
});
var activityNoArr = [];//JSON数组
for (var i = 0; i < taskList.length; i++) {
var task = taskList[i];
var activityNoObj = {};
activityNoObj.id = task.id;
if (task.text) {
activityNoObj.name = task.text;
} else {
activityNoObj.name = '(无名称)' + task.title;
}
activityNoObj.no = task.orderIndex;
activityNoArr[i] = activityNoObj;
}
if (activityNoArr.length == 0) {
$('#activityNoGrid').height(dialogHeight - 100);
$('#activityNoGrid').width(317);
$('#activityNoAlert').remove();
$('#activityNoGrid').append($('<div class="awsui-message-page">'+
'<div class="content">'+
'<span class="icon" message-type="info"></span>'+
'<span class="title">不支持编号排序</span>'+
'<span class="description">画布没有形状或者形状没有编号属性</span>'+
'</div>'+
'</div>'));
awsuiMessagePage();
return;
}
//渲染Grid
var activityNoGridOptions = {
width: 317,
height: dialogHeight - 100,
flexWidth: false,
flexHeight: false,
resizable: false,
selectionModel: {
type: "none",
model: "single"
},
scrollModel: {
vertical: true,
horizontal: false
},
bottomVisible: false,
rowDrag: true
};
activityNoGridOptions.colModel = [
{title: "名称", width: 200, align: 'left', dataType: 'string', dataIndx: 'name', resizable: false, sortable: false},
{title: "节点号", width: 80, align: 'center', dataType: 'integer', dataIndx: 'no', resizable: false, sortable: false}
];
activityNoGridOptions.dataModel = {
data: activityNoArr,
location: "local",
sorting: "local",
sortIndx: "no",
sortDir: "up"
};
var activityNoGrid = $("#activityNoGrid").awsGrid(activityNoGridOptions);
activityNoGrid.awsGrid('option', 'rowDragCallback', function (source, target) {
return true;
});
activityNoGrid.awsGrid('option', 'rowDragSuccessCallback', function (source, target) {
//重新排列序号
var allRows = activityNoGrid.awsGrid('getAllRows');
for (var i = 0; i < allRows.length; i++) {
allRows[i].no = (i + 1);
}
activityNoGrid.awsGrid('refreshDataAndView');
});
},
getTasksList: function (filterNames) {
var filterNode = [];
var nodes = Model.define.elements;
if (filterNames == undefined) {
return UI.getALLTasksList();
}
},
getALLTasksList: function () {
var filterNode = [];
for (var shapeId in Model.define.elements) {
var shape = Model.getShapeById(shapeId);
if (shape.dataAttributes != undefined) {
for (var i = 0; i < shape.dataAttributes.length; i++) {
for (var i = 0; i < shape.dataAttributes.length; i++) {
var attrArr = shape.dataAttributes[i];
if (attrArr.attributesJsonArray && attrArr.attributesJsonArray.length > 0) {
for (var j = 0; j < attrArr.attributesJsonArray.length; j++) {
var attr = attrArr.attributesJsonArray[j];
if (attr.id == 'number') {
var tempNumber = 0;
var number = attr.value;
if(typeof number == 'string') number = number.replace(/^\s+|\s+$/g,"");
if(!isNaN(number) && number != '') {
tempNumber = number;
}
var obj = {};
obj.text = shape.text;
obj.id = shapeId;
obj.orderIndex = tempNumber;
filterNode.push(obj);
break;
}
}
break;
}
}
}
}
}
return filterNode;
},
batchReplace: function() {
if ($("#saving_tip").text() != "已保存成功" && $("#saving_tip").text() != "保存成功" && $("#saving_tip").text() != "您的文件已经成功保存" && $("#saving_tip").text() != "") {
if (editable) {
$.simpleAlert('页面中有未保存的内容,请先保存');
return;
}
}
// 打开批量处理框
initWizardByDesinger();
}
};
/**
* 右侧的Dock控件
*
* @type {}
*/
var Dock = {
init : function() {
var layoutW = $("#designer_layout").width();
var viewW = $("#layout_block").width();
// 总宽度减去可视区域的宽度,得到滚动条宽度
var navRight = layoutW - viewW;
$("#dock").css("right", navRight);
var dockRight = navRight + $("#dock").outerWidth() - 1;
$(".dock_view").css("right", dockRight);
if ($("#demo_signup").length) {
var signupH = $("#demo_signup").outerHeight();
$("#dock").css("top", signupH);
$(".dock_view").css("top", signupH + 10);
}
$(".ico_dock_collapse").bind("click", function() {
$(".dock_view").hide();
$(".dock_buttons").children().removeClass("selected");
if (Dock.currentView == "history") {
Dock.closeHistory();
}
Dock.currentView = "";
});
$(window).bind("resize.dock", function() {
if (Dock.currentView == "attribute") {
Dock.fitAttrList();
}
});
// 缩放
$("#dock_zoom").spinner({
min : 50,
max : 200,
unit : "%",
step : 10,
onChange : function(val) {
Designer.setZoomScale(val / 100);
}
});
// 线条颜色
$("#dock_line_color").colorButton({
onSelect : function(color) {
Designer.setLineStyle({
lineColor : color
});
}
});
// 线条类型
$("#dock_line_style").button({
onMousedown : function() {
$("#line_style_list").dropdown({
target : $("#dock_line_style"),
onSelect : function(item) {
var lineStyle = item.attr("line");
Designer.setLineStyle({
lineStyle : lineStyle
});
var cls = item.children("div").attr("class");
$("#dock_line_style").children(".linestyle").attr(
"class", cls);
}
});
var style = Utils.getSelected()[0].lineStyle.lineStyle;
var item = $("#line_style_list").children("li[line=" + style
+ "]");
$("#line_style_list").dropdown("select", item);
}
});
// 线条宽度
$("#dock_line_width").spinner({
min : 0,
max : 10,
unit : "px",
step : 1,
onChange : function(val) {
Designer.setLineStyle({
lineWidth : val
});
}
});
// 填充类型
$("#dock_fill_type").button({
onMousedown : function() {
$("#dock_fill_list").dropdown({
target : $("#dock_fill_type"),
onSelect : function(item) {
var type = item.attr("ty");
$("#dock_fill_type").button("setText",
item.text());
if (type == "image") {
UI.showImageSelect(function(fileId, w, h) {
Designer.setFillStyle({
type : "image",
fileId : fileId,
imageW : w,
imageH : h
});
});
} else {
Designer.setFillStyle({
type : type
});
var shapeIds = Utils.getSelectedShapeIds();
var shape = Model.getShapeById(shapeIds[0]);
Dock.setFillStyle(shape.fillStyle);
}
}
});
var type = $("#dock_fill_type").text();
$("#dock_fill_list").children().each(function() {
if ($(this).text() == type) {
$("#dock_fill_list")
.dropdown("select", $(this));
return false;
}
});
}
});
// 填充颜色
$("#fill_solid_btn").colorButton({
onSelect : function(color) {
Designer.setFillStyle({
color : color
});
}
});
// 渐变开始颜色
$("#fill_gradient_begin").colorButton({
onSelect : function(color) {
Designer.setFillStyle({
beginColor : color
});
$("#fill_gradient_begin").attr("c", color);
}
});
// 渐变结束颜色
$("#fill_gradient_end").colorButton({
onSelect : function(color) {
Designer.setFillStyle({
endColor : color
});
$("#fill_gradient_end").attr("c", color)
}
});
// 渐变颜色交换
$("#gradient_swap").button({
onClick : function() {
var begin = $("#fill_gradient_begin").attr("c");
var end = $("#fill_gradient_end").attr("c");
$("#fill_gradient_begin").attr("c", end).colorButton(
"setColor", end);
$("#fill_gradient_end").attr("c", begin).colorButton(
"setColor", begin);
Designer.setFillStyle({
beginColor : end,
endColor : begin
});
}
});
// 渐变类型
$("#gradient_type").button({
onMousedown : function() {
$("#gradient_type_list").dropdown({
target : $("#gradient_type"),
onSelect : function(item) {
var type = item.attr("ty");
$("#gradient_type").button("setText", item.text());
Designer.setFillStyle({
gradientType : type
});
$(".gradient_details").hide();
$("#gradient_type_" + type).show();
var shapeIds = Utils.getSelectedShapeIds();
var shape = Model.getShapeById(shapeIds[0]);
var fillStyle = shape.fillStyle;
if (type == "linear") {
$("#gradient_angle").spinner(
"setValue",
Math.round(fillStyle.angle / Math.PI * 180)
+ "°");
} else {
$("#gradient_radius").spinner("setValue",
Math.round(fillStyle.radius * 100) + "%");
}
}
});
var type = $("#gradient_type").text().trim();
$("#gradient_type_list").children().each(function() {
if ($(this).text() == type) {
$("#gradient_type_list").dropdown("select",
$(this));
return false;
}
});
}
});
// 线性渐变角度
$("#gradient_angle").spinner({
min : 0,
max : 360,
unit : "°",
step : 15,
onChange : function(val) {
var angle = val / 180 * Math.PI;
Designer.setFillStyle({
angle : angle
});
}
});
// 径向渐变半径
$("#gradient_radius").spinner({
min : 0,
max : 100,
unit : "%",
step : 5,
onChange : function(val) {
Designer.setFillStyle({
radius : val / 100
});
}
});
// 改变背景图片
$("#fill_change_img").button({
onClick : function() {
UI.showImageSelect(function(fileId, w, h) {
Designer.setFillStyle({
type : "image",
fileId : fileId,
imageW : w,
imageH : h
});
});
}
});
// 背景图片显示
$("#fill_img_display").button({
onMousedown : function() {
$("#img_display_list").dropdown({
target : $("#fill_img_display"),
onSelect : function(item) {
var type = item.attr("ty");
$("#fill_img_display").button("setText",
item.text());
Designer.setFillStyle({
display : type
});
}
});
}
});
// 透明度
$("#spinner_opacity").spinner({
min : 0,
max : 100,
unit : "%",
step : 5,
onChange : function(val) {
Designer.setShapeStyle({
alpha : val / 100
});
}
});
// X坐标
$("#dock_metric_x").spinner({
min : -800,
unit : "px",
step : 5,
onChange : function(val) {
Designer.setShapeProps({
x : val
});
}
});
$("#dock_metric_x").spinner("setValue", "0px");
// 宽度
$("#dock_metric_w").spinner({
min : 20,
unit : "px",
step : 5,
onChange : function(val) {
Designer.setShapeProps({
w : val
});
}
});
// Y坐标
$("#dock_metric_y").spinner({
min : -800,
unit : "px",
step : 5,
onChange : function(val) {
Designer.setShapeProps({
y : val
});
}
});
$("#dock_metric_y").spinner("setValue", "0px");
// 高度
$("#dock_metric_h").spinner({
min : 20,
unit : "px",
step : 5,
onChange : function(val) {
Designer.setShapeProps({
h : val
});
}
});
// 角度
$("#dock_metric_angle").spinner({
min : 0,
max : 360,
unit : "°",
step : 15,
onChange : function(val) {
var angle = val / 180 * Math.PI;
Designer.setShapeProps({
angle : angle
});
}
});
// 画布尺寸
$("#dock_page_size").button({
onMousedown : function() {
$("#page_size_list").dropdown({
target : $("#dock_page_size"),
onSelect : function(item) {
var w = parseInt(item.attr("w"));
var h = parseInt(item.attr("h"));
Designer.setPageStyle({
width : w,
height : h
});
$("#dock_page_size").button("setText",
item.text());
}
});
var item = $("#page_size_list").children("li[w="
+ Model.define.page.width + "][h="
+ Model.define.page.height + "]");
if (item.length > 0) {
$("#page_size_list").dropdown("select", item);
} else {
$("#page_size_list").dropdown("select",
$("#dock_size_custom"));
}
$("#dock_size_w").spinner("setValue",
Model.define.page.width + "px");
$("#dock_size_h").spinner("setValue",
Model.define.page.height + "px");
}
});
$("#dock_size_w").spinner({
min : 200,
unit : "px",
step : 100,
onChange : function(val) {
Designer.setPageStyle({
width : val
});
}
});
$("#dock_size_h").spinner({
min : 200,
unit : "px",
step : 100,
onChange : function(val) {
Designer.setPageStyle({
height : val
});
}
});
// 页面边距
$("#dock_page_padding").button({
onMousedown : function() {
$("#page_padding_list").dropdown({
target : $("#dock_page_padding"),
onSelect : function(item) {
var p = parseInt(item.attr("p"));
Designer.setPageStyle({
padding : p
})
$("#dock_page_padding").button("setText",
item.text());
}
});
var item = $("#page_padding_list").children("li[p="
+ Model.define.page.padding + "]");
$("#page_padding_list").dropdown("select", item);
}
});
// 画布背景颜色
$("#dock_page_color").colorButton({
position : "center",
onSelect : function(color) {
Designer.setPageStyle({
backgroundColor : color
});
}
});
// 是否显示网格
$("#dock_page_showgrid").bind("change", function() {
var showGrid = $(this).is(":checked");
Designer.setPageStyle({
showGrid : showGrid
});
if (showGrid) {
$("#dock_gridsize_box").show();
} else {
$("#dock_gridsize_box").hide();
}
});
// 网格大小
$("#dock_page_gridsize").button({
onMousedown : function() {
$("#page_gridsize_list").dropdown({
target : $("#dock_page_gridsize"),
onSelect : function(item) {
var s = parseInt(item.attr("s"));
Designer.setPageStyle({
gridSize : s
})
$("#dock_page_gridsize").button("setText", item.text());
}
});
var item = $("#page_gridsize_list").children("li[s="
+ Model.define.page.gridSize + "]");
$("#page_gridsize_list").dropdown("select", item);
}
});
// 播放速度
$("#spinner_play_speed").spinner({
min : 1,
max : 30,
unit : "s",
step : 1,
value : 5,
onChange : function(val) {
}
});
$("#spinner_play_speed").spinner("setValue", "2s");
// 版本播放
$("#btn_history_play").button({
onClick : function() {
if ($("#btn_history_play").children()
.hasClass("ico_pause")) {
Dock.pauseVersions();
} else {
Dock.playVersions();
}
}
});
$("#btn_history_restore").button({
onClick : function() {
Dock.restoreVersion();
}
});
},
/**
* 当前Dock窗口
*
* @type {String}
*/
currentView : "",
/**
* 打开一个Dock窗口
*
* @param {}
* name
*/
showView : function(name) {
if ($("#dock_btn_" + name).button("isDisabled")) {
return;
}
$(".dock_view").hide();
$(".dock_view_" + name).show();
$(".dock_buttons").children().removeClass("selected");
$("#dock_btn_" + name).addClass("selected");
if (Dock.currentView == "history" && name != "history") {
Dock.closeHistory();
}
this.currentView = name;
this.update(true);
},
/**
* 设置Dock的填充样式
*
* @param {}
* fillStyle
*/
setFillStyle : function(fillStyle) {
$("#dock_fill_type").button(
"setText",
$("#dock_fill_list").children("li[ty=" + fillStyle.type + "]")
.text());
$(".fill_detail").hide();
if (fillStyle.type == "solid") {
$(".fill_detail_solid").show();
$("#fill_solid_btn").colorButton("setColor", fillStyle.color);
} else if (fillStyle.type == "gradient") {
$(".fill_detail_gradient").show();
// 渐变颜色
$("#fill_gradient_begin").attr("c", fillStyle.beginColor)
.colorButton("setColor", fillStyle.beginColor);
$("#fill_gradient_end").attr("c", fillStyle.endColor).colorButton(
"setColor", fillStyle.endColor);
// 渐变类型
$("#gradient_type").button(
"setText",
$("#gradient_type_list").children("li[ty="
+ fillStyle.gradientType + "]").text());
$(".gradient_details").hide();
if (fillStyle.gradientType == "linear") {
$("#gradient_type_linear").show();
$("#gradient_angle").spinner("setValue",
Math.round(fillStyle.angle / Math.PI * 180) + "°");
} else {
$("#gradient_type_radial").show();
$("#gradient_radius").spinner("setValue",
Math.round(fillStyle.radius * 100) + "%");
}
} else if (fillStyle.type == "image") {
$(".fill_detail_image").show();
var display = "fill";
if (fillStyle.display) {
display = fillStyle.display;
}
$("#fill_img_display").button(
"setText",
$("#img_display_list").children("li[ty=" + display + "]")
.text());
}
},
/**
* 更新Dock
*/
update : function(drawNav) {
if (this.currentView == "portalAttrShow" || this.currentView == "portalDescShow" || this.currentView == "portalFileShow") {
changeArributeByShape();
}
if (this.currentView == "navigator") {
if (drawNav) {
Navigator.draw();
}
$("#dock_zoom").spinner("setValue",
Math.round(Designer.config.scale * 100) + "%");
} else if (this.currentView == "graphic") {
var selectedIds = Utils.getSelectedIds();
var count = selectedIds.length;
var shapeIds = Utils.getSelectedShapeIds();
var shapeCount = shapeIds.length;
if (count == 0) {
$("#dock_line_color").button("disable");
$("#dock_line_style").button("disable");
$("#dock_line_width").button("disable");
} else {
$("#dock_line_color").button("enable");
$("#dock_line_style").button("enable");
$("#dock_line_width").button("enable");
var shape = Model.getShapeById(selectedIds[0]);
$("#dock_line_color").colorButton("setColor",
shape.lineStyle.lineColor);
var lineStyleCls = $("#line_style_list").children("li[line="
+ shape.lineStyle.lineStyle + "]").children()
.attr("class");
$("#dock_line_style").children(".linestyle").attr("class",
lineStyleCls);
$("#dock_line_width").spinner("setValue",
shape.lineStyle.lineWidth + "px");
}
if (shapeCount == 0) {
$("#dock_fill_type").button("disable");
$("#spinner_opacity").button("disable");
Dock.setFillStyle({
type : "none"
});
} else {
$("#dock_fill_type").button("enable");
$("#spinner_opacity").button("enable");
var shape = Model.getShapeById(shapeIds[0]);
Dock.setFillStyle(shape.fillStyle);
$("#spinner_opacity").spinner("setValue",
Math.round(shape.shapeStyle.alpha / 1 * 100) + "%");
}
} else if (this.currentView == "metric") {
var shapeIds = Utils.getSelectedShapeIds();
var shapeCount = shapeIds.length;
if (shapeCount == 0) {
$("#dock_metric_x").button("disable");
$("#dock_metric_w").button("disable");
$("#dock_metric_y").button("disable");
$("#dock_metric_h").button("disable");
$("#dock_metric_angle").button("disable");
} else {
var shape = Model.getShapeById(shapeIds[0]);
$("#dock_metric_x").button("enable").spinner("setValue",
Math.round(shape.props.x) + "px");
$("#dock_metric_w").button("enable").spinner("setValue",
Math.round(shape.props.w) + "px");
$("#dock_metric_y").button("enable").spinner("setValue",
Math.round(shape.props.y) + "px");
$("#dock_metric_h").button("enable").spinner("setValue",
Math.round(shape.props.h) + "px");
$("#dock_metric_angle").button("enable").spinner("setValue",
Math.round(shape.props.angle / Math.PI * 180) + "°");
}
} else if (this.currentView == "page") {
var page = Model.define.page;
var w = page.width;
var h = page.height;
var sizeItem = $("#page_size_list").children("li[w=" + w + "][h="
+ h + "]");
var sizeText = "";
if (sizeItem.length > 0) {
sizeText = sizeItem.text();
} else {
sizeText = $("#dock_size_custom").text();
}
$("#dock_page_size").button("setText", sizeText);
$("#dock_page_padding").button("setText", page.padding + "px");
$("#dock_page_color").colorButton("setColor", page.backgroundColor);
$("#dock_page_showgrid").attr("checked", page.showGrid);
if (page.showGrid) {
$("#dock_gridsize_box").show();
} else {
$("#dock_gridsize_box").hide();
}
var gridText = "";
var gridItem = $("#page_gridsize_list").children("li[s="
+ page.gridSize + "]");
if (gridItem.length > 0) {
var gridText = gridItem.text();
}
$("#dock_page_gridsize").button("setText", gridText);
} else if (this.currentView == "attribute") {
if (!inputUpdate) {// input类型的属性值更新时不重绘所有属性
changeArributeByShape();
}
if(role == "viewer") {
$("#dock_page_attribute table input").prop("disabled", true);
$("#tagContent1 table input, #tagContent1 table textarea").prop("disabled", true);
}
} else if (this.currentView == "message") {
$.ajax({
url: "./jd?sid=" + $("#sid").val()
+ "&cmd=com.actionsoft.apps.coe.pal_pl_repository_commentlist"
+ "&repositoryId=" + ruuid + "&openAppType=" + openAppType,
success: function(msg){
var html = "";
var array;
if (typeof(msg) == "string") {
array = eval('(' + msg + ')').msg;
} else {
array = msg.msg;
}
if (typeof(array) == "string") {
array = eval('(' + array + ')');
}
for (var i = 0; i < array.length; i++) {
var obj = array[i];
html += getHtml(obj);
}
$("#messageContent").html(html);
}
});
} else if (this.currentView == "publish") {
$.ajax({
url: "./jd?sid=" + $("#sid").val()
+ "&cmd=com.actionsoft.apps.coe.pal_publish_history_of_repository&wsId=" + $("#wsId").val()
+ "&repositoryId=" + ruuid,
success: function(msg){
var array;
if (typeof(msg) == "string") {
array = eval('(' + msg + ')').msg;
} else {
array = msg.msg;
}
if (typeof(array) == 'string') {
array = eval('(' + array + ')');
}
var html = "";
if (array != null && array.length > 0) {
for (var i = 0; i < array.length; i++) {
var data = array[i];
var type = data.publishType;
var style = "";
var info = "";
if (type == "N") {
style = "green";
info = "新发布";
} else if (type == "C") {
style = "blue";
info = "变更";
} else if (type == "S") {
style = "red";
info = "停用";
}
var clickHtml = "";
if (data.plId != undefined) {
clickHtml = " style='cursor: pointer;' onclick=\"openFileLink('" + data.plId + "', '_seft', '" + data.plName + "')\"";
}
html += "<section>"
+ " <span class=\"point-time point-" + style + "\"></span>"
+ " <time>"
+ " <span>" + data.publishDate + "</span>"
+ " </time>"
+ " <aside>"
+ " <p class=\"brief\"><span class=\"text-" + style + "\" " + clickHtml + " >" + info + "</span></p>"
+ " <p class=\"things\">" + data.publishDesc + "</p>"
+ " </aside>"
+ "</section>";
}
} else {
html = "<div style=\"font-size: 16px; color: #aaa; text-align: center; vertical-align: middle; line-height: 200px;\">暂无发布历史</div>";
}
$("#sidePublishListDiv article").html(html);
}
});
} else if (this.currentView == "link") {
$.ajax({
url: "./jd?sid=" + $("#sid").val()
+ "&cmd=com.actionsoft.apps.coe.pal_link_of_repository&wsId=" + $("#wsId").val()
+ "&plId=" + ruuid,
success: function(r){
var links = r.data.links;
var customLinks = r.data.customLInks;
var html = "";
var flag1 = false;
var flag2 = false;
if (links != null && links.length > 0) {
html += '<h3 style="color:#333333;text-align:left;verticalalign:middle;margin:10px 10px 0px 10px;">文件链接</h3>';
for (var i = 0; i < links.length; i++) {
html += '<img style="cursor:pointer;width: 100px; margin: 10px; background-color: #FFF;" src="' + links[i].photo
+ '" awsui-qtip="text:\''+ links[i].fileName + '\',position:\'bottom\'" onclick="openLinkUrlRewrite(\'custom\', \'' + links[i].url + '\', \'_seft\', \'' + links[i].uuid + '\',\'\',\''+links[i].fileName+'\',true)">';
}
} else {
flag1 = true;
}
if (customLinks != null && customLinks.length > 0){
html += '<h3 style="color:#333333;text-align:left;verticalalign:middle;margin:0px 10px;">自定义链接</h3>';
html += '<ul>';
var index = 1;
for (var i = 0; i < customLinks.length; i++) {
html += '<li style="line-height:25px;font-size:20px;text-align:left;verticalalign:middle;margin:0px 10px;"><a awsui-qtip="text:\''+ customLinks[i].name +'\',position:\'bottom\'" href="'+ customLinks[i].url +'" target="_blank">' + (index++) + '. ' + customLinks[i].name + '</a></li>';
}
html += '</ul>';
} else {
flag2 = true;
}
if (flag1 && flag2) {
html = "<div style=\"font-size: 16px; color: #aaa; text-align: center; vertical-align: middle; line-height: 200px;\">暂无链接</div>";
}
$("#linkContent").empty().html(html);
}
});
}
else if(this.currentView == 'diff') {
// var html = "<div style=\"font-size: 16px; color: #aaa; text-align: center; vertical-align: middle; line-height: 200px;\">暂无版本差异</div>";
var html = ''
var diffContent = [
{
versionName: 'Ver 2.0',
updateTime: '5月19日 16:00',
updateContent: [
{
title: '文件修改:',
detail: ['[内容]增加了111111111111111111','[责任部门]增加了11111111111111111']
},
{
title: '节点修改:',
detail: ['删除[开始事件]节点','删除[开始]节点','删除[人工]节点']
},
{
title: '[文件]删除11111111111',
detail: []
}
]
},
{
versionName: 'Ver 1.0',
updateTime: '5月14日 15:00',
updateContent: [
{
title: '文件修改',
detail: ['[内容]增加了111111111111 ',]
},
{
title: '节点修改',
detail: ['删除[开始事件]节点','删除[开始]节点','删除[人工]节点','删除[结束]节点']
},
{
title: '[制度]增加了11111111111111',
detail: []
},
{
title: '[文件]删除了11111111111',
detail: []
}
]
}
]
for (var i = 0; i < diffContent.length; i++) {
var diffCount = 0
var content = diffContent[i].updateContent
var diffListHtml = ''
for (var j = 0; j < content.length; j++) {
var diffDetailHtml = ''
var listDetail = content[j].detail
if (listDetail.length == 0) {
diffCount +=1
}
for (var k = 0; k < listDetail.length; k++) {
diffCount +=1
diffDetailHtml += '<div style="margin-left: 10px">' + '·' +listDetail[k]+'</div>'
}
diffListHtml += '<div>' + content[j].title +'</div>'
+ '<div>'+diffDetailHtml+'</div>'
}
html += '<tr>'
+ '<td style="width:50px;">' + diffContent[i].versionName + '</td>'
+ '<td style="width:250px">' + diffContent[i].updateTime + '<span style="padding-left: 10px">' + '(' + diffCount + '处修改)' + '</span>' + '</td>'
+ '</tr>'
+ '<tr>'
+ '<td style="width:50px"></td>'
+ '<td style="width:250px">' + diffListHtml + '</td>'
+ '</tr>'
}
$("#diffTable").empty().html(html)
}
if (this.currentView == "history") {
if (drawNav && Dock.historyVersions == null) {
this.loadHistorys();
}
}
},
/**
* 历史版本暂存
*
* @type {}
*/
historyVersions : null,
/**
* 加载历史版本
*/
loadHistorys : function() {/*
if (chartId == "") {
$("#history_container")
.html("<div style='padding: 20px 10px;'><@i18n resource='diagraming.demo.nohistory'/></div>")
return;
}
$.ajax({
url : "/diagraming/history",
data : {
chartId : chartId
},
success : function(data) {
Dock.historyVersions = data;
if (data.versions.length == 0) {
$("#history_container")
.html('<div style="padding: 20px 10px;"><@i18n resource="diagraming.nohistory"/></div>');
} else {
$("#history_container")
.html('<ul id="history_versions"></ul>');
var users = data.users;
for (var i = 0; i < data.versions.length; i++) {
var v = data.versions[i];
var newVersion = $('<li vid="' + v.versionId
+ '" def="' + v.definitionId + '" ind="' + i
+ '"><div class="version_time">' + v.updateTime
+ '</div><div class="version_name"></div></li>')
.appendTo($("#history_versions"));
var nameContainer = newVersion
.children(".version_name");
for (var j = 0; j < v.userIds.length; j++) {
var userId = v.userIds[j];
nameContainer.append("<div>" + users[userId]
+ "</div>");
}
var remarkContainer = $("<div class='history_remark'><div class='remark_container'><div class='remark_text'></div><a onclick='Dock.editHistoryRemark(event, \""
+ v.versionId
+ "\")' href='javascript:'><@i18n resource='diagraming.history.remark'/></a></div></div>")
.appendTo(newVersion);
if (v.remark) {
remarkContainer.find(".remark_text").text(v.remark);
}
remarkContainer
.append("<div class='edit_container'><textarea class='input_text' onclick='event.stopPropagation()'></textarea><a href='javascript:' class='save'><@i18n resource='global.save'/></a>&nbsp;&nbsp;<a href='javascript:' class='cancel'><@i18n resource='global.cancel'/></a></div>")
}
Dock.resetVersions();
}
}
});
*/},
/**
* 重置版本历史
*/
resetVersions : function() {
$("#history_versions").children("li").unbind().bind("click",
function() {
if (Dock.playingTimeout != null) {
return;
}
if ($(this).hasClass("selected")) {
Dock.closeHistory();
} else {
$("#history_versions").children(".selected")
.removeClass("selected");
$(this).addClass("selected");
var defId = $(this).attr("def");
Dock.showHistoryVersion(defId);
}
var current = $("#history_versions").children(".selected");
if (current.length != 0 && current.attr("ind") != "0") {
$("#spinner_play_speed").button("enable");
$("#btn_history_play").button("enable");
$("#btn_history_restore").button("enable");
} else {
$("#spinner_play_speed").button("disable");
$("#btn_history_play").button("disable");
$("#btn_history_restore").button("disable");
}
});
$("#history_versions").height("auto");
var top = $("#history_versions").offset().top;
var bottom = top + $("#history_versions").height() + 75;
if (bottom > $(window).height()) {
var height = $(window).height() - top - 75;
if (height < 140) {
height = 140;
}
$("#history_versions").height(height);
} else {
$("#history_versions").height("auto");
}
},
/**
* 编辑版本注释
*
* @param {}
* event
*/
editHistoryRemark : function(event, versionId) {
event.stopPropagation();
var versionDom = $("#history_versions").children("li[vid=" + versionId
+ "]");
versionDom.find(".remark_container").hide();
var currentRemark = versionDom.find(".remark_text").text();
var editContainer = versionDom.find(".edit_container");
editContainer.show();
editContainer.children("textarea").val(currentRemark).select();
editContainer.children(".save").bind("click", function(e) {
e.stopPropagation();
var newRemark = editContainer.children("textarea").val();
versionDom.find(".remark_text").text(newRemark);
versionDom.find(".remark_container").show();
editContainer.hide();
if (newRemark != currentRemark) {
CLB.send({
action : "versionRemark",
remark : newRemark,
versionId : versionId
});
}
});
editContainer.children(".cancel").bind("click", function(e) {
e.stopPropagation();
Dock.cancelHistoryRemark();
});
},
/**
* 取消版本注释的编辑
*/
cancelHistoryRemark : function() {
$(".remark_container").show();
$(".edit_container").hide();
},
/**
* 展示历史版本
*/
showHistoryVersion : function(defId) {
$("#spinner_play_speed").button("disable");
$("#btn_history_play").button("disable");
$("#btn_history_restore").button("disable");
Dock.cancelHistoryRemark();
$.ajax({
url : "/diagraming/getdefinition",
data : {
definitionId : defId
},
success : function(data) {
Dock.openHistory(data.definition);
if ($("#history_versions").children(".selected").attr("ind") != "0") {
$("#spinner_play_speed").button("enable");
$("#btn_history_play").button("enable");
$("#btn_history_restore").button("enable");
}
}
});
},
/**
* 播放版本历史
*/
playVersions : function() {
var current = $("#history_versions").children(".selected");
// if(current.length == 0){
// return;
// }
var index = parseInt(current.attr("ind"));
Dock.playOneVersion(index--, 0);
$("#btn_history_play").children().attr("class", "ico ico_pause");
$("#btn_history_play").attr("title", "暂停").trigger("mouseenter");
$("#btn_history_restore").button("disable");
},
/**
* 终止播放
*/
pauseVersions : function() {
if (this.playingTimeout) {
clearTimeout(this.playingTimeout);
}
this.playingTimeout = null;
$("#btn_history_play").children().attr("class", "ico ico_play");
$("#btn_history_play").attr("title", "从此版本播放");
$(".ico_playing").remove();
var current = $("#history_versions").children(".selected");
$("#history_versions").children(".playing").removeClass("playing");
if (current.length != 0 && current.attr("ind") != "0") {
$("#spinner_play_speed").button("enable");
$("#btn_history_play").button("enable");
$("#btn_history_restore").button("enable");
} else {
$("#spinner_play_speed").button("disable");
$("#btn_history_play").button("disable");
$("#btn_history_restore").button("disable");
}
},
playingTimeout : null,
/**
* 播放一个版本
*/
playOneVersion : function(index, msgIndex) {
var current = $("#history_versions").children("li[ind=" + index + "]");
$("#history_versions").children(".selected").removeClass("selected");
current.addClass("selected").addClass("playing");
$(".ico_playing").remove();
current.append("<div class='ico ico_playing'></div>");
var version = Dock.historyVersions.versions[index];
var messageStr = version.messages[msgIndex];
var messages = JSON.parse(messageStr);
MessageSource.receive(messages);
var top = current.position().top;
if (top < 0) {
$("#history_versions").scrollTop($("#history_versions").scrollTop()
+ top);
}
var time = $("#spinner_play_speed").spinner("getValue") * 1000;
if (index == 0 && msgIndex == version.messages.length - 1) {
this.pauseVersions();
} else {
if (msgIndex < version.messages.length - 1) {
msgIndex++;
} else {
index = index - 1;
msgIndex = 0;
}
this.playingTimeout = setTimeout(function() {
Dock.playOneVersion(index, msgIndex);
}, time);
}
},
currentDefinition : null,
/**
* 打开一个历史版本
*/
openHistory : function(definition) {
if (this.currentDefinition == null) {
this.currentDefinition = $.extend(true, {}, Model.define);
}
Utils.unselect();
Designer.open(definition);
// 取消快捷键
Designer.hotkey.cancel();
Designer.op.cancel();
$("#menu_bar").children().addClass("readonly");
$(".diagram_title").addClass("readonly");
$(".dock_buttons").children().addClass("disabled");
$("#dock_btn_history").removeClass("disabled");
$(".panel_box").addClass("readonly");
// 中止监听
CLB.stopListen();
},
/**
* 关闭历史版本
*/
closeHistory : function() {
if (this.currentDefinition != null) {
Designer.open(this.currentDefinition);
this.currentDefinition = null;
this.activeOperation();
}
},
/**
* 激活操作
*/
activeOperation : function() {
// 重新初始化快捷键
Designer.hotkey.init();
Designer.op.init();
$("#menu_bar").children().removeClass("readonly");
$(".diagram_title").removeClass("readonly");
$(".dock_buttons").children().removeClass("disabled");
$("#dock_btn_history").removeClass("disabled");
$(".panel_box").removeClass("readonly");
$("#history_versions").children(".selected").removeClass("selected");
// 继续监听
CLB.listen();
Dock.loadHistorys();
},
/**
* 恢复版本
*/
restoreVersion : function() {
var selected = $("#history_versions").children(".selected");
if (selected.length) {
MessageSource.beginBatch();
var elements = Dock.currentDefinition.elements;
// 删除当前的所有
var removed = [];
if (elements) {
for (var id in elements) {
removed.push(elements[id]);
}
}
MessageSource.send("remove", removed);
// 更新画布
var updatePageMsg = {
page : Utils.copy(Dock.currentDefinition.page),
update : Utils.copy(Model.define.page)
};
MessageSource.send("updatePage", updatePageMsg);
// 添加新图形
var newElements = Model.define.elements;
var added = [];
if (newElements) {
for (var id in newElements) {
added.push(newElements[id]);
}
}
MessageSource.send("create", added);
MessageSource.commit();
Dock.activeOperation();
}
},
/**
* 设置数据属性列表
*/
setAttributeList : function() {
var selectedIds = Utils.getSelectedIds();
var shape = Model.getShapeById(selectedIds[0]);
$(".clearfix").empty();
if (shape.dataAttributes) {
for (var i = 0; i < shape.dataAttributes.length; i++) {
var attr = shape.dataAttributes[i];
var typeText = $("#attr_add_type").children("option[value="
+ attr.type + "]").text();
var item = $("<li id='" + attr.id
+ "' class='attr_item attr_item_" + attr.id
+ "' onclick=\"Dock.editAttr('" + attr.id
+ "')\"><div class='attr_name'>" + attr.name
+ "</div><div class='attr_type'>" + typeText
+ "</div><div class='attr_value'>" + attr.value
+ "</div><div style='clear: both'></div></li>")
.appendTo($(".attr_list"));
if (attr.category != "default") {
item.append("<div class='ico ico_attr_delete' onclick=\"Dock.deleteAttr('"
+ attr.id + "', event)\"></div>");
}
}
}
this.fitAttrList();
},
/**
* 让数据属性列表适应
*/
fitAttrList : function() {
var scroll = $("#tagContent").scrollTop();
$("#tagContent").height("auto");
var top = $("#tagContent").offset().top;
var bottom = top + $(".clearfix").height() + 10;
if (bottom > $(window).height()) {
var height = $(window).height() - top - 10;
if (height < 140) {
height = 140;
}
$("#tagContent").height(height);
} else {
$("#tagContent").height("auto");
}
$("#tagContent").scrollTop(scroll);
},
/**
* 打开数据属性添加
*/
showAttrAdd : function() {
$("#attr_add_btn").hide();
$(".attr_add_items").show();
$("#attr_add_name").val("").focus();
$("#attr_add_type").val("string");
$("#attr_add_type").unbind().bind("change", function() {
Dock.setAttrValueInput(null, $(this).val());
});
Dock.setAttrValueInput(null, "string");
this.fitAttrList();
},
/**
* 保存数据属性添加
*/
saveAttrAdd : function() {
var name = $("#attr_add_name").val();
if (name == "") {
$("#attr_add_name").focus();
return;
}
var type = $("#attr_add_type").val();
var value = $("#attr_add_value_arera").children().val();
var newAttr = {
name : name,
type : type,
value : value
};
Designer.addDataAttribute(newAttr);
this.setAttributeList();
// 初始化添加区域
this.showAttrAdd();
},
/**
* 取消数据属性添加
*/
cancelAttrAdd : function() {
$("#attr_add_btn").show();
$(".attr_add_items").hide();
this.fitAttrList();
},
/**
* 编辑数据属性
*
* @param {}
* attrId
*/
editAttr : function(attrId) {
var item = $(".attr_item_" + attrId);
if (item.hasClass("attr_editing")) {
return;
}
if ($(".attr_editing").length > 0) {
var editingId = $(".attr_editing").attr("id");
this.saveAttrEdit(editingId);
}
item = $(".attr_item_" + attrId);
item.addClass("attr_editing");
var attr = Designer.getDataAttrById(attrId);
// 属性值输入
var input = this.setAttrValueInput(attr, attr.type);
input.val(attr.value).select();
if (attr.category != "default") {
// 属性名和类型输入
var nameDiv = item.children(".attr_name");
nameDiv.empty();
var nameInput = $("<input type='text' class='input_text' style='width: 88px'/>")
.appendTo(nameDiv);
nameInput.val(attr.name).select();
var typeDiv = item.children(".attr_type");
typeDiv.empty();
var select = $("<select class='input_select' style='width: 60px'></select>")
.appendTo(typeDiv);
select.html($("#attr_add_type").html()).val(attr.type);
select.bind("change", function() {
Dock.setAttrValueInput(attr, $(this).val());
});
}
// 添加显示设置
var displayArea = $("<div class='attr_edit_display'></div>")
.appendTo(item);
// 显示为的按钮
displayArea
.append("<div class='dock_label'><@i18n resource='diagraming.addattr.displayas'/></div>");
displayArea
.append("<div id='attr_edit_showtype' class='toolbar_button active btn_inline' style='width: 75px;'><div class='text_content'></div><div class='ico ico_dropdown'></div></div>");
displayArea.append("<div style='clear: both'></div>");
// 显示参数区域
displayArea.append("<div class='attr_display_options'></div>");
this.appendDisplayItems();
var showType = "none";
if (attr.showType) {
showType = attr.showType;
}
this.setAttrDisplay(showType);
$("#attr_edit_showtype").attr("ty", showType).button({
onMousedown : function() {
$("#attr_display_list").dropdown({
target : $("#attr_edit_showtype"),
onSelect : function(item) {
var type = item.attr("ty");
$("#attr_edit_showtype").attr("ty", type).button(
"setText", item.text());
Dock.setAttrDisplay(type);
}
});
var type = $("#attr_edit_showtype").text().trim();
$("#attr_display_list").children().each(function() {
if ($(this).text() == type) {
$("#attr_display_list").dropdown("select",
$(this));
return false;
}
});
}
});
$("#attr_edit_showtype").attr("ty", showType).button(
"setText",
$("#attr_display_list").children("li[ty=" + showType + "]")
.html());
if (showType != "none") {
$("#attr_display_name").attr("checked", attr.showName);
if (showType == "icon") {
this.setAttrIcon(attr.icon);
}
}
var horizontal = "mostright";
if (attr.horizontal) {
horizontal = attr.horizontal;
}
var vertical = "mostbottom";
if (attr.vertical) {
vertical = attr.vertical;
}
$("#attr_location_h").button(
"setText",
$("#attr_location_h_list").children("li[loc=" + horizontal
+ "]").html());
$("#attr_location_h").attr("loc", horizontal);
$("#attr_location_v").button(
"setText",
$("#attr_location_v_list").children("li[loc=" + vertical + "]")
.html());
$("#attr_location_v").attr("loc", vertical);
// 添加保存按钮
item
.append("<div class='attr_edit_btns'><div id='save_edit_attr' class='toolbar_button active'><@i18n resource='global.ok'/></div><div id='cancel_edit_attr' class='toolbar_button active' style='margin-left: 5px;'><@i18n resource='global.cancel'/></div></div>");
$("#save_edit_attr").bind("click", function(e) {
e.stopPropagation();
Dock.saveAttrEdit(attrId);
});
$("#cancel_edit_attr").bind("click", function(e) {
e.stopPropagation();
Dock.setAttributeList();
})
},
/**
* 设置数据属性值的输入
*
* @param {}
* attr
* @param {}
* type
*/
setAttrValueInput : function(attr, type) {
var valueArea;
if (attr != null) {
// 如果为null则是添加时调用否则为修改
valueArea = $(".attr_editing").children(".attr_value");
} else {
valueArea = $("#attr_add_value_arera");
}
valueArea.empty();
var result;
if (type == "boolean") {
result = $("<select class='input_select'><option value=''></option><option value='true'>true</option><option value='false'>false</option></select>")
.appendTo(valueArea);;
} else if (type == "list") {
result = $("<select class='input_select'></select>")
.appendTo(valueArea);
if (attr.listItems) {
for (var i = 0; i < attr.listItems.length; i++) {
var listItem = attr.listItems[i];
result.append("<option value='" + listItem + "'>"
+ listItem + "</option>");
}
}
} else {
result = $("<input type='text' class='input_text'/>")
.appendTo(valueArea);
}
if (attr == null) {
valueArea.children().css("width", "260px");
} else {
valueArea.children().css("width", "128px");
}
return result;
},
/**
* 添加数据显示的编辑项
*/
appendDisplayItems : function() {
var optionsArea = $(".attr_display_options");
// 详细区域包括是否显示name图标
var detailArea = $("<div class='opt_area'></div>")
.appendTo(optionsArea);
detailArea
.append("<input id='attr_display_name' type='checkbox'/><label for='attr_display_name'><@i18n resource='diagraming.addattr.showname'/></label>");
// 选择图标的Button
var iconButtonArea = $("<div id='attr_icon_area' style='padding-top:5px;'></div>")
.appendTo(detailArea);
iconButtonArea
.append("<div class='dock_label'><@i18n resource='diagraming.addattr.icon'/></div>");
iconButtonArea
.append("<div id='attr_display_icon' ico='' class='toolbar_button active btn_inline' style='width: 50px'><div class='text_content'></div><div class='ico ico_dropdown'></div></div>");
iconButtonArea.append("<div style='clear: both'></div>");
if ($("#attr_icon_list").children("li").html() == "") {
// 初始化图标选择
var html = "";
var index = 1;
while (index <= 49) {
if (index == 30) {
// 30时要空出一格
html += "<div></div>";
}
html += "<div onmousedown='Dock.setAttrIcon(" + index
+ ")' class='attr_icon_item'></div>";
index++;
}
$("#attr_icon_list").children("li").html(html);
}
// 位置设置区域
var locationArea = $("<div class='opt_area location_area'></div>")
.appendTo(optionsArea);
locationArea
.append("<div><@i18n resource='diagraming.addattr.display.location'/></div>");
locationArea
.append("<div class='dock_label'><@i18n resource='diagraming.addattr.display.h'/></div>");
locationArea
.append("<div id='attr_location_h' class='toolbar_button active btn_inline' loc='mostright'><div class='text_content location_content'><div><span style='left: 11px'></span></div>Most Right</div><div class='ico ico_dropdown'></div></div>");
locationArea.append("<div style='clear: both'></div>");
locationArea
.append("<div class='dock_label'><@i18n resource='diagraming.addattr.display.v'/></div>");
locationArea
.append("<div id='attr_location_v' class='toolbar_button active btn_inline' loc='mostbottom'><div class='text_content location_content'><div><span style='top: 11px'></span></div>Most Bottom</div><div class='ico ico_dropdown'></div></div>");
locationArea.append("<div style='clear: both'></div>");
optionsArea.append("<div style='clear: both'></div>");
$("#attr_display_icon").button({
onMousedown : function() {
$("#attr_icon_list").dropdown({
target : $("#attr_display_icon")
});
}
});
$("#attr_location_h").button({
onMousedown : function() {
$("#attr_location_h_list").dropdown({
target : $("#attr_location_h"),
onSelect : function(item) {
$("#attr_location_h").button("setText",
item.html());
$("#attr_location_h").attr("loc",
item.attr("loc"));
}
});
}
});
$("#attr_location_v").button({
onMousedown : function() {
$("#attr_location_v_list").dropdown({
target : $("#attr_location_v"),
onSelect : function(item) {
$("#attr_location_v").button("setText",
item.html());
$("#attr_location_v").attr("loc",
item.attr("loc"));
}
});
}
});
},
/**
* 根据数据属性显示类型,设置操作界面
*
* @param {}
* type
*/
setAttrDisplay : function(type) {
if (type == "none") {
$(".attr_display_options").hide();
} else {
$(".attr_display_options").show();
if (type == "icon") {
$("#attr_icon_area").show();
} else {
$("#attr_icon_area").hide();
}
}
},
/**
* 设置数据属性的显示图标
*
* @param {}
* icon
*/
setAttrIcon : function(icon) {
$("#attr_display_icon").attr("ico", icon).button("setText", "");
if (icon) {
$("#attr_display_icon").button("setText",
"<img src='/images/data-attr/" + icon + ".png'/>");
}
},
/**
* 保存数据属性编辑
*
* @param {}
* attrId
*/
saveAttrEdit : function(attrId) {
var item = $(".attr_item_" + attrId);
if (!item.hasClass("attr_editing")) {
return;
}
var attr = Designer.getDataAttrById(attrId);
if (attr.category != "default") {
var name = item.children(".attr_name").children("input").val();
if (name == "") {
item.children(".attr_name").children("input").focus();
return;
}
attr.name = name;
attr.type = item.children(".attr_type").children("select").val();
}
attr.value = item.children(".attr_value").children().val();
var showType = $("#attr_edit_showtype").attr("ty");
attr.showType = showType;
if (showType != "none") {
attr.showName = $("#attr_display_name").is(":checked");
attr.horizontal = $("#attr_location_h").attr("loc");
attr.vertical = $("#attr_location_v").attr("loc");
if (showType == "icon") {
attr.icon = $("#attr_display_icon").attr("ico");
}
}
// BPMN数据属性规则
var selectedIds = Utils.getSelectedIds();
var shape = Model.getShapeById(selectedIds[0]);
if (attr.category == "default" && shape.category == "bpmn") {
if (!shape.attribute) {
shape.attribute = {};
}
if (!shape.attribute.markers) {
shape.attribute.markers = [];
}
var markers = shape.attribute.markers;
if (attr.name == "loopCharacteristics") {
Utils.removeFromArray(markers, "loop");
Utils.removeFromArray(markers, "sequential");
Utils.removeFromArray(markers, "parallel");
if (attr.value == "StandardLoopCharacteristics") {
// 显示循环
Utils.addToArray(markers, "loop");
} else if (attr.value == "MultipleLoopCharacteristics") {
var sequantial = Designer
.getDefaultDataAttrByName("isSequantial");
if (sequantial != null) {
if (sequantial.value == "true") {
// 显示三条横线
Utils.addToArray(markers, "sequential");
} else {
// 显示三条竖线
Utils.addToArray(markers, "parallel");
}
}
}
} else if (attr.name == "isSequantial") {
Utils.removeFromArray(markers, "sequential");
Utils.removeFromArray(markers, "parallel");
var loop = Designer
.getDefaultDataAttrByName("loopCharacteristics");
if (loop != null && loop.value == "MultipleLoopCharacteristics") {
if (attr.value == "true") {
// 显示三条横线
Utils.addToArray(markers, "sequential");
} else {
// 显示三条竖线
Utils.addToArray(markers, "parallel");
}
}
} else if (attr.name == "isForCompensation") {
// 显示两个左箭头
Utils.removeFromArray(markers, "compensation");
if (attr.value == "true") {
Utils.addToArray(markers, "compensation");
}
} else if (attr.name == "isCollection"
|| attr.name == "ParticipantMultiplicity") {
Utils.removeFromArray(markers, "parallel");
if (attr.value == "true") {
// 显示三条竖线
Utils.addToArray(markers, "parallel");
}
} else if (attr.name == "loopType") {
Utils.removeFromArray(markers, "loop");
Utils.removeFromArray(markers, "sequential");
Utils.removeFromArray(markers, "parallel");
if (attr.value == "Standard") {
// 显示循环
Utils.addToArray(markers, "loop");
} else if (attr.value == "MultiInstanceSequential") {
// 显示三条横线
Utils.addToArray(markers, "sequential");
} else if (attr.value == "MultiInstanceParallel") {
// 显示三条竖线
Utils.addToArray(markers, "parallel");
}
}
}
Designer.updateDataAttribute(attr);
this.setAttributeList();
},
/**
* 删除数据属性
*
* @param {}
* attrId
*/
deleteAttr : function(attrId, event) {
event.stopPropagation();
var item = $(".attr_item_" + attrId);
item.remove();
this.fitAttrList();
Designer.deleteDataAttribute(attrId);
},
/**
* 进入全屏
*/
fullScreen : function(element, presentation) {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else {
// 无法进入全屏,提示错误
if (presentation) {
$("#fullscreen_tip").find(".t").text("由于您的浏览器限制,无法进入演示视图。");
} else {
$("#fullscreen_tip").find(".t").text("无法进入全屏视图,您可以按(F11)进入。");
}
$("#fullscreen_tip").fadeIn();
}
},
/**
* 进入演示视图
*/
enterPresentation : function() {
$("#designer").bind('webkitfullscreenchange', function(e) {
Dock.manageFullScreen();
});
$(document).bind('mozfullscreenchange', function(e) {
Dock.manageFullScreen();
}).bind('fullscreenchange', function(e) {
Dock.manageFullScreen();
});
this.fullScreen(Utils.getDomById("designer"), true);
},
/**
* 进入全屏视图
*/
enterFullScreen : function() {
this.fullScreen(document.documentElement);
},
manageFullScreen : function() {
var designer = Utils.getDomById("designer");
if (document.fullscreenElement || document.webkitFullscreenElement
|| document.mozFullScreenElement) {
// 如果进入全屏状态
$("#shape_panel").addClass("readonly");
$("#designer_viewport").addClass("readonly");
$(window).unbind("resize.designer");
$("#designer_layout").height(window.screen.height);
// 取消快捷键
Designer.hotkey.cancel();
Designer.op.cancel();
// 隐藏Dock
$("#dock").hide();
$(".dock_view").hide();
Designer.contextMenu.destroy();
Designer.op.canvasFreeDraggable();
} else {
$("#shape_panel").removeClass("readonly");
$("#designer_viewport").removeClass("readonly");
Designer.initialize.initLayout();
Designer.hotkey.init();
Designer.op.init();
$("#dock").show();
if (Dock.currentView != "") {
Dock.showView(Dock.currentView);
}
Designer.contextMenu.init();
$("#designer").unbind('webkitfullscreenchange');
$("#designer").unbind('mozfullscreenchange')
.unbind('fullscreenchange');
}
}
};
/**
* 鹰眼导航
*
* @type {}
*/
var Navigator = {
/**
* 初始化
*/
init : function() {
$("#designer_layout").bind("scroll", function() {
Navigator.setView();
});
// 绑定拖动
$("#navigation_eye").bind("mousedown", function(downE) {
var eye = $(this);
var beginPos = eye.position();
// 先取消滚动事件
$("#designer_layout").unbind("scroll");
var layout = $("#designer_layout");
var beginTop = layout.scrollTop();
var beginLeft = layout.scrollLeft();
// 设计器画布
var designerCanvas = $("#designer_canvas");
var canvasW = designerCanvas.width();
var canvasH = designerCanvas.height();
// 鹰眼视图画布
var canvas = $("#navigation_canvas");
var navW = canvas.width();
var navH = canvas.height();
// 宽高比例
var scaleW = canvasW / navW;
var scaleH = canvasH / navH;
$(document).bind("mousemove.navigator", function(moveE) {
var offsetX = moveE.pageX - downE.pageX;
var offsetY = moveE.pageY - downE.pageY;
var newLeft = beginLeft + offsetX * scaleW;
layout.scrollLeft(newLeft);
var newTop = beginTop + offsetY * scaleH;
layout.scrollTop(newTop);
eye.css({
left : beginPos.left + offsetX,
top : beginPos.top + offsetY
});
});
$(document).bind("mouseup.navigator", function(moveE) {
$(document).unbind("mousemove.navigator");
$(document).unbind("mouseup.navigator");
Navigator.setView();
// 重新绑定
$("#designer_layout").bind("scroll",
function() {
Navigator.setView();
});
});
});
$("#navigation_canvas").bind("click", function(e) {
var pos = Utils.getRelativePos(e.pageX, e.pageY, $(this));
// 设计器画布
var designerCanvas = $("#designer_canvas");
var canvasW = designerCanvas.width();
var canvasH = designerCanvas.height();
// 鹰眼视图画布
var canvas = $("#navigation_canvas");
var navW = canvas.width();
var navH = canvas.height();
// 宽高比例
var scaleW = canvasW / navW;
var scaleH = canvasH / navH;
// 得到点击位置,相对于设计器画布的坐标
var canvasX = pos.x * scaleW;
var canvasY = pos.y * scaleH;
// 把点击坐标,置于屏幕中心
var layout = $("#designer_layout");
var margin = Designer.config.pageMargin;
layout.scrollLeft(canvasX + margin - layout.width() / 2);
layout.scrollTop(canvasY + margin - layout.height() / 2);
});
this.setView();
},
/**
* 绘制鹰眼视图
*/
draw : function() {
if (this.drawNavigationTimeout) {
window.clearTimeout(this.drawNavigationTimeout);
}
this.drawNavigationTimeout = setTimeout(function() {
var canvas = $("#navigation_canvas");
var ctx = canvas[0].getContext("2d");
ctx.save();
ctx.clearRect(0, 0, canvas.width(), canvas.height());
ctx.scale(canvas.width() / Model.define.page.width, canvas
.height()
/ Model.define.page.height);
// 从最底层开始绘制图形
for (var i = 0; i < Model.orderList.length; i++) {
var shapeId = Model.orderList[i].id;
var shape = Model.getShapeById(shapeId);
ctx.save();
if (shape.name != "linker") {
// 对图形执行绘制
var p = shape.props;
var style = shape.lineStyle;
ctx.translate(p.x, p.y);
ctx.translate(p.w / 2, p.h / 2);
ctx.rotate(p.angle);
ctx.translate(-(p.w / 2), -(p.h / 2));
ctx.globalAlpha = shape.shapeStyle.alpha;
Designer.painter.renderShapePath(ctx, shape);
} else {
var linker = shape;
var style = linker.lineStyle;
var points = linker.points;
var from = linker.from;
var to = linker.to;
ctx.beginPath();
ctx.moveTo(from.x, from.y);
if (linker.linkerType == "curve") {
var cp1 = points[0];
var cp2 = points[1];
ctx.bezierCurveTo(cp1.x, cp1.y, cp2.x, cp2.y,
to.x, to.y);
} else {
for (var j = 0; j < points.length; j++) {
// 如果是折线,会有折点
var linkerPoint = points[j];
ctx.lineTo(linkerPoint.x, linkerPoint.y);
}
ctx.lineTo(to.x, to.y);
}
ctx.lineWidth = style.lineWidth;
ctx.strokeStyle = "rgb(" + style.lineColor + ")";
ctx.stroke();
}
ctx.restore();
}
ctx.restore();
Navigator.setView();
this.drawNavigationTimeout = null;
}, 100);
},
/**
* 设置鹰眼视图
*/
setView : function() {
var navigator = $("#navigation_eye");
// 设计器可见视图
var layout = $("#designer_layout");
var viewW = layout.width();
var viewH = layout.height();
// 鹰眼视图画布
var canvas = $("#navigation_canvas");
var navW = canvas.width();
var navH = canvas.height();
// 设计器画布
var designerCanvas = $("#designer_canvas");
var canvasW = designerCanvas.width();
var canvasH = designerCanvas.height();
var margin = Designer.config.pageMargin;
// 得到设计器画布在可视窗口中的left, top
var visibleLeft = margin - layout.scrollLeft();
var visibleRight = visibleLeft + canvasW;
if (visibleLeft < 0) {
visibleLeft = 0;
} else if (visibleLeft > viewW) {
visibleLeft = viewW;
}
if (visibleRight > viewW) {
visibleRight = viewW;
} else if (visibleRight < 0) {
visibleRight = 0;
}
var visibleTop = margin - layout.scrollTop();
var visibleBottom = visibleTop + canvasH;
if (visibleTop < 0) {
visibleTop = 0;
} else if (visibleTop > viewH) {
visibleTop = viewH;
}
if (visibleBottom > viewH) {
visibleBottom = viewH;
} else if (visibleBottom < 0) {
visibleBottom = 0;
}
var visibleW = visibleRight - visibleLeft;
var visibleH = visibleBottom - visibleTop;
if (visibleW == 0 || visibleH == 0) {
// 画布已经不可见
navigator.hide();
} else {
// 换算成鹰眼视图中的left, top
var navLeft = layout.scrollLeft() - margin;
if (navLeft < 0) {
navLeft = 0;
}
navLeft = navLeft * (navW / canvasW);
var navTop = layout.scrollTop() - margin;
if (navTop < 0) {
navTop = 0;
}
navTop = navTop * (navH / canvasH);
var navViewW = visibleW * (navW / canvasW);
var navViewH = visibleH * (navH / canvasH);
navigator.css({
left : navLeft - 1,
top : navTop - 1,
width : navViewW,
height : navViewH
}).show();
}
}
};
/**
* jQuery的扩展
*/
(function($) {
/**
* 按钮
*/
$.fn.button = function(options) {
if (typeof options == "string") {
if (options == "disable") {
$(this).addClass("disabled");
$(this).find("input").attr("disabled", true);
} else if (options == "enable") {
$(this).removeClass("disabled");
$(this).find("input").attr("disabled", false);
} else if (options == "isDisabled") {
return $(this).hasClass("disabled");
} else if (options == "isSelected") {
return $(this).hasClass("selected");
} else if (options == "unselect") {
$(this).removeClass("selected");
} else if (options == "select") {
$(this).addClass("selected");
} else if (options == "setText") {
$(this).children(".text_content").html(arguments[1]);
} else if (options == "setColor") {
$(this).children(".btn_color").css("background-color",
"rgb(" + arguments[1] + ")");
} else if (options == "getColor") {
var color = $(this).children(".btn_color")
.css("background-color").replace(/\s/g, "");
return color.substring(4, color.length - 1);
}
return $(this);
}
var target = $(this);
target.unbind("click");
target.unbind("mousedown")
if (options.onClick) {
target.bind("click", function() {
if (target.button("isDisabled")) {
return;
}
options.onClick();
});
}
if (options.onMousedown) {
target.bind("mousedown", function(e) {
if (target.button("isDisabled")) {
return;
}
options.onMousedown();
e.stopPropagation();
});
}
};
var currentMenu = null;
// 下拉控件
$.fn.dropdown = function(options) {
var menu = $(this);
menu.find(".ico_selected").remove();
if (typeof options == "string") {
if (options == "close") {
menu.hide();
currentMenu.target.removeClass("selected");
$(document).unbind("mousedown.ui_dropdown");
currentMenu = null;
} else if (options == "select") {
arguments[1].prepend("<div class='ico ico_selected'></div>");
}
return;
}
if (currentMenu != null) {
/**
* 如果当前有其他菜单是打开的,则要先关闭
*/
currentMenu.menu.dropdown("close");
}
var menu = $(this);
var tar = options.target;
currentMenu = {
target : tar,
menu : menu
};
var offset = tar.offset();
tar.addClass("selected");
menu.show();
var left;
if (options.position == "center") {
left = offset.left + tar.outerWidth() / 2 - menu.outerWidth() / 2;
} else if (options.position == "right") {
left = offset.left + tar.outerWidth() - menu.outerWidth();
} else {
left = offset.left;
}
var top = offset.top + tar.outerHeight();
if (top + menu.outerHeight() > $(window).height()) {
top = $(window).height() - menu.outerHeight();
}
menu.css({
top : top,
left : left
});
if (typeof options.zindex != "undefined") {
menu.css("z-index", options.zindex);
}
menu.unbind("mousedown").bind("mousedown", function(e) {
e.stopPropagation();
});
if (typeof options.bind == "undefined" || options.bind == true) {
menu.find("li:not(.devider,.menu_text)").unbind().bind("click",
function() {
var item = $(this);
if (!item.menuitem("isDisabled")
&& item.children(".extend_menu").length == 0) {
if (options.onSelect) {
options.onSelect(item);
}
menu.dropdown("close");
}
});
}
$(document).bind("mousedown.ui_dropdown", function() {
menu.dropdown("close");
});
};
// 调色板
$.colorpicker = function(options) {
var picker = $("#color_picker");
picker.find(".selected").removeClass("selected");
if (!picker.attr("init")) {
// 没有经过初始化
picker.find("div").each(function() {
var color = $(this).css("background-color");
color = color.replace(/\s/g, "");
color = color.substring(4, color.length - 1);
$(this).attr("col", color);
});
picker.attr("init", true);
}
var opt = $.extend({}, options, {
bind : false
});
picker.dropdown(opt);
picker.children(".color_items").children("div").unbind().bind("click",
function() {
if (options.onSelect) {
var color = $(this).css("background-color");
color = color.replace(/\s/g, "");
color = color.substring(4, color.length - 1);
options.onSelect(color);
}
$("#color_picker").dropdown("close");
});
if (options.color) {
picker.find("div[col='" + options.color + "']")
.addClass("selected");
}
$("#color_picker").children(".color_extend").remove();
if (options.extend) {
$("#color_picker").append("<div class='color_extend'>"
+ options.extend + "</div>")
}
};
// 颜色按钮
$.fn.colorButton = function(opt) {
var tar = $(this);
if (typeof opt == "string") {
if (opt == "setColor") {
tar.children(".picker_btn_holder").css("background-color",
"rgb(" + arguments[1] + ")");
}
return;
}
tar
.html("<div class='picker_btn_holder'></div><div class='ico ico_colordrop'></div>");
tar.bind("mousedown", function(e) {
if (tar.button("isDisabled")) {
return;
}
e.stopPropagation();
var options = $.extend({}, opt);
options.target = tar;
options.onSelect = function(color) {
tar.colorButton("setColor", color);
if (opt.onSelect) {
opt.onSelect(color);
}
};
var color = $(this).children(".picker_btn_holder")
.css("background-color");
color = color.replace(/\s/g, "");
color = color.substring(4, color.length - 1);
options.color = color;
$.colorpicker(options);
});
};
/**
* 数字框 min: 0, max: 360, unit: "°", step: 15,
*/
$.fn.spinner = function(opt) {
var spinner = $(this);
if (typeof opt == "string") {
if (opt == "getValue") {
var result = spinner.find("input").val();
result = parseFloat(result);
return result;
} else if (opt == "setValue") {
spinner.find("input").val(arguments[1]);
spinner.attr("old", arguments[1]);
}
return;
}
spinner.html("<div class='spinner_input'><input /></div><div class='buttons'><div class='spinner_up'></div><div class='spinner_down'></div></div>");
var defaults = {
min : 0,
max : Number.MAX_VALUE,
step : 1,
unit : ""
};
opt = $.extend(defaults, opt);
var inputBox = spinner.children(".spinner_input");
var input = inputBox.find("input");
spinner.spinner("setValue", opt.min + opt.unit);
spinner.find(".spinner_up").bind("click", function() {
if (spinner.button("isDisabled")) {
return;
}
var now = spinner.spinner("getValue");
var newVal = now + opt.step;
setSpinnerValue(spinner, newVal, opt);
});
spinner.find(".spinner_down").bind("click", function() {
if (spinner.button("isDisabled")) {
return;
}
var now = spinner.spinner("getValue");
var newVal = now - opt.step;
setSpinnerValue(spinner, newVal, opt);
});
input.bind("keydown", function(e) {
if (e.keyCode == 13) {
var newVal = parseInt($(this).val());
if (isNaN(newVal)) {
newVal = opt.min;
}
setSpinnerValue(spinner, newVal, opt);
}
}).bind("focus", function(e) {
$(this).select();
$(this).bind("mouseup", function(e) {
e.preventDefault();
$(this).unbind("mouseup");
});
var box = $(this).parent().parent();
if (!box.hasClass("active")) {
box.addClass("active inset");
}
}).bind("blur", function(e) {
var box = $(this).parent().parent();
if (box.hasClass("inset")) {
box.removeClass("active inset");
}
});
};
function setSpinnerValue(spinner, value, opt) {
if (value > opt.max) {
value = opt.max;
}
if (value < opt.min) {
value = opt.min;
}
var oldValue = spinner.attr("old");
var newValue = value + opt.unit;
if (oldValue != newValue) {
if (opt.onChange) {
opt.onChange(value);
}
}
spinner.spinner("setValue", value + opt.unit);
}
/**
* 菜单项
*/
$.fn.menuitem = function(options) {
var target = $(this);
if (typeof options == "string") {
if (options == "disable") {
target.addClass("disabled");
} else if (options == "enable") {
target.removeClass("disabled");
} else if (options == "isDisabled") {
return target.hasClass("disabled");
} else if (options == "isSelected") {
return target.children(".ico_selected").length > 0;
} else if (options == "unselect") {
return target.children(".ico_selected").remove();
} else if (options == "select") {
return target.prepend("<div class='ico ico_selected'></div>")
}
}
};
/**
* 窗口
*/
$.fn.dlg = function(options) {
var dlg = $(this);
if (typeof options == "string") {
if (options == "close") {
dlg.children(".dlg_close").trigger("click");
}
return;
}
var defaults = {
closable : true
};
options = $.extend(defaults, options);
var close = dlg.children(".dlg_close");
if (close.length == 0) {
close = $("<div class='ico dlg_close'></div>").appendTo(dlg);
}
if (options.closable == false) {
close.hide();
} else {
close.show();
}
$(".dlg_mask").remove();
$("body").append("<div class='dlg_mask'></div>")
close.unbind().bind("click", function() {
dlg.hide();
$(".dlg_mask").remove();
if (options && options.onClose) {
options.onClose();
}
$(document).unbind("keydown.closedlg");
dlg.find("input,textarea,select")
.unbind("keydown.closedlg");
});
dlg.css({
left : ($(window).width() - dlg.outerWidth()) / 2,
top : ($(window).height() - dlg.outerHeight()) / 2
});
dlg.show();
if (options.closable) {
dlg.find("input,textarea,select").unbind("keydown.closedlg").bind(
"keydown.closedlg", function(e) {
if (e.keyCode == 27) {
dlg.children(".dlg_close").trigger("click");
}
});
$(document).unbind("keydown.closedlg").bind("keydown.closedlg",
function(e) {
if (e.keyCode == 27) {
dlg.children(".dlg_close").trigger("click");
}
});
}
dlg.children(".dialog_header").unbind("mousedown.drag_dlg").bind(
"mousedown.drag_dlg", function(e) {
var target = $(this).parent();
var downX = e.pageX;
var downY = e.pageY;
var downLeft = target.offset().left;
var downTop = target.offset().top;
$(document).bind("mousemove.drag_dlg", function(e) {
var left = e.pageX - downX + downLeft;
var top = e.pageY - downY + downTop;
target.offset({
left : left,
top : top
});
});
$(document).bind("mouseup.drag_dlg", function(e) {
$(document).unbind("mousemove.drag_dlg");
$(document).unbind("mouseup.drag_dlg");
});
});
};
})(jQuery);