123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- /**
- * Steve L. Nyemba
- * The modal window creates a modal window on the basis of a url or a html
- * The namespace also provides a mechanism for the modal to be removed upon
- */
- var __jx_modalw__ = {width:0,height:0}
- /**
- * @param {*} info {uri|html}
- */
- __jx_modalw__.init = function(info,pointers){
- // if(info.match(/^[a-z](+\/[a-z,.]+){1,}/i)){
- // var uri = info
- // var http = HttpClient.instance()
- // http.get(uri,function(x){
- // var html = x.responseText
- // __jx_modalw__.render.modal(html,pointers)
- // })
- // }else{
- // var html = info
- // __jx_modalw__.render.modal(id,html,pointers)
- // }
- }
- __jx_modalw__.cache = {}
- __jx_modalw__.render = {}
- __jx_modalw__.render.modal = function(args){
- var bg = jx.dom.get.instance('DIV')
- var frame = jx.dom.get.instance('DIV')
-
- var buttons = jx.dom.get.instance('DIV')
- bg.style.position = 'relative'
- bg.style.zIndex = 99
- bg.style.width = '100%'
- bg.style.height = '100%'
- bg.style.overflow = 'hidden'
- bg.style.backgroundColor= 'rgba(242,242,242,0.7)'
- bg.style.display = 'grid'
-
- if(args.url != null){
- //
- // a modal window that is a reference to another site
-
- bg.style.gridTemplateColumns = '10% 80% 10%'
- bg.style.gridTemplateRows = '10% 80% 10%'
- var iframe = jx.dom.get.instance('IFRAME')
- args.css = (args.css != null)?args.css:{}
-
- iframe.src = args.url
- iframe.frameBorder = 0
- iframe.style.width = '99%' //(args.css.width == null)?'99%':args.css.width
- iframe.style.height= '99%' //(args.css.height==null)?'99%':args.css.height
- iframe.style.backgroundColor = '#ffffff'
- iframe.className = 'border-round border'
- frame.appendChild(iframe)
-
- }else{
- //
- // This is the case of a modal window that's based on an html document/inline script
- //
- var text = jx.dom.get.instance('DIV')
- text.innerHTML = args.html
- frame.appendChild(text)
- bg.style.gridTemplateColumns = '20% 60% 20%'
- bg.style.gridTemplateRows = '20% 60% 20%'
- frame.style.display = 'flex'
- frame.style.justifyContent = 'center'
- frame.style.alignItems = 'center'
- // frame.style.resize = 'both'
- text.className = 'border border-round'
- text.style.backgroundColor = '#ffffff'
-
- }
- frame.style.gridRow = '2/3'
- frame.style.gridColumn = '2/3'
- bg.appendChild(frame)
- if(args.id == null){
- //
- // If no identifier is assigned to the modal window
- // This means it will close upon click on the background
- bg.onclick = function(){
- jx.dom.remove(this)
- }
-
- }else{
- //
- // We will persist the pane and the calling code will invoke jx.modal.remove
- //
- jx.modal.set(args.id,bg)
-
- }
- args.frame = frame
- args.background = bg
- return args
- }
- /**
- * This function is designed to layout the pane with the background on it
- */
- __jx_modalw__.render.show = function(info){
- info.background.className = 'jxmodal'
- // info.background.style.position = 'absolute'
-
- var parent = (info.target != null)?jx.dom.get.instance(info.target): document.body
-
- var height = $(parent).height()
- var width = $(parent).width()
-
- parent.appendChild(info.background)
- // if(info.html == null){
-
- info.background.style.top = 0
- info.background.style.left =0
- info.background.style.position = 'absolute'
-
- // }else{
- // $(info.background).width(width+(width*0.01))
- // $(info.background).height(height+(height*0.1))
- // info.background.style.top = -(height)
- // info.background.style.left= -10
-
- // }
-
-
-
- }
- if(! jx){
- var jx = {}
- }
- /**
- * This function will generate a modal window
- * @param {*} args {html,url,id}
- */
- jx.modal = {cache:{}}
- jx.modal.show= function(args){
- if(args.constructor == String){
- if (args.match(/^http|^\//)){
- args = {url:args}
- }else{
- args={html:args}
- }
- }
-
- var info = __jx_modalw__.render.modal(args)
- __jx_modalw__.render.show(info)
- if(info.render != null){
- if(info.render.args != null){
- var args = info.render.args
- }else{
- var args = null
- }
- info.render.pointer(args)
- }
- }
- jx.modal.remove = function(id){
- if(jx.modal.cache[id] == null){
- var pane = $('.jxmodal')[0]
-
- }else{
- var pane = jx.modal.cache[id]
-
-
- }
- jx.dom.remove(pane)
- }
- jx.modal.set = function(id,pane){
-
- jx.modal.cache[id] = pane
- delete jx.modal.cache[id]
- }
- jx.modal.close = jx.modal.remove
- // jx.modal.render = function(id,html){
- // var info = __jx_modalw__.render.modal(id,html)
- // // console.log(info)
-
- // }
- jx.modal_example = function(){
-
- busy = '<div class="small" align="center">Please wait</div><i class="fa fa-cog fa-5x faa-wrench animated" style="color:#4682b4"></i><i class="fa fa-cog fa-spin fa-3x" style="color:black"></i><i class="fa fa-cog faa-wrench animated fa-5x" style="color:#4682B4"></i>'
- jx.modal(busy)
- }
|