main.js 24 KB

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