main.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753
  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. mirroring: Em.Route.extend({
  179. route: '/mirroring',
  180. index: Ember.Route.extend({
  181. route: '/'
  182. }),
  183. connectOutlets: function (router) {
  184. router.get('mainController').connectOutlet('mainMirroring');
  185. },
  186. gotoShowJobs: function (router, context) {
  187. var dataset = context || router.get('mainMirroringController.selectedDataset') || App.Dataset.find().objectAt(0);
  188. if (dataset) {
  189. router.transitionTo('showDatasetJobs', dataset);
  190. } else {
  191. router.transitionTo('index');
  192. }
  193. },
  194. showDatasetJobs: Em.Route.extend({
  195. route: '/:dataset_id',
  196. connectOutlets: function (router, dataset) {
  197. router.get('mainDatasetJobsController').set('content', dataset);
  198. router.get('mainMirroringController').set('selectedDataset', dataset);
  199. }
  200. }),
  201. editDatasetRoute: Em.Route.extend({
  202. route: '/edit/:dataset_id',
  203. connectOutlets: function (router, dataset) {
  204. router.get('mainMirroringEditDataSetController').showEditPopup(dataset);
  205. }
  206. }),
  207. editDataset: function (router, event) {
  208. router.transitionTo('editDatasetRoute', event.view.get('dataset'));
  209. },
  210. addNewDataset: function (router) {
  211. router.transitionTo('addNewDatasetRoute');
  212. },
  213. addNewDatasetRoute: Em.Route.extend({
  214. route: '/dataset/add',
  215. enter: function (router) {
  216. var controller = router.get('mainMirroringEditDataSetController');
  217. controller.showAddPopup();
  218. }
  219. }),
  220. manageClustersRoute: Em.Route.extend({
  221. route: '/dataset/clusters/edit',
  222. enter: function (router) {
  223. var controller = router.get('mainMirroringController');
  224. controller.manageClusters();
  225. }
  226. }),
  227. manageClusters: function (router) {
  228. router.transitionTo('manageClustersRoute');
  229. }
  230. }),
  231. hosts: Em.Route.extend({
  232. route: '/hosts',
  233. index: Ember.Route.extend({
  234. route: '/',
  235. connectOutlets: function (router, context) {
  236. router.get('mainController').connectOutlet('mainHost');
  237. }
  238. }),
  239. hostDetails: Em.Route.extend({
  240. route: '/:host_id',
  241. connectOutlets: function (router, host) {
  242. router.get('mainHostController').set('showFilterConditionsFirstLoad', true);
  243. router.get('mainController').connectOutlet('mainHostDetails', host);
  244. },
  245. index: Ember.Route.extend({
  246. route: '/',
  247. redirectsTo: 'summary'
  248. }),
  249. summary: Em.Route.extend({
  250. route: '/summary',
  251. connectOutlets: function (router, context) {
  252. router.get('mainHostDetailsController').connectOutlet('mainHostSummary');
  253. }
  254. }),
  255. configs: Em.Route.extend({
  256. route: '/configs',
  257. connectOutlets: function (router, context) {
  258. router.get('mainHostDetailsController').connectOutlet('mainHostConfigs');
  259. }
  260. }),
  261. metrics: Em.Route.extend({
  262. route: '/metrics',
  263. connectOutlets: function (router, context) {
  264. router.get('mainHostDetailsController').connectOutlet('mainHostMetrics');
  265. }
  266. }),
  267. audit: Em.Route.extend({
  268. route: '/audit',
  269. connectOutlets: function (router, context) {
  270. router.get('mainHostDetailsController').connectOutlet('mainHostAudit');
  271. }
  272. }),
  273. hostNavigate: function (router, event) {
  274. var parent = event.view._parentView;
  275. parent.deactivateChildViews();
  276. event.view.set('active', "active");
  277. router.transitionTo(event.context);
  278. }
  279. }),
  280. back: function (router, event) {
  281. var referer = router.get('mainHostDetailsController.referer');
  282. if (referer) {
  283. router.route(referer);
  284. }
  285. else {
  286. window.history.back();
  287. }
  288. },
  289. addHost: function (router) {
  290. router.transitionTo('hostAdd');
  291. }
  292. }),
  293. hostAdd: require('routes/add_host_routes'),
  294. admin: Em.Route.extend({
  295. route: '/admin',
  296. enter: function (router, transition) {
  297. if (!App.isAdmin) {
  298. Em.run.next(function () {
  299. router.transitionTo('main.dashboard.index');
  300. });
  301. }
  302. },
  303. routePath: function (router, event) {
  304. if (!App.isAdmin) {
  305. Em.run.next(function () {
  306. App.router.transitionTo('main.dashboard.index');
  307. });
  308. } else {
  309. var controller = router.get('mainAdminController');
  310. router.transitionTo('admin' + controller.get('category').capitalize());
  311. }
  312. },
  313. connectOutlets: function (router, context) {
  314. router.get('mainController').connectOutlet('mainAdmin');
  315. },
  316. index: Em.Route.extend({
  317. /* enter: function(router, transition){
  318. var controller = router.get('mainAdminController');
  319. router.transitionTo('admin' + controller.get('category').capitalize());
  320. }, */
  321. route: '/',
  322. redirectsTo: 'adminUser'
  323. }),
  324. adminUser: Em.Route.extend({
  325. route: '/user',
  326. index: Em.Route.extend({
  327. route: '/',
  328. redirectsTo: 'allUsers'
  329. }),
  330. enter: function (router) {
  331. router.set('mainAdminController.category', "user");
  332. Em.run.next(function () {
  333. router.transitionTo('allUsers');
  334. });
  335. },
  336. routePath: function (router, event) {
  337. router.set('mainAdminController.category', "user");
  338. router.transitionTo('allUsers');
  339. Em.run.next(function () {
  340. router.transitionTo('allUsers');
  341. });
  342. },
  343. // events
  344. gotoUsers: Em.Router.transitionTo("allUsers"),
  345. gotoCreateUser: Em.Router.transitionTo("createUser"),
  346. gotoEditUser: function (router, event) {
  347. router.transitionTo("editUser", event.context)
  348. },
  349. // states
  350. allUsers: Em.Route.extend({
  351. route: '/allUsers',
  352. // index: Ember.Route.extend({
  353. //route: '/',
  354. connectOutlets: function (router) {
  355. router.get('mainAdminController').connectOutlet('mainAdminUser');
  356. }
  357. //})
  358. }),
  359. createUser: Em.Route.extend({
  360. route: '/create',
  361. connectOutlets: function (router) {
  362. router.get('mainAdminController').connectOutlet('mainAdminUserCreate', {});
  363. }
  364. }),
  365. editUser: Em.Route.extend({
  366. route: '/edit/:user_id',
  367. connectOutlets: function (router, user) {
  368. router.get('mainAdminController').connectOutlet('mainAdminUserEdit', user);
  369. }
  370. })
  371. }),
  372. adminAuthentication: Em.Route.extend({
  373. route: '/authentication',
  374. connectOutlets: function (router, context) {
  375. router.set('mainAdminController.category', "authentication");
  376. router.get('mainAdminController').connectOutlet('mainAdminAuthentication');
  377. }
  378. }),
  379. adminHighAvailability: Em.Route.extend({
  380. route: '/highAvailability',
  381. enter: function (router) {
  382. Em.run.next(function () {
  383. router.transitionTo('adminHighAvailability.index');
  384. });
  385. },
  386. index: Ember.Route.extend({
  387. route: '/',
  388. connectOutlets: function (router, context) {
  389. router.set('mainAdminController.category', "highAvailability");
  390. router.get('mainAdminController').connectOutlet('mainAdminHighAvailability');
  391. }
  392. })
  393. }),
  394. enableHighAvailability: require('routes/high_availability_routes'),
  395. rollbackHighAvailability: require('routes/rollbackHA_routes'),
  396. enableRMHighAvailability: require('routes/rm_high_availability_routes'),
  397. adminSecurity: Em.Route.extend({
  398. route: '/security',
  399. enter: function (router) {
  400. router.set('mainAdminController.category', "security");
  401. var controller = router.get('mainAdminSecurityController');
  402. if (!(controller.getAddSecurityWizardStatus() === 'RUNNING') && !(controller.getDisableSecurityStatus() === 'RUNNING')) {
  403. Em.run.next(function () {
  404. router.transitionTo('adminSecurity.index');
  405. });
  406. } else if (controller.getAddSecurityWizardStatus() === 'RUNNING') {
  407. Em.run.next(function () {
  408. router.transitionTo('adminAddSecurity');
  409. });
  410. } else if (controller.getDisableSecurityStatus() === 'RUNNING') {
  411. Em.run.next(function () {
  412. router.transitionTo('disableSecurity');
  413. });
  414. }
  415. },
  416. index: Ember.Route.extend({
  417. route: '/',
  418. connectOutlets: function (router, context) {
  419. var controller = router.get('mainAdminController');
  420. controller.set('category', "security");
  421. controller.connectOutlet('mainAdminSecurity');
  422. }
  423. }),
  424. addSecurity: function (router, object) {
  425. router.get('mainAdminSecurityController').setAddSecurityWizardStatus('RUNNING');
  426. router.transitionTo('adminAddSecurity');
  427. },
  428. disableSecurity: Em.Route.extend({
  429. route: '/disableSecurity',
  430. enter: function (router) {
  431. //after refresh check if the wizard is open then restore it
  432. if (router.get('mainAdminSecurityController').getDisableSecurityStatus() === 'RUNNING') {
  433. var controller = router.get('addSecurityController');
  434. // App.MainAdminSecurityDisableController uses App.Service DS model whose data needs to be loaded first
  435. controller.dataLoading().done(Em.run.next(function () {
  436. App.router.get('updateController').set('isWorking', false);
  437. App.ModalPopup.show({
  438. classNames: ['full-width-modal'],
  439. header: Em.I18n.t('admin.removeSecurity.header'),
  440. bodyClass: App.MainAdminSecurityDisableView.extend({
  441. controllerBinding: 'App.router.mainAdminSecurityDisableController'
  442. }),
  443. primary: Em.I18n.t('form.cancel'),
  444. secondary: null,
  445. showFooter: false,
  446. onClose: function () {
  447. var self = this;
  448. var controller = router.get('mainAdminSecurityDisableController');
  449. if (!controller.get('isSubmitDisabled')) {
  450. self.proceedOnClose();
  451. return;
  452. }
  453. var applyingConfigCommand = controller.get('commands').findProperty('name', 'APPLY_CONFIGURATIONS');
  454. if (applyingConfigCommand && !applyingConfigCommand.get('isCompleted')) {
  455. if (applyingConfigCommand.get('isStarted')) {
  456. App.showAlertPopup(Em.I18n.t('admin.security.applying.config.header'), Em.I18n.t('admin.security.applying.config.body'));
  457. } else {
  458. App.showConfirmationPopup(function () {
  459. self.proceedOnClose();
  460. }, Em.I18n.t('admin.addSecurity.disable.onClose'));
  461. }
  462. } else {
  463. self.proceedOnClose();
  464. }
  465. },
  466. proceedOnClose: function () {
  467. router.get('mainAdminSecurityDisableController').clearStep();
  468. App.db.setSecurityDeployCommands(undefined);
  469. App.router.get('updateController').set('isWorking', true);
  470. router.get('mainAdminSecurityController').setDisableSecurityStatus(undefined);
  471. router.get('addServiceController').finish();
  472. App.clusterStatus.setClusterStatus({
  473. clusterName: router.get('content.cluster.name'),
  474. clusterState: 'DEFAULT'
  475. });
  476. this.hide();
  477. router.transitionTo('adminSecurity.index');
  478. },
  479. didInsertElement: function () {
  480. this.fitHeight();
  481. }
  482. });
  483. }));
  484. } else {
  485. router.transitionTo('adminSecurity.index');
  486. }
  487. },
  488. unroutePath: function () {
  489. return false;
  490. },
  491. done: function (router, context) {
  492. var controller = router.get('mainAdminSecurityDisableController');
  493. if (!controller.get('isSubmitDisabled')) {
  494. $(context.currentTarget).parents("#modal").find(".close").trigger('click');
  495. }
  496. }
  497. }),
  498. adminAddSecurity: require('routes/add_security')
  499. }),
  500. adminCluster: Em.Route.extend({
  501. route: '/cluster',
  502. connectOutlets: function (router) {
  503. router.set('mainAdminController.category', "cluster");
  504. router.get('mainAdminController').connectOutlet('mainAdminCluster');
  505. }
  506. }),
  507. adminAdvanced: Em.Route.extend({
  508. route: '/advanced',
  509. connectOutlets: function (router) {
  510. router.set('mainAdminController.category', "advanced");
  511. router.get('mainAdminController').connectOutlet('mainAdminAdvanced');
  512. }
  513. }),
  514. adminMisc: Em.Route.extend({
  515. route: '/misc',
  516. connectOutlets: function (router) {
  517. router.set('mainAdminController.category', "misc");
  518. router.get('mainAdminController').connectOutlet('mainAdminMisc');
  519. }
  520. }),
  521. adminAccess: Em.Route.extend({
  522. enter: function (router) {
  523. router.get('mainController').dataLoading().done(function () {
  524. if (!router.get('mainAdminController.isAccessAvailable')) router.transitionTo('adminUser.allUsers');
  525. });
  526. },
  527. route: '/access',
  528. connectOutlets: function (router) {
  529. router.set('mainAdminController.category', "access");
  530. router.get('mainAdminController').connectOutlet('mainAdminAccess');
  531. }
  532. }),
  533. adminAudit: Em.Route.extend({
  534. route: '/audit',
  535. connectOutlets: function (router) {
  536. router.set('mainAdminController.category', "audit");
  537. router.get('mainAdminController').connectOutlet('mainAdminAudit');
  538. }
  539. }),
  540. upgradeStack: function (router, event) {
  541. if (!$(event.currentTarget).hasClass('inactive')) {
  542. router.transitionTo('stackUpgrade');
  543. }
  544. },
  545. adminNavigate: function (router, object) {
  546. router.transitionTo('admin' + object.context.capitalize());
  547. },
  548. //events
  549. goToAdmin: function (router, event) {
  550. router.transitionTo(event.context);
  551. }
  552. }),
  553. stackUpgrade: require('routes/stack_upgrade'),
  554. services: Em.Route.extend({
  555. route: '/services',
  556. index: Em.Route.extend({
  557. route: '/',
  558. enter: function (router) {
  559. Em.run.next(function () {
  560. var controller = router.get('mainController');
  561. controller.dataLoading().done(function () {
  562. var service = router.get('mainServiceItemController.content');
  563. if (!service || !service.get('isLoaded')) {
  564. service = App.Service.find().objectAt(0); // getting the first service to display
  565. }
  566. if (router.get('mainServiceItemController').get('routeToConfigs')) {
  567. router.transitionTo('service.configs', service);
  568. }
  569. else {
  570. router.transitionTo('service.summary', service);
  571. }
  572. });
  573. });
  574. }
  575. }),
  576. connectOutlets: function (router, context) {
  577. router.get('mainController').connectOutlet('mainService');
  578. },
  579. service: Em.Route.extend({
  580. route: '/:service_id',
  581. connectOutlets: function (router, service) {
  582. router.get('mainServiceController').connectOutlet('mainServiceItem', service);
  583. if (service && service.get('routeToConfigs')) {
  584. router.transitionTo('configs');
  585. } else {
  586. router.transitionTo('summary');
  587. }
  588. },
  589. index: Ember.Route.extend({
  590. route: '/'
  591. }),
  592. summary: Em.Route.extend({
  593. route: '/summary',
  594. connectOutlets: function (router, context) {
  595. var item = router.get('mainServiceItemController.content');
  596. router.get('updateController').updateServiceMetric(Em.K);
  597. //if service is not existed then route to default service
  598. if (item.get('isLoaded')) {
  599. router.get('mainServiceItemController').connectOutlet('mainServiceInfoSummary', item);
  600. } else {
  601. router.transitionTo('services.index');
  602. }
  603. },
  604. exit: function(router) {
  605. var request = router.get('mainAlertsController.servicesRequest');
  606. if (request) {
  607. request.abort();
  608. }
  609. }
  610. }),
  611. metrics: Em.Route.extend({
  612. route: '/metrics',
  613. connectOutlets: function (router, context) {
  614. var item = router.get('mainServiceItemController.content');
  615. router.get('mainServiceItemController').connectOutlet('mainServiceInfoMetrics', item);
  616. }
  617. }),
  618. configs: Em.Route.extend({
  619. route: '/configs',
  620. connectOutlets: function (router, context) {
  621. var item = router.get('mainServiceItemController.content');
  622. //if service is not existed then route to default service
  623. if (item.get('isLoaded')) {
  624. if (router.get('mainServiceItemController.isConfigurable')) {
  625. router.get('mainServiceItemController').connectOutlet('mainServiceInfoConfigs', item);
  626. }
  627. else {
  628. // if service doesn't have configs redirect to summary
  629. router.transitionTo('summary');
  630. }
  631. }
  632. else {
  633. item.set('routeToConfigs', true);
  634. router.transitionTo('services.index');
  635. }
  636. },
  637. unroutePath: function (router, context) {
  638. var controller = router.get('mainServiceInfoConfigsController');
  639. if (!controller.get('forceTransition') && controller.hasUnsavedChanges()) {
  640. controller.showSavePopup(context);
  641. } else {
  642. this._super(router, context);
  643. }
  644. }
  645. }),
  646. audit: Em.Route.extend({
  647. route: '/audit',
  648. connectOutlets: function (router, context) {
  649. var item = router.get('mainServiceItemController.content');
  650. router.get('mainServiceItemController').connectOutlet('mainServiceInfoAudit', item);
  651. }
  652. }),
  653. showInfo: function (router, event) {
  654. var mainServiceInfoConfigsController = App.router.get('mainServiceInfoConfigsController');
  655. if (event.context === 'summary' && mainServiceInfoConfigsController.hasUnsavedChanges()) {
  656. mainServiceInfoConfigsController.showSavePopup(router.get('location.lastSetURL').replace('configs', 'summary'));
  657. return false;
  658. }
  659. var parent = event.view._parentView;
  660. parent.deactivateChildViews();
  661. event.view.set('active', "active");
  662. router.transitionTo(event.context);
  663. }
  664. }),
  665. showService: Em.Router.transitionTo('service'),
  666. addService: Em.Router.transitionTo('serviceAdd'),
  667. reassign: Em.Router.transitionTo('reassign')
  668. }),
  669. reassign: require('routes/reassign_master_routes'),
  670. serviceAdd: require('routes/add_service_routes'),
  671. selectService: Em.Route.transitionTo('services.service.summary'),
  672. selectHost: function (router, event) {
  673. router.get('mainHostDetailsController').set('isFromHosts', false);
  674. router.transitionTo('hosts.hostDetails.index', event.context);
  675. },
  676. filterHosts: function (router, component) {
  677. if (!component.context)
  678. return;
  679. router.get('mainHostController').filterByComponent(component.context);
  680. router.get('mainHostController').set('showFilterConditionsFirstLoad', true);
  681. router.transitionTo('hosts.index');
  682. },
  683. showDetails: function (router, event) {
  684. router.get('mainHostDetailsController').set('referer', router.location.lastSetURL);
  685. router.get('mainHostDetailsController').set('isFromHosts', true);
  686. router.transitionTo('hosts.hostDetails.summary', event.context);
  687. }
  688. });