import inherits from 'inherits';
import PropertiesActivator from 'bpmn-js-properties-panel/lib/PropertiesActivator';
// Require all properties you need from existing providers.
// In this case all available bpmn relevant properties without camunda extensions.
import processProps from 'bpmn-js-properties-panel/lib/provider/bpmn/parts/ProcessProps';
//import eventProps from 'bpmn-js-properties-panel/lib/provider/bpmn/parts/EventProps';
//import linkProps from 'bpmn-js-properties-panel/lib/provider/bpmn/parts/LinkProps';
import documentationProps from 'bpmn-js-properties-panel/lib/provider/bpmn/parts/DocumentationProps';
import idProps from 'bpmn-js-properties-panel/lib/provider/bpmn/parts/IdProps';
import nameProps from 'bpmn-js-properties-panel/lib/provider/bpmn/parts/NameProps';
import {
isAny
} from 'bpmn-js/lib/features/modeling/util/ModelingUtil';
import entryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory';
//import spellProps from '../magic/parts/SpellProps';
//import axios from 'axios';
//require("layui-layer");
import Vue from 'vue';
// Require your custom property entries.
//import spellProps from './parts/SpellProps';
var getBusinessObject = require('bpmn-js/lib/util/ModelUtil').getBusinessObject;
var cmdHelper = require('bpmn-js-properties-panel/lib/helper/CmdHelper');
function ensureNotNull(prop) {
if (!prop) {
throw new Error(prop + ' must be set.');
}
return prop;
}
var setDefaultParameters = function (options) {
// default method to fetch the current value of the input field
var defaultGet = function (element) {
var bo = getBusinessObject(element),
res = {},
prop = ensureNotNull(options.modelProperty);
res[prop] = bo.get(prop);
return res;
};
// default method to set a new value to the input field
var defaultSet = function (element, values) {
var res = {},
prop = ensureNotNull(options.modelProperty);
if (values[prop] !== '') {
res[prop] = values[prop];
} else {
res[prop] = undefined;
}
return cmdHelper.updateProperties(element, res);
};
// default validation method
var defaultValidate = function () {
return {};
};
return {
id: options.id,
description: (options.description || ''),
get: (options.get || defaultGet),
set: (options.set || defaultSet),
validate: (options.validate || defaultValidate),
html: ''
};
};
//配置右边状态栏
// The general tab contains all bpmn relevant properties.
// The properties are organized in groups.
function createGeneralTabGroups(element, bpmnFactory, elementRegistry, translate) {
var generalGroup = {
id: 'general',
label: translate('General'),
entries: []
};
if (isAny(element, ['bpmn:Process'])) {
generalGroup.entries.push(entryFactory.textField({
id: 'id',
//description : 'Apply a black magic spell',
label: '流程KEY',
canBeDisabled: true,
modelProperty: 'id'
}));
} else {
idProps(generalGroup, element, translate);
}
nameProps(generalGroup, element, null, null, translate);
processProps(generalGroup, element, translate);
documentationProps(generalGroup, element, bpmnFactory, translate);
var configureGroup = {
id: 'keyDetails',
label: 'keyDetails',
entries: []
}
/*
var detailsGroup = {
id: 'Details',
label: 'Details',
entries: []
};
linkProps(detailsGroup, element, translate);
eventProps(detailsGroup, element, bpmnFactory, elementRegistry, translate);
var documentationGroup = {
id: 'Documentation',
label: '说明',
entries: []
};
documentationProps(documentationGroup, element, bpmnFactory, translate);
*/
return [
generalGroup,
configureGroup
// detailsGroup
// documentationGroup
]
}
// Create the custom magic tab
/*
function createMagicTabGroups(element, elementRegistry) {
// Create a group called "Black Magic".
var blackMagicGroup = {
id: 'black-magic',
label: 'Black Magic',
entries: []
};
// Add the spell props to the black magic group.
blackMagicGroup.entries.push(entryFactory.button({id:"id",label:"1111"}));
spellProps(blackMagicGroup, element);
return [
blackMagicGroup
];
}*/
export default function MagicPropertiesProvider(
eventBus, bpmnFactory, elementRegistry,
translate) {
PropertiesActivator.call(this, eventBus);
this.getTabs = function (element) {
var generalTab = {
id: 'General',
label: '基本信息',
groups: createGeneralTabGroups(element, bpmnFactory, elementRegistry, translate)
};
// The "magic" tab
/*
var magicTab = {
id: 'magic',
label: 'Magic',
groups: createMagicTabGroups(element, elementRegistry)
};
*/
// Show general + "magic" tab
return [
generalTab,
//magicTab
];
};
}
inherits(MagicPropertiesProvider, PropertiesActivator);
//创建自定义控件
entryFactory.button = function (options, defaultParameters) {
var id = options.id,
label = options.label || id,
element = options.element;
var $dialogVisible = Vue.prototype.store.state.dialogVisible;
var _click = function processConfig() {
//console.log(Vue.prototype.store);
// console.log(element)
if (element && element.constructor.name == "Root") {
$dialogVisible.dialogIfromeSrc = $dialogVisible.url + "/ebpm-process-manage/procDefModelMgr/proConfig.do?procDefId=" + $dialogVisible.procDefId;
//$dialogVisible.dialogIfromeSrc = $dialogVisible.url+'/ebpm-process-manage/procDefModelMgr/proConfig.do?procDefId=api:1:79097648-b4c9-11e9-8827-aa03cab5dae6';
$dialogVisible.title = "流程设置";
} else {
if (defaultParameters.id == 'bdqx') {
$dialogVisible.dialogIfromeSrc = $dialogVisible.url + "/plateform-web/#/roleFormField?formId=" + $dialogVisible.formId + "&procDefKey=" + $dialogVisible.procDefKey +
"&appId=" + $dialogVisible.appId + "&actDefId=" + element.id + "&formCode=" + $dialogVisible.formCode + "&modelId=" + $dialogVisible.modelId
$dialogVisible.title = element.businessObject.name + "环节表单设置";
} else {
$dialogVisible.dialogIfromeSrc = $dialogVisible.url + "/ebpm-process-manage/activityInfo/actConfig.do?" +
"processDefId=" + $dialogVisible.procDefId + "&activityDefId=" + element.id + "&sys=" + $dialogVisible.appId;
//$dialogVisible.dialogIfromeSrc = $dialogVisible.url+'/ebpm-process-manage/activityInfo/actConfig.do?' +
//'procDefId=api:1:79097648-b4c9-11e9-8827-aa03cab5dae6&activityDefId=sid-20F588AB-471E-4E74-B2B1-FB46403E26DB';
$dialogVisible.title = "环节设置";
}
}
$dialogVisible.show = true;
//console.log($dialogVisible);
}
var resource = defaultParameters;
if (!$dialogVisible.procDefId) {
resource.html = '' + label + '';
} else {
resource.html = '' + label + '';
resource['_click'] = _click;
}
return resource;
};