From 08a6d6d7c45c268684fb56aa55626600e631a160 Mon Sep 17 00:00:00 2001 From: Leo Horie Date: Tue, 7 Jun 2016 11:27:57 -0400 Subject: [PATCH] upgrade mithril to latest version --- lib/mithril.min.js | 5 +-- mithril/app.js | 110 +++++++++++++++++---------------------------- mithril/index.html | 1 - 3 files changed, 42 insertions(+), 74 deletions(-) diff --git a/lib/mithril.min.js b/lib/mithril.min.js index b6d23fee..e187c277 100755 --- a/lib/mithril.min.js +++ b/lib/mithril.min.js @@ -1,8 +1,7 @@ /* -Mithril v0.1.30 +Mithril v1.0-alpha http://github.com/lhorie/mithril.js (c) Leo Horie License: MIT */ -var m=function a(b,c){function d(a){C=a.document,D=a.location,F=a.cancelAnimationFrame||a.clearTimeout,E=a.requestAnimationFrame||a.setTimeout}function e(){var a,b=[].slice.call(arguments),c=!(null==b[1]||K.call(b[1])!==G||"tag"in b[1]||"subtree"in b[1]),d=c?b[1]:{},e="class"in d?"class":"className",f={tag:"div",attrs:{}},g=[];if(K.call(b[0])!=I)throw new Error("selector in m(selector, attrs, children) should be a string");for(;a=L.exec(b[0]);)if(""===a[1]&&a[2])f.tag=a[2];else if("#"===a[1])f.attrs.id=a[2];else if("."===a[1])g.push(a[2]);else if("["===a[3][0]){var h=M.exec(a[3]);f.attrs[h[1]]=h[3]||(h[2]?"":!0)}g.length>0&&(f.attrs[e]=g.join(" "));var i=c?b[2]:b[1];f.children=K.call(i)===H?i:b.slice(c?2:1);for(var j in d)j===e?""!==d[j]&&(f.attrs[j]=(f.attrs[j]||"")+" "+d[j]):f.attrs[j]=d[j];return f}function f(a,b,d,e,j,l,m,n,o,p,q){if((null==j||null==j.toString())&&(j=""),"retain"===j.subtree)return l;var r=K.call(l),s=K.call(j);if(null==l||r!==s){if(null!=l)if(d&&d.nodes){var t=n-e,u=t+(s===H?j:l.nodes).length;i(d.nodes.slice(t,u),d.slice(t,u))}else l.nodes&&i(l.nodes,l);l=new j.constructor,l.tag&&(l={}),l.nodes=[]}if(s===H){for(var v=0,w=j.length;w>v;v++)K.call(j[v])===H&&(j=j.concat.apply([],j),v--);for(var x=[],y=l.length===j.length,z=0,A=1,B=2,D=3,E={},F=[],L=!1,v=0;v-1&&(j=j.filter(function(a){return null!=a}));var M=!1;if(j.length!=l.length)M=!0;else for(var O,P,v=0;O=l[v],P=j[v];v++)if(O.attrs&&P.attrs&&O.attrs.key!=P.attrs.key){M=!0;break}if(M){for(var v=0,w=j.length;w>v;v++)if(j[v]&&j[v].attrs)if(null!=j[v].attrs.key){var Q=j[v].attrs.key;E[Q]=E[Q]?{action:D,index:v,from:E[Q].index,element:l.nodes[E[Q].index]||C.createElement("div")}:{action:B,index:v}}else F.push({index:v,element:a.childNodes[v]||C.createElement("div")});var R=[];for(var S in E)R.push(E[S]);for(var T,U=R.sort(g),V=new Array(l.length),v=0;T=U[v];v++){if(T.action===A&&(i(l[T.index].nodes,l[T.index]),V.splice(T.index,1)),T.action===B){var W=C.createElement("div");W.key=j[T.index].attrs.key,a.insertBefore(W,a.childNodes[T.index]||null),V.splice(T.index,0,{attrs:{key:j[T.index].attrs.key},nodes:[W]})}T.action===D&&(a.childNodes[T.index]!==T.element&&null!==T.element&&a.insertBefore(T.element,a.childNodes[T.index]||null),V[T.index]=l[T.from])}for(var v=0,w=F.length;w>v;v++){var T=F[v];a.insertBefore(T.element,a.childNodes[T.index]||null),V[T.index]=l[T.index]}l=V,l.nodes=new Array(a.childNodes.length);for(var X,v=0;X=a.childNodes[v];v++)l.nodes[v]=X}}for(var v=0,Y=0,w=j.length;w>v;v++){var Z=f(a,b,l,n,j[v],l[Y],m,n+z||z,o,p,q);Z!==c&&(Z.nodes.intact||(y=!1),z+=Z.$trusted?(Z.match(/<[^\/]|\>\s*[^<]/g)||[]).length:K.call(Z)===H?Z.length:1,l[Y++]=Z)}if(!y){for(var v=0,w=j.length;w>v;v++)null!=l[v]&&x.push.apply(x,l[v].nodes);for(var $,v=0;$=l.nodes[v];v++)null!=$.parentNode&&x.indexOf($)<0&&i([$],[l[v]]);j.length("key"in j.attrs?1:0);if((j.tag!=l.tag||_.join()!=Object.keys(l.attrs).join()||j.attrs.id!=l.attrs.id)&&(l.nodes.length&&i(l.nodes),l.configContext&&typeof l.configContext.onunload===J&&l.configContext.onunload()),K.call(j.tag)!=I)return;var $,bb=0===l.nodes.length;if(j.attrs.xmlns?p=j.attrs.xmlns:"svg"===j.tag?p="http://www.w3.org/2000/svg":"math"===j.tag&&(p="http://www.w3.org/1998/Math/MathML"),bb?($=j.attrs.is?p===c?C.createElement(j.tag,j.attrs.is):C.createElementNS(p,j.tag,j.attrs.is):p===c?C.createElement(j.tag):C.createElementNS(p,j.tag),l={tag:j.tag,attrs:ab?h($,j.tag,j.attrs,{},p):j.attrs,children:null!=j.children&&j.children.length>0?f($,j.tag,c,c,j.children,l.children,!0,0,j.attrs.contenteditable?$:o,p,q):j.children,nodes:[$]},l.children&&!l.children.nodes&&(l.children.nodes=[]),"select"===j.tag&&j.attrs.value&&h($,j.tag,{value:j.attrs.value},{},p),a.insertBefore($,a.childNodes[n]||null)):($=l.nodes[0],ab&&h($,j.tag,j.attrs,l.attrs,p),l.children=f($,j.tag,c,c,j.children,l.children,!1,0,j.attrs.contenteditable?$:o,p,q),l.nodes.intact=!0,m===!0&&null!=$&&a.insertBefore($,a.childNodes[n]||null)),typeof j.attrs.config===J){var cb=l.configContext=l.configContext||{},db=function(a,b){return function(){return a.attrs.config.apply(a,b)}};q.push(db(j,[$,!bb,cb,l]))}}else if(typeof s!=J){var x;0===l.nodes.length?(j.$trusted?x=k(a,n,j):(x=[C.createTextNode(j)],a.nodeName.match(N)||a.insertBefore(x[0],a.childNodes[n]||null)),l="string number boolean".indexOf(typeof j)>-1?new j.constructor(j):j,l.nodes=x):l.valueOf()!==j.valueOf()||m===!0?(x=l.nodes,o&&o===C.activeElement||(j.$trusted?(i(x,l),x=k(a,n,j)):"textarea"===b?a.value=j:o?o.innerHTML=j:((1===x[0].nodeType||x.length>1)&&(i(l.nodes,l),x=[C.createTextNode(j)]),a.insertBefore(x[0],a.childNodes[n]||null),x[0].nodeValue=j)),l=new j.constructor(j),l.nodes=x):l.nodes.intact=!0}return l}function g(a,b){return a.action-b.action||a.index-b.index}function h(a,b,c,d,e){for(var f in c){var g=c[f],h=d[f];if(f in d&&h===g)"value"===f&&"input"===b&&a.value!=g&&(a.value=g);else{d[f]=g;try{if("config"===f||"key"==f)continue;if(typeof g===J&&0===f.indexOf("on"))a[f]=l(g,a);else if("style"===f&&null!=g&&K.call(g)===G){for(var i in g)(null==h||h[i]!==g[i])&&(a.style[i]=g[i]);for(var i in h)i in g||(a.style[i]="")}else null!=e?"href"===f?a.setAttributeNS("http://www.w3.org/1999/xlink","href",g):"className"===f?a.setAttribute("class",g):a.setAttribute(f,g):f in a&&"list"!==f&&"style"!==f&&"form"!==f&&"type"!==f?("input"!==b||a[f]!==g)&&(a[f]=g):a.setAttribute(f,g)}catch(j){if(j.message.indexOf("Invalid argument")<0)throw j}}}return d}function i(a,b){for(var c=a.length-1;c>-1;c--)if(a[c]&&a[c].parentNode){try{a[c].parentNode.removeChild(a[c])}catch(d){}b=[].concat(b),b[c]&&j(b[c])}0!=a.length&&(a.length=0)}function j(a){if(a.configContext&&typeof a.configContext.onunload===J&&a.configContext.onunload(),a.children)if(K.call(a.children)===H)for(var b,c=0;b=a.children[c];c++)j(b);else a.children.tag&&j(a.children)}function k(a,b,c){var d=a.childNodes[b];if(d){var e=1!=d.nodeType,f=C.createElement("span");e?(a.insertBefore(f,d||null),f.insertAdjacentHTML("beforebegin",c),a.removeChild(f)):d.insertAdjacentHTML("beforebegin",c)}else a.insertAdjacentHTML("beforeend",c);for(var g=[];a.childNodes[b]!==d;)g.push(a.childNodes[b]),b++;return g}function l(a,b){return function(c){c=c||event,e.redraw.strategy("diff"),e.startComputation();try{return a.call(b,c)}finally{ab()}}}function m(a){var b=Q.indexOf(a);return 0>b?Q.push(a)-1:b}function n(a){var b=function(){return arguments.length&&(a=arguments[0]),a};return b.toJSON=function(){return a},b}function o(){for(var a,b="all"===e.redraw.strategy(),c=0;a=T[c];c++)V[c]&&e.render(a,U[c].view?U[c].view(V[c]):$(),b);Y&&(Y(),Y=null),W=null,X=new Date,e.redraw.strategy("diff")}function p(a){return a.slice(db[e.route.mode].length)}function q(a,b,c){bb={};var d=c.indexOf("?");-1!==d&&(bb=u(c.substr(d+1,c.length)),c=c.substr(0,d));for(var f in b){if(f===c)return e.module(a,b[f]),!0;var g=new RegExp("^"+f.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(g.test(c))return c.replace(g,function(){for(var c=f.match(/:[^\/]+/g)||[],d=[].slice.call(arguments,1,-2),g=0,h=c.length;h>g;g++)bb[c[g].replace(/:|\./g,"")]=decodeURIComponent(d[g]);e.module(a,b[f])}),!0}}function r(a){if(a=a||event,!a.ctrlKey&&!a.metaKey&&2!==a.which){a.preventDefault?a.preventDefault():a.returnValue=!1;var b=a.currentTarget||this,c="pathname"===e.route.mode&&b.search?u(b.search.slice(1)):{};e.route(b[e.route.mode].slice(db[e.route.mode].length),c)}}function s(){"hash"!=e.route.mode&&D.hash?D.hash=D.hash:b.scrollTo(0,0)}function t(a,b){var c=[];for(var d in a){var e=b?b+"["+d+"]":d,f=a[d],g=K.call(f),h=null!=f&&g===G?t(f,e):g===H?f.map(function(a){return encodeURIComponent(e+"[]")+"="+encodeURIComponent(a)}).join("&"):encodeURIComponent(e)+"="+encodeURIComponent(f);c.push(h)}return c.join("&")}function u(a){for(var b=a.split("&"),c={},d=0,e=b.length;e>d;d++){var f=b[d].split("=");c[decodeURIComponent(f[0])]=f[1]?decodeURIComponent(f[1]):""}return c}function v(a){var b=m(a);i(a.childNodes,R[b]),R[b]=c}function w(a){var b=e.prop();return a.then(b),b.then=function(b,c){return w(a.then(b,c))},b}function x(a,b){function c(a){l=a||j,n.map(function(a){l===i&&a.resolve(m)||a.reject(m)})}function d(a,b,c,d){if((null!=m&&K.call(m)===G||typeof m===J)&&typeof a===J)try{var f=0;a.call(m,function(a){f++||(m=a,b())},function(a){f++||(m=a,c())})}catch(g){e.deferred.onerror(g),m=g,c()}else d()}function f(){var j;try{j=m&&m.then}catch(n){return e.deferred.onerror(n),m=n,l=h,f()}d(j,function(){l=g,f()},function(){l=h,f()},function(){try{l===g&&typeof a===J?m=a(m):l===h&&"function"==typeof b&&(m=b(m),l=g)}catch(f){return e.deferred.onerror(f),m=f,c()}m===k?(m=TypeError(),c()):d(j,function(){c(i)},c,function(){c(l===g&&i)})})}var g=1,h=2,i=3,j=4,k=this,l=0,m=0,n=[];k.promise={},k.resolve=function(a){return l||(m=a,l=g,f()),this},k.reject=function(a){return l||(m=a,l=h,f()),this},k.promise.then=function(a,b){var c=new x(a,b);return l===i?c.resolve(m):l===j?c.reject(m):n.push(c),c.promise}}function y(a){return a}function z(a){if(!a.dataType||"jsonp"!==a.dataType.toLowerCase()){var d=new b.XMLHttpRequest;if(d.open(a.method,a.url,!0,a.user,a.password),d.onreadystatechange=function(){4===d.readyState&&(d.status>=200&&d.status<300?a.onload({type:"load",target:d}):a.onerror({type:"error",target:d}))},a.serialize===JSON.stringify&&a.data&&"GET"!==a.method&&d.setRequestHeader("Content-Type","application/json; charset=utf-8"),a.deserialize===JSON.parse&&d.setRequestHeader("Accept","application/json, text/*"),typeof a.config===J){var e=a.config(d,a);null!=e&&(d=e)}var f="GET"!==a.method&&a.data?a.data:"";if(f&&K.call(f)!=I&&f.constructor!=b.FormData)throw"Request data should be either be a string or FormData. Check the `serialize` option in `m.request`";return d.send(f),d}var g="mithril_callback_"+(new Date).getTime()+"_"+Math.round(1e16*Math.random()).toString(36),h=C.createElement("script");b[g]=function(d){h.parentNode.removeChild(h),a.onload({type:"load",target:{responseText:d}}),b[g]=c},h.onerror=function(){return h.parentNode.removeChild(h),a.onerror({type:"error",target:{status:500,responseText:JSON.stringify({error:"Error making jsonp request"})}}),b[g]=c,!1},h.onload=function(){return!1},h.src=a.url+(a.url.indexOf("?")>0?"&":"?")+(a.callbackKey?a.callbackKey:"callback")+"="+g+"&"+t(a.data||{}),C.body.appendChild(h)}function A(a,b,c){if("GET"===a.method&&"jsonp"!=a.dataType){var d=a.url.indexOf("?")<0?"?":"&",e=t(b);a.url=a.url+(e?d+e:"")}else a.data=c(b);return a}function B(a,b){var c=a.match(/:[a-z]\w+/gi);if(c&&b)for(var d=0;dk;k++)e[k]()},e.trust=function(a){return a=new String(a),a.$trusted=!0,a},e.prop=function(a){return(null!=a&&K.call(a)===G||typeof a===J)&&typeof a.then===J?w(a):n(a)};var S,T=[],U=[],V=[],W=null,X=0,Y=null,Z=16;e.module=function(a,b){if(!a)throw new Error("Please ensure the DOM element exists before rendering a template into it.");var c=T.indexOf(a);0>c&&(c=T.length);var d=!1;if(V[c]&&typeof V[c].onunload===J){var f={preventDefault:function(){d=!0}};V[c].onunload(f)}if(!d){e.redraw.strategy("all"),e.startComputation(),T[c]=a;var g=S=b=b||{},h=new(b.controller||function(){});return g===S&&(V[c]=h,U[c]=b),ab(),V[c]}},e.redraw=function(a){W&&a!==!0?(new Date-X>Z||E===b.requestAnimationFrame)&&(W>0&&F(W),W=E(o,Z)):(o(),W=E(function(){W=null},Z))},e.redraw.strategy=e.prop();var $=function(){return""},_=0;e.startComputation=function(){_++},e.endComputation=function(){_=Math.max(_-1,0),0===_&&e.redraw()};var ab=function(){"none"==e.redraw.strategy()?(_--,e.redraw.strategy("diff")):e.endComputation()};e.withAttr=function(a,b){return function(c){c=c||event;var d=c.currentTarget||this;b(a in d?d[a]:d.getAttribute(a))}};var bb,cb,db={pathname:"",hash:"#",search:"?"},eb=function(){};return e.route=function(){if(0===arguments.length)return cb;if(3===arguments.length&&K.call(arguments[1])===I){var a=arguments[0],c=arguments[1],d=arguments[2];eb=function(b){var f=cb=p(b);q(a,d,f)||e.route(c,!0)};var f="hash"===e.route.mode?"onhashchange":"onpopstate";b[f]=function(){var a=D[e.route.mode];"pathname"===e.route.mode&&(a+=D.search),cb!=p(a)&&eb(a)},Y=s,b[f]()}else if(arguments[0].addEventListener){{var g=arguments[0];arguments[1],arguments[2]}g.href=("pathname"!==e.route.mode?D.pathname:"")+db[e.route.mode]+this.attrs.href,g.removeEventListener("click",r),g.addEventListener("click",r)}else if(K.call(arguments[0])===I){var h=cb;cb=arguments[0];var i=arguments[1]||{},j=cb.indexOf("?"),k=j>-1?u(cb.slice(j+1)):{};for(var l in i)k[l]=i[l];var m=t(k),n=j>-1?cb.slice(0,j):cb;m&&(cb=n+(-1===n.indexOf("?")?"?":"&")+m);var o=(3===arguments.length?arguments[2]:arguments[1])===!0||h===arguments[0];b.history.pushState?(Y=function(){b.history[o?"replaceState":"pushState"](null,C.title,db[e.route.mode]+cb),s()},eb(db[e.route.mode]+cb)):D[e.route.mode]=cb}},e.route.param=function(a){if(!bb)throw new Error("You must call m.route(element, defaultRoute, routes) before calling m.route.param()");return bb[a]},e.route.mode="search",e.deferred=function(){var a=new x;return a.promise=w(a.promise),a},e.deferred.onerror=function(a){if("[object Error]"===K.call(a)&&!a.constructor.toString().match(/ Error/))throw a},e.sync=function(a){function b(a,b){return function(e){return g[a]=e,b||(c="reject"),0===--f&&(d.promise(g),d[c](g)),e}}var c="resolve",d=e.deferred(),f=a.length,g=new Array(f);if(a.length>0)for(var h=0;h0&&(l.className=a.join(" ")),o[t]=function(t,n){var r,o,a=!1,u=t.className||t["class"];for(var c in l)t[c]=l[c];void 0!==u&&(void 0!==t["class"]&&(t["class"]=void 0,t.className=u),void 0!==l.className&&(t.className=l.className+" "+u));for(var c in t)if("key"!==c){a=!0;break}return n instanceof Array&&1==n.length&&null!=n[0]&&"#"===n[0].tag?o=n[0].children:r=n,e(i||"div",t.key,a?t:void 0,r,o,void 0)}}var s,d,v;if(null!=arguments[1]&&("object"!=typeof arguments[1]||void 0!==arguments[1].tag||arguments[1]instanceof Array)?v=1:(s=arguments[1],v=2),arguments.length===v+1)d=arguments[v]instanceof Array?arguments[v]:[arguments[v]];else{d=[];for(var h=v;h0||e(t)}}var n=0,r=t(u);try{e(t(l),r)}catch(o){r(o)}}if(!(this instanceof n))throw new Error("Promise must be called with `new`");if("function"!=typeof e)throw new TypeError("executor must be a function");var o=this,i=[],a=[],l=t(i,!0),u=t(a,!1),c=o._instance={resolvers:i,rejectors:a},f="function"==typeof setImmediate?setImmediate:setTimeout;r(e)};n.prototype.then=function(e,t){function r(e,t,n,r){t.push(function(t){if("function"!=typeof e)n(t);else try{o(e(t))}catch(r){i&&i(r)}}),"function"==typeof l.retry&&r===l.state&&l.retry()}var o,i,a=this,l=a._instance,u=new n(function(e,t){o=e,i=t});return r(e,l.resolvers,o,!0),r(t,l.rejectors,i,!1),u},n.prototype["catch"]=function(e){return this.then(null,e)},n.resolve=function(e){return e instanceof n?e:new n(function(t,n){t(e)})},n.reject=function(e){return new n(function(t,n){n(e)})},n.all=function(e){return new n(function(t,n){var r=e.length,o=0,i=[];if(0===e.length)t([]);else for(var a=0;au;u++){var c=t[u];null!=c&&x(e,o(c,i,l),a)}}function o(e,t,n){var r=e.tag;if(null!=e.attrs&&M(e.attrs,e,t),"string"!=typeof r)return c(e,t,n);switch(r){case"#":return i(e);case"<":return a(e);case"[":return l(e,t,n);default:return u(e,t,n)}}function i(e){return e.dom=_.createTextNode(e.children)}function a(e){var t=e.children.match(/^\s*?<(\w+)/im)||[],n={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[t[1]]||"div",r=_.createElement(n);r.innerHTML=e.children,e.dom=r.firstChild,e.domSize=r.childNodes.length;for(var o,i=_.createDocumentFragment();o=r.firstChild;)i.appendChild(o);return i}function l(e,t,n){var o=_.createDocumentFragment();if(null!=e.children){var i=e.children;r(o,i,0,i.length,t,null,n)}return e.dom=o.firstChild,e.domSize=o.childNodes.length,o}function u(t,n,o){var i=t.tag;switch(t.tag){case"svg":o="http://www.w3.org/2000/svg";break;case"math":o="http://www.w3.org/1998/Math/MathML"}var a=t.attrs,l=a&&a.is,u=o?l?_.createElementNS(o,i,l):_.createElementNS(o,i):l?_.createElement(i,l):_.createElement(i);if(t.dom=u,null!=a&&N(t,a,o),null!=t.text&&(""!==t.text?u.textContent=t.text:t.children=[e("#",void 0,void 0,t.text,void 0,void 0)]),null!=t.children){var c=t.children;r(u,c,0,c.length,n,null,o),j(t)}return u}function c(t,n,r){if(t.state=F(t.tag),M(t.tag,t,n),t.instance=e.normalize(t.tag.view.call(t.state,t)),null!=t.instance){var i=o(t.instance,n,r);return t.dom=t.instance.dom,t.domSize=t.instance.domSize,i}return B}function f(e,t,n,i,a){if(null!=t||null!=n)if(null==t)r(e,n,0,n.length,i,a,void 0);else if(null==n)k(e,t,0,t.length,n);else{var l=g(t,n);l&&(t=t.concat(t.pool));for(var u,c=0,f=0,d=t.length-1,v=n.length-1;d>=c&&v>=f;){var h=t[c],p=n[f];if(h===p)c++,f++;else if(null!=h&&null!=p&&h.key===p.key)c++,f++,s(e,h,p,i,w(t,c,a),l),l&&x(e,b(h),a);else{var h=t[d];if(h===p)d--,f++;else{if(null==h||null==p||h.key!==p.key)break;s(e,h,p,i,w(t,d+1,a),l),x(e,b(h),w(t,c,a)),d--,f++}}}for(;d>=c&&v>=f;){var h=t[d],p=n[v];if(h===p)d--,v--;else if(null!=h&&null!=p&&h.key===p.key)s(e,h,p,i,w(t,d+1,a),l),l&&x(e,b(h),a),a=h.dom,d--,v--;else{if(u||(u=y(t,d)),null!=p){var m=u[p.key];if(null!=m){var S=t[m];s(e,S,p,i,w(t,d+1,a),l),x(e,b(S),a),t[m].skip=!0,a=S.dom}else{var z=o(p,i,void 0);x(e,z,a),a=z}}v--}if(f>v)break}r(e,n,f,v+1,i,a,void 0),k(e,t,c,d+1,n)}}function s(e,t,n,r,i,a){var l=t.tag,u=n.tag;if(l===u){if(n.state=t.state,n.events=t.events,q(n,t))return;if(null!=n.attrs&&D(n.attrs,n,r,a),"string"==typeof l)switch(l){case"#":d(t,n);break;case"<":v(e,t,n,i);break;case"[":h(e,t,n,r,i);break;default:p(t,n,r)}else m(e,t,n,r,i,a)}else S(e,t,null,!1),x(e,o(n,r,void 0),i)}function d(e,t){e.children.toString()!==t.children.toString()&&(e.dom.nodeValue=t.children),t.dom=e.dom}function v(e,t,n,r){t.children!==n.children?(b(t),x(e,a(n),r)):n.dom=t.dom}function h(e,t,n,r,o){f(e,t.children,n.children,r,o);var i=0,a=n.children;if(n.dom=null,null!=a){for(var l=0;lr;r++){var o=e[r];if(null!=o){var i=o.key;null!=i&&(n[i]=r)}}return n}function b(e){var t=e.domSize;if(null!=t){var n=_.createDocumentFragment();if(t>0){for(var r=e.dom;--t;)n.appendChild(r.nextSibling);n.insertBefore(r,n.firstChild)}return n}return e.dom}function w(e,t,n){for(;ti;i++){var a=t[i];null!=a&&(a.skip?a.skip=void 0:S(e,a,o,!1))}}function S(e,t,n,r){if(r===!1){var o=0,i=0,a=function(){++i===o&&S(e,t,n,!0)};if(t.attrs&&t.attrs.onbeforeremove&&(o++,t.attrs.onbeforeremove.call(t,t,a)),"string"!=typeof t.tag&&t.tag.onbeforeremove&&(o++,t.tag.onbeforeremove.call(t,t,a)),o>0)return}if(z(t),t.dom){var l=t.domSize||1;if(l>1)for(var u=t.dom;--l;)e.removeChild(u.nextSibling);null!=t.dom.parentNode&&e.removeChild(t.dom),null==n||null!=t.domSize||I(t.attrs)||"string"!=typeof t.tag&&I(t.tag)||(n.pool?n.pool.push(t):n.pool=[t])}}function z(e){e.attrs&&e.attrs.onremove&&e.attrs.onremove.call(e.state,e),"string"!=typeof e.tag&&e.tag.onremove&&e.tag.onremove.call(e.state,e);var t=e.children;if(t instanceof Array)for(var n=0;n-1&&"xlink"===t.substr(0,a))i.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(a+1),r);else if("o"===t[0]&&"n"===t[1]&&"function"==typeof r)R(e,t,r);else if("style"===t)P(i,n,r);else if(t in i&&!O(t)&&void 0===o){if("input"===e.tag&&"value"===t&&e.dom.value===r&&e.dom===_.activeElement)return;i[t]=r}else"boolean"==typeof r?r?i.setAttribute(t,""):i.removeAttribute(t):i.setAttribute("className"===t?"class":t,r)}}function j(e){var t=e.attrs;"select"===e.tag&&null!=t&&("value"in t&&C(e,"value",null,t.value,void 0),"selectedIndex"in t&&C(e,"selectedIndex",null,t.selectedIndex,void 0))}function A(e,t,n){if(null!=n)for(var r in n)C(e,r,t&&t[r],n[r],void 0);if(null!=t)for(var r in t)null!=n&&r in n||"key"!==r&&e.dom.removeAttribute(r)}function E(e,t){return"value"===t||"checked"===t||"selectedIndex"===t||"selected"===t&&e.dom===_.activeElement}function T(e){return"oninit"===e||"oncreate"===e||"onupdate"===e||"onremove"===e||"onbeforeremove"===e||"onbeforeupdate"===e}function O(e){return"href"===e||"list"===e||"form"===e}function I(e){return null!=e&&(e.oncreate||e.onupdate||e.onbeforeremove||e.onremove)}function P(e,t,n){if(t===n&&(e.style="",t=null),null==n)e.style="";else if("string"==typeof n)e.style=n;else{"string"==typeof t&&(e.style="");for(var r in n)e.style[r]=n[r];if(null!=t&&"string"!=typeof t)for(var r in t)r in n||(e.style[r]="")}}function R(e,t,n){var r=e.dom,o=function(e){var t=n.call(r,e);return"function"==typeof L&&L.call(r,e),t};if(t in r)r[t]=o;else{var i=t.slice(2);void 0===e.events&&(e.events={}),null!=e.events[t]&&r.removeEventListener(i,e.events[t],!1),e.events[t]=o,r.addEventListener(i,e.events[t],!1)}}function M(e,t,n){"function"==typeof e.oninit&&e.oninit.call(t.state,t),"function"==typeof e.oncreate&&n.push(e.oncreate.bind(t.state,t))}function D(e,t,n,r){r?M(e,t,n):"function"==typeof e.onupdate&&n.push(e.onupdate.bind(t.state,t))}function q(e,t){var n,r;return null!=e.attrs&&"function"==typeof e.attrs.onbeforeupdate&&(n=e.attrs.onbeforeupdate.call(e.state,e,t)),"string"!=typeof e.tag&&"function"==typeof e.tag.onbeforeupdate&&(r=e.tag.onbeforeupdate.call(e.state,e,t)),void 0===n&&void 0===r||n||r?!1:(e.dom=t.dom,e.domSize=t.domSize,e.instance=t.instance,!0)}function F(e){if(e instanceof Array){for(var t=[],n=0;n-1&&n.splice(t,1)}function t(){for(var e=0;e=200&&c.status<300){if("function"==typeof n.type)if(e instanceof Array)for(var o=0;o-1&&f.pop();for(var d=0;d-1?r:o>-1?o:e.length;if(r>-1){var a=o>-1?o:e.length,l=f(e.slice(r+1,a));for(var u in l)t[u]=l[u]}if(o>-1){var c=f(e.slice(o+1));for(var u in c)n[u]=c[u]}return e.slice(0,i)}function o(){var e=s.charAt(0);switch(e){case"#":return n("hash").slice(s.length);case"?":return n("search").slice(s.length)+n("hash");default:return n("pathname").slice(s.length)+n("search")+n("hash")}}function i(t,n,o){var i={},a={};if(t=r(t,i,a),null!=n){for(var l in n)i[l]=n[l];t=t.replace(/:([^\/]+)/g,function(e,t){return delete i[t],n[t]})}var f=u(i);f&&(t+="?"+f);var d=u(a);d&&(t+="#"+d),c?(o&&o.replace?e.history.replaceState(null,null,s+t):e.history.pushState(null,null,s+t),e.onpopstate()):e.location.href=s+t}function a(t,n,i){function a(){var e=o(),a={},l=r(e,a,a);for(var u in t){var c=new RegExp("^"+u.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(c.test(l))return void l.replace(c,function(){for(var r=u.match(/:[^\/]+/g)||[],o=[].slice.call(arguments,1,-2),i=0;i=t?(n=a,e()):null===r&&(r=o(function(){r=0,e(),n=(new Date).getTime()},t-(a-n)))}},v=function(e,t,n,r){var o=d(r);return null!=t&&t.setEventCallback(function(e){e.redraw!==!1&&o()}),null!=n&&(e.redraw&&n.unsubscribe(e.redraw),n.subscribe(o)),e.redraw=o};i.route=function(e,t,n){var r=s(e),o=function(e,o,i){var a=r.defineRoutes(i,function(n,r){t.render(e,{tag:n,attrs:r})},function(){r.setPath(o)});v(e,t,n,a)};return o.link=r.link,o.prefix=r.setPrefix,o.setPath=r.setPath,o.getPath=r.getPath,o}(window,a,l),i.mount=function(e,t){return function(n,r){var o=v(n,e,t,function(){e.render(n,{tag:r})});o()}}(a,l),i.trust=function(t){return e("<",void 0,void 0,t,void 0,void 0)},i.prop=function(e){return function(){return arguments.length>0&&(e=arguments[0]),e}},i.withAttr=function(e,t,n){return function(r){return t.call(n||this,e in r.currentTarget?r.currentTarget[e]:r.currentTarget.getAttribute(e))}},i.render=a.render,i.redraw=l.publish,"object"==typeof module?module.exports=i:window.m=i}(); \ No newline at end of file diff --git a/mithril/app.js b/mithril/app.js index c7c5f4df..8f6cac66 100644 --- a/mithril/app.js +++ b/mithril/app.js @@ -1,73 +1,43 @@ -function Query(props) { - return ( - m('td', { className: "Query " + props.elapsedClassName }, [ - m('span', props.formatElapsed), - m('div', { className: "popover left" }, [ - m('div', { className: "popover-content" }, props.query), - m('div', { className: "arrow" }, '') - ]) - ]) - ); +"use strict" + +var data = [] + +m.mount(document.getElementById("app"), { + view: function() { + return m("div", [ + m("table", {className: "table table-striped latest-data"}, [ + m("tbody", + data.map(function(db) { + return m("tr", {key: db.dbname}, [ + m("td", {className: "dbname"}, db.dbname), + m("td", {className: "query-count"}, [ + m("span", {className: db.lastSample.countClassName}, db.lastSample.nbQueries) + ]), + db.lastSample.topFiveQueries.map(function(query) { + return m("td", {className: query.elapsedClassName}, [ + query.formatElapsed, + m("div", {className: "popover left"}, [ + m("div", {className: "popover-content"}, query.query), + m("div", {className: "arrow"}) + ]) + ]) + }) + ]) + }) + ) + ]) + ]) + } +}) + +function update() { + data = ENV.generateData().toArray() + + Monitoring.renderRate.ping(); + m.redraw() + + setTimeout(update, ENV.timeout) } -function sample(database) { - var _queries = []; - database.lastSample.topFiveQueries.forEach(function(query, index) { - _queries.push( - Query({ - key: index, - query: query.query, - elapsed: query.elapsed, - formatElapsed: query.formatElapsed, - elapsedClassName: query.elapsedClassName - }) - ); - }); - return [ - m('td', { className: "query-count" }, m('span', { className: database.lastSample.countClassName }, database.lastSample.nbQueries)) - ].concat(_queries); -}; - -function Database(props) { - var lastSample = props.lastSample; - return m('tr', { key: props.dbname }, [ - m('td', { className: "dbname" }, props.dbname) - ].concat(sample(props)) - ); -} - -var DB = {} - -DB.databases = []; - -DB.controller = function() {}; - -DB.view = function(ctrl) { - var databases = DB.databases.map(function(database) { - return Database({ - dbname: database.dbname, - samples: database.samples, - lastSample: database.lastSample - }); - }); - var fragment = m('div', [ - m('table', { className: "table table-striped latest-data" }, [ - m('tbody', databases) - ]) - ]); - return fragment; -} - -function loadSamples() { - m.endComputation(); - DB.databases = ENV.generateData().toArray(); - Monitoring.renderRate.ping(); - m.startComputation(); - setTimeout(loadSamples, ENV.timeout); -} - -$(function() { - m.module(document.getElementById("app"), {view: DB.view, controller: DB.controller}); - loadSamples(); -}); +update() diff --git a/mithril/index.html b/mithril/index.html index fc3818ca..bae8bdbf 100644 --- a/mithril/index.html +++ b/mithril/index.html @@ -8,7 +8,6 @@
-