ui.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * @fileOverview
  3. *
  4. * KityMinder UI 注册及加载机制
  5. *
  6. * @author: techird
  7. * @copyright: Baidu FEX, 2014
  8. */
  9. (function() {
  10. var uiQueue = [];
  11. /* 注册一个新的 UI 交互 */
  12. KityMinder.registerUI = function(id, deps, ui) {
  13. if (typeof(deps) == 'function') {
  14. ui = deps;
  15. deps = null;
  16. }
  17. uiQueue.push({
  18. id: id,
  19. ui: ui,
  20. deps: deps
  21. });
  22. };
  23. kity.extendClass(Minder, {
  24. /* 为实例注册 UI 交互 */
  25. initUI: function() {
  26. var ui = this._ui = {};
  27. var minder = this;
  28. uiQueue.forEach(function(uiDeal) {
  29. var deps = uiDeal.deps;
  30. if (deps) deps = deps.map(function(dep) {
  31. return minder.getUI(dep);
  32. });
  33. ui[uiDeal.id] = uiDeal.ui.apply(null, [minder].concat(deps || []));
  34. });
  35. // 阻止非脑图事件冒泡
  36. $('#content-wrapper').delegate('#panel, #tab-container, .fui-dialog, #main-menu', 'keydown keyup', function(e) {
  37. e.stopPropagation();
  38. });
  39. // 阻止非脑图事件冒泡
  40. $('#content-wrapper').delegate('input', 'mousedown mousemove mouseup contextmenu', function(e) {
  41. e.stopPropagation();
  42. });
  43. minder.getPaper().addClass('loading-target');
  44. this.fire('interactchange');
  45. this.fire('uiready');
  46. },
  47. /* 获得实例的 UI 实例 */
  48. getUI: function(id) {
  49. return this._ui[id];
  50. }
  51. });
  52. $.ajaxSetup({ cache: false });
  53. $.extend($, {
  54. pajax: function() {
  55. var jqXHR = $.ajax.apply($, arguments);
  56. return new Promise(function(resolve, reject) {
  57. jqXHR.done(resolve);
  58. jqXHR.fail(function(jqXHR, textStatus, errorThrown) {
  59. var e = new Error(textStatus);
  60. e.getDetail = function() {
  61. try {
  62. return 'jQuery XHR Error: \n' + JSON.stringify(errorThrown);
  63. } catch (e) {
  64. return errorThrown;
  65. }
  66. };
  67. reject(e);
  68. });
  69. });
  70. }
  71. });
  72. // preload css images
  73. $(function() {
  74. var list = ["kmcat_warn.png", "kmcat_sad.png", "icons.png", "template_large.png", "history.png", "feedback.png", "iconpriority.png", "iconprogress.png", "template.png", "layout.png", "next-level.png", "prev-level.png"];
  75. list.forEach(function(item) {
  76. (new Image()).src = 'ui/theme/default/images/' + item;
  77. });
  78. });
  79. })();