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

plugin-webapp.acm-plugin.app.views.instance.instance.js Maven / Gradle / Ivy

Go to download

This plugin provides information about case definitions and case instances deployed into Camunda BPM. It seamless integrates into Cockpit in the same way, as the corresponding process definition/instance pages.

There is a newer version: 1.1
Show newest version
ngDefine('cockpit.plugin.acm-plugin.views', function(module) {

  var InstanceCtrl = [ '$scope', '$routeParams', 'camundaService', 'dataDepend', 'Views', 'page', 'search', 
               function($scope, $routeParams, camundaService, dataDepend, Views, page, search) {
    'use strict';

    // create data depend item & store for sub-scopes
    var caseData = $scope.caseData = dataDepend.create($scope);

    /*
     * Single instance display
     */
    // only load if case instance id is selected.
    if ($routeParams.instanceId) {

      /*
       * Providers
       */
      caseData.provide('instance', [ function() {
        // load the case definition
        return camundaService.caseInstance($routeParams.instanceId);
      } ]);

      caseData.provide('definition', [ 'instance', function(instance) {
        // load the case definition
        return camundaService.caseDefinition(instance.caseDefinitionId);
      } ]);

      caseData.provide('executions', [ 'instance', function(instance) {
        // executions
        return camundaService.caseExecutions(instance.id);
      } ]);

      caseData.provide('tasks', [ 'instance', function(instance) {
        // executions
        return camundaService.tasks(instance.id);
      } ]);

      caseData.provide('definitionDiagram', ['definition', function(definition) {
        return camundaService.caseDiagram(definition.id);
      } ]);

      /*
       * Observers
       */
      caseData.observe(['instance', 'definition', function(instance, definition) {
        $scope.selectedInstance = instance;
        $scope.selectedDefinition = definition;
      }]);

      caseData.observe([ 'definitionDiagram', 'definition', function(definitionDiagram) {
        $scope.selectedInstance.src = definitionDiagram;
      } ]);

    }

    $scope.caseInstanceVars = {
      read : [ 'caseData', 'instance', 'tasks', 'executions' ]
    };

    $scope.caseInstanceActions = Views.getProviders({
      component : 'cockpit.caseInstance.runtime.action'
    });
    $scope.caseInstanceTabs = Views.getProviders({
      component : 'cockpit.caseInstance.runtime.tab'
    });

    function setDefaultTab(tabs) {
      var selectedTabId = search().detailsTab;
      if (!tabs || !tabs.length) {
        return;
      }
      if (selectedTabId) {
        var provider = Views.getProvider({
          component : 'cockpit.caseInstance.runtime.tab',
          id : selectedTabId
        });
        if (provider && tabs.indexOf(provider) != -1) {
          $scope.selectedTab = provider;
          return;
        }
      }
      search.updateSilently({
        detailsTab : null
      });
      $scope.selectedTab = tabs[0];
    }

    /*
     * Tabs handling
     */
    $scope.selectTab = function(tabProvider) {
      $scope.selectedTab = tabProvider;
      search.updateSilently({
        detailsTab : tabProvider.id
      });
    };
    setDefaultTab($scope.caseInstanceTabs);

  } ];

  // register routing for case definitions
  module.config([ '$routeProvider', function($routeProvider) {

    $routeProvider.when('/case-instance/:instanceId', {
      templateUrl : require.toUrl('../../api/cockpit/plugin/acm-plugin/static/app/views/instance/instance.html'),
      controller : InstanceCtrl,
      authentication : 'required'
    });

  } ]);

  return module;
});




© 2015 - 2025 Weber Informatics LLC | Privacy Policy