main.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. var stringUtils = require('utils/string_utils');
  20. module.exports = Em.Route.extend({
  21. route: '/main',
  22. enter: function (router) {
  23. App.db.updateStorage();
  24. console.log('in /main:enter');
  25. router.getAuthenticated().done(function (loggedIn) {
  26. if (loggedIn) {
  27. App.router.get('mainAdminAccessController').loadShowJobsForUsers().done(function () {
  28. App.router.get('clusterController').loadClusterName(false).done(function () {
  29. if (App.get('testMode')) {
  30. router.get('mainController').initialize();
  31. } else {
  32. App.router.get('mainController').checkServerClientVersion().done(function () {
  33. App.router.get('clusterController').loadClientServerClockDistance().done(function () {
  34. router.get('mainController').initialize();
  35. });
  36. });
  37. }
  38. });
  39. });
  40. // TODO: redirect to last known state
  41. } else {
  42. Em.run.next(function () {
  43. router.transitionTo('login');
  44. });
  45. }
  46. });
  47. },
  48. /*
  49. routePath: function(router,event) {
  50. if (router.getAuthenticated()) {
  51. App.router.get('clusterController').loadClusterName(false);
  52. router.get('mainController').initialize();
  53. // TODO: redirect to last known state
  54. } else {
  55. Ember.run.next(function () {
  56. router.transitionTo('login');
  57. });
  58. }
  59. }, */
  60. index: Ember.Route.extend({
  61. route: '/',
  62. redirectsTo: 'dashboard.index'
  63. }),
  64. connectOutlets: function (router, context) {
  65. router.get('applicationController').connectOutlet('main');
  66. },
  67. views: Em.Route.extend({
  68. route: '/views',
  69. index: Em.Route.extend({
  70. route: '/',
  71. connectOutlets: function (router, context) {
  72. router.get('mainController').connectOutlet('mainViews');
  73. }
  74. }),
  75. viewDetails: Em.Route.extend({
  76. route: '/:viewName/:version/:instanceName',
  77. connectOutlets: function (router, params) {
  78. router.get('mainController').dataLoading().done(function() {
  79. // find and set content for `mainViewsDetails` and associated controller
  80. router.get('mainController').connectOutlet('mainViewsDetails', App.router.get('clusterController.ambariViews')
  81. .findProperty('href', ['/views', params.viewName, params.version, params.instanceName].join('/')));
  82. });
  83. }
  84. })
  85. }),
  86. test: Em.Route.extend({
  87. route: '/test',
  88. connectOutlets: function (router, context) {
  89. router.get('mainController').connectOutlet('mainTest');
  90. }
  91. }),
  92. dashboard: Em.Route.extend({
  93. route: '/dashboard',
  94. connectOutlets: function (router, context) {
  95. router.get('mainController').connectOutlet('mainDashboard');
  96. },
  97. index: Em.Route.extend({
  98. route: '/',
  99. enter: function (router) {
  100. Em.run.next(function () {
  101. router.transitionTo('widgets');
  102. });
  103. }
  104. }),
  105. goToDashboardView: function (router, event) {
  106. router.transitionTo(event.context);
  107. },
  108. widgets: Em.Route.extend({
  109. route: '/metrics',
  110. connectOutlets: function (router, context) {
  111. router.set('mainDashboardController.selectedCategory', 'widgets');
  112. router.get('mainDashboardController').connectOutlet('mainDashboardWidgets');
  113. }
  114. }),
  115. charts: Em.Route.extend({
  116. route: '/charts',
  117. connectOutlets: function (router, context) {
  118. router.set('mainDashboardController.selectedCategory', 'charts');
  119. router.get('mainDashboardController').connectOutlet('mainCharts');
  120. },
  121. index: Ember.Route.extend({
  122. route: '/',
  123. enter: function (router) {
  124. Em.run.next(function () {
  125. router.transitionTo('heatmap');
  126. });
  127. }
  128. }),
  129. heatmap: Em.Route.extend({
  130. route: '/heatmap',
  131. connectOutlets: function (router, context) {
  132. router.get('mainChartsController').connectOutlet('mainChartsHeatmap');
  133. }
  134. }),
  135. horizon_chart: Em.Route.extend({
  136. route: '/horizon_chart',
  137. connectOutlets: function (router, context) {
  138. router.get('mainChartsController').connectOutlet('mainChartsHorizon');
  139. }
  140. }),
  141. showChart: function (router, event) {
  142. var parent = event.view._parentView;
  143. parent.deactivateChildViews();
  144. event.view.set('active', "active");
  145. router.transitionTo(event.context);
  146. }
  147. }),
  148. configHistory: Em.Route.extend({
  149. route: '/config_history',
  150. connectOutlets: function (router, context) {
  151. if (App.get('supports.configHistory')) {
  152. router.set('mainDashboardController.selectedCategory', 'configHistory');
  153. router.get('mainDashboardController').connectOutlet('mainConfigHistory');
  154. } else {
  155. router.transitionTo('main.dashboard.widgets');
  156. }
  157. }
  158. }),
  159. goToServiceConfigs: function (router, event) {
  160. router.get('mainServiceItemController').set('routeToConfigs', true);
  161. router.transitionTo('main.services.service.configs', App.Service.find(event.context));
  162. router.get('mainServiceItemController').set('routeToConfigs', false);
  163. }
  164. }),
  165. apps: Em.Route.extend({
  166. route: '/apps',
  167. connectOutlets: function (router) {
  168. if (App.get('isHadoop2Stack')) {
  169. Em.run.next(function () {
  170. router.transitionTo('main.dashboard.index');
  171. });
  172. } else {
  173. router.get('mainAppsController').loadRuns();
  174. router.get('mainController').connectOutlet('mainApps');
  175. }
  176. }
  177. }),
  178. jobs: Em.Route.extend({
  179. route: '/jobs',
  180. enter: function (router) {
  181. if (!App.router.get('mainAdminAccessController.showJobs') && !App.get('isAdmin')) {
  182. Em.run.next(function () {
  183. router.transitionTo('main.dashboard.index');
  184. });
  185. }
  186. },
  187. exit: function (router) {
  188. clearInterval(router.get('mainJobsController').jobsUpdate);
  189. },
  190. index: Ember.Route.extend({
  191. route: '/',
  192. connectOutlets: function (router) {
  193. if (!App.get('isHadoop2Stack')) {
  194. Em.run.next(function () {
  195. router.transitionTo('main.dashboard.index');
  196. });
  197. } else {
  198. router.get('mainJobsController').updateJobs('mainJobsController', 'refreshLoadedJobs');
  199. router.get('mainController').connectOutlet('mainJobs');
  200. }
  201. }
  202. }),
  203. jobDetails: Em.Route.extend({
  204. route: '/:job_id',
  205. connectOutlets: function (router, job) {
  206. if (job) {
  207. router.get('mainHiveJobDetailsController').set('loaded', false);
  208. router.get('mainController').connectOutlet('mainHiveJobDetails', job);
  209. router.get('mainHiveJobDetailsController').loadJobDetails();
  210. router.get('mainJobsController').updateJobs('mainHiveJobDetailsController', 'loadJobDetails');
  211. }
  212. },
  213. exit: function (router) {
  214. router.get('mainHiveJobDetailsController').set('loaded', false);
  215. }
  216. })
  217. }),
  218. mirroring: Em.Route.extend({
  219. route: '/mirroring',
  220. index: Ember.Route.extend({
  221. route: '/'
  222. }),
  223. connectOutlets: function (router) {
  224. router.get('mainController').connectOutlet('mainMirroring');
  225. },
  226. gotoShowJobs: function (router, context) {
  227. var dataset = context || router.get('mainMirroringController.selectedDataset') || App.Dataset.find().objectAt(0);
  228. if (dataset) {
  229. router.transitionTo('showDatasetJobs', dataset);
  230. } else {
  231. router.transitionTo('index');
  232. }
  233. },
  234. showDatasetJobs: Em.Route.extend({
  235. route: '/:dataset_id',
  236. connectOutlets: function (router, dataset) {
  237. router.get('mainDatasetJobsController').set('content', dataset);
  238. router.get('mainMirroringController').set('selectedDataset', dataset);
  239. }
  240. }),
  241. editDatasetRoute: Em.Route.extend({
  242. route: '/edit/:dataset_id',
  243. connectOutlets: function (router, dataset) {
  244. router.get('mainMirroringEditDataSetController').showEditPopup(dataset);
  245. }
  246. }),
  247. editDataset: function (router, event) {
  248. router.transitionTo('editDatasetRoute', event.view.get('dataset'));
  249. },
  250. addNewDataset: function (router) {
  251. router.transitionTo('addNewDatasetRoute');
  252. },
  253. addNewDatasetRoute: Em.Route.extend({
  254. route: '/dataset/add',
  255. enter: function (router) {
  256. var controller = router.get('mainMirroringEditDataSetController');
  257. controller.showAddPopup();
  258. }
  259. }),
  260. manageClustersRoute: Em.Route.extend({
  261. route: '/dataset/clusters/edit',
  262. enter: function (router) {
  263. var controller = router.get('mainMirroringController');
  264. controller.manageClusters();
  265. }
  266. }),
  267. manageClusters: function (router) {
  268. router.transitionTo('manageClustersRoute');
  269. }
  270. }),
  271. hosts: Em.Route.extend({
  272. route: '/hosts',
  273. index: Ember.Route.extend({
  274. route: '/',
  275. connectOutlets: function (router, context) {
  276. router.get('mainController').connectOutlet('mainHost');
  277. }
  278. }),
  279. hostDetails: Em.Route.extend({
  280. route: '/:host_id',
  281. connectOutlets: function (router, host) {
  282. router.get('mainHostController').set('showFilterConditionsFirstLoad', true);
  283. router.get('mainController').connectOutlet('mainHostDetails', host);
  284. },
  285. index: Ember.Route.extend({
  286. route: '/',
  287. redirectsTo: 'summary'
  288. }),
  289. summary: Em.Route.extend({
  290. route: '/summary',
  291. connectOutlets: function (router, context) {
  292. router.get('mainHostDetailsController').connectOutlet('mainHostSummary');
  293. }
  294. }),
  295. configs: Em.Route.extend({
  296. route: '/configs',
  297. connectOutlets: function (router, context) {
  298. router.get('mainHostDetailsController').connectOutlet('mainHostConfigs');
  299. }
  300. }),
  301. metrics: Em.Route.extend({
  302. route: '/metrics',
  303. connectOutlets: function (router, context) {
  304. router.get('mainHostDetailsController').connectOutlet('mainHostMetrics');
  305. }
  306. }),
  307. audit: Em.Route.extend({
  308. route: '/audit',
  309. connectOutlets: function (router, context) {
  310. router.get('mainHostDetailsController').connectOutlet('mainHostAudit');
  311. }
  312. }),
  313. hostNavigate: function (router, event) {
  314. var parent = event.view._parentView;
  315. parent.deactivateChildViews();
  316. event.view.set('active', "active");
  317. router.transitionTo(event.context);
  318. }
  319. }),
  320. back: function (router, event) {
  321. var referer = router.get('mainHostDetailsController.referer');
  322. if (referer) {
  323. router.route(referer);
  324. }
  325. else {
  326. window.history.back();
  327. }
  328. },
  329. addHost: function (router) {
  330. router.transitionTo('hostAdd');
  331. }
  332. }),
  333. hostAdd: require('routes/add_host_routes'),
  334. admin: Em.Route.extend({
  335. route: '/admin',
  336. enter: function (router, transition) {
  337. if (!App.isAdmin) {
  338. Em.run.next(function () {
  339. router.transitionTo('main.dashboard.index');
  340. });
  341. }
  342. },
  343. routePath: function (router, event) {
  344. if (!App.isAdmin) {
  345. Em.run.next(function () {
  346. App.router.transitionTo('main.dashboard.index');
  347. });
  348. } else {
  349. var controller = router.get('mainAdminController');
  350. router.transitionTo('admin' + controller.get('category').capitalize());
  351. }
  352. },
  353. connectOutlets: function (router, context) {
  354. router.get('mainController').connectOutlet('mainAdmin');
  355. },
  356. index: Em.Route.extend({
  357. /* enter: function(router, transition){
  358. var controller = router.get('mainAdminController');
  359. router.transitionTo('admin' + controller.get('category').capitalize());
  360. }, */
  361. route: '/',
  362. redirectsTo: 'adminUser'
  363. }),
  364. adminUser: Em.Route.extend({
  365. route: '/user',
  366. index: Em.Route.extend({
  367. route: '/',
  368. redirectsTo: 'allUsers'
  369. }),
  370. enter: function (router) {
  371. router.set('mainAdminController.category', "user");
  372. Em.run.next(function () {
  373. router.transitionTo('allUsers');
  374. });
  375. },
  376. routePath: function (router, event) {
  377. router.set('mainAdminController.category', "user");
  378. router.transitionTo('allUsers');
  379. Em.run.next(function () {
  380. router.transitionTo('allUsers');
  381. });
  382. },
  383. // events
  384. gotoUsers: Em.Router.transitionTo("allUsers"),
  385. gotoCreateUser: Em.Router.transitionTo("createUser"),
  386. gotoEditUser: function (router, event) {
  387. router.transitionTo("editUser", event.context)
  388. },
  389. // states
  390. allUsers: Em.Route.extend({
  391. route: '/allUsers',
  392. // index: Ember.Route.extend({
  393. //route: '/',
  394. connectOutlets: function (router) {
  395. router.get('mainAdminController').connectOutlet('mainAdminUser');
  396. }
  397. //})
  398. }),
  399. createUser: Em.Route.extend({
  400. route: '/create',
  401. connectOutlets: function (router) {
  402. router.get('mainAdminController').connectOutlet('mainAdminUserCreate', {});
  403. }
  404. }),
  405. editUser: Em.Route.extend({
  406. route: '/edit/:user_id',
  407. connectOutlets: function (router, user) {
  408. router.get('mainAdminController').connectOutlet('mainAdminUserEdit', user);
  409. }
  410. })
  411. }),
  412. adminAuthentication: Em.Route.extend({
  413. route: '/authentication',
  414. connectOutlets: function (router, context) {
  415. router.set('mainAdminController.category', "authentication");
  416. router.get('mainAdminController').connectOutlet('mainAdminAuthentication');
  417. }
  418. }),
  419. adminHighAvailability: Em.Route.extend({
  420. route: '/highAvailability',
  421. enter: function (router) {
  422. Em.run.next(function () {
  423. router.transitionTo('adminHighAvailability.index');
  424. });
  425. },
  426. index: Ember.Route.extend({
  427. route: '/',
  428. connectOutlets: function (router, context) {
  429. router.set('mainAdminController.category', "highAvailability");
  430. router.get('mainAdminController').connectOutlet('mainAdminHighAvailability');
  431. }
  432. })
  433. }),
  434. enableHighAvailability: require('routes/high_availability_routes'),
  435. rollbackHighAvailability: require('routes/rollbackHA_routes'),
  436. enableRMHighAvailability: require('routes/rm_high_availability_routes'),
  437. adminSecurity: Em.Route.extend({
  438. route: '/security',
  439. enter: function (router) {
  440. router.set('mainAdminController.category', "security");
  441. var controller = router.get('mainAdminSecurityController');
  442. if (!(controller.getAddSecurityWizardStatus() === 'RUNNING') && !(controller.getDisableSecurityStatus() === 'RUNNING')) {
  443. Em.run.next(function () {
  444. router.transitionTo('adminSecurity.index');
  445. });
  446. } else if (controller.getAddSecurityWizardStatus() === 'RUNNING') {
  447. Em.run.next(function () {
  448. router.transitionTo('adminAddSecurity');
  449. });
  450. } else if (controller.getDisableSecurityStatus() === 'RUNNING') {
  451. Em.run.next(function () {
  452. router.transitionTo('disableSecurity');
  453. });
  454. }
  455. },
  456. index: Ember.Route.extend({
  457. route: '/',
  458. connectOutlets: function (router, context) {
  459. var controller = router.get('mainAdminController');
  460. controller.set('category', "security");
  461. controller.connectOutlet('mainAdminSecurity');
  462. }
  463. }),
  464. addSecurity: function (router, object) {
  465. router.get('mainAdminSecurityController').setAddSecurityWizardStatus('RUNNING');
  466. router.transitionTo('adminAddSecurity');
  467. },
  468. disableSecurity: Em.Route.extend({
  469. route: '/disableSecurity',
  470. enter: function (router) {
  471. //after refresh check if the wizard is open then restore it
  472. if (router.get('mainAdminSecurityController').getDisableSecurityStatus() === 'RUNNING') {
  473. var controller = router.get('addSecurityController');
  474. // App.MainAdminSecurityDisableController uses App.Service DS model whose data needs to be loaded first
  475. controller.dataLoading().done(Em.run.next(function () {
  476. App.router.get('updateController').set('isWorking', false);
  477. App.ModalPopup.show({
  478. classNames: ['full-width-modal'],
  479. header: Em.I18n.t('admin.removeSecurity.header'),
  480. bodyClass: App.MainAdminSecurityDisableView.extend({
  481. controllerBinding: 'App.router.mainAdminSecurityDisableController'
  482. }),
  483. primary: Em.I18n.t('form.cancel'),
  484. secondary: null,
  485. showFooter: false,
  486. onClose: function () {
  487. var self = this;
  488. var controller = router.get('mainAdminSecurityDisableController');
  489. if (!controller.get('isSubmitDisabled')) {
  490. self.proceedOnClose();
  491. return;
  492. }
  493. var applyingConfigCommand = controller.get('commands').findProperty('name', 'APPLY_CONFIGURATIONS');
  494. if (applyingConfigCommand && !applyingConfigCommand.get('isCompleted')) {
  495. if (applyingConfigCommand.get('isStarted')) {
  496. App.showAlertPopup(Em.I18n.t('admin.security.applying.config.header'), Em.I18n.t('admin.security.applying.config.body'));
  497. } else {
  498. App.showConfirmationPopup(function () {
  499. self.proceedOnClose();
  500. }, Em.I18n.t('admin.addSecurity.disable.onClose'));
  501. }
  502. } else {
  503. self.proceedOnClose();
  504. }
  505. },
  506. proceedOnClose: function () {
  507. router.get('mainAdminSecurityDisableController').clearStep();
  508. App.db.setSecurityDeployCommands(undefined);
  509. App.router.get('updateController').set('isWorking', true);
  510. router.get('mainAdminSecurityController').setDisableSecurityStatus(undefined);
  511. router.get('addServiceController').finish();
  512. App.clusterStatus.setClusterStatus({
  513. clusterName: router.get('content.cluster.name'),
  514. clusterState: 'DEFAULT'
  515. });
  516. this.hide();
  517. router.transitionTo('adminSecurity.index');
  518. },
  519. didInsertElement: function () {
  520. this.fitHeight();
  521. }
  522. });
  523. }));
  524. } else {
  525. router.transitionTo('adminSecurity.index');
  526. }
  527. },
  528. unroutePath: function () {
  529. return false;
  530. },
  531. done: function (router, context) {
  532. var controller = router.get('mainAdminSecurityDisableController');
  533. if (!controller.get('isSubmitDisabled')) {
  534. $(context.currentTarget).parents("#modal").find(".close").trigger('click');
  535. }
  536. }
  537. }),
  538. adminAddSecurity: require('routes/add_security')
  539. }),
  540. adminCluster: Em.Route.extend({
  541. route: '/cluster',
  542. connectOutlets: function (router) {
  543. router.set('mainAdminController.category', "cluster");
  544. router.get('mainAdminController').connectOutlet('mainAdminCluster');
  545. }
  546. }),
  547. adminAdvanced: Em.Route.extend({
  548. route: '/advanced',
  549. connectOutlets: function (router) {
  550. router.set('mainAdminController.category', "advanced");
  551. router.get('mainAdminController').connectOutlet('mainAdminAdvanced');
  552. }
  553. }),
  554. adminMisc: Em.Route.extend({
  555. route: '/misc',
  556. connectOutlets: function (router) {
  557. router.set('mainAdminController.category', "misc");
  558. router.get('mainAdminController').connectOutlet('mainAdminMisc');
  559. }
  560. }),
  561. adminAccess: Em.Route.extend({
  562. enter: function (router) {
  563. router.get('mainController').dataLoading().done(function () {
  564. if (!router.get('mainAdminController.isAccessAvailable')) router.transitionTo('adminUser.allUsers');
  565. });
  566. },
  567. route: '/access',
  568. connectOutlets: function (router) {
  569. router.set('mainAdminController.category', "access");
  570. router.get('mainAdminController').connectOutlet('mainAdminAccess');
  571. }
  572. }),
  573. adminAudit: Em.Route.extend({
  574. route: '/audit',
  575. connectOutlets: function (router) {
  576. router.set('mainAdminController.category', "audit");
  577. router.get('mainAdminController').connectOutlet('mainAdminAudit');
  578. }
  579. }),
  580. upgradeStack: function (router, event) {
  581. if (!$(event.currentTarget).hasClass('inactive')) {
  582. router.transitionTo('stackUpgrade');
  583. }
  584. },
  585. adminNavigate: function (router, object) {
  586. router.transitionTo('admin' + object.context.capitalize());
  587. },
  588. //events
  589. goToAdmin: function (router, event) {
  590. router.transitionTo(event.context);
  591. }
  592. }),
  593. stackUpgrade: require('routes/stack_upgrade'),
  594. services: Em.Route.extend({
  595. route: '/services',
  596. index: Em.Route.extend({
  597. route: '/',
  598. enter: function (router) {
  599. Em.run.next(function () {
  600. var controller = router.get('mainController');
  601. controller.dataLoading().done(function () {
  602. var service = router.get('mainServiceItemController.content');
  603. if (!service || !service.get('isLoaded')) {
  604. service = App.Service.find().objectAt(0); // getting the first service to display
  605. }
  606. if (router.get('mainServiceItemController').get('routeToConfigs')) {
  607. router.transitionTo('service.configs', service);
  608. }
  609. else {
  610. router.transitionTo('service.summary', service);
  611. }
  612. });
  613. });
  614. }
  615. }),
  616. connectOutlets: function (router, context) {
  617. router.get('mainController').connectOutlet('mainService');
  618. },
  619. service: Em.Route.extend({
  620. route: '/:service_id',
  621. connectOutlets: function (router, service) {
  622. router.get('mainServiceController').connectOutlet('mainServiceItem', service);
  623. if (service && service.get('routeToConfigs')) {
  624. router.transitionTo('configs');
  625. } else {
  626. router.transitionTo('summary');
  627. }
  628. },
  629. index: Ember.Route.extend({
  630. route: '/'
  631. }),
  632. summary: Em.Route.extend({
  633. route: '/summary',
  634. connectOutlets: function (router, context) {
  635. var item = router.get('mainServiceItemController.content');
  636. router.get('updateController').updateServiceMetric(Em.K);
  637. //if service is not existed then route to default service
  638. if (item.get('isLoaded')) {
  639. router.get('mainServiceItemController').connectOutlet('mainServiceInfoSummary', item);
  640. } else {
  641. router.transitionTo('services.index');
  642. }
  643. },
  644. exit: function(router) {
  645. var request = router.get('mainAlertsController.servicesRequest');
  646. if (request) {
  647. request.abort();
  648. }
  649. }
  650. }),
  651. metrics: Em.Route.extend({
  652. route: '/metrics',
  653. connectOutlets: function (router, context) {
  654. var item = router.get('mainServiceItemController.content');
  655. router.get('mainServiceItemController').connectOutlet('mainServiceInfoMetrics', item);
  656. }
  657. }),
  658. configs: Em.Route.extend({
  659. route: '/configs',
  660. connectOutlets: function (router, context) {
  661. var item = router.get('mainServiceItemController.content');
  662. //if service is not existed then route to default service
  663. if (item.get('isLoaded')) {
  664. if (router.get('mainServiceItemController.isConfigurable')) {
  665. router.get('mainServiceItemController').connectOutlet('mainServiceInfoConfigs', item);
  666. }
  667. else {
  668. // if service doesn't have configs redirect to summary
  669. router.transitionTo('summary');
  670. }
  671. }
  672. else {
  673. item.set('routeToConfigs', true);
  674. router.transitionTo('services.index');
  675. }
  676. },
  677. unroutePath: function (router, context) {
  678. var controller = router.get('mainServiceInfoConfigsController');
  679. if (!controller.get('forceTransition') && controller.hasUnsavedChanges()) {
  680. controller.showSavePopup(context);
  681. } else {
  682. this._super(router, context);
  683. }
  684. }
  685. }),
  686. audit: Em.Route.extend({
  687. route: '/audit',
  688. connectOutlets: function (router, context) {
  689. var item = router.get('mainServiceItemController.content');
  690. router.get('mainServiceItemController').connectOutlet('mainServiceInfoAudit', item);
  691. }
  692. }),
  693. showInfo: function (router, event) {
  694. var mainServiceInfoConfigsController = App.router.get('mainServiceInfoConfigsController');
  695. if (event.context === 'summary' && mainServiceInfoConfigsController.hasUnsavedChanges()) {
  696. mainServiceInfoConfigsController.showSavePopup(router.get('location.lastSetURL').replace('configs', 'summary'));
  697. return false;
  698. }
  699. var parent = event.view._parentView;
  700. parent.deactivateChildViews();
  701. event.view.set('active', "active");
  702. router.transitionTo(event.context);
  703. }
  704. }),
  705. showService: Em.Router.transitionTo('service'),
  706. addService: Em.Router.transitionTo('serviceAdd'),
  707. reassign: Em.Router.transitionTo('reassign')
  708. }),
  709. reassign: require('routes/reassign_master_routes'),
  710. serviceAdd: require('routes/add_service_routes'),
  711. selectService: Em.Route.transitionTo('services.service.summary'),
  712. selectHost: function (router, event) {
  713. router.get('mainHostDetailsController').set('isFromHosts', false);
  714. router.transitionTo('hosts.hostDetails.index', event.context);
  715. },
  716. filterHosts: function (router, component) {
  717. if (!component.context)
  718. return;
  719. router.get('mainHostController').filterByComponent(component.context);
  720. router.get('mainHostController').set('showFilterConditionsFirstLoad', true);
  721. router.transitionTo('hosts.index');
  722. },
  723. showDetails: function (router, event) {
  724. router.get('mainHostDetailsController').set('referer', router.location.lastSetURL);
  725. router.get('mainHostDetailsController').set('isFromHosts', true);
  726. router.transitionTo('hosts.hostDetails.summary', event.context);
  727. }
  728. });