/* 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. */ 'use strict'; var flowableModeler = angular.module('flowableModeler', [ 'ngCookies', 'ngResource', 'ngSanitize', 'ngRoute', 'ngDragDrop', 'mgcrea.ngStrap', 'mgcrea.ngStrap.helpers.dimensions', // Needed for tooltips 'ui.grid', 'ui.grid.edit', 'ui.grid.selection', 'ui.grid.autoResize', 'ui.grid.moveColumns', 'ui.grid.cellNav', 'ngAnimate', 'pascalprecht.translate', 'ngFileUpload', 'angularSpectrumColorpicker', 'duScroll', 'dndLists', 'ngHandsontable' ]); var flowableModule = flowableModeler; var flowableApp = flowableModeler; flowableModeler // Initialize routes .config(['$provide', '$routeProvider', '$selectProvider', '$translateProvider', function ($provide, $routeProvider, $selectProvider, $translateProvider) { // Override caret for bs-select directive angular.extend($selectProvider.defaults, { caretHtml: ' ' }); $routeProvider .when('/processes', { templateUrl: 'views/processes.html', controller: 'ProcessesCtrl' }) .when('/processes/:modelId', { templateUrl: 'views/process.html', controller: 'ProcessCtrl' }) .when('/processes/:modelId/history/:modelHistoryId', { templateUrl: 'views/process.html', controller: 'ProcessCtrl' }) .when('/casemodels', { templateUrl: 'views/casemodels.html', controller: 'CaseModelsCtrl' }) .when('/casemodels/:modelId', { templateUrl: 'views/casemodel.html', controller: 'CaseModelCtrl' }) .when('/forms', { templateUrl: 'views/forms.html', controller: 'FormsCtrl' }) .when('/forms/:modelId', { templateUrl: 'views/form.html', controller: 'FormCtrl' }) .when('/forms/:modelId/history/:modelHistoryId', { templateUrl: 'views/form.html', controller: 'FormCtrl' }) .when('/decisions', { templateUrl: 'views/decisions.html', controller: 'DecisionsController', resolve: { modelType:()=>4 } }) .when('/decision-tables', { templateUrl: 'views/decisions.html', controller: 'DecisionsController', resolve: { modelType:()=>4 } }) .when('/decision-services', { templateUrl: 'views/decisions.html', controller: 'DecisionsController', resolve: { modelType:()=>6 } }) .when('/decision-tables/:modelId', { templateUrl: 'views/decision-table.html', controller: 'DecisionTableDetailsCtrl' }) .when('/decision-tables/:modelId/history/:modelHistoryId', { templateUrl: 'views/decision-table.html', controller: 'DecisionTableDetailsCtrl' }) .when('/apps', { templateUrl: 'views/app-definitions.html', controller: 'AppDefinitionsCtrl' }) .when('/apps/:modelId', { templateUrl: 'views/app-definition.html', controller: 'AppDefinitionCtrl' }) .when('/apps/:modelId/history/:modelHistoryId', { templateUrl: 'views/app-definition.html', controller: 'AppDefinitionCtrl' }) .when('/editor/:modelId', { templateUrl: 'editor-app/editor.html', controller: 'EditorController' }) .when('/form-editor/:modelId', { templateUrl: 'views/form-builder.html', controller: 'FormBuilderController' }) .when('/case-editor/:modelId', { templateUrl: 'editor-app/editor.html', controller: 'EditorController' }) .when('/decision-table-editor/:modelId', { templateUrl: 'views/decision-table-editor.html', controller: 'DecisionTableEditorController' }) .when('/app-editor/:modelId', { templateUrl: 'views/app-definition-builder.html', controller: 'AppDefinitionBuilderController' }) .when('/decision-service-editor/:modelId', { templateUrl: 'editor-app/editor.html', controller: 'EditorController' }) .when('/decision-services/:modelId', { templateUrl: 'views/decision-service.html', controller: 'DecisionServiceDetailsCtrl' }) .when('/decision-services/:modelId/history/:modelHistoryId', { templateUrl: 'views/decision-service.html', controller: 'DecisionServiceDetailsCtrl' }); if (FLOWABLE.CONFIG.appDefaultRoute) { $routeProvider.when('/', { redirectTo: FLOWABLE.CONFIG.appDefaultRoute }); } else { $routeProvider.when('/', { redirectTo: '/processes' }) } // Initialize angular-translate $translateProvider.useStaticFilesLoader({ prefix: './i18n/', suffix: '.json' }) /* This can be used to map multiple browser language keys to a angular translate language key. */ // .registerAvailableLanguageKeys(['en'], { // 'en-*': 'en' // }) .useSanitizeValueStrategy('escapeParameters') .uniformLanguageTag('bcp47') .determinePreferredLanguage(); }]) .run(['$rootScope', '$timeout', '$modal', '$translate', '$location', '$http', '$window', function($rootScope, $timeout, $modal, $translate, $location, $http, $window) { // set angular translate fallback language $translate.fallbackLanguage(['en']); // setting Moment-JS (global) locale if (FLOWABLE.CONFIG.datesLocalization) { moment.locale($translate.proposedLanguage()); } $rootScope.restRootUrl = function() { return FLOWABLE.CONFIG.contextRoot; }; $rootScope.window = {}; var updateWindowSize = function() { $rootScope.window.width = $window.innerWidth; $rootScope.window.height = $window.innerHeight; }; // Window resize hook angular.element($window).bind('resize', function() { $rootScope.safeApply(updateWindowSize()); }); $rootScope.$watch('window.forceRefresh', function(newValue) { if(newValue) { $timeout(function() { updateWindowSize(); $rootScope.window.forceRefresh = false; }); } }); updateWindowSize(); // Main navigation $rootScope.mainNavigation = [ { 'id': 'processes', 'title': 'GENERAL.NAVIGATION.PROCESSES', 'path': '/processes' }, { 'id': 'casemodels', 'title': 'GENERAL.NAVIGATION.CASEMODELS', 'path': '/casemodels' }, { 'id': 'forms', 'title': 'GENERAL.NAVIGATION.FORMS', 'path': '/forms' }, { 'id': 'decisions', 'title': 'GENERAL.NAVIGATION.DECISIONS', 'path': '/decisions' }, { 'id': 'apps', 'title': 'GENERAL.NAVIGATION.APPS', 'path': '/apps' } ]; $rootScope.config = FLOWABLE.CONFIG; $rootScope.mainPage = $rootScope.mainNavigation[0]; // Add url helpers to root scope: $rootScope.getModelThumbnailUrl = FLOWABLE.APP_URL.getModelThumbnailUrl; $rootScope.getImageUrl = FLOWABLE.APP_URL.getImageUrl; /* * History of process and form pages accessed by the editor. * This is needed because you can navigate to sub processes and forms */ $rootScope.editorHistory = []; /* * Set the current main page, using the page object. If the page is already active, * this is a no-op. */ $rootScope.setMainPage = function(mainPage) { $rootScope.mainPage = mainPage; $location.path($rootScope.mainPage.path); }; /* * Set the current main page, using the page ID. If the page is already active, * this is a no-op. */ $rootScope.setMainPageById = function(mainPageId) { for (var i=0; i<$rootScope.mainNavigation.length; i++) { if (mainPageId == $rootScope.mainNavigation[i].id) { $rootScope.mainPage = $rootScope.mainNavigation[i]; break; } } }; /** * A 'safer' apply that avoids concurrent updates (which $apply allows). */ $rootScope.safeApply = function(fn) { var phase = this.$root.$$phase; if(phase == '$apply' || phase == '$digest') { if(fn && (typeof(fn) === 'function')) { fn(); } } else { this.$apply(fn); } }; // Alerts $rootScope.alerts = { queue: [] }; $rootScope.showAlert = function(alert) { if(alert.queue.length > 0) { alert.current = alert.queue.shift(); // Start timout for message-pruning alert.timeout = $timeout(function() { if (alert.queue.length == 0) { alert.current = undefined; alert.timeout = undefined; } else { $rootScope.showAlert(alert); } }, (alert.current.type == 'error' ? 5000 : 1000)); } else { $rootScope.alerts.current = undefined; } }; $rootScope.addAlert = function(message, type) { var newAlert = {message: message, type: type}; if (!$rootScope.alerts.timeout) { // Timeout for message queue is not running, start one $rootScope.alerts.queue.push(newAlert); $rootScope.showAlert($rootScope.alerts); } else { $rootScope.alerts.queue.push(newAlert); } }; $rootScope.dismissAlert = function() { if (!$rootScope.alerts.timeout) { $rootScope.alerts.current = undefined; } else { $timeout.cancel($rootScope.alerts.timeout); $rootScope.alerts.timeout = undefined; $rootScope.showAlert($rootScope.alerts); } }; $rootScope.addAlertPromise = function(promise, type) { if (promise) { promise.then(function(data) { $rootScope.addAlert(data, type); }); } }; // begin modify by wsp $http.get(FLOWABLE.APP_URL.getAccountUrl(),{ headers:{ Authorization: 'Bearer ' + localStorage.getItem('access_token'), } }) //$http.get(FLOWABLE.APP_URL.getAccountUrl()) // end modify by wsp .success(function (data, status, headers, config) { console.log(headers); $rootScope.account = data; $rootScope.invalidCredentials = false; $rootScope.authenticated = true; }); $rootScope.logout = function () { $rootScope.authenticated = false; $rootScope.authenticationError = false; // Changing the href causes a reload, so no need to do a new reload again $window.location.href = FLOWABLE.CONFIG.contextRoot + '/app/logout'; }; } ]) .run(['$rootScope', '$location', '$translate', '$window', '$modal', function($rootScope, $location, $translate, $window , $modal) { var fixedUrlPart = '/editor/'; $rootScope.backToLanding = function() { $window.location.href = FLOWABLE.CONFIG.contextRoot; }; }]) // Moment-JS date-formatting filter .filter('dateformat', function() { return function(date, format) { if (date) { if (format) { return moment(date).format(format); } else { return moment(date).calendar(); } } return ''; }; });