Global.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. Ext.define('uas.controller.Global', {
  2. extend: 'Ext.app.Controller',
  3. namespace: 'uas',
  4. stores: [
  5. 'Navigation',
  6. 'Companies'
  7. ],
  8. config: {
  9. control: {
  10. 'navigation-tree': {
  11. selectionchange: 'onTreeNavSelectionChange'
  12. }
  13. },
  14. refs: {
  15. viewport: 'viewport',
  16. navigationTree: 'navigation-tree',
  17. contentPanel: 'contentPanel',
  18. },
  19. routes : {
  20. ':target': {
  21. action: 'handleRoute',
  22. before: 'beforeHandleRoute'
  23. }
  24. }
  25. },
  26. beforeHandleRoute: function(target, action) {
  27. let me = this,
  28. className = Ext.ClassManager.getNameByAlias('widget.' + target),
  29. ViewClass = Ext.ClassManager.get(className);
  30. if(!!ViewClass) {
  31. //resume action
  32. action.resume();
  33. }else {
  34. Ext.Msg.alert(
  35. '创建组件失败',
  36. '确定以返回首页',
  37. function() {
  38. // TODO 路由跳转并不会引起页面刷新,待解决
  39. me.redirectTo(me.getApplication().getDefaultToken());
  40. }
  41. );
  42. //stop action
  43. action.stop();
  44. }
  45. },
  46. handleRoute: function(target) {
  47. let me = this,
  48. store = Ext.StoreMgr.get('Navigation'),
  49. node = store.findNode('target', target),
  50. title = node.get('text'),
  51. contentPanel = me.getContentPanel();
  52. this.getViewport().getViewModel().set('selectedNode', node);
  53. Ext.suspendLayouts();
  54. contentPanel.removeAll(true);
  55. className = Ext.ClassManager.getNameByAlias('widget.' + target);
  56. ViewClass = Ext.ClassManager.get(className);
  57. cmp = new ViewClass();
  58. contentPanel.add(cmp);
  59. me.updateTitle(title);
  60. if (cmp.floating) {
  61. Ext.resumeLayouts(true);
  62. cmp.show();
  63. Ext.suspendLayouts();
  64. }
  65. Ext.resumeLayouts(true);
  66. },
  67. onTreeNavSelectionChange: function(treelist, record, eOpts) {
  68. let target = record.get('target');
  69. if(target) {
  70. this.redirectTo(target);
  71. }
  72. },
  73. updateTitle: function(title) {
  74. let contentPanel = this.getContentPanel();
  75. if (contentPanel.setTitle) {
  76. contentPanel.setTitle(title);
  77. }
  78. document.title = document.title.split(' - ')[0] + ' - ' + title;
  79. }
  80. });