ViewportModel.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Ext.define('school.view.viewport.ViewportModel', {
  2. extend: 'Ext.app.ViewModel',
  3. alias: 'viewmodel.viewport',
  4. data: {
  5. account: null
  6. },
  7. formulas: {
  8. avatarUrl: function (get) {
  9. var account = get('account');
  10. return (account && account.avatarUrl) || 'resources/images/default/user-icon.png'
  11. }
  12. },
  13. stores: {
  14. store_navigationMenu: {
  15. autoLoad: true,
  16. fields: ['text', 'iconCls'],
  17. proxy: {
  18. type: 'ajax',
  19. url: 'resources/json/navigation.json',
  20. reader: {
  21. type: 'json'
  22. }
  23. }
  24. },
  25. store_grade: {
  26. type: 'tree',
  27. autoLoad: false,
  28. // model: 'school.model.Grade',
  29. fields: [{
  30. name: 'text'
  31. }],
  32. proxy: {
  33. type: 'ajax',
  34. // url: 'http://10.1.80.47:9560/grade/read/1',
  35. url: '/api/school/grade/read/1',
  36. reader: {
  37. transform: {
  38. fn: function(data) {
  39. let grades = data.data.children;
  40. grades.map(function(s) {
  41. s._id = s.id;
  42. s.id = 'grade-' + s.id;
  43. let classes = s.children;
  44. let d = classes.map(function(c) {
  45. c._id = c.id;
  46. c.id = 'class-' + c.id;
  47. return c;
  48. });
  49. return s;
  50. });
  51. return grades;
  52. },
  53. scope: this
  54. }
  55. }
  56. },
  57. root: {
  58. text: '全年级',
  59. type: 'SCHOOL',
  60. expanded: true
  61. },
  62. listeners: {
  63. load: function(store, records) {
  64. let stores = school.store;
  65. let mainModel = Ext.getCmp('mainView').getViewModel();
  66. let gradeStore = Ext.create('school.store.Grade', {
  67. data: records.map(function(r) {
  68. let d = r.data;
  69. return {
  70. grade_id: d._id,
  71. grade_name: d.text,
  72. }
  73. })
  74. });
  75. mainModel.set('grade_store', gradeStore);
  76. }
  77. }
  78. }
  79. }
  80. });