Global.js 2.6 KB

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