All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ide-bpm.scripts.editor-directives.js Maven / Gradle / Ivy

/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
angular.module('flowableModeler')
    .directive('loading', ['$translate', function ($translate) {
        return {
            restrict: 'E',
            template: '
' }; }]); angular.module('flowableModeler') .directive('loadingLeftPull', ['$translate', function ($translate) { return { restrict: 'E', template: '
' }; }]); /** * This is a template for the icon of a stencil item. */ angular.module('flowableModeler') .directive('stencilItemIcon', [function () { return { scope: { item: '=stencilItem' }, restrict: 'E', template: '' + '' }; }]); // Workaround for https://github.com/twbs/bootstrap/issues/8379 : // prototype.js interferes with regular dropdown behavior angular.module('flowableModeler') .directive('activitiFixDropdownBug', function () { return { restrict: 'AEC', link: function (scope, element, attrs) { if (!element.hasClass('btn-group')) { // Fix applied to button, use parent instead element = element.parent(); } element.on('hidden.bs.dropdown ', function () { element.show(); // evil prototype.js has added display:none to it ... }) } }; }); //form builder element renderer angular.module('flowableModeler').directive('formBuilderElement', ['$rootScope', '$timeout', '$modal', '$http', '$templateCache', '$translate', 'RecursionHelper', 'FormBuilderService', function ($rootScope, $timeout, $modal, $http, $templateCache, $translate, RecursionHelper, FormBuilderService) { return { restrict: 'AE', templateUrl: 'views/templates/form-builder-element-template.html', transclude: false, scope: { formElement: '=formElement', editState: '=editState', formMode: '=formMode', drop: "&", moved: "&" }, compile: function(element) { return RecursionHelper.compile(element, this.link); }, link: function ($scope, $element, attributes) { $scope.formTabs = [ { "id": "general", "name": $translate.instant('FORM-BUILDER.TABS.GENERAL') }, { "id": "options", "name": $translate.instant('FORM-BUILDER.TABS.OPTIONS'), "show": ['dropdown', 'radio-buttons'] }, { "id": "upload", "name": $translate.instant('FORM-BUILDER.TABS.UPLOAD-OPTIONS'), "show": ['upload'] }, { "id": "advanced", "name": $translate.instant('FORM-BUILDER.TABS.ADVANCED-OPTIONS'), "show": ['text', 'multi-line-text', 'integer', 'decimal','hyperlink'] } ]; $scope.activeTab = $scope.formTabs[0]; $scope.tabClicked = function (tab) { $scope.activeTab = tab; }; var templateUrl = 'views/popover/formfield-edit-popover.html'; $scope.removeFormElement = function (formElement) { if ($rootScope.formItems.indexOf(formElement) >= 0) { $rootScope.formItems.splice($rootScope.formItems.indexOf(formElement), 1); } }; $scope.pristine = true; $scope.newOption = { name: '' }; $scope.insertFormField = { position: 0 }; $scope.openFieldPopover = function () { // Storing original values. In case the changes would trigger a layout change var originalFormElementType = $scope.formElement.type; var originalDisplayFieldType = undefined; if (originalFormElementType === 'readonly') { if ($scope.formElement.params && $scope.formElement.params.field && $scope.formElement.params.field.type) { originalDisplayFieldType = $scope.formElement.params.field.type; } } // Create popover $scope.fieldEditPopup = _internalCreateModal({ template: 'views/popover/formfield-edit-popover.html?version=' + Date.now(), scope: $scope, backdrop: 'static', keyboard: false }, $modal, $scope); // Check for layout changes var deregisterHideListener = $scope.$on('modal.hide', function() { if ($scope.formElement.type === 'readonly') { if ($scope.formElement.params && $scope.formElement.params.field && $scope.formElement.params.field.type && $scope.formElement.params.field.type !== originalFormElementType) { $scope.$emit('readonly-field-referenced-field-changed', { formElement: $scope.formElement, originalDisplayFieldType: originalDisplayFieldType }); } } deregisterHideListener(); }); }; $scope.formElementNameChanged = function (field) { if (!field.overrideId) { var fieldId; if (field.name && field.name.length > 0) { fieldId = field.name.toLowerCase(); fieldId = fieldId.replace(new RegExp(' ', 'g'), ''); fieldId = fieldId.replace(/[&\/\\#,+~%.'":*?!<>{}()$@;]/g, ''); } else { var index = 1; if (field.layout) { index = 1 + (2 * field.layout.row) + field.layout.column; } fieldId = 'field' + index; } field.id = fieldId; } }; $scope.confirmNewOption = function ($event) { if ($scope.newOption.name) { var options = $scope.formElement.options; options.push($scope.newOption); $scope.newOption = {name: ''}; // if first additional option; first option is defaulted if (options.length == 2) { $scope.formElement.value = $scope.formElement.options[0].name; } if ($event) { // Focus the input field again, to make adding more options possible immediatly $($event.target).focus(); } } }; $scope.optionKeyDown = function ($event) { if ($event.keyCode == 13) { $scope.confirmNewOption($event); } }; $scope.removeOption = function (index) { $scope.formElement.options.splice(index, 1); // if only 1 option left; reset default if ($scope.formElement.options == 1) { $scope.formElement.value = ''; } else { // if removed element is the default option; first option is defaulted var isPresent = false; for (var i = 0; i < $scope.formElement.options.length; i++) { if ($scope.formElement.options[i].name == $scope.formElement.value) { isPresent = true; } } if (!isPresent) { $scope.formElement.value = $scope.formElement.options[0].name; } } }; $scope.doneEditing = function () { if ($scope.fieldEditPopup) { $scope.fieldEditPopup.$scope.$hide(); } }; // Readonly field $scope.$watch('formElement.params.field', function (newValue, oldValue) { if (!$scope.pristine || (oldValue !== undefined && oldValue.id != newValue.id)) { if (newValue && newValue.name) { // Update the element's name $scope.formElement.name = newValue.name; } } else { $scope.pristine = false; } }); } }; }]); angular.module('flowableModeler').directive('storeCursorPosition', ['$rootScope', '$timeout', '$popover', '$http', '$templateCache', function ($rootScope, $timeout, $popover, $http, $templateCache) { return { restrict: 'A', scope: { storeCursorPosition: '=storeCursorPosition' }, link: function ($scope, $element, attributes) { $element.on('click change keypress', function () { if ($scope.storeCursorPosition !== undefined) { $scope.storeCursorPosition = $element[0].selectionStart; } }); } }; }]); angular.module('flowableModeler'). directive('editorInputCheck', function () { return { require: 'ngModel', link: function (scope, element, attrs, modelCtrl) { modelCtrl.$parsers.push(function (inputValue) { var transformedInput = inputValue.replace(/[&\/\\#,+~%.'":*?<>{}()$@;]/g, ''); if (transformedInput != inputValue) { modelCtrl.$setViewValue(transformedInput); modelCtrl.$render(); } return transformedInput; }); } }; }); angular.module('flowableModeler'). directive('hotAutoDestroy',["hotRegisterer",function(hotRegisterer) { return { restrict: 'A', link: function (scope, element, attr){ element.on("$destroy", function() { try{ var hotInstance = hotRegisterer.getInstance(attr.hotId); hotInstance.destroy(); } catch(er){ console.log(er); } }); } }; }]);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy