main.js 27 KB

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