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