From e4a88c348fe7f795c77f4a60273856ee1ef4d534 Mon Sep 17 00:00:00 2001 From: Chrysostomos Kolovos Date: Wed, 12 Mar 2014 12:52:32 +0200 Subject: [PATCH] Chrysostomos for scheduler --- plugins/scheduler/__init__.py | 42 - plugins/scheduler/static/css/scheduler.css | 141 -- plugins/scheduler/static/js/raphael-1.5.2.js | 7 - plugins/scheduler/static/js/raphael.js | 1 - plugins/scheduler/static/js/scheduler.js | 736 -------- plugins/scheduler/template/scheduler.html | 49 - plugins/scheduler2/__init__.py | 74 + plugins/scheduler2/asdf.txt | 0 plugins/scheduler2/static/css/scheduler2.css | 246 +++ .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_75_ffffff_1x400.png | Bin 0 -> 107 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../ui-bg_inset-soft_95_fef1ec_1x100.png | Bin 0 -> 123 bytes .../slider/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_f6cf3b_256x240.png | Bin 0 -> 8884 bytes .../slider/jquery-ui-1.10.3.slider.min.css | 1614 +++++++++++++++++ .../scheduler2/static/img/closed-lock-15.png | Bin 0 -> 1094 bytes plugins/scheduler2/static/img/closed-lock.png | Bin 0 -> 2963 bytes plugins/scheduler2/static/img/loading.gif | Bin 0 -> 7050 bytes plugins/scheduler2/static/img/nitos_topo.png | Bin 0 -> 102626 bytes .../scheduler2/static/img/opened-lock-15.png | Bin 0 -> 1167 bytes plugins/scheduler2/static/img/opened-lock.png | Bin 0 -> 3264 bytes .../scheduler2/static/img/podcast-15-w.png | Bin 0 -> 350 bytes plugins/scheduler2/static/img/podcast-15.png | Bin 0 -> 1177 bytes plugins/scheduler2/static/img/podcast.png | Bin 0 -> 2185 bytes plugins/scheduler2/static/img/pushpin-1.png | Bin 0 -> 1898 bytes plugins/scheduler2/static/img/tools-15.png | Bin 0 -> 1149 bytes plugins/scheduler2/static/img/tools.png | Bin 0 -> 1887 bytes .../scheduler2/static/js/scheduler-helpers.js | 32 + plugins/scheduler2/static/js/scheduler2.js | 314 ++++ .../scheduler2/static/js/selectRangeWorker.js | 1 + .../js/slider/jquery-ui-1.10.3.slider.min.js | 6 + .../scheduler2/static/js/table-selector.js | 167 ++ plugins/scheduler2/templates/scheduler.html | 102 ++ portal/sliceview.py | 41 +- 43 files changed, 2585 insertions(+), 988 deletions(-) delete mode 100644 plugins/scheduler/__init__.py delete mode 100644 plugins/scheduler/static/css/scheduler.css delete mode 100644 plugins/scheduler/static/js/raphael-1.5.2.js delete mode 120000 plugins/scheduler/static/js/raphael.js delete mode 100644 plugins/scheduler/static/js/scheduler.js delete mode 100644 plugins/scheduler/template/scheduler.html create mode 100755 plugins/scheduler2/__init__.py mode change 100644 => 100755 plugins/scheduler2/asdf.txt create mode 100755 plugins/scheduler2/static/css/scheduler2.css create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_dadada_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_ffffff_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_inset-soft_95_fef1ec_1x100.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_222222_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_2e83ff_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_454545_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_888888_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_cd0a0a_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_f6cf3b_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css create mode 100755 plugins/scheduler2/static/img/closed-lock-15.png create mode 100755 plugins/scheduler2/static/img/closed-lock.png create mode 100755 plugins/scheduler2/static/img/loading.gif create mode 100755 plugins/scheduler2/static/img/nitos_topo.png create mode 100755 plugins/scheduler2/static/img/opened-lock-15.png create mode 100755 plugins/scheduler2/static/img/opened-lock.png create mode 100755 plugins/scheduler2/static/img/podcast-15-w.png create mode 100755 plugins/scheduler2/static/img/podcast-15.png create mode 100755 plugins/scheduler2/static/img/podcast.png create mode 100755 plugins/scheduler2/static/img/pushpin-1.png create mode 100755 plugins/scheduler2/static/img/tools-15.png create mode 100755 plugins/scheduler2/static/img/tools.png create mode 100755 plugins/scheduler2/static/js/scheduler-helpers.js create mode 100755 plugins/scheduler2/static/js/scheduler2.js create mode 100755 plugins/scheduler2/static/js/selectRangeWorker.js create mode 100755 plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js create mode 100755 plugins/scheduler2/static/js/table-selector.js create mode 100755 plugins/scheduler2/templates/scheduler.html mode change 100644 => 100755 portal/sliceview.py diff --git a/plugins/scheduler/__init__.py b/plugins/scheduler/__init__.py deleted file mode 100644 index caaaa521..00000000 --- a/plugins/scheduler/__init__.py +++ /dev/null @@ -1,42 +0,0 @@ -from unfold.plugin import Plugin - -class Scheduler(Plugin): - - # set checkboxes if a final column with checkboxes is desired - # pass columns as the initial set of columns - # if None then this is taken from the query's fields - # latitude,longitude, zoom : the starting point - def __init__ (self, query, query_all_resources, query_lease = None, **settings): - Plugin.__init__ (self, **settings) - self.query=query - self.query_all_resources = query_all_resources - self.query_all_resources_uuid = query_all_resources.query_uuid - self.query_lease = query_lease - self.query_lease_uuid = query_lease.query_uuid if query_lease else None - - def template_file (self): - return "scheduler.html" - - def template_env (self, request): - env={} - return env - - def requirements (self): - reqs = { - 'js_files' : [ "js/scheduler.js", - #"//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js", - "js/raphael.js", - "js/manifold.js", "js/manifold-query.js", - "js/spin-presets.js", "js/spin.min.js", "js/jquery.spin.js", - "js/unfold-helper.js", - "js/jquery-ui-timepicker-addon.js", "js/jquery-ui-sliderAccess.js", - ], - 'css_files' : [ "css/scheduler.css", - "css/jquery-ui-timepicker-addon.css", - ], - } - return reqs - - # the list of things passed to the js plugin - def json_settings_list (self): - return ['plugin_uuid','query_uuid', 'query_lease_uuid', 'query_all_resources_uuid'] diff --git a/plugins/scheduler/static/css/scheduler.css b/plugins/scheduler/static/css/scheduler.css deleted file mode 100644 index fbaede02..00000000 --- a/plugins/scheduler/static/css/scheduler.css +++ /dev/null @@ -1,141 +0,0 @@ -/* - $Id: toggle.css 12435 2009-03-11 15:07:00Z thierry $ - */ - -/* this class is used to store data that needs to get passed to javascript code */ -/* these elements are not meant to be rendered */ -.hidden { - display: none; -} -.center { - text-align: center; -} - -.scrollx { - overflow-x:scroll; - height: 340px; -} -.scrolly { -overflow-y : scroll; -} -/* space around various messages */ -div.my-slice-renewal { - margin: 30px; -} - -/* toggles for the nodes sections */ -div#toggle-container-my-slice-persons-current, -div#toggle-container-my-slice-nodes-current { - background: #f0f0f0; -} - -div#toggle-container-my-slice-persons-add, -div#toggle-container-my-slice-nodes-add { - background: #f0e0e0; -} - -/* the scheduler area */ -div#toggle-container-my-slice-nodes-reserve { - background: #def; -} - -/* where the graphics go */ -div#leases_area { - /* padding: 10px 25px; */ -} - -/* don't display the scheduler data table - not quite sure this works */ -table#leases_data { - display: none; -} - -/* the various controls for the scheduler */ -/* upper section, with selection mode */ -#leases_modes { padding: 10px; text-align: center; color: #333; } - -#leases_buttons { padding: 0px 10px 10px 10px; } -#leases_refresh { position: relative; left: 30%;} -#leases_submit { position: relative; left: 60%; } - - -/* column configuation style */ - -div#toggle-container-my-slice-nodes-configuration { - background: #f8f8f8; -} - -OPTION.out{background-color:white; color:black} -OPTION.in{background-color:#CAE8EA; color:#4f6b72} - -div.out{background-color:white; color:black} -div.in{background-color:#CAE8EA; color:#4f6b72} -div.selected{background-color:gray; color:black} -div.invisible{display:none} - -div.toggle-info { - padding: 10px 20px; - background-color: #cae8ea; - margin: 10px 10px; - -} - -div#scrolldiv { - border : solid 2px grey; - padding:4px; - width:300px; - height:180px; - overflow:auto; -} - -th,td.top { - vertical-align: top; - text-align: left; - padding:10px; -} - -td.smallright { - text-align: right; - width:20px; -} - -table.center { - margin-left:auto; - margin-right:auto; -} - -table.columnlist { - width:280px; -} - -td.header { - background-color: #CAE8EA; - text-align: center; - width:30px; -} - -span.header { - font-weight: bold; - color: #3399CC; -} - -a.source-url{ - font-weight: bold; -} - -span.gray{ - color: #555555; -} - -span.short { - height:10px; -} - -span.column-title { - font-size: 12px; - font-weight: bold; -} - -span.column-detail { - font-size: 11px; - font-style: italic; -} diff --git a/plugins/scheduler/static/js/raphael-1.5.2.js b/plugins/scheduler/static/js/raphael-1.5.2.js deleted file mode 100644 index e5e71261..00000000 --- a/plugins/scheduler/static/js/raphael-1.5.2.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Raphael 1.5.2 - JavaScript Vector Library - * - * Copyright (c) 2010 Dmitry Baranovskiy (http://raphaeljs.com) - * Licensed under the MIT (http://raphaeljs.com/license.html) license. - */ -(function(){function a(){if(a.is(arguments[0],G)){var b=arguments[0],d=bV[m](a,b.splice(0,3+a.is(b[0],E))),e=d.set();for(var g=0,h=b[w];g";bg=bf.firstChild;bg.style.behavior="url(#default#VML)";if(!(bg&&typeof bg.adj=="object"))return a.type=null;bf=null}a.svg=!(a.vml=a.type=="VML");j[e]=a[e];k=j[e];a._id=0;a._oid=0;a.fn={};a.is=function(a,b){b=x.call(b);if(b=="finite")return!O[f](+a);return b=="null"&&a===null||b==typeof a||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||J.call(a).slice(8,-1).toLowerCase()==b};a.angle=function(b,c,d,e,f,g){{if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return((h<0)*180+y.atan(-i/-h)*180/D+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)}};a.rad=function(a){return a%360*D/180};a.deg=function(a){return a*180/D%360};a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,G)){var e=b.length;while(e--)if(B(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(fb-d)return c-f+b}return c};function bh(){var a=[],b=0;for(;b<32;b++)a[b]=(~(~(y.random()*16)))[H](16);a[12]=4;a[16]=(a[16]&3|8)[H](16);return"r-"+a[v]("")}a.setWindow=function(a){h=a;g=h.document};var bi=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("");e.close();d=e.body}catch(a){d=createPopup().document.body}var f=d.createTextRange();bi=bm(function(a){try{d.style.color=r(a)[Y](c,p);var b=f.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b[H](16)).slice(-6)}catch(a){return"none"}})}else{var h=g.createElement("i");h.title="Raphaël Colour Picker";h.style.display="none";g.body[l](h);bi=bm(function(a){h.style.color=a;return g.defaultView.getComputedStyle(h,p).getPropertyValue("color")})}return bi(b)},bj=function(){return"hsb("+[this.h,this.s,this.b]+")"},bk=function(){return"hsl("+[this.h,this.s,this.l]+")"},bl=function(){return this.hex};a.hsb2rgb=function(b,c,d,e){if(a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b){d=b.b;c=b.s;b=b.h;e=b.o}return a.hsl2rgb(b,c,d/2,e)};a.hsl2rgb=function(b,c,d,e){if(a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b){d=b.l;c=b.s;b=b.h}if(b>1||c>1||d>1){b/=360;c/=100;d/=100}var f={},g=["r","g","b"],h,i,j,k,l,m;if(c){d<0.5?h=d*(1+c):h=d+c-d*c;i=2*d-h;for(var n=0;n<3;n++){j=b+1/3*-(n-1);j<0&&j++;j>1&&j--;j*6<1?f[g[n]]=i+(h-i)*6*j:j*2<1?f[g[n]]=h:j*3<2?f[g[n]]=i+(h-i)*(2/3-j)*6:f[g[n]]=i}}else f={r:d,g:d,b:d};f.r*=255;f.g*=255;f.b*=255;f.hex="#"+(16777216|f.b|f.g<<8|f.r<<16).toString(16).slice(1);a.is(e,"finite")&&(f.opacity=e);f.toString=bl;return f};a.rgb2hsb=function(b,c,d){if(c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b){d=b.b;c=b.g;b=b.r}if(c==null&&a.is(b,F)){var e=a.getRGB(b);b=e.r;c=e.g;d=e.b}if(b>1||c>1||d>1){b/=255;c/=255;d/=255}var f=z(b,c,d),g=A(b,c,d),h,i,j=f;{if(g==f)return{h:0,s:0,b:f,toString:bj};var k=f-g;i=k/f;b==f?h=(c-d)/k:c==f?h=2+(d-b)/k:h=4+(b-c)/k;h/=6;h<0&&h++;h>1&&h--}return{h:h,s:i,b:j,toString:bj}};a.rgb2hsl=function(b,c,d){if(c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b){d=b.b;c=b.g;b=b.r}if(c==null&&a.is(b,F)){var e=a.getRGB(b);b=e.r;c=e.g;d=e.b}if(b>1||c>1||d>1){b/=255;c/=255;d/=255}var f=z(b,c,d),g=A(b,c,d),h,i,j=(f+g)/2,k;if(g==f)k={h:0,s:0,l:j};else{var l=f-g;i=j<0.5?l/(f+g):l/(2-f-g);b==f?h=(c-d)/l:c==f?h=2+(d-b)/l:h=4+(b-c)/l;h/=6;h<0&&h++;h>1&&h--;k={h:h,s:i,l:j}}k.toString=bk;return k};a._path2string=function(){return this.join(",")[Y](ba,"$1")};function bm(a,b,c){function d(){var g=Array[e].slice.call(arguments,0),h=g[v]("►"),i=d.cache=d.cache||{},j=d.count=d.count||[];if(i[f](h))return c?c(i[h]):i[h];j[w]>=1000&&delete i[j.shift()];j[L](h);i[h]=a[m](b,g);return c?c(i[h]):i[h]}return d}a.getRGB=bm(function(b){if(!b||!(!((b=r(b)).indexOf("-")+1)))return{r:-1,g:-1,b:-1,hex:"none",error:1};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none"};!(_[f](b.toLowerCase().substring(0,2))||b.charAt()=="#")&&(b=bi(b));var c,d,e,g,h,i,j,k=b.match(N);if(k){if(k[2]){g=T(k[2].substring(5),16);e=T(k[2].substring(3,5),16);d=T(k[2].substring(1,3),16)}if(k[3]){g=T((i=k[3].charAt(3))+i,16);e=T((i=k[3].charAt(2))+i,16);d=T((i=k[3].charAt(1))+i,16)}if(k[4]){j=k[4][s]($);d=S(j[0]);j[0].slice(-1)=="%"&&(d*=2.55);e=S(j[1]);j[1].slice(-1)=="%"&&(e*=2.55);g=S(j[2]);j[2].slice(-1)=="%"&&(g*=2.55);k[1].toLowerCase().slice(0,4)=="rgba"&&(h=S(j[3]));j[3]&&j[3].slice(-1)=="%"&&(h/=100)}if(k[5]){j=k[5][s]($);d=S(j[0]);j[0].slice(-1)=="%"&&(d*=2.55);e=S(j[1]);j[1].slice(-1)=="%"&&(e*=2.55);g=S(j[2]);j[2].slice(-1)=="%"&&(g*=2.55);(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360);k[1].toLowerCase().slice(0,4)=="hsba"&&(h=S(j[3]));j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,g,h)}if(k[6]){j=k[6][s]($);d=S(j[0]);j[0].slice(-1)=="%"&&(d*=2.55);e=S(j[1]);j[1].slice(-1)=="%"&&(e*=2.55);g=S(j[2]);j[2].slice(-1)=="%"&&(g*=2.55);(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360);k[1].toLowerCase().slice(0,4)=="hsla"&&(h=S(j[3]));j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,g,h)}k={r:d,g:e,b:g};k.hex="#"+(16777216|g|e<<8|d<<16).toString(16).slice(1);a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1}},a);a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||0.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=0.075;if(b.h>1){b.h=0;b.s-=0.2;b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})}return c.hex};a.getColor.reset=function(){delete this.start};a.parsePathString=bm(function(b){if(!b)return null;var c={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},d=[];a.is(b,G)&&a.is(b[0],G)&&(d=bo(b));d[w]||r(b)[Y](bb,function(a,b,e){var f=[],g=x.call(b);e[Y](bc,function(a,b){b&&f[L](+b)});if(g=="m"&&f[w]>2){d[L]([b][n](f.splice(0,2)));g="l";b=b=="m"?"l":"L"}while(f[w]>=c[g]){d[L]([b][n](f.splice(0,c[g])));if(!c[g])break}});d[H]=a._path2string;return d});a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=C(j,3)*a+C(j,2)*3*i*c+j*3*i*i*e+C(i,3)*g,l=C(j,3)*b+C(j,2)*3*i*d+j*3*i*i*f+C(i,3)*h,m=a+2*i*(c-a)+i*i*(e-2*c+a),n=b+2*i*(d-b)+i*i*(f-2*d+b),o=c+2*i*(e-c)+i*i*(g-2*e+c),p=d+2*i*(f-d)+i*i*(h-2*f+d),q=(1-i)*a+i*c,r=(1-i)*b+i*d,s=(1-i)*e+i*g,t=(1-i)*f+i*h,u=90-y.atan((m-o)/(n-p))*180/D;(m>o||n1){x=y.sqrt(x);c=x*c;d=x*d}var z=c*c,A=d*d,C=(f==g?-1:1)*y.sqrt(B((z*A-z*u*u-A*t*t)/(z*u*u+A*t*t))),E=C*c*u/d+(a+h)/2,F=C*-d*t/c+(b+i)/2,G=y.asin(((b-F)/d).toFixed(9)),H=y.asin(((i-F)/d).toFixed(9));G=aH&&(G=G-D*2);!g&&H>G&&(H=H-D*2)}var I=H-G;if(B(I)>k){var J=H,K=h,L=i;H=G+k*(g&&H>G?1:-1);h=E+c*y.cos(H);i=F+d*y.sin(H);m=bt(h,i,c,d,e,0,g,K,L,[H,J,E,F])}I=H-G;var M=y.cos(G),N=y.sin(G),O=y.cos(H),P=y.sin(H),Q=y.tan(I/4),R=4/3*c*Q,S=4/3*d*Q,T=[a,b],U=[a+R*N,b-S*M],V=[h+R*P,i-S*O],W=[h,i];U[0]=2*T[0]-U[0];U[1]=2*T[1]-U[1];{if(j)return[U,V,W][n](m);m=[U,V,W][n](m)[v]()[s](",");var X=[];for(var Y=0,Z=m[w];Y"1e12"&&(l=0.5);B(n)>"1e12"&&(n=0.5);if(l>0&&l<1){q=bu(a,b,c,d,e,f,g,h,l);p[L](q.x);o[L](q.y)}if(n>0&&n<1){q=bu(a,b,c,d,e,f,g,h,n);p[L](q.x);o[L](q.y)}i=f-2*d+b-(h-2*f+d);j=2*(d-b)-2*(f-d);k=b-d;l=(-j+y.sqrt(j*j-4*i*k))/2/i;n=(-j-y.sqrt(j*j-4*i*k))/2/i;B(l)>"1e12"&&(l=0.5);B(n)>"1e12"&&(n=0.5);if(l>0&&l<1){q=bu(a,b,c,d,e,f,g,h,l);p[L](q.x);o[L](q.y)}if(n>0&&n<1){q=bu(a,b,c,d,e,f,g,h,n);p[L](q.x);o[L](q.y)}return{min:{x:A[m](0,p),y:A[m](0,o)},max:{x:z[m](0,p),y:z[m](0,o)}}}),bw=bm(function(a,b){var c=bq(a),d=b&&bq(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1];b.Y=a[2];break;case"A":a=["C"][n](bt[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x));d=b.y+(b.y-(b.by||b.y));a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x));b.qy=b.y+(b.y-(b.qy||b.y));a=["C"][n](bs(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1];b.qy=a[2];a=["C"][n](bs(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](br(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](br(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](br(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](br(b.x,b.y,b.X,b.Y));break}return a},h=function(a,b){if(a[b][w]>7){a[b].shift();var e=a[b];while(e[w])a.splice(b++,0,["C"][n](e.splice(0,6)));a.splice(b,1);k=z(c[w],d&&d[w]||0)}},i=function(a,b,e,f,g){if(a&&b&&a[g][0]=="M"&&b[g][0]!="M"){b.splice(g,0,["M",f.x,f.y]);e.bx=0;e.by=0;e.x=a[g][1];e.y=a[g][2];k=z(c[w],d&&d[w]||0)}};for(var j=0,k=z(c[w],d&&d[w]||0);j0.5)*2-1;C(e-0.5,2)+C(f-0.5,2)>0.25&&(f=y.sqrt(0.25-C(e-0.5,2))*g+0.5)&&f!=0.5&&(f=f.toFixed(5)-0.00001*g)}return p});b=b[s](/\s*\-\s*/);if(d=="linear"){var i=b.shift();i=-S(i);if(isNaN(i))return null;var j=[0,0,y.cos(i*D/180),y.sin(i*D/180)],k=1/(z(B(j[2]),B(j[3]))||1);j[2]*=k;j[3]*=k;if(j[2]<0){j[0]=-j[2];j[2]=0}if(j[3]<0){j[1]=-j[3];j[3]=0}}var m=bx(b);if(!m)return null;var n=a.getAttribute(I);n=n.match(/^url\(#(.*)\)$/);n&&c.defs.removeChild(g.getElementById(n[1]));var o=bG(d+"Gradient");o.id=bh();bG(o,d=="radial"?{fx:e,fy:f}:{x1:j[0],y1:j[1],x2:j[2],y2:j[3]});c.defs[l](o);for(var q=0,t=m[w];q1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(o);h[R](n,G.hex);n=="stroke"&&G[f]("opacity")&&bG(h,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity});break;case"gradient":(({circle:1,ellipse:1})[f](c.type)||r(o).charAt()!="r")&&bI(h,o,c.paper);break;case"opacity":i.gradient&&!i[f]("stroke-opacity")&&bG(h,{"stroke-opacity":o>1?o/100:o});case"fill-opacity":if(i.gradient){var H=g.getElementById(h.getAttribute(I)[Y](/^url\(#|\)$/g,p));if(H){var J=H.getElementsByTagName("stop");J[J[w]-1][R]("stop-opacity",o)}break}default:n=="font-size"&&(o=T(o,10)+"px");var K=n[Y](/(\-.)/g,function(a){return V.call(a.substring(1))});h.style[K]=o;h[R](n,o);break}}}bM(c,d);m?c.rotate(m.join(q)):S(j)&&c.rotate(j,true)},bL=1.2,bM=function(b,c){if(b.type!="text"||!(c[f]("text")||c[f]("font")||c[f]("font-size")||c[f]("x")||c[f]("y")))return;var d=b.attrs,e=b.node,h=e.firstChild?T(g.defaultView.getComputedStyle(e.firstChild,p).getPropertyValue("font-size"),10):10;if(c[f]("text")){d.text=c.text;while(e.firstChild)e.removeChild(e.firstChild);var i=r(c.text)[s]("\n");for(var j=0,k=i[w];jb.height&&(b.height=e.y+e.height-b.y);e.x+e.width-b.x>b.width&&(b.width=e.x+e.width-b.x)}}a&&this.hide();return b};bN[e].attr=function(b,c){if(this.removed)return this;if(b==null){var d={};for(var e in this.attrs)this.attrs[f](e)&&(d[e]=this.attrs[e]);this._.rt.deg&&(d.rotation=this.rotate());(this._.sx!=1||this._.sy!=1)&&(d.scale=this.scale());d.gradient&&d.fill=="none"&&(d.fill=d.gradient)&&delete d.gradient;return d}if(c==null&&a.is(b,F)){if(b=="translation")return cz.call(this);if(b=="rotation")return this.rotate();if(b=="scale")return this.scale();if(b==I&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;return this.attrs[b]}if(c==null&&a.is(b,G)){var g={};for(var h=0,i=b.length;h"));m.W=h.w=m.paper.span.offsetWidth;m.H=h.h=m.paper.span.offsetHeight;m.X=h.x;m.Y=h.y+Q(m.H/2);switch(h["text-anchor"]){case"start":m.node.style["v-text-align"]="left";m.bbx=Q(m.W/2);break;case"end":m.node.style["v-text-align"]="right";m.bbx=-Q(m.W/2);break;default:m.node.style["v-text-align"]="center";break}}};bI=function(a,b){a.attrs=a.attrs||{};var c=a.attrs,d,e="linear",f=".5 .5";a.attrs.gradient=b;b=r(b)[Y](bd,function(a,b,c){e="radial";if(b&&c){b=S(b);c=S(c);C(b-0.5,2)+C(c-0.5,2)>0.25&&(c=y.sqrt(0.25-C(b-0.5,2))*((c>0.5)*2-1)+0.5);f=b+q+c}return p});b=b[s](/\s*\-\s*/);if(e=="linear"){var g=b.shift();g=-S(g);if(isNaN(g))return null}var h=bx(b);if(!h)return null;a=a.shape||a.node;d=a.getElementsByTagName(I)[0]||cd(I);!d.parentNode&&a.appendChild(d);if(h[w]){d.on=true;d.method="none";d.color=h[0].color;d.color2=h[h[w]-1].color;var i=[];for(var j=0,k=h[w];j")}}catch(a){cd=function(a){return g.createElement("<"+a+" xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">")}}bV=function(){var b=by[m](0,arguments),c=b.container,d=b.height,e,f=b.width,h=b.x,i=b.y;if(!c)throw new Error("VML container not found.");var k=new j,n=k.canvas=g.createElement("div"),o=n.style;h=h||0;i=i||0;f=f||512;d=d||342;f==+f&&(f+="px");d==+d&&(d+="px");k.width=1000;k.height=1000;k.coordsize=b_*1000+q+b_*1000;k.coordorigin="0 0";k.span=g.createElement("span");k.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";n[l](k.span);o.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d);if(c==1){g.body[l](n);o.left=h+"px";o.top=i+"px";o.position="absolute"}else c.firstChild?c.insertBefore(n,c.firstChild):c[l](n);bz.call(k,k,a.fn);return k};k.clear=function(){this.canvas.innerHTML=p;this.span=g.createElement("span");this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";this.canvas[l](this.span);this.bottom=this.top=null};k.remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]=bF(a);return true}}var ce=navigator.userAgent.match(/Version\\x2f(.*?)\s/);navigator.vendor=="Apple Computer, Inc."&&(ce&&ce[1]<4||navigator.platform.slice(0,2)=="iP")?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});h.setTimeout(function(){a.remove()})}:k.safari=function(){};var cf=function(){this.returnValue=false},cg=function(){return this.originalEvent.preventDefault()},ch=function(){this.cancelBubble=true},ci=function(){return this.originalEvent.stopPropagation()},cj=(function(){{if(g.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,g=function(e){if(o&&u[f](b))for(var g=0,h=e.targetTouches&&e.targetTouches.length;g1&&(a=Array[e].splice.call(arguments,0,arguments[w]));return new cC(a)};k.setSize=bU;k.top=k.bottom=null;k.raphael=a;function co(){return this.x+q+this.y}bO.resetScale=function(){if(this.removed)return this;this._.sx=1;this._.sy=1;this.attrs.scale="1 1"};bO.scale=function(a,b,c,d){if(this.removed)return this;if(a==null&&b==null)return{x:this._.sx,y:this._.sy,toString:co};b=b||a;!(+b)&&(b=a);var e,f,g,h,i=this.attrs;if(a!=0){var j=this.getBBox(),k=j.x+j.width/2,l=j.y+j.height/2,m=B(a/this._.sx),o=B(b/this._.sy);c=+c||c==0?c:k;d=+d||d==0?d:l;var r=this._.sx>0,s=this._.sy>0,t=~(~(a/B(a))),u=~(~(b/B(b))),x=m*t,y=o*u,z=this.node.style,A=c+B(k-c)*x*(k>c==r?1:-1),C=d+B(l-d)*y*(l>d==s?1:-1),D=a*t>b*u?o:m;switch(this.type){case"rect":case"image":var E=i.width*m,F=i.height*o;this.attr({height:F,r:i.r*D,width:E,x:A-E/2,y:C-F/2});break;case"circle":case"ellipse":this.attr({rx:i.rx*m,ry:i.ry*o,r:i.r*D,cx:A,cy:C});break;case"text":this.attr({x:A,y:C});break;case"path":var G=bp(i.path),H=true,I=r?x:m,J=s?y:o;for(var K=0,L=G[w];Kr)p=n.data[r*l];else{p=a.findDotsAtSegment(b,c,d,e,f,g,h,i,r/l);n.data[r]=p}r&&(k+=C(C(o.x-p.x,2)+C(o.y-p.y,2),0.5));if(j!=null&&k>=j)return p;o=p}if(j==null)return k},cr=function(b,c){return function(d,e,f){d=bw(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;oe){if(c&&!l.start){m=cq(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);k+=["C",m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k;k=["M",m.x,m.y+"C",m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]][v]();n+=j;g=+i[5];h=+i[6];continue}if(!b&&!c){m=cq(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j;g=+i[5];h=+i[6]}k+=i}l.end=k;m=b?n:c?l:a.findDotsAtSegment(g,h,i[1],i[2],i[3],i[4],i[5],i[6],1);m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cs=cr(1),ct=cr(),cu=cr(0,1);bO.getTotalLength=function(){if(this.type!="path")return;if(this.node.getTotalLength)return this.node.getTotalLength();return cs(this.attrs.path)};bO.getPointAtLength=function(a){if(this.type!="path")return;return ct(this.attrs.path,a)};bO.getSubpath=function(a,b){if(this.type!="path")return;if(B(this.getTotalLength()-b)<"1e-6")return cu(this.attrs.path,a).end;var c=cu(this.attrs.path,b,1);return a?cu(c,a).end:c};a.easing_formulas={linear:function(a){return a},"<":function(a){return C(a,3)},">":function(a){return C(a-1,3)+1},"<>":function(a){a=a*2;if(a<1)return C(a,3)/2;a-=2;return(C(a,3)+2)/2},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==0||a==1)return a;var b=0.3,c=b/4;return C(2,-10*a)*y.sin((a-c)*(2*D)/b)+1},bounce:function(a){var b=7.5625,c=2.75,d;if(a<1/c)d=b*a*a;else if(a<2/c){a-=1.5/c;d=b*a*a+0.75}else if(a<2.5/c){a-=2.25/c;d=b*a*a+0.9375}else{a-=2.625/c;d=b*a*a+0.984375}return d}};var cv=[],cw=function(){var b=+(new Date);for(var c=0;cd)return d;while(cf?c=e:d=e;e=(d-c)/2+c}return e}return n(a,1/(200*f))}bO.onAnimation=function(a){this._run=a||0;return this};bO.animate=function(c,d,e,g){var h=this;h.timeouts=h.timeouts||[];if(a.is(e,"function")||!e)g=e||null;if(h.removed){g&&g.call(h);return h}var i={},j={},k=false,l={};for(var m in c)if(c[f](m)){if(X[f](m)||h.paper.customAttributes[f](m)){k=true;i[m]=h.attr(m);i[m]==null&&(i[m]=W[m]);j[m]=c[m];switch(X[m]){case"along":var n=cs(c[m]),o=ct(c[m],n*!(!c.back)),p=h.getBBox();l[m]=n/d;l.tx=p.x;l.ty=p.y;l.sx=o.x;l.sy=o.y;j.rot=c.rot;j.back=c.back;j.len=n;c.rot&&(l.r=S(h.rotate())||0);break;case E:l[m]=(j[m]-i[m])/d;break;case"colour":i[m]=a.getRGB(i[m]);var q=a.getRGB(j[m]);l[m]={r:(q.r-i[m].r)/d,g:(q.g-i[m].g)/d,b:(q.b-i[m].b)/d};break;case"path":var t=bw(i[m],j[m]);i[m]=t[0];var u=t[1];l[m]=[];for(var v=0,x=i[m][w];v= lease[1]) && (timestamp < (lease[1] + lease[2] * 1800)))) { - result = lease; - return false; // stop each - } - }); - -/* - $.each(Array(scheduler.myLeases, scheduler.allLeases), function(i, array) { - $.each(array, function(i, lease) { - if (lease[0] == urn) { - if ((timestamp >= lease[1]) && (timestamp < (lease[1] + lease[2] * 1800))) { - result = lease; - - return false; - } - } - }); - if (result) - return false; - }); -*/ - return result; - }, - - /* Iterative search through raphael.js objects, no forEach, no getById in the current version */ - _lease_element_find: function(urn, start_time) - { - var date = new Date(start_time*1000); - var pos = this._paper.top; - while (pos) { - if (pos.key == urn + "-" + date) - return pos; - pos = pos.prev; - } - return null; - }, - - /** - * @brief Draw - */ - _draw: function() - { - var canvas_id = this._canvas_id; - var o = this.options; - - var total_width = o.x_nodelabel + this.nb_grains() * this.options.leases_w; - var total_height = 2 * o.y_header /* the timelabels */ - + 2 * o.y_sep /* extra space */ - + o.y_node /* all-nodes & timebuttons row */ - + (this._resources.length) * (o.y_node + o.y_sep); /* the regular nodes and preceding space */ - - /* reuse for paper if exists with same size, or (re-)create otherwise */ - var paper; - if (this._paper == null) { - paper = Raphael (canvas_id, total_width + o.x_sep, total_height); - } else if (this._paper.width==total_width && this._paper.height==total_height) { - paper=this._paper; - paper.clear(); - } else { - $("#"+canvas_id)[0].innerHTML=""; - //this.elmt().html(); - paper = Raphael (canvas_id, total_width + o.x_sep, total_height); - } - this._paper = paper; - - /* the path for the triangle-shaped buttons */ - var timebutton_path = "M1,0L"+(this.options.leases_w-1)+",0L"+(this.options.leases_w/2)+","+o.y_header+"L1,0"; - - var axisx = this._axisx; - var axisy = this._resources; - - /* maintain the list of nodelabels for the 'all nodes' button */ - this._nodelabels = []; - - - /* create the time slots legend */ - var top = 0; - var left = o.x_nodelabel; - - var daymarker_height = 2*o.y_header + 2*o.y_sep + (axisy.length + 1) * (o.y_node + o.y_sep); - var daymarker_path = "M0,0L0," + daymarker_height; - - var half_daymarker_off= 2*o.y_header + o.y_sep; - var half_daymarker_path="M0," + half_daymarker_off + "L0," + daymarker_height; - - var col=0; - for (var i=0, len = axisx.length; i < len; ++i) { - /* pick the printable part */ - var timelabel = axisx[i][1]; - var y = top + o.y_header; - if (col % 2 == 0) - y += o.y_header; - col +=1; - /* display time label */ - var timelabel = paper.text(left, y, timelabel).attr(txt_timelabel).attr({"text-anchor": "middle"}); - /* draw vertical line */ - var path_spec = "M" + left + " " + (y+o.y_header / 2) + "L" + left + " " + this.total_height; - var rule = paper.path(path_spec).attr(attr_rules); - /* show a day marker when relevant */ - var timestamp = parseInt(axisx[i][0]); - if ((timestamp % (24 * 3600)) == 0) { - paper.path(daymarker_path).attr({'translation': left + ',' + top}).attr(attr_daymarker); - } else if ( (timestamp%(12*3600))==0) { - paper.path(half_daymarker_path).attr({'translation': left + ',' + top}).attr(attr_daymarker); - } - left += o.leases_w; - } - - ////////// the row with the timeslot buttons (the one labeled 'All nodes') - this.granularity = this.min_granularity; // XXX axisx[1][0]-axisx[0][0]; - - // move two lines down - top += 2 * o.y_header + 2 * o.y_sep; - left = o.x_nodelabel; - // all nodes buttons - var allnodes = paper.text(o.x_nodelabel - o.x_sep, top + o.y_node / 2, "All nodes").attr(txt_allnodes) - .attr({"font-size": o.y_node, "text-anchor": "end", "baseline": "bottom"}); - //allnodes.scheduler = this; - allnodes.click(this._allnodes_click); // XXX click - - // timeslot buttons [it's the triangles above the slots] - for (var i = 0, len = axisx.length; i < len; ++i) { - var timebutton = paper.path(timebutton_path).attr({'translation':left + ',' + top}).attr(attr_timebutton); - timebutton.from_time = axisx[i][0]; - timebutton.scheduler = this; - timebutton.click(this._timebutton_click); - left += (o.leases_w); - } - - //////// the body of the scheduler : loop on nodes - top += o.y_node + o.y_sep; - - var data_index = 0; - this.leases = []; /* XXX ??? XXX */ - - for (var i = 0, len = axisy.length; i < len; ++i) { - var urn = axisy[i][0]; - var nodename = axisy[i][1]; - var type = axisy[i][2]; - left = 0; - /* - * MODIFIED font-size - var nodelabel = paper.text(o.x_nodelabel-x_sep,top+y_node/2,nodename).attr(txt_nodelabel) - .attr ({"font-size":y_node, "text-anchor":"end","baseline":"bottom"}); - */ - var nodelabel = paper.text(o.x_nodelabel - o.x_sep, top + o.y_node / 3, nodename).attr(txt_nodelabel) - .attr({"font-size": "12px", "text-anchor": "end","baseline": "bottom"}); - - this._nodelabel_select(nodelabel, 1); // By default we select all nodes - nodelabel.scheduler = this; - nodelabel.click(this._nodelabel_click); //click action works here - this._nodelabels.push(nodelabel); - - // lease_methods.init_free(nodelabel.click, lease_methods.click_mine); - //lease_methods.init_free(nodelabel.lease); - - left += o.x_nodelabel; - - // data index contains the full array of leases - // not the same amount of grains per node - - // NOTE: remembering the previous lease might help for long leases. - var grain=0; - while (grain < this.nb_grains()) { - - if (l = this._lease_find(urn, this._initial_timestamp + grain * 1800)) { - slicename = l.slice_id; - } else { - slicename = ""; - } - - //lease_id = this.data[data_index][0]; - //slicename = this.data[data_index][1]; - /* Duration should not be the lease duration, but the grain */ - var duration = 1; // this.data[data_index][2]; - - var lease = paper.rect(left, top, o.leases_w * duration, o.y_node, o.radius); - lease.scheduler = this; // we record a pointer to the scheduler in the lease element - //lease.lease_id=lease_id; - lease.nodename = nodename; - lease.urn = urn; - lease.nodelabel = nodelabel; - - if (slicename == "") { - lease.initial = "free"; - this._lease_init_free(lease); - } else if (slicename == o.slicename) { - lease.initial = "mine"; - this._lease_init_mine(lease); - } else { - lease.initial = "other"; - this._lease_init_other(lease, slicename); - } - - lease.from_time = axisx[grain % this.nb_grains()][0]; - grain += duration; - lease.until_time = axisx[grain % this.nb_grains()][0]; - - /* We set a key to the lease element to find it later in the paper thanks to this._lease_element_find() */ - lease.key = urn + '-' + lease.from_time; - - // and vice versa - this._lease_elements.push(lease); - // move on with the loop - left += o.leases_w * duration; - data_index += 1; - } - top += o.y_node + o.y_sep; - }; - }, /* _draw */ - - _init_axisx: function(currentDate) - { - this._axisx = Array(); - - if(currentDate == "") { - // creating timestamp of the current time - currentDate = new Date().getTime() / 1000; - } - this._initial_timestamp = currentDate; - //console.log(currentDate); - - // round it by granularity (becomes an Int) - var rounded = Math.round(currentDate / this.min_granularity) * this.min_granularity; - // Convert Int to Date - rounded = new Date(rounded * 1000); - // get hours and minutes in a 24h format 00:00 - var roundedHours = (rounded.getHours() < 10 ? '0' : '') + rounded.getHours(); - var roundedMinutes = (rounded.getMinutes() < 10 ? '0' : '') + rounded.getMinutes(); - - this._axisx.push(Array(rounded, roundedHours + ":" + roundedMinutes)); - - // Generate as many slots as we need - for(i = 0; i < this.options.leases_slots; i++) { - rounded = this.min_granularity + (rounded.getTime() / 1000); - rounded = new Date(rounded * 1000); - roundedHours = (rounded.getHours() < 10 ? '0' : '') + rounded.getHours(); - roundedMinutes = (rounded.getMinutes() < 10 ? '0' : '') + rounded.getMinutes(); - - this._axisx.push(Array(rounded, roundedHours + ":" + roundedMinutes)); - } - }, - - clear: function () - { - for (var i=0, len = this.leases.length; i0) ? 1 : 0; - for (var i=0, len=this._nodelabels.length; i= until_time) { - if (scan.current == "free") - relevant_free.push(scan); - else if (scan.current == "mine") - relevant_mine.push(scan); - } - } - // window.console.log("Found " + relevant_free.length + " free and " + relevant_mine.length + " mine"); - /* decide what to do, whether book or release */ - if (relevant_mine.length == 0 && relevant_free.length == 0) { - alert ("Nothing to do in this timeslot on the selected nodes"); - return; - } - // if at least one is free, let's book - if (relevant_free.length > 0) { - for (var i = 0, len = relevant_free.length; i < len; ++i) { - var lease = relevant_free[i]; - scheduler._lease_init_mine(lease, scheduler._lease_click_free); - } - // otherwise we unselect - } else { - for (var i = 0, len = relevant_mine.length; i < len; ++i) { - var lease = relevant_mine[i]; - scheduler._lease_init_free(lease, scheduler._lease_click_mine); - } - } - }, /* _timebutton_click */ - - /* --------------------------------------------------------------------- - * The nodelabel buttons - */ - - // set selected mode and render visually - _nodelabel_select: function (nodelabel, flag) - { - nodelabel.selected = flag; - nodelabel.attr({'font-weight': (flag ? 'bold' : 'normal')}); - // TODO - // - // loop on axis x and select each timebutton - // for (var i=0, len=axisx.length; i < len; ++i) - // figure out how to use timebutton_methods.click(); - - }, - - // toggle selected - _nodelabel_click: function (event) - { - this.scheduler._nodelabel_select( this, ! this.selected ); - }, - - - /* --------------------------------------------------------------------- - * The lease buttons - */ - _lease_init_free: function (lease, unclick) - { - var o = lease.scheduler.options; - lease.current = "free"; - // set color - lease.animate((lease.initial == "free") ? attr_lease_free_free : attr_lease_mine_free, o.anim_delay); - // keep track of the current status - // record action - lease.click(this._lease_click_free); - if (unclick) lease.unclick(unclick); - }, - - // find out all the currently free leases that overlap this one - _lease_click_free: function (event) - { - var scheduler = this.scheduler; - - scheduler._lease_init_mine(this, scheduler._lease_click_free); - //publish - //this.from_time - //this.urn - //this.until_time - var urn = this.urn - var start_time = this.from_time.getTime() / 1000; - var end_time = this.until_time.getTime() / 1000; - var duration = (end_time - start_time) / 1800; // XXX HARDCODED LEASE GRAIN - - /* Add a new lease : XXX should be replaced by a dictionary */ - /* - // Do we have a lease with the same urn just before or just after ? - //var removeIdBefore = null; - //var removeIdAfter = null; - var remove_lease_before = null; - var remove_lease_after = null; - // It is important to group leases, while this is technically - // equivalent, some testbeds such as IotLab limit the number of - // leases a user can have. - // XXX we might have several leases before or after if they have - // XXX not been grouped like this tool does - $.each(scheduler._leases, function(i, lease) { - if (lease[0] == urn) { - if (lease[1] + lease[2] * 1800 == start_time) { // XXX HARDCODED LEASE GRAIN - // Merge with previous lease - // removeIdBefore = i; - remove_lease_before = lease; - start_time = lease[1]; - duration += lease[2]; - } - if (lease[1] == end_time) { - // Merge with following lease - // removeIdAfter = i; - remove_lease_after = lease; - duration += lease[2]; - } - } - }); - //if (removeIdBefore != null) { - // scheduler._leases.splice(removeIdBefore , 1); - // if (removeIdAfter != null) - // removeIdAfter -= 1; - //} - //if (removeIdAfter != null) { - // scheduler._leases.splice(removeIdAfter , 1); - //} - - // We add the new lease, no need to push - var new_lease = [this.urn, start_time, duration]; - - // We send events, manifold will inform us about the change and we will react accordingly - /* - if (remove_lease_before != null) - manifold.raise_event(scheduler.options.query_lease_uuid, SET_REMOVED, remove_lease_before); - if (remove_lease_after != null) - manifold.raise_event(scheduler.options.query_lease_uuid, SET_REMOVED, remove_lease_after); - */ - manifold.raise_event(scheduler.options.query_lease_uuid, SET_ADD, new_lease); - //scheduler._leases.push([this.urn, start_time, duration]); - - //console.log(scheduler._leases); - //jQuery.publish('/update-set/' + scheduler.options.query_uuid, [scheduler._leases]); - - /* We need to inform manifold about the whole diff, in addition to maintaining our own structure */ - event.preventDefault(); - }, - - _lease_init_mine: function (lease, unclick) - { - var o = lease.scheduler.options; - lease.current = "mine"; - lease.animate((lease.initial == "mine") ? attr_lease_mine_mine : attr_lease_free_mine, o.anim_delay); - lease.click(this._lease_click_mine); - if (unclick) - lease.unclick(unclick); - }, - - /* TODO: remove selected lease from array _leases and publish change */ - _lease_click_mine: function (event) - { - var scheduler = this.scheduler; - // this lease was originally free but is now marked for booking - // we free just this lease - //console.log('this is mine'); - scheduler._lease_init_free(this, scheduler._lease_click_mine); - event.preventDefault(); - }, - - - lease_init_other: function (lease, slicename) - { - lease.animate (attr_lease_other,anim_delay); - /* a text obj to display the name of the slice that owns that lease */ - var otherslicelabel = lease.scheduler.paper.text (lease.attr("x")+lease.attr("width")/2, - // xxx - lease.attr("y")+lease.attr("height")/2,slicename).attr(txt_otherslice); - /* hide it right away */ - otherslicelabel.hide(); - /* record it */ - lease.label=otherslicelabel; - lease.hover ( function (e) {this.label.toFront();this.label.show();}, - function (e) {this.label.hide();} ); - } - - }); - - $.plugin('Scheduler', Scheduler); - -})(jQuery); diff --git a/plugins/scheduler/template/scheduler.html b/plugins/scheduler/template/scheduler.html deleted file mode 100644 index cd2e9c8e..00000000 --- a/plugins/scheduler/template/scheduler.html +++ /dev/null @@ -1,49 +0,0 @@ -
- - - - -

Date:

- -

Search:

- - - - - - -
- - -
diff --git a/plugins/scheduler2/__init__.py b/plugins/scheduler2/__init__.py new file mode 100755 index 00000000..a1057a4c --- /dev/null +++ b/plugins/scheduler2/__init__.py @@ -0,0 +1,74 @@ +from unfold.plugin import Plugin +import datetime +from datetime import timedelta + +class Scheduler2 (Plugin): + + + def __init__ (self, query, query_all_resources, query_lease = None, **settings): + Plugin.__init__ (self, **settings) + + self.query=query + self.query_all_resources = query_all_resources + self.query_all_resources_uuid = query_all_resources.query_uuid + self.query_lease = query_lease + query_lease.query_uuid if query_lease else None + + #granularity in minutes + granularity = 10 + #self.time_slots = [] + self.time_slots = self.createTimeSlots(granularity) + self.nodes = [ + ['Grid Nodes' , ['node016', 'node017', 'node018', 'node019', 'node020', 'node021', 'node029', 'node030', 'node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031',]], + ['Other Nodes' , ['node022', 'node023', 'node024','node025', 'node026', 'node027', 'node028',]] + ] + + def template_file (self): + return "scheduler.html" + + def requirements (self): + reqs = { + 'js_files' : [ + 'js/scheduler2.js', + 'js/slider/jquery-ui-1.10.3.slider.min.js', + 'js/scheduler-helpers.js', + 'js/table-selector.js', + ], + 'css_files': [ + 'css/scheduler2.css', + 'css/slider/jquery-ui-1.10.3.slider.min.css', + ] + } + return reqs + + # the list of things passed to the js plugin + def json_settings_list (self): + # query_uuid will pass self.query results to the javascript + # and will be available as "record" in : + # on_new_record: function(record) + return ['plugin_uuid', 'domid', 'query_uuid', 'time_slots', 'nodes', 'query_lease_uuid', 'query_all_resources_uuid'] + + + def export_json_settings (self): + return True + + #Creates an Array with the timespans depending on granularity + def createTimeSlots (this, granularity): + #return type + time_slots = [] + #init times + time_s = datetime.time(0,00) + time_f = datetime.time(23,59) + now = datetime.datetime.now() + #calc diffs + dt_s = datetime.datetime.combine(now,time_s) + dt_f = datetime.datetime.combine(now,time_f) + #loop + while (dt_s < dt_f): + tmp = dt_s + dt_s = dt_s + datetime.timedelta(minutes=granularity) + ts = str(tmp.hour).zfill(2) + ':' + str(tmp.minute).zfill(2) + '-' + str(dt_s.hour).zfill(2) + ':' + str(dt_s.minute).zfill(2) + time_slots.append(ts) + #return + return time_slots + diff --git a/plugins/scheduler2/asdf.txt b/plugins/scheduler2/asdf.txt old mode 100644 new mode 100755 diff --git a/plugins/scheduler2/static/css/scheduler2.css b/plugins/scheduler2/static/css/scheduler2.css new file mode 100755 index 00000000..11334334 --- /dev/null +++ b/plugins/scheduler2/static/css/scheduler2.css @@ -0,0 +1,246 @@ +/* +# +# Copyright (c) 2012 NITLab, University of Thessaly, CERTH, Greece +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# +# This is a MySlice plugin for the NITOS Scheduler +# NITOScheduler v8 +# +*/ +.m-t { + margin-top:5px; +} +.m-b { + margin-bottom:5px; +} +.m-none { + margin:0; +} + +.form-control { + padding-right: 30px; +} + +.form-control + .glyphicon { + position: absolute; + right: 0; + padding: 8px 27px; +} + +#time-range { + margin-top:10px; +} +#TopologyModal .modal-dialog { + width: 700px; +} +#TopologyModal .modal-body { + position: relative; + overflow-y: auto; + max-height: 100%; + padding: 15px; +} +#TopologyModal .modal-header, #TopologyModal .modal-body, #TopologyModal .modal-footer { + background: none repeat scroll 0 0 #FFFFFF; +} +#TopologyModal .modal-header { + border-radius: 11px 11px 0 0; +} +#TopologyModal .modal-body { + border-radius: 0 0 11px 11px; +} + +#scheduler .table { + background:#fff; +} + +#scheduler .control-label { + margin-top: 5px; +} +#lbltime { + display: inline-block; + font-size: 1.2em; + margin-top: 0; + padding: 6px; +} + +/** tables css **/ +#ShedulerNodes-scroll-container { + float: left; + overflow-x: scroll; + overflow-y: hidden; + width: 15%; +} +#ShedulerNodes { + border-collapse: collapse; + border-spacing: 0; + max-width: 500px; + width: 450px; + margin-top:55px; +} + +#ShedulerNodes th{ + height: 60px; +} + +#ShedulerNodes td{ + background: url("../img/podcast-15-w.png") no-repeat scroll 3px 50% #30196D; + border: 1px solid #CDCDCD; + color: #FFFFFF; + height: 27px; + padding: 0 3px 0 19px; +} + +#ShedulerNodes td.verticalIndex { + padding: 0 2px !important; +} + +#ShedulerNodes td .verticalText { + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + margin-left: -30px; + position: absolute; + transform: rotate(-90deg); +} + +#reservation-table-scroll-container { + overflow-x: scroll; + overflow-y: visible; + padding-bottom: 1px; + width:85%; +} + + +#scheduler-reservation-table { + border-spacing:0; + border-collapse:collapse; + margin-bottom: 0 !important; + overflow: auto; + width: 100%; +} + +#scheduler-reservation-table tr{ + background-color: #A6C9E2 ; +} + +#scheduler-reservation-table tr.even{ + background-color: #E0E0E0 ; +} + +/*background: url("../img/opened-lock-15.png") no-repeat scroll 50% 50% transparent;*/ +#scheduler-reservation-table td { + border: 1px solid #FFFFFF; + cursor: pointer; + height: 27px; + padding: 3px 0 2px; + text-align: center; + width: 25px; +} + +#scheduler-reservation-table td img{ + height: 15px; +} + +#scheduler-reservation-table td.fixed, #scheduler-reservation-table th.fixed{ + position:absolute; + width:4em; + top:auto; + border-right: 2px none black; +} + +#scheduler-reservation-table td.info, #scheduler-reservation-table th { + background: #30196D; + font-weight:normal; + color: #fff; + height: 25px; + padding: 0 3px; + width: auto; +} + +#scheduler-reservation-table th span { + display: block; + line-height: 3px; + margin: 0 auto; + padding: 0 5px; + width: 3px; +} + +#scheduler-reservation-table td.free { +} + +#scheduler-reservation-table td.closed { + background: url("../img/closed-lock-15.png") no-repeat scroll 50% 50% #DD4444; + cursor: not-allowed; +} + +#scheduler-reservation-table td.maintenance { + background: url("../img/tools-15.png") no-repeat scroll 50% 50% #EDA428; +} + +#scheduler-reservation-table td.free:hover ,#scheduler-reservation-table td.selected, #scheduler-reservation-table td.selected_tmp { + background: #25BA25; +} + +td.no-image { + background-image: none !important; + padding: 0 !important; +} + + +/*legend*/ + +.legend ol { + font-size: 0.8em; + list-style: none; + padding: 0; +} + +.legend ol li{ + background: #a6c9e2; /* Old browsers */ + background: -moz-linear-gradient(left, #a6c9e2 28px, #e0e0e0 28px); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, right top, color-stop(28px,#a6c9e2), color-stop(28px,#e0e0e0)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(left, #a6c9e2 28px,#e0e0e0 28px); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(left, #a6c9e2 28px,#e0e0e0 28px); /* Opera 11.10+ */ + background: -ms-linear-gradient(left, #a6c9e2 28px,#e0e0e0 28px); /* IE10+ */ + background: linear-gradient(to right, #a6c9e2 28px,#e0e0e0 28px); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a6c9e2', endColorstr='#e0e0e0',GradientType=1 ); /* IE6-9 */ + + padding: 3px 0 3px 30px; + width: 109px; +} + +.legend ol li.free{ + +} + +.legend ol li.closed{ + background: url("../img/closed-lock-15.png") no-repeat scroll 8px 50% #DD4444; +} + +.legend ol li.maintenance { + background: url("../img/tools-15.png") no-repeat scroll 8px 50% #EDA428; +} + +.legend ol li.selected { + background: #25BA25; +} diff --git a/plugins/scheduler2/static/css/slider/images/ui-bg_flat_0_aaaaaa_40x100.png b/plugins/scheduler2/static/css/slider/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-bg_glass_55_fbf9ee_1x400.png b/plugins/scheduler2/static/css/slider/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-bg_glass_65_ffffff_1x400.png b/plugins/scheduler2/static/css/slider/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_dadada_1x400.png b/plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_dadada_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uPMaW978O6-<~?i$)F&>d~nX+ z>vO)oJQ&&FVaKefeOt$qOR>f~^ebnN_=~%qdHEaS{Ou}E*`%9 zKPdOkfrN+ZlHSt7(uY{3{#;wiJb&Ugx1>W4qtrSDm(4hFaaY-$3p3x|sIU3`%J?Qj YcLn#R=pC)AfTl5cy85}Sb4q9e0MP_2(*OVf literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-icons_222222_256x240.png b/plugins/scheduler2/static/css/slider/images/ui-icons_222222_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-icons_2e83ff_256x240.png b/plugins/scheduler2/static/css/slider/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-icons_454545_256x240.png b/plugins/scheduler2/static/css/slider/images/ui-icons_454545_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105 GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@f3_WCF#rGn literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-icons_cd0a0a_256x240.png b/plugins/scheduler2/static/css/slider/images/ui-icons_cd0a0a_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d GIT binary patch literal 4369 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 Y`xtn(*dR-}!vwf$a^1Mm&@<(K0cnc1rT_o{ literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css b/plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css new file mode 100755 index 00000000..3b7a2c17 --- /dev/null +++ b/plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css @@ -0,0 +1,1614 @@ +/*! + * jQuery UI Bootstrap (0.5) + * http://addyosmani.github.com/jquery-ui-bootstrap + * + * Copyright 2012 - 2013, Addy Osmani + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Portions copyright jQuery UI & Twitter Bootstrap + */ + + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { + border: 0; clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; +} +.ui-helper-clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.ui-helper-clearfix { + /*display: inline-block; */ + display:block; + min-height: 0; /* support: IE7 */ +} +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { + height:1%; +} + +/* end clearfix */ +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* + * jQuery UI Resizable 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://api.jqueryui.com/resizable/ + */ + +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + z-index: 99999; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} + +/* + * jQuery UI Selectable 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/selectable/ + */ +.ui-selectable-helper { + position: absolute; + z-index: 100; + border:1px dotted black; +} + +/* + * jQuery UI CSS Framework 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/ + */ + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size:13px; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #404040; } +.ui-widget-content a { color: #404040; } +.ui-widget-header { + font-weight:bold; + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border:1px solid #666; + + } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { + + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; + + } + + +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { + background-position: 0 -15px; + color: #333; + text-decoration: none; + } + +.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ + + +.ui-state-highlight p, .ui-state-error p, .ui-state-default p{ + font-size: 13px; + font-weight: normal; + line-height: 18px; + margin:7px 15px; +} +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + + + position: relative; + margin-bottom: 18px; + color: #404040; + background-color: #eedc94; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); + background-image: -moz-linear-gradient(top, #fceec1, #eedc94); + background-image: -ms-linear-gradient(top, #fceec1, #eedc94); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); + background-image: -o-linear-gradient(top, #fceec1, #eedc94); + background-image: linear-gradient(top, #fceec1, #eedc94); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #eedc94 #eedc94 #e4c652; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + + +} +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { + + + position: relative; + margin-bottom: 18px; + color: #ffffff; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + + +} +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */ + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_f6cf3b_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + -khtml-border-top-left-radius: 4px; + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + -khtml-border-top-right-radius: 4px; + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + -khtml-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + -khtml-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; +} + + +/* Overlays */ + +.ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30; + filter:Alpha(Opacity=30); +} + +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30;filter:Alpha(Opacity=30); + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; +} + +/* + * jQuery UI Accordion 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/accordion/ + */ + +/* IE/Win - Fix animation bug - #4615 */ + +.ui-accordion { + width: 100%; +} +.ui-accordion .ui-accordion-header { + cursor: pointer; + position: relative; + margin-top: 1px; + zoom: 1; + font-weight:bold; +} +.ui-accordion .ui-accordion-li-fix { + display: inline; +} +.ui-accordion .ui-accordion-header-active { + border-bottom: 0 !important; +} +.ui-accordion .ui-accordion-header a { + display: block; + font-size: 1em; + padding: .5em .5em .5em 1.7em; +} +.ui-accordion-icons .ui-accordion-header a { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + margin-top: -2px; + position: relative; + top: 1px; + margin-bottom: 2px; + overflow: auto; + display: none; + zoom: 1; +} +.ui-accordion .ui-accordion-content-active { + display: block; +} + +/* + * jQuery UI Autocomplete 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/autocomplete/ + */ + +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} + +/* + * jQuery UI Button 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ + +.ui-button { + + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + margin: 0; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; +} /* the overflow property removes extra width in IE */ + +.ui-button-primary { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + + +.ui-button-success{ + color:#ffffff; + background-color: #57a957; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957)); + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #57a957 #57a957 #3d773d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.ui-button-error{ + color:#ffffff; + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ + +.ui-button .ui-button-text { display: block; } +.ui-button-text-only .ui-button-text { } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; /*tempfix*/ display:none;} +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +/* input.ui-button { padding: .4em 1em; } */ + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { top: 50%; margin-top:-3px; margin-bottom:3px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ + + +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-state-active { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.4em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + + +/* + * jQuery UI Menu 1.10.0 + * +* Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ + +.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; float:left; outline: none; } +.ui-menu .ui-menu { margin-top: -3px; position: absolute; } +.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1;float: left;clear: left; width: 100%; } +.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } +.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; } +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: 0; + color: #ffffff; + background: #0064cd; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +/* Fix problem with border in ui-state-active */ +.ui-menu .ui-menu-item a.ui-state-active { + padding: 1px .4em; +} + +.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; } +.ui-menu .ui-state-disabled a { cursor: default; } + +/* icon support */ +.ui-menu-icons { position: relative; } +.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; } + +/* left-aligned */ +.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; } + +/* right-aligned */ +.ui-menu .ui-menu-icon { position: static; float: right; } + +.ui-menu { width: 200px; margin-bottom: 2em; } + + +/* + * jQuery UI spinner 1.10.0 + * +* Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ + +.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } +.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; } +.ui-spinner{} +.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } +.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */ +.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */ +.ui-spinner-up { top: 0; } +.ui-spinner-down { bottom: 0; } + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position:-65px -16px; +} + +/* + * jQuery UI Dialog 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + width: 300px; + overflow: hidden; + outline: 0; + background-clip: padding-box; + background-color: #FFFFFF; + border: 1px solid rgba(0, 0, 0, 0.3); + border-radius: 6px 6px 6px 6px; + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + /*left: 50%; + margin-left: -280px;*/ + outline: medium none; + position: fixed; + /*top: 10%; + width: 560px;*/ + z-index: 1050; +} +.ui-dialog .ui-dialog-titlebar { /*padding: .4em 1em;*/ + position: relative; + padding:5px 15px; + border:0px 0px 0px 1px solid; + border-color: white; + padding: 5px 15px; + font-size: 18px; + text-decoration:none; + background:none; + -moz-border-radius-bottomright: 0px; + -webkit-border-bottom-right-radius: 0px; + -khtml-border-bottom-right-radius: 0px; + + -moz-border-radius-bottomleft: 0px; + -webkit-border-bottom-left-radius: 0px; + -khtml-border-bottom-left-radius: 0px; + border-bottom-left-radius: 0px; + border-bottom:1px solid #ccc; +} +.ui-dialog .ui-dialog-title { + float: left; + color:#404040; + font-weight:bold; + margin-top:5px; + margin-bottom:5px; + padding:5px; + text-overflow: ellipsis; + overflow: hidden; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 19px; + margin: -20px 0 0 0; + padding: 1px; + height: 18px; + font-size: 20px; + font-weight: bold; + line-height: 13.5px; + text-shadow: 0 1px 0 #ffffff; + filter: alpha(opacity=25); + -khtml-opacity: 0.25; + -moz-opacity: 0.25; + opacity: 0.25; + background:none; + border-width: 0; + border:none; + box-shadow: none; +} + +.ui-dialog .ui-dialog-titlebar-close span { + display: block; + margin: 1px; + text-indent: 9999px; +} + +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 1px; filter: alpha(opacity=90); + -khtml-opacity: 0.90; + -moz-opacity: 0.90; + opacity: 0.90; +} + +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } + +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin: .5em 0 0 0; + background-color: #f5f5f5; + padding: 5px 15px 5px; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + zoom: 1; + margin-bottom: 0; + +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } + +.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{ + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +/* + * jQuery UI Slider 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; + + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + +} + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } + +/* + * jQuery UI Tabs 1.9.2 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/tabs/ + */ + .ui-tabs .ui-tabs-nav{ background:none; border-color: #ddd;border-style: solid;border-width: 0 0 1px;} +.ui-tabs { position: relative; padding: .2em; zoom: 1; border:0px;} /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + + +.ui-tabs .ui-tabs-nav li:hover, .ui-tabs .ui-tabs-nav li a:hover{ + background:whiteSmoke; + border-bottom:1px solid #ddd; + padding-bottom:0px; + color:#00438A; +} + +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; border-bottom:1px solid #DDD; } +.ui-tabs .ui-tabs-nav li { text-decoration: none; list-style: none; float: left; position: relative; top: 1px; padding: 0px 0px 1px 0px; white-space: nowrap; background:none; border:0px; } + +.ui-tabs-nav .ui-state-default{ + -webkit-box-shadow: 0px 0px 0px #ffffff; /* Saf3-4, iOS 4.0.2 - 4.2, Android 2.3+ */ + -moz-box-shadow: 0px 0px 0px #ffffff; /* FF3.5 - 3.6 */ + box-shadow: 0px 0px 0px #ffffff; /* Opera 10.5, IE9, FF4+, Chrome 6+, iOS 5 */ +} +.ui-tabs .ui-tabs-nav li a { + float: left; + text-decoration: none; + cursor: text; + padding: 0 15px; + margin-right: 2px; + line-height: 34px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + + + } + +.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: 0; padding-bottom: 0px; outline:none;} +.ui-tabs .ui-tabs-nav li.ui-tabs-active , .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: #ffffff; + cursor: default; + color:gray; + outline:none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a{background-color: #ffffff;outline:none;border:none;} +.ui-tabs .ui-tabs-nav li.ui-tabs-active:hover{ + background:#ffffff; + outline:none; + margin-bottom:0px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; color:#0069D6; background:none; font-weight:normal; margin-bottom:-1px;} +/* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs-panel .ui-button{text-decoration:none;} +.ui-tabs .ui-tabs-hide { display: none !important; } + + +/* IE fix for background inheritance from ui-widget*/ +.ui-tabs .ui-tabs-nav li{ + filter:none; +} + +/* + * jQuery UI Tooltip 1.9.0 + * + * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/tooltip/ + */ +.ui-tooltip { + padding:8px; + position:absolute; + z-index:9999; + max-width: 300px; + -o-box-shadow: 0 0 5px #ddd; + -moz-box-shadow: 0 0 5px #ddd; + -webkit-box-shadow: 0 0 5px #ddd; + /*box-shadow: 0 2px 5px #ddd;*/ + box-shadow: inset 0 1px 0 #ffffff; +} + +body .ui-tooltip { border-width:2px; } + +/* + * jQuery UI Datepicker 1.9.0 + * + * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/datepicker/ + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; border:0px; font-weight: bold; width: 100%; padding: 4px 0; background-color: #f5f5f5; color: #808080; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } + +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { /*top: 1px;*/ } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } + +.ui-datepicker .ui-datepicker-prev-hover { /*left:1px;*/ } +.ui-datepicker .ui-datepicker-next-hover { /*right:1px;*/ } + +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +} + +.ui-datepicker th{ + font-weight: bold; + color: gray; +} + +.ui-datepicker-today a:hover{ + background-color: #808080; + color: #ffffff; + +} +.ui-datepicker-today a{ + background-color: #BFBFBF; + cursor: pointer; + padding: 0 4px; + margin-bottom:0px; + +} + + +.ui-datepicker td a{ + margin-bottom:0px; + border:0px; +} + +.ui-datepicker td:hover{ + color: #ffffff; +} + +.ui-datepicker td .ui-state-default { + border:0px; + background:none; + margin-bottom:0px; + padding:5px; + color:gray; + text-align: center; + filter:none; +} + + +.ui-datepicker td .ui-state-active{ + background:#BFBFBF; + margin-bottom:0px; + font-size:normal; + text-shadow: 0px; + color: #ffffff; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.ui-datepicker td .ui-state-hover { + color: #ffffff; + background: #0064cd; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +/* + * jQuery UI Progressbar 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; + +/*this can be removed if ui-widget-header is blue*/ + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + + +/*** Input field styling from Bootstrap **/ + input, textarea { + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); +} +input:focus, textarea:focus { + outline: 0; + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); +} +input[type=file]:focus, input[type=checkbox]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: 1px dotted #666; +} + +input[type="text"], +input[type="password"], +.ui-autocomplete-input, +textarea, +.uneditable-input { + display: inline-block; + padding: 4px; + font-size: 13px; + line-height: 18px; + color: #808080; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + + + +/**Toolbar**/ + +.ui-toolbar{ + padding: 7px 14px; + margin: 0 0 18px; + background-color: #f5f5f5; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5)); + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + + +/***Dialog fixes**/ + +.ui-dialog-buttonset .ui-button:nth-child(2){ + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear all; + -moz-transition: 0.1s linear all; + -ms-transition: 0.1s linear all; + -o-transition: 0.1s linear all; + transition: 0.1s linear all; + overflow: visible; +} + + + +/***Wijmo Theming**/ + +div.wijmo-wijmenu{ + padding:0 20px; + background-color: #222; + background-color: #222222; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222)); + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.wijmo-wijmenu .ui-state-default{ + box-shadow: none; + color:#BFBFBF; +} + +.wijmo-wijmenu .ui-state-default .wijmo-wijmenu-text{ + color:#BFBFBF; +} + +.wijmo-wijmenu .ui-state-hover{ + background: #444; + background: rgba(255, 255, 255, 0.05); +} + +.wijmo-wijmenu .ui-state-hover .wijmo-wijmenu-text{ + color:#ffffff; +} + +div.wijmo-wijmenu .ui-widget-header h3{ + position: relative; + margin-top:1px; + padding:0; +} + +.wijmo-wijmenu h3 a{ + color: #FFFFFF; + display: block; + float: left; + font-size: 20px; + font-weight: 200; + line-height: 1; + margin-left: -20px; + margin-top:1px; + padding: 8px 20px 12px; +} + +.wijmo-wijmenu h3 a:hover{ + background-color: rgba(255, 255, 255, 0.05); + color: #FFFFFF; + text-decoration: none; +} + +.wijmo-wijmenu .ui-widget-header{ + border:0px; +} + +.wijmo-wijmenu .wijmo-wijmenu-parent .wijmo-wijmenu-child{ + padding: 0.3em 0; +} + +div.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child{ + background: #333; + border:0; + margin:0; + padding: 6px 0; + width:160px; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +div.wijmo-wijmenu .wijmo-wijmenu-item{ + margin:0; + border:0; +} + +.wijmo-wijmenu a.wijmo-wijmenu-link{ + margin:0; + line-height: 19px; + padding: 10px 10px 11px; + border:0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius:0; +} + +div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-link{ + display:block; + float:none; + padding: 4px 15px; + width:auto; +} + +div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-text +{ + float:none; +} + +.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child .ui-state-hover { + background: #191919; +} + +.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-separator{ + padding: 5px 0; + background-image: none; + background-color: #222; + border-top: 1px solid #444; + border-bottom:0; + border-left:0; + border-right:0; +} + +.wijmo-wijmenu .wijmo-wijmenu-item input { + -moz-transition: none 0s ease 0s; + background-color: rgba(255, 255, 255, 0.3); + border: 1px solid #111111; + border-radius: 4px 4px 4px 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.25); + color: rgba(255, 255, 255, 0.75); + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + line-height: 1; + margin: 5px 10px 0 10px; + padding: 4px 9px; + width:100px; +} + +.wijmo-wijmenu .wijmo-wijmenu-item input:hover { + background-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +.wijmo-wijmenu .wijmo-wijmenu-item input:focus { + background-color: #FFFFFF; + border: 0 none; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + color: #404040; + outline: 0 none; + padding: 5px 10px; + text-shadow: 0 1px 0 #FFFFFF; +} + + +.wijmo-wijmenu .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { + text-shadow:none; +} + + +.wijmo-wijmenu .ui-state-default{ + box-shadow: none; + color:#BFBFBF; + filter: none; +} + diff --git a/plugins/scheduler2/static/img/closed-lock-15.png b/plugins/scheduler2/static/img/closed-lock-15.png new file mode 100755 index 0000000000000000000000000000000000000000..5f52630ecaec8f06d690fedd88a1ee005a4725f8 GIT binary patch literal 1094 zcmaJ=O-K}B7#>{>6Cxu7i@>i@#J`={S#xzJH+Obt&5g!nU2qS9jx*o7gU)=@%(w2k z2b1(r&<}Lzk{}lSKoAts!47&zr6R9Ehk^*AOR+?^ioP*dJG2cm^ZoEV&-;Gw`+S!M z2Tty*K3q*v)V^516n97R?XTKH{=E&+EEx{rXc7;h6wWF(q(lvkK@c;PaTte+Hht~| z?4c+RttXN=DW4WpWH5@0VRD8=*c8>%o3j*k0%9-*$8|GEe|@$>16>Q!!=18EwjwaC z_vdXmlpjc_`3aTR=-v~cCnpdA17Zc_j7ifGazT1aS0HnDo29`P1WyF%KS?F!K@dSU z1f5KWSM_lm2m~1JSZ5%>wFAG8^Rqtk2E5!cp)(-(yTJBClW4Y<65>+db}X_A(rJt> zfn~GVER*eEkUh?FJkPrte!rI>yw0?Vm7Ldf8j1=MbW~fnu#QaNDk@_rgM&25^v@9t zYe&{}w#!5c#^w}@FAr#rSKiyh-blepa`widq|x5<@Qj!9x7 z_jYV_wIUPxQNQ;MS3})gsz#myZvI){dbPGOQhPddaFMD#vwrt;O(I?=pRH(}scKrC zZ)~CNyuYRA=bEnFx|Cim&rGz|JP5B%c?$LSk6cd8zFed}@L;p;322%hnOoSnyjJ;X z>FMGIy;1S4ds$}&D>suL-+idAYHK!L&%SDH4;{GDbn4*o!&l1QU9Za{@#wws=j)*# uwHMEa3L_vj|9HhyVABha$_nvW%0t~ack#9q+tyJ literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/closed-lock.png b/plugins/scheduler2/static/img/closed-lock.png new file mode 100755 index 0000000000000000000000000000000000000000..806fb444ef6411772bed16f1bbf3ac1d92cde38b GIT binary patch literal 2963 zcmV;E3vBd>P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002KNkl`c+k_&-IR(bue7U@q+hyycaQ{4=lz$jyq|;u-*{p zLvJDo(v{x3GzAnEJ?G5MJ3BjP_vQRh*6uYb(C#vU%LE&vhJC2HKD;+RhB=ZS>;hZTq&am zFM40@RlyKx0Lmg-H{lI#R7mVzDB%wx*pH7=9`aH+S`&(qb(Th79KH1oU0o5}NKcFf ziW}|Y=)~pX|0a+tIK(rIDfXqnEnMs&u8#xjnI7El$qru}|rS4lVcQ_E+@fx+QMujby$tU))vk-RUAW3-8> z_L*6$jZNbAa^32W&9wVBSd#9#nlTRWs}_#mvjuR0ZSKpZ)dzk*zm$(?7HJ9MKjO>Y zLdfMbgbC&mwk)p*L&MMO`P`Dyf_->*;ad#};rt~UqU@`Yl~|m2Ti~qYk5^06dbf=_ zBcbFTlYstwd7Smvj?(%^*(YVBVd^(-yg_Ff`E~h359SqnCgp1tVr$Mom9UW{kst;NR*G?#VPq#*j-FKDSb)0Gnxd2h7)2Q>^>45>Io_daRY$^Bh4`umf z7kkmqv{h>=U6%_A-mDvFReiTBpuLls`|7c?PO10*hlHWv_FGDOTxYs+mHR?R2h+0z z&96%H^RIJGj$h2Ia@&A4FH1O#DeV)M-cY}P&6zkhmSOpNBE;oN9`Rjb)J4Xq@G zczq~A9AprXG@HO3WF-NTqTnq;_;U$3jIEY2E|It7hUf`bZnrO~ZwB}#+z^LS6F^Vb z#rce%vx@>*{wD5lbTC_`WsdHhr3nybqy>UCG>jy?^%kv^%F~1?y}?I@Lzfbh)i6s~ zE)qYMz-O{#om6~BEkCdfgR!A#Ba!)_4B~aELiIJIWdY$3Lwa3|tVI&3bd@RywXh@D zwzy#*x>7h|Z$rinX$UNr0YXn&(@N82?901Q%XSsr4JqWx7GknYvIC{vJLQ)Ku7G5w zRpn5>trN1rynw4JWIlcO)a6RBZm1*kzjy=wjkm)8!5hVPStnGu+r_T)L#LGb`Vl=- zR7{RHqAj-M zgUhqiCB&C^e90K8Yr>Jn8Hla( z;;E`pZ|+~?JrWU(#TQPsUK4pJG^FrpM$G~wQY^dp%@i7Sm4VGu1v}3v^N*Kvxw!k! zB6C!!!&T=C7eaV%WRI!Nmk|5&Us3LnSH?~@VYp6Q+yT$&v_&yoy|Xw3ocn-~>?3}mHCy($K9m&e z+PP+3NhBB5{)BC14+q*Dgk3n}rZZUTUbPj*^}}XzFUUwfoPSSwRwv2V)&8$nHea)D zj8=!=F5L~l>Zx|CpGEe6i|V{FH+FXSyZNMUX2MS)frDM9&(5{uV|&I8xA}Gjj! z@(rHBik8M8mXR`H7RyrcNk50%@JWAO3;bjN1TZlfC>#Kp3OeTmX9$MiSf-enWhbUW zyn@r>Y^*Uw!UAX(A3T%v0w*<^%vs`|ljJBZW$ECeVVs9S%;|}n zdqFoWG2U!T)9H;|FnSh5f(VZ(S7fsachFFRCmw{kTLndHbikeBQEb+@)YPF6eDRsMX1jR9Y>WD7fQ_sQg|KRjA z-Bu|>6ZF^{4=Wg2w!hznEE@d)hDto4jl0OFE)r{2IxEyI(=FE>eolR~x#9fI+|3T9 z=fUk2z!Jpi?ekna<40;mlvEMIbwN& z!bkTRw^WOB+hZWwME&++Y-fU;X-BFW71xz~ie=$TJ2mfF+JU{HuyH2-Q;up3w|HUw zRI@POQ}9dZODXMJlUf?&j(3E+Zm=p$4GbdFK{g>o&wgIFg;8v@lWqs^Ug)hTnS++* z@5)pcdd5tx_Q%^B*Q35M+_80$yH+E;CrR&pmnCC(mMD?`^UvzK0(1ZPRv^ zhp0B=hl1$u>l2M3=Z?}2m^T;td^41dy$`-`Om`-%3;ORL%t*?z(Cg}sjsT1m%11y} zPU8u0774tt59r)?a~$tgz<5OiIb3_Qy{A?(M#WH}kksFNuYBwGd% z1)h(Gh+wW6;!Q#nP(P;JFHc#Tgh5Oc>M@Gkv>fK!`wC)_l5A28Q4gmOxd64X?_x1r zN>YH>=fw)_#D(B0ge?!EiU9lLHX&p)H4%{d1L0*l7!TB z43TJ83?t-cG$`RnA-$Nztmr9eJjH(mgDr4p?93}v2cOIpbEoN_d6cNyge=?WJsmu!dxu z-O>{<&>dY9rwJxBE<1-H(*_5J^$~7wy|_Fq{W$_ng25pMVd3wYqayU;Vxk!1UnRaz z_wlvQ^vm|NO2P#ZL-84;$if6l7JsT?aasx1ySj`(tEkDT*G?{PX*TU}_yBLr>&gG< z+DjfN`i!nC7^05EPUJS-e)!-q-<>(71>U9Qn^!ltws&^F|Jd6<`1$Mb2%rbxRV~b{ z_hn%PaYhwpHTs;qe=9XnPLu`1D+1e&EHb?fJawdk5mYNSOAqH;zN|q1gB72?a`1EU z4=D=fuuQd25+5@zywjOb{3O|vp(4fZ1>aui%H@bxvR&F1f5ECHphf0)vC#2*O%tk+ zo{)Kklxc?TSnEtzmsnS=9iIY1Un)$8dx7lnGQ%}&pQhq&a>^Oi`)+*%ekorvY79%e zV-bqjn5l`1FvO+sEzFgrMJ>(h^Q~J_&pja;dVx1v&IJ6UZj9aIdf-Tz^YU0%RXLFH zq|eE78r6umjJ21J0jZ{K&G%$o!bfJJ|6tXco;kL;FwuB5LnDih-dgC(H_E7`13@u~ zk-sk1);e!;e4vhZkNv#Bnka7!1vxnQAG#x}*goUj z$DlMu!(?%-hr=>5v32~*mPDdN=aR>_3zyH8_G@W=b)5(pJ$swZXSqhJcTf6Kxl*>g z#`f2-kNq*O|K$P%{WdN>B%Ekyv5c{ib#}1(h`2L+i*!_!&aSG?>cJCe(r&AiawdFJ z?cF22$DVES-R_<%Ipz%;MbOhl^3p;0X2q(W%Q_yp<)`;U-`pr*n zJ1;Xg{`V|BNnq9h>#=9zx>6LJ=k$d+Se~XS`wq+uYqvhjQgr}dz)Zt?bD!K7RfmiF z_T{PM_-uclZ+J;kE=A4oxAf~4-c*ZzXv%d#t4MGVW3_x8q95vX`V%>SYpuCDT{d-A zfPU#A9WQrk&ITcBLiIZ!HkaQh?rLE_r(33vaJt%@8ix!xp|sue>1TEFo!eT@R(*-* zDs^gRdR;I{ynhCKkgPXiT~Sl(ciuP;`(*j8dG~AHw-!OSm2a&=5B?1w%ir{iz5U<0LrC~{?hwOkHBBAoj?N~( zF$LP%lZj*f(yS<)4bS^ZykV>4^^nzxsO^*3Eh~q~M3QyMyw=;Im(KVjyX>iF`Br|k z%Rjq>@k4d5Z*jeKhP`urj6emU(7aAQ_x=180)t~&LwLf%??pyIV&Z}lxRa9arlv_` zWO`+Di)U=m(g1f@Ish{%uSo(bi z@xz&;U!BL(CgY|ntF&5cxy$GtOUtjT*V;BV-_v%?R)0Lm%z4mlMDkbzNk}hr>!0_} z+LwQTI3;@V5$Nb0D@1d=));)WtSIZ(5~g;;QO-ip>coc=PNuJt-!3xXc$19aPVmb) zdCz#{0ie%nF2L6ChcVIy9VLXmJk1x7j%2>8^YCn@5x-Evb+aG0&LFeP)Q^8_a z0HQ36y#La#5Jt010F%NTemeXX|J;j^s~|4H9%YQN5>Mhz44#X(hRvjb-c(A7rE;|?O2!Bj z((a`r8`>m+sKX?)G$F6g7FqXA2#_>ylp-WIid#`CAr9jvg}W@IbT2#Q3M>SR@Zl%s zrbt^!1ATDBrI2i>@=|Vr2D=T&&jcpJST3EM&s=5FBa>SPI+!nH;k-F(Nh&EGk&gbL zWK&<{FL84!wY`lun3rL60GUP;mmkOdw4_tH{-3y&jaBzNy!g zT4J`xI_Q}SEg*KV%!XcYV{@Uf@y>N|Q4D8J+X{x)lJp0@w*miY_>PPh7=EWl7)G|J z+EKRq>SY4LUPo>Em_7DHyewl|u2Z|&Mf*xPv6uIEYUCc3yIwajqb+)29nw!me#Htl zZp>B~Q?v&Wb{?DI2lMYN+}!<`JiuNkN3^$=uRkIX7>qFv4O5DUw2qFAdzz4_keq@v z%y^TPtqsT8=HZQq`I5O5-L#^3%@PuaRk8wVb~ix!&|Gd&_^P@_XW*-+{@F&Gw~d$}gChxI&vk zzsTF3G@>n9gq*=3J+9?5Ro(Go*at83UiC- z_YAdf`JWEqp-u`yOH_Ke{?1aCnhTSwK9WuV-Sao25F*TqSfUqzoEL`Thr6%bFE>wT%BgS6Rw&K zkm9fEbZ1Bfw#X%4gZ1e?&nsIQ+R<+)wiGk;$||*EDkRShJVloS$IEZ{={K?rncL+*-1mxQ`N};KXc$f zuq5W?6h^je;ZOSbJ$&%#us`gvU70veA0R0+)GaMKo#79A>cqr*f#)9aWrH*yEl$Sr z3AWF~zg7ya_W@f2BmxBB?XyX$NcZ~0z`xop-U=oLOC(ssHgG9CWqk9g@BzL0G(iAN zBExcD%{$X%j&(lM&y~iI&8Lj5>{PD{QRb3q=PbZ#Keu?E~(`^*X=_ z*$p}~kEiMXNy<=7*~hJ;vWZpV;c@FgN%n(((lZ?u^!0iDj@h!6;5&}`P%^BbUnQb# zl`)Ll=Z*Tslo;;Uc2}*xN;(p!B)@FVcL!yPJYe- z96=bQCnqZ0!6(Kr4xEta5t{Zs5*(eWpUs$ywMgbj#p@CoN#ut-Ma5<%;IeY>x77v( zb#zbzV^ecPM%%mE4>+4ouV_`D?{*AYe(d@5Wvu4SBsFiOC2GEZajAY~wYPP{XkaU3 zc=yHJrq^hz!nJ7^4 zEs7~p>`A&hpVUZ;_c`sc>fuej4`_L3q0_@uy&lhpF>|(+vP(5YU0sWxBlfn#(XV63 zcB70;Ur1J40UiQB7`~bYe&4b4bcM|}CEe)0AXurt*!M)Y{7j~T#5Vid109CWHXEfd@>2UaScK_Sc!11G(`@`iUXdNzIV`rA@SmF1-9s`r;C{Yyc{QuR`+M5-KSBHpIpy zq-}m@ZL;m%xU7AcEvai0MlS3dOD30CS%=)C^z5>&ls36`+C@FarOW^y;X0=)eQ7f1 ZtK|o5)@y#u<*(QN++AJ=9`Du7{{jR^0ipl^ literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/nitos_topo.png b/plugins/scheduler2/static/img/nitos_topo.png new file mode 100755 index 0000000000000000000000000000000000000000..528407b0f60cafc1fe34a4bcc5780bb76c8a753e GIT binary patch literal 102626 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⋘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 HeboN}wnPgT literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/opened-lock-15.png b/plugins/scheduler2/static/img/opened-lock-15.png new file mode 100755 index 0000000000000000000000000000000000000000..da6a92397f4303d3843b61ce0886f386223c12ab GIT binary patch literal 1167 zcmbVMTSyd97@jVcZb(8{YJrEb!Y;eBXD_2Oxp~>y%?;PKbwR_ZW@nB%=**dB&bFfv zg+<{*VQ)pyg&?Yjpa^>C!5%7-9)eziA`6M2r*05ImYq@8dXR#KnK_sFzVE-B|DTam z`;Jmim4{)N(nPD2c1QZGEM7+6jWw}69V$tzi*(=~l9w&SG^;p^Kth*$Q5wnW;K6a! zz%WaCv`iQ2O16m#)_t;z@j1Fl*$mUr=$Nw7j|j-3Ud@QGAMTB@KvN@ZXE^Ckno-oJ zwGLURW2il&4D~C5$~JBX4UR|!bVOv}=mUl=IuUk8SEO@yn`6NYg!D()S*N;^DG

JxEg_gmm<9Oph0BEYuGgf1qs=TrI|#-25=SSEY6V#OFf+pK{u1h zd11qzOB78R=g1}peSS{Y-MD7ZHc6x3ZY+qlGlM4L(#Xa+OQGk{Q&S+*-2L5<3#8tN zyDW_!iaa1;C8r~UB%}ySzxY&56=6Ii)W?LDXkD`u3qUB;$9aM0LwqnC6Ji0Ops^4) z2>tbZyoGO;qV*6`Fx8O+80N$AP>in&7Ptw+CbFTRf?bW;o#Tf8$`zv)k_oml7!MRG zAk~Knw)?ONq8&V_?bHkv=j~1I@ytdmAxk@i)VPIpFq2Wie z@kg-~wrB;q)A`b;i}~h32JIM&w#MfRJv@Gq+&bk)p}!)YO`)li+I} i{46@PEw$HMRP1L)a~+w|31_$ai%7)UrJF4WhJOJd>~=x` literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/opened-lock.png b/plugins/scheduler2/static/img/opened-lock.png new file mode 100755 index 0000000000000000000000000000000000000000..9fba7c833e6e87b28e8f82ee7fd58de89e3fee97 GIT binary patch literal 3264 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 yz+H?5w&3?#Hnsun%pd;V} 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 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/tools-15.png b/plugins/scheduler2/static/img/tools-15.png new file mode 100755 index 0000000000000000000000000000000000000000..ffd9847cb12783814d2a35a3597603343553067e GIT binary patch literal 1149 zcmeAS@N?(olHy`uVBq!ia0vp^{2c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkc=xStX>1yEW=xSXlP(!VdCm)41|tu z=Eg9+F8Rr&xv6<2Fuf@Vy>2-5f|5dR0nlcb)S}F?)D*X({9FaFm#s2!yTuu&c~HG6 zxZUD{Q?EYIG5Vm0MT%&c5HR(CnDAr^EaktaVsf7 zfv2nShoZp!gK8`Jk9@N*(PMe^KOm;V_h9jg6yaGr^d}wT+%d6!9!nOM-xp#c->x>Hx4iKO zr@;9ZHWjWHOgx?y-CFh)h*GG0U+@d%>IVfPXS7m7FHdj%*nRRqUBRmS;FQ zY!j5MSS%U9Jek4rv1Z5yR{tFp&VTDzJ479s7#P_YW));zbSxDu1{DaNu6{1-oD!M< DYp8Ww literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/tools.png b/plugins/scheduler2/static/img/tools.png new file mode 100755 index 0000000000000000000000000000000000000000..421e5f8e23235fd45a2e9cbd7092d8d7db4e54f7 GIT binary patch literal 1887 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmSQK*5Dp-y;YjHK@;M7UB8wRq zxP?HN@zUM8KR`i=64!{5;QX|b^2DN42FH~Aq*MjB%%art{G#k)|IPA#Kyw5^Y9f4n ztdjF{^%6l!^eS=-7;Nk-3KEmEQ%e+*Qqwc@Y?Txg6qFP)Q*4#OO??e~3!GCkGCit_ zQiH4fLXxYplPyz}?CrR0Dy)E-b5lza6)JLb@`|l0Y?Z)fS^?Q0VSOb9u#%E&TP28l zB76fBob!uP6-@LDb(0N@O%zPb^o-1nEX~by6oL~=6uc7i6pYLjj0_Bbgprl8IS>II z0|rWVTtM2UC?(A*$i)q6Cy-~Wlu=SrV5P5LUS6(OZmgGIl&)`RX=$l%V5DzkqzhD` zTU?n}l31aeSF8*%1ZIv)YH@N=WKgSL&Iux9Pjcq_WQ4}F;Md(j;Ni0dV zGcqtV&^0vFHM9sZGPE)VB8w;_{SZZH+I{m=GSezCv>RC&SX!AFK(!+&f@-(X2L%LD zz<@&?(7LIIYN3=gk@(xM!2w4@~Kr{<*QrskCt1H;S^HOx|ytZuQdC2p?lh}^=MWD;fTnr@fH z;Ou(F{Nsy7yg*J=_>t3%VNBnu{}z-?t2|;=a^%#+qjN*n1@3Ukf3#dVtZ$F_q|>Hc zQNq{zEQ)73Er{lp60V=hc8|4apWCDZb{jHxYcSVETgh4ZWbno)an9>6^ETA_ygWcS z+>6=r!%gOYYaiAvz^+iOOqWCwzoZ|BL)-M9m0B{!NdAZvwrg!#+BAQ6=amoaH!k;OKM=E&s$-sa{Lu1q&%1j9 zXIuL&$>wmo8Vf%M3*S-rImp4X7FSrn5$!2$?Wh>t;r|*hY+m@brzE$nq zs-~RlEbo((Zi}V}SHCoHzqjC=g5avC8?m_)OrLO`4{KpRq4_E>DsJ(u6M4o?ayQCl d{yTr"); } + //var srt_body = []; + var totalCell = ""; + for (var i = 0; i < totalColums; i++) totalCell +=""; + var srt_body = ""; + + $.each(SchedulerResources, function (i, group) { + //var groupTR = $("#ShedulerNodes tbody").html('
' + group.groupName + '
'); + var groupTR = $("#ShedulerNodes tbody").html('
' + group.groupName + '
'); + + $.each(group.resources.slice(0,30), function (i, resource) { + if (i == 0) { + //$("#ShedulerNodes tbody tr:first").append('' + resource.hostname + ''); + $(groupTR).find("#schdlr_frstTD").html(resource.hostname); + //$(srt_body).html("" + totalCell + ""); + } else { + $(groupTR).find("tr:last").after('' + resource.hostname + ''); + //$(srt_body).find("tr:last").after("" + totalCell + ""); + } + srt_body += "" + totalCell + ""; + //srt_body.push(''); srt_body = srt_body.concat(totalCell.concat()); srt_body.push('/'); + }); + }); + + //$("#scheduler-reservation-table tbody").html(srt_body.join("")); + $("#scheduler-reservation-table tbody").html(srt_body); + + if (Debug) console.timeEnd("each:SchedulerResources"); + + + $("#" + rsvrTblNm + " tbody tr").each(function (index) { $(this).attr("data-trindex", index); }); + + }, + + /* TEMPLATES */ + + // see in the html template + // How to load a template, use of mustache + + /* QUERY HANDLERS */ + loadWithDate: function () { + // only convention, not strictly enforced at the moment + }, + // How to make sure the plugin is not desynchronized + // He should manifest its interest in filters, fields or records + // functions triggered only if the proper listen is done + + /* all_ev QUERY HANDLERS Start */ + on_all_ev_clear_records: function (data) { + //alert('all_ev clear_records'); + }, + on_all_ev_query_in_progress: function (data) { + // alert('all_ev query_in_progress'); + }, + on_all_ev_new_record: function (data) { + //alert('all_ev new_record'); + }, + on_all_ev_query_done: function (data) { + //alert('all_ev query_done'); + }, + //another plugin has modified something, that requires you to update your display. + on_all_ev_field_state_changed: function (data) { + //alert('all_ev query_done'); + }, + /* all_ev QUERY HANDLERS End */ + /* all_resources QUERY HANDLERS Start */ + on_all_resources_clear_records: function (data) { + //data is empty on load + }, + on_all_resources_query_in_progress: function (data) { + //data is empty on load + }, + on_all_resources_new_record: function (data) { + var tmpGroup = lookup(SchedulerResources, 'groupName', data.type); + if (tmpGroup == null) { + tmpGroup = { groupName: data.type, resources: [] }; + SchedulerResources.push(tmpGroup); + //if (data.type != "node") alert('not all node'); + } + tmpGroup.resources.push(data); + //alert('new_record'); + }, + on_all_resources_query_done: function (data) { + this.drawResources(); + //data is empty on load + /* GUI setup and event binding */ + this._initUI(); + this._SetPeriodInPage(init_start_visible_index, init_end_visible_index); + this.loadWithDate(); + }, + //another plugin has modified something, that requires you to update your display. + on_all_resources_field_state_changed: function (data) { + //alert('all_resources query_done'); + }, + /* all_resources QUERY HANDLERS End */ + /* lease QUERY HANDLERS Start */ + on_lease_clear_records: function (data) { alert('clear_records'); }, + on_lease_query_in_progress: function (data) { alert('query_in_progress'); }, + on_lease_new_record: function (data) { alert('new_record'); }, + on_lease_query_done: function (data) { alert('query_done'); }, + //another plugin has modified something, that requires you to update your display. + on_lease_field_state_changed: function (data) { alert('query_done'); }, + /* lease QUERY HANDLERS End */ + + + // no prefix + + on_filter_added: function (filter) { + + }, + + // ... be sure to list all events here + + /* RECORD HANDLERS */ + on_all_new_record: function (record) { + // + alert('on_all_new_record'); + }, + + debug : function (log_txt) { + if (typeof window.console != 'undefined') { + console.debug(log_txt); + } + }, + + /* INTERNAL FUNCTIONS */ + _initUI: function () { + if (Debug) console.time("_initUI"); + //fix margins in tables + mtNodesTbl = $("#" + rsvrTblNm + " tr:first").outerHeight() + 6; + mtSchrollCon = $("#nodes").outerWidth(); + $("#nodes").css("margin-top", mtNodesTbl); + $("#reservation-table-scroll-container").css("margin-left", mtSchrollCon); + SetPerFun = this._SetPeriodInPage; + //slider + $("#time-range").slider({ + range: true, + min: 0, + max: 24, + step: 0.5, + values: [init_start_visible_index, init_end_visible_index], + slide: function (event, ui) { + SetPerFun(ui.values[0], ui.values[1]); + } + }); + $("#DateToRes").datepicker({ + dateFormat: "yy-mm-dd", + minDate: 0, + numberOfMonths: 3 + }).change(function () { + //Scheduler2.loadWithDate(); + }).click(function () { + $("#ui-datepicker-div").css("z-index", 5); + }); + //other stuff + fixOddEvenClasses(); + $("#" + rsvrTblNm + " td:not([class])").addClass("free"); + if (Debug) console.timeEnd("_initUI"); + }, + _SetPeriodInPage: function (start, end) { + if (Debug) console.time("_SetPeriodInPage"); + ClearTableSelection(); + $("#lbltime").html(GetTimeFromInt(start) + " - " + GetTimeFromInt(end)); + + var start_visible_index = (start * schdlr_PartsInOneHour) + 1; + var end_visible_index = (end * schdlr_PartsInOneHour); + + //hide - show + for (i = 0; i < start_visible_index; i++) { + $("#" + rsvrTblNm + " td:nth-child(" + i + "), #" + rsvrTblNm + " th:nth-child(" + i + ")").hide(); + } + for (i = end_visible_index + 1; i <= schdlr_totalColums; i++) { + $("#" + rsvrTblNm + " td:nth-child(" + i + "), #" + rsvrTblNm + " th:nth-child(" + i + ")").hide(); + } + /*$("#" + rsvrTblNm + " td:not([class*='info']), #" + rsvrTblNm + " th:not([class*='fixed'])").hide();*/ + for (i = start_visible_index; i <= end_visible_index; i++) { + $("#" + rsvrTblNm + " td:nth-child(" + i + "), #" + rsvrTblNm + " th:nth-child(" + i + ")").show(); + } + + if ($("#" + rsvrTblNm + " th:visible:first").width() > 105) { + $("#" + rsvrTblNm + " th span").css("display", "inline") + } else { + $("#" + rsvrTblNm + " th span").css("display", "block"); + } + mtNodesTbl = $("#" + rsvrTblNm + " tr:first").outerHeight() + 6; + $("#nodes").css("margin-top", mtNodesTbl); + //$("#scroll_container").width($("#Search").width() - $("#nodes").width()); + //$("#nodes th").height($("#tblReservation th:visible:first").height() - 2); + if (Debug) console.timeEnd("_SetPeriodInPage"); + } + }); + + //Sched2 = new Scheduler2(); + + /* Plugin registration */ + $.plugin('Scheduler2', Scheduler2); + + // TODO Here use cases for instanciating plugins in different ways like in the pastie. + + +})(jQuery); + + + diff --git a/plugins/scheduler2/static/js/selectRangeWorker.js b/plugins/scheduler2/static/js/selectRangeWorker.js new file mode 100755 index 00000000..5f282702 --- /dev/null +++ b/plugins/scheduler2/static/js/selectRangeWorker.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js b/plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js new file mode 100755 index 00000000..b2ea00eb --- /dev/null +++ b/plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js @@ -0,0 +1,6 @@ +/*! jQuery UI - v1.10.3 - 2013-11-26 +* http://jqueryui.com +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.slider.js +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +(function(e,t){function i(t,i){var s,n,r,o=t.nodeName.toLowerCase();return"area"===o?(s=t.parentNode,n=s.name,t.href&&n&&"map"===s.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&a(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.3",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,a){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),a&&a.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var a,s,n=e(this[0]);n.length&&n[0]!==document;){if(a=n.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,a){return!!e.data(t,a[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var a=e.attr(t,"tabindex"),s=isNaN(a);return(s||a>=0)&&i(t,!s)}}),e("
").outerWidth(1).jquery||e.each(["Width","Height"],function(i,a){function s(t,i,a,s){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,a&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===a?["Left","Right"]:["Top","Bottom"],r=a.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(i){return i===t?o["inner"+a].call(this):this.each(function(){e(this).css(r,s(this,i)+"px")})},e.fn["outer"+a]=function(t,i){return"number"!=typeof t?o["outer"+a].call(this,t):this.each(function(){e(this).css(r,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,a){var s,n=e.ui[t].prototype;for(s in a)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([i,a[s]])},call:function(e,t,i){var a,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(a=0;s.length>a;a++)e.options[s[a][0]]&&s[a][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var a=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[a]>0?!0:(t[a]=1,s=t[a]>0,t[a]=0,s)}})})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(n){}a(t)},e.widget=function(i,s,a){var n,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],n=u+"-"+i,a||(a=s,s=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(a,function(i,a){return e.isFunction(a)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,n=this._superApply;return this._super=e,this._superApply=t,i=a.apply(this,arguments),this._super=s,this._superApply=n,i}}(),t):(l[i]=a,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var a,n,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(a in r[o])n=r[o][a],r[o].hasOwnProperty(a)&&n!==t&&(i[a]=e.isPlainObject(n)?e.isPlainObject(i[a])?e.widget.extend({},i[a],n):e.widget.extend({},n):n);return i},e.widget.bridge=function(i,a){var n=a.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,a=e.data(this,n);return a?e.isFunction(a[r])&&"_"!==r.charAt(0)?(s=a[r].apply(a,h),s!==a&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,n);t?t.option(r||{})._init():e.data(this,n,new a(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var a,n,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},a=i.split("."),i=a.shift(),a.length){for(n=o[i]=e.widget.extend({},this.options[i]),r=0;a.length-1>r;r++)n[a[r]]=n[a[r]]||{},n=n[a[r]];if(i=a.pop(),s===t)return n[i]===t?null:n[i];n[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,a){var n,r=this;"boolean"!=typeof i&&(a=s,s=i,i=!1),a?(s=n=e(s),this.bindings=this.bindings.add(s)):(a=s,s=this.element,n=this.widget()),e.each(a,function(a,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=a.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?n.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}})})(jQuery);(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,a=1===i.which,n="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return a&&!n&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(e){var t=5;e.widget("ui.slider",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,a=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),n="",r=[];for(i=s.values&&s.values.length||1,a.length>i&&(a.slice(i).remove(),a=a.slice(0,i)),t=a.length;i>t;t++)r.push(n);this.handles=a.add(e(r.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("
").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):this.range=e([])},_setupEvents:function(){var e=this.handles.add(this.range).filter("a");this._off(e),this._on(e,this._handleEvents),this._hoverable(e),this._focusable(e)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,a,n,r,o,h,l,u=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),a=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(a>i||a===i&&(t===u._lastChangedValue||u.values(t)===c.min))&&(a=i,n=e(this),r=t)}),o=this._start(t,r),o===!1?!1:(this._mouseSliding=!0,this._handleIndex=r,n.addClass("ui-state-active").focus(),h=n.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-n.width()/2,top:t.pageY-h.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,r,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,a,n;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),a=this._valueMax()-this._valueMin(),n=this._valueMin()+s*a,this._trimAlignValue(n)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,a,n;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(a=this.values(),a[t]=i,n=this._trigger("slide",e,{handle:this.handles[t],value:i,values:a}),s=this.values(t?0:1),n!==!1&&this.values(t,i,!0))):i!==this.value()&&(n=this._trigger("slide",e,{handle:this.handles[t],value:i}),n!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(t,i){var s,a,n;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),undefined;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,a=arguments[0],n=0;s.length>n;n+=1)s[n]=this._trimAlignValue(a[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,i){var s,a=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(a=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;a>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,i,s,a,n,r=this.options.range,o=this.options,h=this,l=this._animateOff?!1:o.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,o.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:o.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:o.animate}))),t=i}):(s=this.value(),a=this._valueMin(),n=this._valueMax(),i=n!==a?100*((s-a)/(n-a)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,o.animate),"min"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},o.animate),"max"===r&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:o.animate}),"min"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},o.animate),"max"===r&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:o.animate}))},_handleEvents:{keydown:function(i){var s,a,n,r,o=e(i.target).data("ui-slider-handle-index");switch(i.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(i.target).addClass("ui-state-active"),s=this._start(i,o),s===!1))return}switch(r=this.options.step,a=n=this.options.values&&this.options.values.length?this.values(o):this.value(),i.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(a+(this._valueMax()-this._valueMin())/t);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(a-(this._valueMax()-this._valueMin())/t);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(a===this._valueMax())return;n=this._trimAlignValue(a+r);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(a===this._valueMin())return;n=this._trimAlignValue(a-r)}this._slide(i,o,n)},click:function(e){e.preventDefault()},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}})})(jQuery); \ No newline at end of file diff --git a/plugins/scheduler2/static/js/table-selector.js b/plugins/scheduler2/static/js/table-selector.js new file mode 100755 index 00000000..b4991519 --- /dev/null +++ b/plugins/scheduler2/static/js/table-selector.js @@ -0,0 +1,167 @@ +////version 3 +var dragStart_td = 0; +var dragStart_tr = 0; +var dragEnd_td = 0; +var dragEnd_tr = 0; +//tmp gia ta loops & check gia to last state +var tmp_dragStart_td; +var tmp_dragStart_tr; +var tmp_dragEnd_td; +var tmp_dragEnd_tr; +var isDragging = false; +var ctrlPressed = false; +// try stop +var continueExecuting = false; +var isExecuting = false; + + + +function rangeMouseDown(e) { + if (Debug) console.time("mouse:rangeMouseDown"); + if (isRightClick(e)) { + return false; + } else { + dragStart_tr = $(this).parent().index(); + dragStart_td = $(this).index(); + dragEnd_tr = dragStart_tr; + dragEnd_td = dragStart_td; + //alert(dragStart_tr); + //var allCells = $("#tblReservation td"); + //dragStart = allCells.index($(this)); + + if ( $(this).hasClass("free")) + $(this).addClass("selected_tmp"); + + isDragging = true; + //selectRange(); + + if (typeof e.preventDefault != 'undefined') { e.preventDefault(); } + document.documentElement.onselectstart = function () { return false; }; + } + if (Debug) console.timeEnd("mouse:rangeMouseDown"); +} + +function rangeMouseUp(e) { + if (Debug) console.time("mouse:rangeMouseUp"); + if (isRightClick(e)) { + return false; + } else { + //var allCells = $("#tblReservation td"); + //dragEnd = allCells.index($(this)); + + dragEnd_tr = $(this).parent().index(); + dragEnd_td = $(this).index(); + + isDragging = false; + selectRange(false); + + document.documentElement.onselectstart = function () { return true; }; + } + if (Debug) console.timeEnd("mouse:rangeMouseUp"); +} + +function rangeMouseMove(e) { + //if (Debug) console.time("mouse:rangeMouseMove"); + if (isDragging) { + dragEnd_tr = $(this).parent().attr('data-trindex'); + dragEnd_td = $(this).attr('data-tdindex'); + + //if (Debug) this.debug('foo'); + + if ((dragEnd_tr != tmp_dragEnd_tr) || (dragEnd_td != tmp_dragEnd_td)) { + //console.log(dragEnd_tr + " - " + tmp_dragEnd_tr); + //console.log(dragEnd_td + " - " + tmp_dragEnd_td); + //selectRange(true); + } + } + //if (Debug) console.timeEnd("mouse:rangeMouseMove"); +} + +function selectRange(IsTemp) { + if (Debug) console.time("mouse:---selectRange"); + + if (!ctrlPressed) + $("#" + rsvrTblNm + " td:not([class='info'],[class='closed'])").removeClass('selected selected_tmp').addClass('free'); + + tmp_dragStart_td = dragStart_td; + tmp_dragStart_tr = dragStart_tr; + tmp_dragEnd_td = dragEnd_td; + tmp_dragEnd_tr = dragEnd_tr; + + if (tmp_dragStart_td > tmp_dragEnd_td) { + var tmp = tmp_dragStart_td; + tmp_dragStart_td = tmp_dragEnd_td; + tmp_dragEnd_td = tmp; + } + + if (tmp_dragStart_tr > tmp_dragEnd_tr) { + var tmp = tmp_dragStart_tr; + tmp_dragStart_tr = tmp_dragEnd_tr; + tmp_dragEnd_tr = tmp; + } + + //alert("tmp_dragStart_td:" + tmp_dragStart_td + "\n tmp_dragStart_tr:" + tmp_dragStart_tr + "\n tmp_dragEnd_td:" + tmp_dragEnd_td + "\n tmp_dragEnd_tr:" + tmp_dragEnd_tr); + + + for (i = tmp_dragStart_tr; i <= tmp_dragEnd_tr; i++) { + for (j = tmp_dragStart_td; j <= tmp_dragEnd_td; j++) { + //alert("i:" + i + "j:" + j); + var cell = $('#' + rsvrTblNm + ' tbody tr:eq(' + i + ') td:eq(' + j + ')'); + //$(cell) + curClass = $(cell).attr("class"); + //alert(curClass); + switch (curClass) { + case "free_tmp": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("free_tmp"); + else + $(cell).addClass("free"); + break; + case "free": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("selected_tmp"); + else + $(cell).addClass("selected"); + break; + case "selected_tmp": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("selected_tmp"); + else + $(cell).addClass("selected"); + break; + case "selected": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("free_tmp"); + else + $(cell).addClass("free"); + break; + case "closed": + //do nothing + //alert("not allowed!"); + break; + } + } + } + + + /*if (dragEnd + 1 < dragStart) { // reverse select + //alert(1); + $("#tblReservation td:not([class='info'])").slice(dragEnd, dragStart + 1).addClass('selected'); + } else { + alert(dragStart + "-" + dragEnd); + $("#tblReservation td:not([class='info'])").slice(dragStart, dragEnd).addClass('selected'); + }*/ + + + if (Debug) console.timeEnd("mouse:---selectRange"); +} + +function ClearTableSelection(){ + $('#' + rsvrTblNm + ' .selected').addClass("free").removeClass("selected"); +} + + diff --git a/plugins/scheduler2/templates/scheduler.html b/plugins/scheduler2/templates/scheduler.html new file mode 100755 index 00000000..e4605f03 --- /dev/null +++ b/plugins/scheduler2/templates/scheduler.html @@ -0,0 +1,102 @@ +
+
+
+ +
+
+ + +
+
+ + + +
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+ + + {% comment %} + {% for itms in nodes %} + + + + {% for n in itms.1 %} + {% if not forloop.first %} + + {% endif %} + + + {% endfor %} + {% endfor %} + {% endcomment %} + +
{{ itms.0 }}
{{ n }}
+
+
+ + + + {% for ts in time_slots %} + + {% endfor %} + + + + {% comment %} + {% for itms in nodes %} + {% for n in itms.1 %} + + {% for ts in time_slots %} + {% if n == 'node020' %} + + {% elif n == 'node023' or n == 'node030' %} + + {% else %} + + {% endif %} + {% endfor %} + + {% endfor %} + {% endfor %} + {% endcomment %} + +
{{ ts|safe }}
+
+ +
+
    +
  1. free
  2. +
  3. selected
  4. +
  5. reserved
  6. +
  7. maintenance
  8. +
+
+
+ +
\ No newline at end of file diff --git a/portal/sliceview.py b/portal/sliceview.py old mode 100644 new mode 100755 index eaec3faa..e28ef018 --- a/portal/sliceview.py +++ b/portal/sliceview.py @@ -18,7 +18,8 @@ from plugins.querygrid import QueryGrid from plugins.queryupdater import QueryUpdater from plugins.googlemap import GoogleMap from plugins.senslabmap import SensLabMap -from plugins.scheduler import Scheduler +#from plugins.scheduler import Scheduler +from plugins.scheduler2 import Scheduler2 from plugins.querycode import QueryCode # Thierry # stay away from query editor for now as it seems to make things go very slow @@ -244,15 +245,29 @@ class SliceView (LoginRequiredAutoLogoutView): checkboxes = True, ) - if do_query_leases: - resources_as_scheduler = Scheduler( - page = page, - title = 'Scheduler', - domid = 'scheduler', - query = sq_resource, - query_all_resources = query_resource_all, - query_lease = sq_lease, - ) + + + #if do_query_leases: + # resources_as_scheduler = Scheduler( + + # page = page, + # title = 'Scheduler', + # domid = 'scheduler', + # query = sq_resource, + # query_all_resources = query_resource_all, + # query_lease = sq_lease, + + # ) + + resources_as_scheduler2 = Scheduler2( + page = page, + domid = 'scheduler', + title = 'Scheduler', + # this is the query at the core of the slice list + query = sq_resource, + query_all_resources = query_resource_all, + query_lease = sq_lease, + ) # with the new 'Filter' stuff on top, no need for anything but the querytable resources_as_list_area = resources_as_list @@ -260,12 +275,13 @@ class SliceView (LoginRequiredAutoLogoutView): resources_sons = [ resources_as_gmap, resources_as_3dmap, - resources_as_scheduler, + resources_as_scheduler2, resources_as_list_area, ] if do_query_leases else [ resources_as_gmap, resources_as_3dmap, resources_as_list_area, + resources_as_scheduler2, ] if insert_grid: resources_sons.append(resources_as_grid) @@ -276,7 +292,8 @@ class SliceView (LoginRequiredAutoLogoutView): title="Resources", outline_complete=True, sons= resources_sons, - active_domid = 'resources-map', + + active_domid = 'scheduler', persistent_active=True, ) main_stack.insert (resources_area) -- 2.43.0