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.

m_api_v2.js 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. // this file enables loading modules after pageload
  2. function get_cui_html(file) {
  3. clog("get_cui_html",this,arguments)
  4. // console.trace("~IX~ ixr")
  5. clog("~IX~ ixr")
  6. // for (var file of this.arr){
  7. var aii
  8. aii= $.ajax({
  9. // url: "ign/cui.html",
  10. url: file.url,
  11. // data: file.qs,
  12. cache:false,
  13. // complete:complete_html,
  14. success: file.success || proc_cui_html,
  15. // error: err_html,
  16. // dataType: "text"
  17. dataType: "html"
  18. })
  19. aii.file = file
  20. // aii.rldh=file
  21. // }
  22. }
  23. function cui_respH(){
  24. clog("cui_respH")
  25. }
  26. function cui_diffH(file){
  27. clog("cui_diffH",this,arguments)
  28. // get_cui_html(file)
  29. }
  30. function proc_cui_html(rsp,status,xhr){
  31. clog("proc_cui_html",this,arguments)
  32. /*
  33. gxh.success = {
  34. that:this,
  35. rsp,status,xhr,
  36. args:arguments,
  37. }
  38. */
  39. // insert_cui_html(rsp)
  40. // rsp
  41. }
  42. function insert_cui_html(innerHTML){
  43. clog("insert_cui_html....")
  44. window.cui_html = innerHTML
  45. t5i2.crnr_init()
  46. // t5i2.crnr_refresh()
  47. // var n
  48. // n = document.createElement("div")
  49. // n = document.querySelector("#xh_root")
  50. // n ? n.innerHTML = innerHTML : 0
  51. // event_html(n)
  52. }
  53. function dflt_api_handler(){
  54. clog("dflt_api_handler NOT IMPLIMENTED")
  55. }
  56. function add_rld_html(){
  57. // js files
  58. // html
  59. // css
  60. rldi.files["ign/m/timer/rhtml.html"]= {url: "ign/m/timer/rhtml.html",
  61. qs: {v:1}, respH: cui_respH, diffH: cui_diffH,
  62. cached:"z z",
  63. success:proc_cui_html,
  64. }
  65. }
  66. /*
  67. var reqt = {
  68. url:"",
  69. respH:dflt_handler,
  70. diffH:diff_handler,
  71. }
  72. */
  73. // jsrh
  74. // cssrh
  75. api_dflts = {
  76. dflt:window.reqt || {url:"", respH:dflt_handler, diffH:diff_handler,},
  77. js:{
  78. diffH:jsrh,
  79. // diffH:jsrh,
  80. qs:{v:1},
  81. },
  82. css:{
  83. diffH:cssrh,
  84. qs:{v:1},
  85. },
  86. html:{
  87. diffH:html_rld_cb,
  88. qs:{v:1},
  89. },
  90. }
  91. api_test = {}
  92. // <script class="rld" src="ign/m/m_api.js?c=023"></script>
  93. function insert_js(file){
  94. var n = document.createElement("SCRIPT")
  95. n.classList.add("rld")
  96. n.src=file.url + "?_="+new Date().getTime()
  97. // n.rel="stylesheet"
  98. $(`script.rld[src^="`+file.url+`"]`).remove()
  99. $(".m0.module").after(n)
  100. }
  101. function remove_css(file_url){
  102. $(`link.rld[href^="`+file_url+`"]`).remove()
  103. }
  104. function insert_css(file){
  105. var url = file.url
  106. var n = document.createElement("LINK")
  107. n.classList.add("rld")
  108. n.href=file.url + "?_="+new Date().getTime()
  109. n.rel="stylesheet"
  110. remove_css(file.url)
  111. // $(`link.rld[href^="`+file.url+`"]`).remove()
  112. $(".m0.module").before(n)
  113. }
  114. function html_rld_cb(){
  115. clog("html_rld_cb!")
  116. }
  117. function html_rld_cb2(){
  118. clog("html_rld_cb2!",this,[...arguments])
  119. }
  120. function html_rld_cb3(){
  121. clog("html_rld_cb3!",this,[...arguments])
  122. }
  123. function html_rld_cb4(rsp,status,xhr){
  124. clog("html_rld_cb4!",this,[...arguments])
  125. // window[this.success_js](rsp,status,xhr)
  126. window[xhr.file.success_js](rsp,status,xhr)
  127. }
  128. function register_rld(file){
  129. clog("RR",file)
  130. file.cached = rls[file.url]
  131. rldi.files[file.url] = file
  132. }
  133. window.qto_stop = 0
  134. window.qto_cnt = 0
  135. function qto_init(){
  136. window.qto_stop = 0
  137. window.qto_cnt = 0
  138. // setTimeout(qto_stop_fn,1000)
  139. setTimeout(qto_stop_fn,100)
  140. qto()
  141. }
  142. function qto_stop_fn(){
  143. clog("qto_stop_fn")
  144. window.qto_stop =1
  145. }
  146. function qto(){
  147. clog("QTO",window.qto_cnt)
  148. // clog("QTO",window.qto_cnt,$(`script.rld[src^="ign/m/timer/m.js"]`))
  149. window.qto_cnt += 1
  150. if (!window.qto_stop){
  151. setTimeout(qto,1)
  152. }
  153. }
  154. // $(`script.rld[src^="ign/m/timer/m.js"]`).remove()
  155. // ign/m/timer/m.js
  156. // mtx ={js:["ign/m/timer/m.js"],css:["ign/m/timer/m.css"],html:["ign/m/timer/m.html"]}
  157. // mtx ={js:["ign/m/timer/m.js"],css:["ign/m/timer/m.css"],html:[{url:"ign/m/timer/m.html",diffH:html_rld_cb2,success:html_rld_cb4,}]}
  158. // function
  159. function inc_map(map,key,dflt=0,inc=1){
  160. if (!map.has(key)){
  161. map.set(key,dflt + inc)
  162. } else {
  163. map.set(key,map.get(key) + inc)
  164. }
  165. }
  166. function fmap(o){
  167. var i,k,v,ret
  168. var jstr
  169. ret = []
  170. clog("FM","\n\r.\n\r")
  171. clog("FM name",o.name)
  172. for (k of o.js || []){
  173. clog("FM js",k)
  174. ret.push(k)
  175. }
  176. for (k of o.css || []){
  177. clog("FM css",k)
  178. ret.push(k)
  179. }
  180. for (k of o.html || []){
  181. clog("FM html",k)
  182. ret.push(k.url)
  183. }
  184. jstr = JSON.stringify(ret)
  185. if (!o.name){
  186. inc_map(rldi.mods.file_map_c,jstr)
  187. rldi.mods.file_map.setD(jstr,o)
  188. }
  189. }
  190. function log_mod(o){
  191. inc_map(rldi.mods.m,o.name)
  192. if (!o.name){
  193. }
  194. fmap(o)
  195. // log_tb("mod",new Error())
  196. // log_tb(new Error(),"mod")
  197. }
  198. rldi.mods = window.rldi.mods || {
  199. arr:[],
  200. m:new Map(),
  201. file_map:new Map(),
  202. file_map_c:new Map(),
  203. mtx:{},
  204. }
  205. function add_module(o){
  206. var k,v
  207. let file
  208. log_mod(o)
  209. // qto_init()
  210. // file = jclone(api_dflts.css)
  211. for (k of o.css || []){
  212. if (typeof(k) == "string"){
  213. file = $.extend(true,{},api_dflts.css, {url:k})
  214. } else {
  215. file = $.extend(true,{},api_dflts.css, k)
  216. }
  217. // file = jclone(api_dflts.css)
  218. // file.url = k
  219. file.m = {mod:o.name}
  220. register_rld(file)
  221. insert_css(file)
  222. api_test[file.url]=file
  223. clog("~",k)
  224. }
  225. for (k of o.js || []){
  226. if (typeof(k) == "string"){
  227. file = $.extend(true,{},api_dflts.js, {url:k})
  228. } else {
  229. file = $.extend(true,{},api_dflts.js, k)
  230. }
  231. // file = jclone(api_dflts.js)
  232. // file.url = k
  233. file.m = {mod:o.name}
  234. register_rld(file)
  235. insert_js(file)
  236. api_test[file.url]=file
  237. clog("~",k)
  238. }
  239. for (k of o.html || []){
  240. if (typeof(k) == "string"){
  241. file = $.extend(true,{},api_dflts.html, {url:k})
  242. } else {
  243. file = $.extend(true,{},api_dflts.html, k)
  244. }
  245. // file = jclone(api_dflts.html)
  246. // file.url = k
  247. file.m = {mod:o.name}
  248. register_rld(file)
  249. api_test[file.url]=file
  250. clog("~",k)
  251. rfile = file
  252. get_cui_html(file)
  253. }
  254. }
  255. // jquery helper
  256. function add_node(n,rn,i) {
  257. $(rn)[i](n)
  258. }
  259. function unload_css(css) {
  260. var k,v
  261. for (k of css){
  262. remove_css(k)
  263. }
  264. // body...
  265. }
  266. function remove_jscss(file_url){
  267. $(`link.rld[href^="`+file_url+`"]`).remove()
  268. $(`script.rld[src^="`+file_url+`"]`).remove()
  269. }
  270. function unload_module_css(name) {
  271. var k,v
  272. for ([k,v] of Object.entries(rldi.files)){
  273. if (k.endsWith(".css") && v.m && v.m.mod==name){
  274. // if (v.m && v.m.mod==name){
  275. remove_jscss(k)
  276. delete rldi.files[k]
  277. // remove_css(k)
  278. clog("~",k,v)
  279. }
  280. // clog("~",k,v)
  281. }
  282. // body...
  283. }
  284. function unload_module(name) {
  285. var k,v
  286. for ([k,v] of Object.entries(rldi.files)){
  287. // if (k.endsWith(".css") && v.m && v.m.mod==name){
  288. if (v.m && v.m.mod==name){
  289. remove_jscss(k)
  290. delete rldi.files[k]
  291. // remove_css(k)
  292. clog("~",k,v)
  293. }
  294. // clog("~",k,v)
  295. }
  296. // body...
  297. }