You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

14 年之前
13 年之前
14 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. // App.js
  2. // dialog container
  3. var popup_cont;
  4. var session = {};
  5. var start_sid = null;
  6. if(!wn) var wn = {};
  7. function startup() {
  8. // save the sid (so that we know if it changes mid-session)
  9. start_sid = get_cookie('sid');
  10. popup_cont = $a(document.getElementsByTagName('body')[0], 'div');
  11. // Globals
  12. // ---------------------------------
  13. var setup_globals = function(r) {
  14. wn.boot = r;
  15. profile = r.profile;
  16. user = r.profile.name;
  17. user_fullname = wn.user_info(user).fullname;
  18. user_defaults = profile.defaults;
  19. user_roles = profile.roles;
  20. user_email = profile.email;
  21. home_page = r.home_page;
  22. _p.letter_heads = r.letter_heads;
  23. sys_defaults = r.sysdefaults;
  24. // bc
  25. session.rt = profile.can_read;
  26. if(r.ipinfo) session.ipinfo = r.ipinfo;
  27. session.dt_labels = r.dt_labels;
  28. session.rev_dt_labels = {} // reverse lookup - get doctype by label
  29. if(r.dt_labels) {
  30. for(key in r.dt_labels)session.rev_dt_labels[r.dt_labels[key]] = key;
  31. }
  32. // control panel
  33. wn.control_panel = r.control_panel;
  34. }
  35. var setup_history = function(r) {
  36. rename_observers.push(nav_obj);
  37. }
  38. var callback = function(r,rt) {
  39. if(r.exc) console.log(r.exc);
  40. setup_globals(r);
  41. setup_history();
  42. var a = new Body();
  43. page_body.run_startup_code();
  44. for(var i=0; i<startup_list.length; i++) {
  45. startup_list[i]();
  46. }
  47. // show a new form on loading?
  48. // open an existing page or record
  49. var t = to_open();
  50. if(t) {
  51. historyChange(t);
  52. } else if(home_page) {
  53. // show home oage
  54. loadpage(home_page);
  55. }
  56. page_body.ready();
  57. }
  58. if(wn.boot) {
  59. LocalDB.sync(wn.boot.docs);
  60. callback(wn.boot, '');
  61. if(wn.boot.error_messages)
  62. console.log(wn.boot.error_messages)
  63. if(wn.boot.server_messages)
  64. msgprint(wn.boot.server_messages);
  65. } else {
  66. if($i('startup_div'))
  67. $c('startup',{},callback,null,1);
  68. }
  69. }
  70. function to_open() {
  71. if(get_url_arg('page'))
  72. return get_url_arg('page');
  73. var h = location.hash;
  74. if(h) {
  75. return h.substr(1);
  76. }
  77. }
  78. function logout() {
  79. $c('logout', args = {}, function(r,rt) {
  80. if(r.exc) {
  81. msgprint(r.exc);
  82. return;
  83. }
  84. redirect_to_login();
  85. });
  86. }
  87. function redirect_to_login() {
  88. if(login_file)
  89. window.location.href = login_file;
  90. else {
  91. window.location.reload();
  92. }
  93. }
  94. // default print style
  95. _p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }" + "\npre { margin:0; padding:0;}"
  96. _p.def_print_style_other = "\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
  97. +"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
  98. +"\n.noborder td { vertical-align: top; }"
  99. _p.go = function(html) {
  100. var d = document.createElement('div')
  101. d.innerHTML = html
  102. $(d).printElement();
  103. }
  104. _p.preview = function(html) {
  105. var w = window.open('');
  106. w.document.write(html)
  107. w.document.close();
  108. }
  109. var resize_observers = []
  110. function set_resize_observer(fn) {
  111. if(resize_observers.indexOf(fn)==-1) resize_observers.push(fn);
  112. }
  113. window.onresize = function() {
  114. return;
  115. var ht = get_window_height();
  116. for(var i=0; i< resize_observers.length; i++){
  117. resize_observers[i](ht);
  118. }
  119. }
  120. get_window_height = function() {
  121. var ht = window.innerHeight ? window.innerHeight : document.documentElement.offsetHeight ? document.documentElement.offsetHeight : document.body.offsetHeight;
  122. return ht;
  123. }