main.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  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. console.log('in /main:enter');
  24. if (router.getAuthenticated()) {
  25. App.router.get('clusterController').loadClusterName(false);
  26. router.get('mainController').initialize();
  27. // TODO: redirect to last known state
  28. } else {
  29. Ember.run.next(function () {
  30. router.transitionTo('login');
  31. });
  32. }
  33. },
  34. /*
  35. routePath: function(router,event) {
  36. if (router.getAuthenticated()) {
  37. App.router.get('clusterController').loadClusterName(false);
  38. router.get('mainController').initialize();
  39. // TODO: redirect to last known state
  40. } else {
  41. Ember.run.next(function () {
  42. router.transitionTo('login');
  43. });
  44. }
  45. }, */
  46. index: Ember.Route.extend({
  47. route: '/',
  48. redirectsTo: 'dashboard'
  49. }),
  50. test: Em.Route.extend({
  51. route: '/test',
  52. connectOutlets: function (router, context) {
  53. router.get('mainController').connectOutlet('mainTest');
  54. }
  55. }),
  56. connectOutlets: function (router, context) {
  57. router.get('applicationController').connectOutlet('main');
  58. },
  59. charts: Em.Route.extend({
  60. route: '/charts',
  61. connectOutlets: function (router, context) {
  62. router.get('mainController').connectOutlet('mainCharts');
  63. },
  64. enter: function (router) {
  65. Em.run.next(function () {
  66. router.transitionTo('heatmap');
  67. });
  68. },
  69. index: Ember.Route.extend({
  70. route: '/',
  71. redirectsTo: 'heatmap'
  72. }),
  73. heatmap: Em.Route.extend({
  74. route: '/heatmap',
  75. connectOutlets: function (router, context) {
  76. router.get('mainChartsController').connectOutlet('mainChartsHeatmap');
  77. }
  78. }),
  79. horizon_chart: Em.Route.extend({
  80. route: '/horizon_chart',
  81. connectOutlets: function (router, context) {
  82. router.get('mainChartsController').connectOutlet('mainChartsHorizon');
  83. }
  84. }),
  85. showChart: function (router, event) {
  86. var parent = event.view._parentView;
  87. parent.deactivateChildViews();
  88. event.view.set('active', "active");
  89. router.transitionTo(event.context);
  90. }
  91. }),
  92. apps: Em.Route.extend({
  93. route: '/apps',
  94. connectOutlets: function (router) {
  95. if (stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 1 ||
  96. stringUtils.compareVersions(App.get('currentStackVersionNumber'), "2.0") === 0) {
  97. Em.run.next(function () {
  98. router.transitionTo('main.dashboard');
  99. });
  100. } else {
  101. router.get('mainAppsController').loadRuns();
  102. router.get('mainController').connectOutlet('mainApps');
  103. }
  104. }
  105. }),
  106. mirroring: Em.Route.extend({
  107. route: '/mirroring',
  108. index: Ember.Route.extend({
  109. route: '/',
  110. enter: function () {
  111. this.setupController()
  112. },
  113. setupController: function () {
  114. var controller = App.router.get('mainMirroringController');
  115. var datasets = App.Dataset.find();
  116. controller.set('datasets', datasets);
  117. },
  118. connectOutlets: function (router, context) {
  119. console.debug('Inside connectOutlets in ' + App.get('router.currentState.path'));
  120. router.get('mainController').connectOutlet('mainMirroring');
  121. }
  122. }),
  123. gotoMirroringHome : function(router){
  124. router.transitionTo('mirroring/index');
  125. },
  126. addNewDataset: function (router) {
  127. router.transitionTo('addNewDatasetRoute');
  128. },
  129. addTargetCluster: function (router, event) {
  130. router.transitionTo('addTargetClusterRoute');
  131. },
  132. addNewDatasetRoute: Em.Route.extend({
  133. route: '/dataset/add',
  134. setupController: function (controller) {
  135. controller.createNewDataSet();
  136. },
  137. enter: function (router) {
  138. var controller = router.get('mainMirroringDataSetController');
  139. // if we are coming from closing AddCluster popup
  140. if (controller.isReturning) {
  141. controller.isReturning = false;
  142. return;
  143. }
  144. controller.set('isPopupForEdit', false);
  145. this.setupController(controller);
  146. var self = this;
  147. controller.set('isSubmitted', false);
  148. App.ModalPopup.show({
  149. classNames: ['sixty-percent-width-modal', 'hideCloseLink'],
  150. header: Em.I18n.t('mirroring.dataset.newDataset'),
  151. primary: Em.I18n.t('mirroring.dataset.save'),
  152. secondary: Em.I18n.t('common.cancel'),
  153. onPrimary: function () {
  154. controller.set('isSubmitted', true);
  155. var isValid = controller.validate();
  156. if (!isValid) {
  157. return;
  158. }
  159. newDataSet = controller.getNewDataSet();
  160. var schedule = newDataSet.get('schedule');
  161. var targetCluster = newDataSet.get('targetCluster');
  162. console.debug('Before setting, schedule = ' + schedule + " , targetCluster = " + targetCluster);
  163. var scheduleRecord = App.Dataset.Schedule.createRecord(schedule);
  164. var dataSetRecord = App.Dataset.createRecord(newDataSet);
  165. scheduleRecord.set('dataset', dataSetRecord);
  166. dataSetRecord.set('schedule', scheduleRecord);
  167. console.debug('After setting, schedule = ' + dataSetRecord.get('schedule') + " , targetCluster = " + dataSetRecord.get('targetCluster'));
  168. this.hide();
  169. router.transitionTo('main.mirroring.index');
  170. },
  171. onSecondary: function () {
  172. this.hide();
  173. router.transitionTo('main.mirroring.index');
  174. },
  175. bodyClass: App.MainMirroringDataSetView.extend({
  176. controller: router.get('mainMirroringDataSetController')
  177. })
  178. });
  179. }
  180. }),
  181. gotoShowJobs: function (router, event) {
  182. router.transitionTo('showDatasetJobs', event.context);
  183. },
  184. showDatasetJobs: Em.Route.extend({
  185. route: '/dataset/:dataset_id',
  186. connectOutlets: function (router, dataset) {
  187. router.get('mainController').connectOutlet('mainJobs', dataset);
  188. }
  189. }),
  190. editDataset: Em.Route.extend({
  191. route: '/dataset/:dataset_id/edit',
  192. setupController: function (controller, dataset) {
  193. controller.setOriginalDataSetRecord(dataset);
  194. controller.setDataSet(dataset);
  195. },
  196. connectOutlets: function (router, dataset) {
  197. var controller = router.get('mainMirroringDataSetController');
  198. // if we are coming from closing AddCluster popup
  199. if (controller.isReturning) {
  200. controller.isReturning = false;
  201. return;
  202. }
  203. // for showing delete button
  204. controller.set('isPopupForEdit', true);
  205. this.setupController(controller, dataset);
  206. var self = this;
  207. controller.set('isSubmitted', false);
  208. controller.set('popup', App.ModalPopup.show({
  209. classNames: ['sixty-percent-width-modal'],
  210. header: Em.I18n.t('mirroring.dataset.editDataset'),
  211. primary: Em.I18n.t('mirroring.dataset.save'),
  212. secondary: Em.I18n.t('common.cancel'),
  213. onPrimary: function () {
  214. controller.set('isSubmitted', true);
  215. var isValid = controller.validate();
  216. if (!isValid) {
  217. return;
  218. }
  219. newDataSet = controller.getNewDataSet();
  220. var originalRecord = controller.get('model.originalRecord');
  221. originalRecord.set('name', newDataSet.get('name'));
  222. originalRecord.set('sourceDir', newDataSet.get('sourceDir'));
  223. originalRecord.set('targetCluster', newDataSet.get('targetCluster'));
  224. originalRecord.set('targetDir', newDataSet.get('targetDir'));
  225. originalRecord.set('schedule', newDataSet.get('schedule'));
  226. this.hide();
  227. router.transitionTo('main.mirroring.index');
  228. },
  229. onSecondary: function () {
  230. this.hide();
  231. router.transitionTo('main.mirroring.index');
  232. },
  233. bodyClass: App.MainMirroringDataSetView.extend({
  234. controller: router.get('mainMirroringDataSetController')
  235. })
  236. })
  237. );
  238. }
  239. }),
  240. gotoEditDataset: function (router, event) {
  241. router.transitionTo('editDataset', event.context);
  242. },
  243. addTargetClusterRoute: Ember.Route.extend({
  244. route: '/targetCluster/add',
  245. initialState: 'testConnectionRoute',
  246. testConnectionRoute: Ember.Route.extend({
  247. setupController: function (controller) {
  248. controller.createTargetCluster();
  249. controller.set('model.isPopupForEdit', false);
  250. },
  251. enter: function (router, context) {
  252. console.debug('Inside connectOutlets in ' + App.get('router.currentState.path'));
  253. var self = this;
  254. var controller = App.router.get('mainMirroringTargetClusterController');
  255. this.setupController(controller);
  256. controller.set('isSubmitted1', false);
  257. controller.set('isSubmitted2', false);
  258. controller.set('popup', App.ModalPopup.show({
  259. classNames: ['sixty-percent-width-modal', 'hideCloseLink'],
  260. header: Em.I18n.t('mirroring.targetcluster.addCluster'),
  261. primary: Em.I18n.t('mirroring.targetcluster.testConnection'),
  262. onPrimary: function () {
  263. controller.set('isSubmitted1', true);
  264. var isValid = controller.validate1();
  265. if (!isValid) {
  266. return;
  267. }
  268. App.router.transitionTo('testConnectionResultsRoute');
  269. },
  270. onSecondary: function () {
  271. this.hide();
  272. var dscontroller = App.router.get('mainMirroringDataSetController');
  273. var tccontroller = App.router.get('mainMirroringTargetClusterController');
  274. var returnRoute = tccontroller.get('returnRoute');
  275. // if we have come from addNewDatasetRoute
  276. if (returnRoute) {
  277. dscontroller.isReturning = true;
  278. App.router.transitionTo(returnRoute);
  279. }
  280. else
  281. App.router.transitionTo('main.mirroring.index');
  282. },
  283. bodyClass: App.MainMirroringAddTargetClusterView.extend({
  284. controller: App.router.get('mainMirroringTargetClusterController')
  285. })
  286. }));
  287. },
  288. connectOutlets: function (router, context) {
  289. console.log("entering the connectOutlets method of testConnectionRoute.")
  290. var parentController = router.get('mainMirroringTargetClusterController');
  291. parentController.connectOutlet('testConnection', parentController.get('model'));
  292. },
  293. exit: function (stateManager) {
  294. console.log("exiting the testConnectionRoute state")
  295. }
  296. }),
  297. testConnectionResultsRoute: Ember.Route.extend({
  298. enter: function (stateManager) {
  299. console.log("entering the testConnectionResultsRoute state.")
  300. // lets change the primary button
  301. var controller = App.router.get('mainMirroringTargetClusterController');
  302. var popup = controller.get('popup');
  303. popup.set('primary', Em.I18n.t('common.save'));
  304. popup.set('onPrimary',
  305. function () {
  306. var controller = App.router.get('mainMirroringTargetClusterController');
  307. controller.set('isSubmitted2', true);
  308. var isValid = controller.validate2();
  309. if (!isValid) {
  310. return;
  311. }
  312. var controller = App.router.get('testConnectionResultsController');
  313. controller.saveClusterName();
  314. }
  315. );
  316. },
  317. connectOutlets: function (router, context) {
  318. console.log("entering the connectOutlets method of testConnectionResultsRoute.")
  319. var parentController = router.get('mainMirroringTargetClusterController');
  320. parentController.connectOutlet('testConnectionResults', parentController.get('model'));
  321. },
  322. exit: function (stateManager) {
  323. console.log("exiting the connectionSuccessRoute state")
  324. }
  325. })
  326. }),
  327. editTargetClusterRoute: Em.Route.extend({
  328. route: '/targetCluster/:targetCluster_id/edit',
  329. initialState: 'testConnectionRoute',
  330. setupController: function (controller, targetCluster) {
  331. controller.setOriginalRecord(targetCluster);
  332. controller.setTargetCluster(targetCluster);
  333. },
  334. connectOutlets: function (router, targetCluster) {
  335. // this connectOutlets is mainly to receive the 'targetCluster' argument
  336. var controller = router.get('mainMirroringTargetClusterController');
  337. // for showing delete button
  338. controller.set('model.isPopupForEdit', true);
  339. this.setupController(controller, targetCluster);
  340. },
  341. testConnectionRoute: Em.Route.extend({
  342. connectOutlets: function (router, targetCluster) {
  343. var controller = router.get('mainMirroringTargetClusterController');
  344. controller.set('isSubmitted1', false);
  345. controller.set('isSubmitted2', false);
  346. controller.set('popup', App.ModalPopup.show({
  347. classNames: ['sixty-percent-width-modal'],
  348. header: Em.I18n.t('mirroring.dataset.editDataset'),
  349. primary: Em.I18n.t('mirroring.targetcluster.testConnection'),
  350. onPrimary: function () {
  351. var controller = App.router.get('mainMirroringTargetClusterController');
  352. controller.set('isSubmitted1', true);
  353. var isValid = controller.validate1();
  354. if (!isValid) {
  355. return;
  356. }
  357. App.router.transitionTo('testConnectionResultsRoute');
  358. },
  359. secondary: Em.I18n.t('common.cancel'),
  360. onSecondary: function () {
  361. this.hide();
  362. router.transitionTo('main.mirroring.index');
  363. },
  364. bodyClass: App.MainMirroringAddTargetClusterView.extend({
  365. controller: App.router.get('mainMirroringTargetClusterController')
  366. })
  367. }));
  368. console.log("entering the connectOutlets method of testConnectionRoute.")
  369. var parentController = router.get('mainMirroringTargetClusterController');
  370. parentController.connectOutlet('testConnection', parentController.get('model'));
  371. }
  372. }),
  373. testConnection: function () {
  374. App.router.transitionTo('testConnectionResultsRoute');
  375. },
  376. testConnectionResultsRoute: Ember.Route.extend({
  377. enter: function (stateManager) {
  378. console.log("entering the testConnectionResultsRoute state.")
  379. // lets change the primary button
  380. var controller = App.router.get('mainMirroringTargetClusterController');
  381. var popup = controller.get('popup');
  382. popup.set('primary', Em.I18n.t('common.save'));
  383. popup.set('onPrimary',
  384. function () {
  385. var controller = App.router.get('mainMirroringTargetClusterController');
  386. controller.set('isSubmitted2', true);
  387. var isValid = controller.validate1();
  388. if (!isValid) {
  389. return;
  390. }
  391. var controller2 = App.router.get('testConnectionResultsController');
  392. controller2.saveClusterName();
  393. }
  394. );
  395. },
  396. connectOutlets: function (router, context) {
  397. console.log("entering the connectOutlets method of testConnectionResultsRoute.");
  398. var parentController = router.get('mainMirroringTargetClusterController');
  399. parentController.connectOutlet('testConnectionResults', parentController.get('model'));
  400. },
  401. exit: function (stateManager) {
  402. console.log("exiting the connectionSuccessRoute state")
  403. }
  404. })
  405. }),
  406. editTargetCluster: function (router, event) {
  407. router.transitionTo('editTargetClusterRoute', event.context);
  408. }
  409. }),
  410. hosts: Em.Route.extend({
  411. route: '/hosts',
  412. index: Ember.Route.extend({
  413. route: '/',
  414. connectOutlets: function (router, context) {
  415. router.get('mainController').connectOutlet('mainHost');
  416. }
  417. }),
  418. hostDetails: Em.Route.extend({
  419. route: '/:host_id',
  420. connectOutlets: function (router, host) {
  421. router.get('mainController').connectOutlet('mainHostDetails', host);
  422. },
  423. index: Ember.Route.extend({
  424. route: '/',
  425. redirectsTo: 'summary'
  426. }),
  427. summary: Em.Route.extend({
  428. route: '/summary',
  429. connectOutlets: function (router, context) {
  430. router.get('mainHostDetailsController').connectOutlet('mainHostSummary');
  431. }
  432. }),
  433. configs: Em.Route.extend({
  434. route: '/configs',
  435. connectOutlets: function (router, context) {
  436. router.get('mainHostDetailsController').connectOutlet('mainHostConfigs');
  437. }
  438. }),
  439. metrics: Em.Route.extend({
  440. route: '/metrics',
  441. connectOutlets: function (router, context) {
  442. router.get('mainHostDetailsController').connectOutlet('mainHostMetrics');
  443. }
  444. }),
  445. audit: Em.Route.extend({
  446. route: '/audit',
  447. connectOutlets: function (router, context) {
  448. router.get('mainHostDetailsController').connectOutlet('mainHostAudit');
  449. }
  450. }),
  451. hostNavigate: function (router, event) {
  452. var parent = event.view._parentView;
  453. parent.deactivateChildViews();
  454. event.view.set('active', "active");
  455. router.transitionTo(event.context);
  456. }
  457. }),
  458. back: function (router, event) {
  459. window.history.back();
  460. },
  461. showDetails: function (router, event) {
  462. router.get('mainHostDetailsController').setBack(true);
  463. router.transitionTo('hostDetails.summary', event.context)
  464. },
  465. addHost: function (router) {
  466. if (App.clusterStatus) {
  467. App.clusterStatus.updateFromServer();
  468. var currentClusterStatus = App.clusterStatus.get('value');
  469. if (currentClusterStatus && currentClusterStatus.clusterState == "ADD_HOSTS_COMPLETED_5") {
  470. // The last time add hosts ran, it left the status
  471. // in this state. We need to clear any previous status
  472. // so that the hosts page starts from fresh.
  473. currentClusterStatus.clusterState = 'CLUSTER_STARTED_5';
  474. }
  475. }
  476. router.transitionTo('hostAdd');
  477. }
  478. }),
  479. hostAdd: require('routes/add_host_routes'),
  480. admin: Em.Route.extend({
  481. route: '/admin',
  482. enter: function (router, transition) {
  483. if (!App.isAdmin) {
  484. Em.run.next(function () {
  485. router.transitionTo('main.dashboard');
  486. });
  487. }
  488. },
  489. routePath: function (router, event) {
  490. if (!App.isAdmin) {
  491. Em.run.next(function () {
  492. App.router.transitionTo('main.dashboard');
  493. });
  494. } else {
  495. var controller = router.get('mainAdminController');
  496. router.transitionTo('admin' + controller.get('category').capitalize());
  497. }
  498. },
  499. connectOutlets: function (router, context) {
  500. router.get('mainController').connectOutlet('mainAdmin');
  501. },
  502. index: Em.Route.extend({
  503. /* enter: function(router, transition){
  504. var controller = router.get('mainAdminController');
  505. router.transitionTo('admin' + controller.get('category').capitalize());
  506. }, */
  507. route: '/',
  508. redirectsTo: 'adminUser'
  509. }),
  510. adminUser: Em.Route.extend({
  511. route: '/user',
  512. index: Em.Route.extend({
  513. route: '/',
  514. redirectsTo: 'allUsers'
  515. }),
  516. enter: function (router) {
  517. router.set('mainAdminController.category', "user");
  518. Em.run.next(function () {
  519. router.transitionTo('allUsers');
  520. });
  521. },
  522. routePath: function (router, event) {
  523. router.set('mainAdminController.category', "user");
  524. router.transitionTo('allUsers');
  525. Em.run.next(function () {
  526. router.transitionTo('allUsers');
  527. });
  528. },
  529. // events
  530. gotoUsers: Em.Router.transitionTo("allUsers"),
  531. gotoCreateUser: Em.Router.transitionTo("createUser"),
  532. gotoEditUser: function (router, event) {
  533. router.transitionTo("editUser", event.context)
  534. },
  535. // states
  536. allUsers: Em.Route.extend({
  537. route: '/allUsers',
  538. // index: Ember.Route.extend({
  539. //route: '/',
  540. connectOutlets: function (router) {
  541. router.get('mainAdminController').connectOutlet('mainAdminUser');
  542. }
  543. //})
  544. }),
  545. createUser: Em.Route.extend({
  546. route: '/create',
  547. connectOutlets: function (router) {
  548. router.get('mainAdminController').connectOutlet('mainAdminUserCreate', {});
  549. }
  550. }),
  551. editUser: Em.Route.extend({
  552. route: '/edit/:user_id',
  553. connectOutlets: function (router, user) {
  554. router.get('mainAdminController').connectOutlet('mainAdminUserEdit', user);
  555. }
  556. })
  557. }),
  558. adminAuthentication: Em.Route.extend({
  559. route: '/authentication',
  560. connectOutlets: function (router, context) {
  561. router.set('mainAdminController.category', "authentication");
  562. router.get('mainAdminController').connectOutlet('mainAdminAuthentication');
  563. }
  564. }),
  565. adminSecurity: Em.Route.extend({
  566. route: '/security',
  567. enter: function (router) {
  568. router.set('mainAdminController.category', "security");
  569. var controller = router.get('mainAdminSecurityController');
  570. if (!(controller.getAddSecurityWizardStatus() === 'RUNNING')) {
  571. Em.run.next(function () {
  572. router.transitionTo('adminSecurity.index');
  573. });
  574. } else {
  575. Em.run.next(function () {
  576. router.transitionTo('adminAddSecurity');
  577. });
  578. }
  579. },
  580. index: Ember.Route.extend({
  581. route: '/',
  582. connectOutlets: function (router, context) {
  583. var controller = router.get('mainAdminController');
  584. controller.set('category', "security");
  585. controller.connectOutlet('mainAdminSecurity');
  586. }
  587. }),
  588. addSecurity: function (router, object) {
  589. router.transitionTo('adminAddSecurity');
  590. },
  591. disableSecurity: Ember.Route.extend({
  592. route: '/',
  593. enter: function (router) {
  594. Ember.run.next(function () {
  595. App.router.get('updateController').set('isWorking', false);
  596. App.ModalPopup.show({
  597. classNames: ['full-width-modal'],
  598. header: Em.I18n.t('admin.removeSecurity.header'),
  599. bodyClass: App.MainAdminSecurityDisableView.extend({
  600. controllerBinding: 'App.router.mainAdminSecurityDisableController'
  601. }),
  602. primary: Em.I18n.t('form.cancel'),
  603. secondary: null,
  604. showFooter: false,
  605. onPrimary: function () {
  606. this.hide();
  607. App.router.get('updateController').set('isWorking', true);
  608. },
  609. onClose: function () {
  610. if (router.get('mainAdminSecurityDisableController.isSubmitDisabled') === false) {
  611. this.hide();
  612. App.router.get('updateController').set('isWorking', true);
  613. router.transitionTo('adminSecurity.index');
  614. }
  615. },
  616. didInsertElement: function () {
  617. this.fitHeight();
  618. }
  619. });
  620. });
  621. },
  622. unroutePath: function () {
  623. return false;
  624. },
  625. done: function (router, context) {
  626. $(context.currentTarget).parents("#modal").find(".close").trigger('click');
  627. }
  628. }),
  629. adminAddSecurity: require('routes/add_security')
  630. }),
  631. adminCluster: Em.Route.extend({
  632. route: '/cluster',
  633. connectOutlets: function (router) {
  634. router.set('mainAdminController.category', "cluster");
  635. router.get('mainAdminController').connectOutlet('mainAdminCluster');
  636. }
  637. }),
  638. adminAdvanced: Em.Route.extend({
  639. route: '/advanced',
  640. connectOutlets: function (router) {
  641. router.set('mainAdminController.category', "advanced");
  642. router.get('mainAdminController').connectOutlet('mainAdminAdvanced');
  643. }
  644. }),
  645. adminMisc: Em.Route.extend({
  646. route: '/misc',
  647. connectOutlets: function (router) {
  648. router.set('mainAdminController.category', "misc");
  649. router.get('mainAdminController').connectOutlet('mainAdminMisc');
  650. }
  651. }),
  652. adminAudit: Em.Route.extend({
  653. route: '/audit',
  654. connectOutlets: function (router) {
  655. router.set('mainAdminController.category', "audit");
  656. router.get('mainAdminController').connectOutlet('mainAdminAudit');
  657. }
  658. }),
  659. upgradeStack: function (router, event) {
  660. if (!$(event.currentTarget).hasClass('inactive')) {
  661. router.transitionTo('stackUpgrade');
  662. }
  663. },
  664. adminNavigate: function (router, object) {
  665. router.transitionTo('admin' + object.context.capitalize());
  666. },
  667. //events
  668. goToAdmin: function (router, event) {
  669. router.transitionTo(event.context);
  670. }
  671. }),
  672. stackUpgrade: require('routes/stack_upgrade'),
  673. dashboard: Em.Route.extend({
  674. route: '/dashboard',
  675. connectOutlets: function (router, context) {
  676. router.get('mainController').connectOutlet('mainDashboard');
  677. },
  678. showDetails: function (router, event) {
  679. router.get('mainHostDetailsController').setBack(true);
  680. router.transitionTo('hosts.hostDetails.summary', event.context);
  681. }
  682. }),
  683. services: Em.Route.extend({
  684. route: '/services',
  685. index: Ember.Route.extend({
  686. route: '/',
  687. enter: function (router) {
  688. Ember.run.next(function(){
  689. var controller = router.get('mainController');
  690. controller.dataLoading().done(function () {
  691. var service = router.get('mainServiceItemController.content');
  692. if (!service) {
  693. service = App.Service.find().objectAt(0); // getting the first service to display
  694. }
  695. router.transitionTo('service.summary', service);
  696. });
  697. });
  698. }
  699. }),
  700. connectOutlets: function (router, context) {
  701. router.get('mainController').connectOutlet('mainService');
  702. },
  703. service: Em.Route.extend({
  704. route: '/:service_id',
  705. connectOutlets: function (router, service) {
  706. router.get('mainServiceController').connectOutlet('mainServiceItem', service);
  707. router.transitionTo('summary');
  708. },
  709. index: Ember.Route.extend({
  710. route: '/'
  711. }),
  712. summary: Em.Route.extend({
  713. route: '/summary',
  714. connectOutlets: function (router, context) {
  715. var item = router.get('mainServiceItemController.content');
  716. var viewName = 'mainServiceInfoSummary';
  717. router.get('mainServiceItemController').connectOutlet('mainServiceInfoSummary', item);
  718. }
  719. }),
  720. metrics: Em.Route.extend({
  721. route: '/metrics',
  722. connectOutlets: function (router, context) {
  723. var item = router.get('mainServiceItemController.content');
  724. router.get('mainServiceItemController').connectOutlet('mainServiceInfoMetrics', item);
  725. }
  726. }),
  727. configs: Em.Route.extend({
  728. route: '/configs',
  729. connectOutlets: function (router, context) {
  730. var item = router.get('mainServiceItemController.content');
  731. router.get('mainServiceItemController').connectOutlet('mainServiceInfoConfigs', item);
  732. }
  733. }),
  734. audit: Em.Route.extend({
  735. route: '/audit',
  736. connectOutlets: function (router, context) {
  737. var item = router.get('mainServiceItemController.content');
  738. router.get('mainServiceItemController').connectOutlet('mainServiceInfoAudit', item);
  739. }
  740. }),
  741. showInfo: function (router, event) {
  742. var parent = event.view._parentView;
  743. parent.deactivateChildViews();
  744. event.view.set('active', "active");
  745. router.transitionTo(event.context);
  746. },
  747. showDetails: function (router, event) {
  748. router.get('mainHostDetailsController').setBack(true);
  749. router.transitionTo('hosts.hostDetails.summary', event.context);
  750. }
  751. }),
  752. showService: Em.Router.transitionTo('service'),
  753. addService: Em.Router.transitionTo('serviceAdd')
  754. }),
  755. serviceAdd: require('routes/add_service_routes'),
  756. reassignMaster: require('routes/reassign_master_routes'),
  757. selectService: Em.Route.transitionTo('services.service.summary'),
  758. selectHost: function (router, event) {
  759. router.get('mainHostDetailsController').setBack(false);
  760. router.transitionTo('hosts.hostDetails.index', event.context);
  761. },
  762. filterHosts: function (router, component) {
  763. router.get('mainHostController').filterByComponent(component.context);
  764. router.transitionTo('hosts.index');
  765. }
  766. });