replicationcontrollerdetail_stateconfig.js 3.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// Copyright 2015 Google Inc. All Rights Reserved.
//
// 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.

15
import {actionbarViewName} from 'chrome/chrome_state';
16
import {breadcrumbsConfig} from 'common/components/breadcrumbs/breadcrumbs_service';
17
import {stateName} from './replicationcontrollerdetail_state';
18
import {stateName as replicationControllers} from 'replicationcontrollerlist/replicationcontrollerlist_state';
19
import {ReplicationControllerDetailActionBarController} from './replicationcontrollerdetailactionbar_controller';
20
import ReplicationControllerDetailController from './replicationcontrollerdetail_controller';
21 22 23 24 25 26 27 28 29

/**
 * Configures states for the service view.
 *
 * @param {!ui.router.$stateProvider} $stateProvider
 * @ngInject
 */
export default function stateConfig($stateProvider) {
  $stateProvider.state(stateName, {
30
    url: '/replicationcontroller/:namespace/:replicationController',
31 32 33 34 35 36
    resolve: {
      'replicationControllerSpecPodsResource': getReplicationControllerSpecPodsResource,
      'replicationControllerDetailResource': getReplicationControllerDetailsResource,
      'replicationControllerDetail': resolveReplicationControllerDetails,
      'replicationControllerEvents': resolveReplicationControllerEvents,
    },
37
    data: {
38
      [breadcrumbsConfig]: {
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
        'label': '{{$stateParams.replicationController}}',
        'parent': replicationControllers,
      },
    },
    views: {
      '': {
        controller: ReplicationControllerDetailController,
        controllerAs: 'ctrl',
        templateUrl: 'replicationcontrollerdetail/replicationcontrollerdetail.html',
      },
      [actionbarViewName]: {
        controller: ReplicationControllerDetailActionBarController,
        controllerAs: 'ctrl',
        templateUrl: 'replicationcontrollerdetail/replicationcontrollerdetailactionbar.html',
      },
    },
55 56 57 58 59 60 61 62 63 64 65
  });
}

/**
 * @param {!./replicationcontrollerdetail_state.StateParams} $stateParams
 * @param {!angular.$resource} $resource
 * @return {!angular.Resource<!backendApi.ReplicationControllerDetail>}
 * @ngInject
 */
export function getReplicationControllerDetailsResource($stateParams, $resource) {
  return $resource(
66
      `api/v1/replicationcontroller/${$stateParams.namespace}/` +
B
bryk 已提交
67
      `${$stateParams.replicationController}`);
68 69 70 71 72 73 74 75 76
}

/**
 * @param {!./replicationcontrollerdetail_state.StateParams} $stateParams
 * @param {!angular.$resource} $resource
 * @return {!angular.Resource<!backendApi.ReplicationControllerSpec>}
 * @ngInject
 */
export function getReplicationControllerSpecPodsResource($stateParams, $resource) {
B
bryk 已提交
77
  return $resource(
78 79
      `api/v1/replicationcontroller/${$stateParams.namespace}/` +
      `${$stateParams.replicationController}/update/pod`);
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
}

/**
 * @param {!angular.Resource<!backendApi.ReplicationControllerDetail>}
 * replicationControllerDetailResource
 * @return {!angular.$q.Promise}
 * @ngInject
 */
function resolveReplicationControllerDetails(replicationControllerDetailResource) {
  return replicationControllerDetailResource.get().$promise;
}

/**
 * @param {!./replicationcontrollerdetail_state.StateParams} $stateParams
 * @param {!angular.$resource} $resource
 * @return {!angular.$q.Promise}
 * @ngInject
 */
function resolveReplicationControllerEvents($stateParams, $resource) {
  /** @type {!angular.Resource<!backendApi.Events>} */
  let resource =
101
      $resource(`api/v1/event/${$stateParams.namespace}/${$stateParams.replicationController}`);
102 103 104

  return resource.get().$promise;
}