Shared memory rewrite
This commit is contained in:
parent
afcddbfca6
commit
cd2fe225c5
81 changed files with 7775 additions and 5411 deletions
1
lsp/plugins/jquery.flot.crosshair.min.js
vendored
Normal file
1
lsp/plugins/jquery.flot.crosshair.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
(function($){var options={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function init(plot){var crosshair={x:-1,y:-1,locked:false};plot.setCrosshair=function setCrosshair(pos){if(!pos)crosshair.x=-1;else{var o=plot.p2c(pos);crosshair.x=Math.max(0,Math.min(o.left,plot.width()));crosshair.y=Math.max(0,Math.min(o.top,plot.height()))}plot.triggerRedrawOverlay()};plot.clearCrosshair=plot.setCrosshair;plot.lockCrosshair=function lockCrosshair(pos){if(pos)plot.setCrosshair(pos);crosshair.locked=true};plot.unlockCrosshair=function unlockCrosshair(){crosshair.locked=false};function onMouseOut(e){if(crosshair.locked)return;if(crosshair.x!=-1){crosshair.x=-1;plot.triggerRedrawOverlay()}}function onMouseMove(e){if(crosshair.locked)return;if(plot.getSelection&&plot.getSelection()){crosshair.x=-1;return}var offset=plot.offset();crosshair.x=Math.max(0,Math.min(e.pageX-offset.left,plot.width()));crosshair.y=Math.max(0,Math.min(e.pageY-offset.top,plot.height()));plot.triggerRedrawOverlay()}plot.hooks.bindEvents.push(function(plot,eventHolder){if(!plot.getOptions().crosshair.mode)return;eventHolder.mouseout(onMouseOut);eventHolder.mousemove(onMouseMove)});plot.hooks.drawOverlay.push(function(plot,ctx){var c=plot.getOptions().crosshair;if(!c.mode)return;var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);if(crosshair.x!=-1){var adj=plot.getOptions().crosshair.lineWidth%2===0?0:.5;ctx.strokeStyle=c.color;ctx.lineWidth=c.lineWidth;ctx.lineJoin="round";ctx.beginPath();if(c.mode.indexOf("x")!=-1){var drawX=Math.round(crosshair.x)+adj;ctx.moveTo(drawX,0);ctx.lineTo(drawX,plot.height())}if(c.mode.indexOf("y")!=-1){var drawY=Math.round(crosshair.y)+adj;ctx.moveTo(0,drawY);ctx.lineTo(plot.width(),drawY)}ctx.stroke()}ctx.restore()});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mouseout",onMouseOut);eventHolder.unbind("mousemove",onMouseMove)})}$.plot.plugins.push({init:init,options:options,name:"crosshair",version:"1.0"})})(jQuery);
|
2
lsp/plugins/jquery.flot.min.js
vendored
Normal file
2
lsp/plugins/jquery.flot.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
lsp/plugins/jquery.flot.time.min.js
vendored
Normal file
1
lsp/plugins/jquery.flot.time.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
lsp/plugins/jquery.js
vendored
Executable file
2
lsp/plugins/jquery.js
vendored
Executable file
File diff suppressed because one or more lines are too long
2
lsp/plugins/md5.js
Executable file
2
lsp/plugins/md5.js
Executable file
|
@ -0,0 +1,2 @@
|
|||
var MD5=function(j){function RotateLeft(a,b){return(a<<b)|(a>>>(32-b))}function AddUnsigned(a,b){var c,lY4,lX8,lY8,lResult;lX8=(a&0x80000000);lY8=(b&0x80000000);c=(a&0x40000000);lY4=(b&0x40000000);lResult=(a&0x3FFFFFFF)+(b&0x3FFFFFFF);if(c&lY4){return(lResult^0x80000000^lX8^lY8)}if(c|lY4){if(lResult&0x40000000){return(lResult^0xC0000000^lX8^lY8)}else{return(lResult^0x40000000^lX8^lY8)}}else{return(lResult^lX8^lY8)}}function F(x,y,z){return(x&y)|((~x)&z)}function G(x,y,z){return(x&z)|(y&(~z))}function H(x,y,z){return(x^y^z)}function I(x,y,z){return(y^(x|(~z)))}function FF(a,b,c,d,x,s,e){a=AddUnsigned(a,AddUnsigned(AddUnsigned(F(b,c,d),x),e));return AddUnsigned(RotateLeft(a,s),b)};function GG(a,b,c,d,x,s,e){a=AddUnsigned(a,AddUnsigned(AddUnsigned(G(b,c,d),x),e));return AddUnsigned(RotateLeft(a,s),b)};function HH(a,b,c,d,x,s,e){a=AddUnsigned(a,AddUnsigned(AddUnsigned(H(b,c,d),x),e));return AddUnsigned(RotateLeft(a,s),b)};function II(a,b,c,d,x,s,e){a=AddUnsigned(a,AddUnsigned(AddUnsigned(I(b,c,d),x),e));return AddUnsigned(RotateLeft(a,s),b)};function ConvertToWordArray(a){var b;var c=a.length;var d=c+8;var e=(d-(d%64))/64;var f=(e+1)*16;var g=Array(f-1);var h=0;var i=0;while(i<c){b=(i-(i%4))/4;h=(i%4)*8;g[b]=(g[b]|(a.charCodeAt(i)<<h));i++}b=(i-(i%4))/4;h=(i%4)*8;g[b]=g[b]|(0x80<<h);g[f-2]=c<<3;g[f-1]=c>>>29;return g};function WordToHex(a){var b="",WordToHexValue_temp="",lByte,lCount;for(lCount=0;lCount<=3;lCount++){lByte=(a>>>(lCount*8))&255;WordToHexValue_temp="0"+lByte.toString(16);b=b+WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2)}return b};function Utf8Encode(a){a=a.replace(/\r\n/g,"\n");var b="";for(var n=0;n<a.length;n++){var c=a.charCodeAt(n);if(c<128){b+=String.fromCharCode(c)}else if((c>127)&&(c<2048)){b+=String.fromCharCode((c>>6)|192);b+=String.fromCharCode((c&63)|128)}else{b+=String.fromCharCode((c>>12)|224);b+=String.fromCharCode(((c>>6)&63)|128);b+=String.fromCharCode((c&63)|128)}}return b};var x=Array();var k,AA,BB,CC,DD,a,b,c,d;var l=7,S12=12,S13=17,S14=22;var m=5,S22=9,S23=14,S24=20;var o=4,S32=11,S33=16,S34=23;var p=6,S42=10,S43=15,S44=21;j=Utf8Encode(j);x=ConvertToWordArray(j);a=0x67452301;b=0xEFCDAB89;c=0x98BADCFE;d=0x10325476;for(k=0;k<x.length;k+=16){AA=a;BB=b;CC=c;DD=d;a=FF(a,b,c,d,x[k+0],l,0xD76AA478);d=FF(d,a,b,c,x[k+1],S12,0xE8C7B756);c=FF(c,d,a,b,x[k+2],S13,0x242070DB);b=FF(b,c,d,a,x[k+3],S14,0xC1BDCEEE);a=FF(a,b,c,d,x[k+4],l,0xF57C0FAF);d=FF(d,a,b,c,x[k+5],S12,0x4787C62A);c=FF(c,d,a,b,x[k+6],S13,0xA8304613);b=FF(b,c,d,a,x[k+7],S14,0xFD469501);a=FF(a,b,c,d,x[k+8],l,0x698098D8);d=FF(d,a,b,c,x[k+9],S12,0x8B44F7AF);c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);a=FF(a,b,c,d,x[k+12],l,0x6B901122);d=FF(d,a,b,c,x[k+13],S12,0xFD987193);c=FF(c,d,a,b,x[k+14],S13,0xA679438E);b=FF(b,c,d,a,x[k+15],S14,0x49B40821);a=GG(a,b,c,d,x[k+1],m,0xF61E2562);d=GG(d,a,b,c,x[k+6],S22,0xC040B340);c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);b=GG(b,c,d,a,x[k+0],S24,0xE9B6C7AA);a=GG(a,b,c,d,x[k+5],m,0xD62F105D);d=GG(d,a,b,c,x[k+10],S22,0x2441453);c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);b=GG(b,c,d,a,x[k+4],S24,0xE7D3FBC8);a=GG(a,b,c,d,x[k+9],m,0x21E1CDE6);d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);c=GG(c,d,a,b,x[k+3],S23,0xF4D50D87);b=GG(b,c,d,a,x[k+8],S24,0x455A14ED);a=GG(a,b,c,d,x[k+13],m,0xA9E3E905);d=GG(d,a,b,c,x[k+2],S22,0xFCEFA3F8);c=GG(c,d,a,b,x[k+7],S23,0x676F02D9);b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);a=HH(a,b,c,d,x[k+5],o,0xFFFA3942);d=HH(d,a,b,c,x[k+8],S32,0x8771F681);c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);a=HH(a,b,c,d,x[k+1],o,0xA4BEEA44);d=HH(d,a,b,c,x[k+4],S32,0x4BDECFA9);c=HH(c,d,a,b,x[k+7],S33,0xF6BB4B60);b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);a=HH(a,b,c,d,x[k+13],o,0x289B7EC6);d=HH(d,a,b,c,x[k+0],S32,0xEAA127FA);c=HH(c,d,a,b,x[k+3],S33,0xD4EF3085);b=HH(b,c,d,a,x[k+6],S34,0x4881D05);a=HH(a,b,c,d,x[k+9],o,0xD9D4D039);d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);b=HH(b,c,d,a,x[k+2],S34,0xC4AC5665);a=II(a,b,c,d,x[k+0],p,0xF4292244);d=II(d,a,b,c,x[k+7],S42,0x432AFF97);c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);b=II(b,c,d,a,x[k+5],S44,0xFC93A039);a=II(a,b,c,d,x[k+12],p,0x655B59C3);d=II(d,a,b,c,x[k+3],S42,0x8F0CCC92);c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);b=II(b,c,d,a,x[k+1],S44,0x85845DD1);a=II(a,b,c,d,x[k+8],p,0x6FA87E4F);d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);c=II(c,d,a,b,x[k+6],S43,0xA3014314);b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);a=II(a,b,c,d,x[k+4],p,0xF7537E82);d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);c=II(c,d,a,b,x[k+2],S43,0x2AD7D2BB);b=II(b,c,d,a,x[k+9],S44,0xEB86D391);a=AddUnsigned(a,AA);b=AddUnsigned(b,BB);c=AddUnsigned(c,CC);d=AddUnsigned(d,DD)}var q=WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);return q.toLowerCase()};
|
||||
|
8
lsp/plugins/placeholder.js
Executable file
8
lsp/plugins/placeholder.js
Executable file
|
@ -0,0 +1,8 @@
|
|||
/*
|
||||
* Placeholder plugin for jQuery
|
||||
* ---
|
||||
* Copyright 2010, Daniel Stocks (http://webcloud.se)
|
||||
* Released under the MIT, BSD, and GPL Licenses.
|
||||
*/
|
||||
(function(b){function d(a){this.input=a;a.attr("type")=="password"&&this.handlePassword();b(a[0].form).submit(function(){if(a.hasClass("placeholder")&&a[0].value==a.attr("placeholder"))a[0].value=""})}d.prototype={show:function(a){if(this.input[0].value===""||a&&this.valueIsPlaceholder()){if(this.isPassword)try{this.input[0].setAttribute("type","text")}catch(b){this.input.before(this.fakePassword.show()).hide()}this.input.addClass("placeholder");this.input[0].value=this.input.attr("placeholder")}},hide:function(){if(this.valueIsPlaceholder()&&this.input.hasClass("placeholder")&&(this.input.removeClass("placeholder"),this.input[0].value="",this.isPassword)){try{this.input[0].setAttribute("type","password")}catch(a){}this.input.show();this.input[0].focus()}},valueIsPlaceholder:function(){return this.input[0].value==this.input.attr("placeholder")},handlePassword:function(){var a=this.input;a.attr("realType","password");this.isPassword=!0;if(b.browser.msie&&a[0].outerHTML){var c=b(a[0].outerHTML.replace(/type=(['"])?password\1/gi,"type=$1text$1"));this.fakePassword=c.val(a.attr("placeholder")).addClass("placeholder").focus(function(){a.trigger("focus");b(this).hide()});b(a[0].form).submit(function(){c.remove();a.show()})}}};var e=!!("placeholder"in document.createElement("input"));b.fn.placeholder=function(){return e?this:this.each(function(){var a=b(this),c=new d(a);c.show(!0);a.focus(function(){c.hide()});a.blur(function(){c.show(!1)});b.browser.msie&&(b(window).load(function(){a.val()&&a.removeClass("placeholder");c.show(!0)}),a.focus(function(){if(this.value==""){var a=this.createTextRange();a.collapse(!0);a.moveStart("character",0);a.select()}}))})}})(jQuery);
|
||||
|
216
lsp/plugins/tablesort.js
Executable file
216
lsp/plugins/tablesort.js
Executable file
|
@ -0,0 +1,216 @@
|
|||
// Stupid jQuery table plugin.
|
||||
|
||||
|
||||
|
||||
//http://joequery.github.com/Stupid-Table-Plugin/
|
||||
|
||||
|
||||
|
||||
// Call on a table
|
||||
// sortFns: Sort functions for your datatypes.
|
||||
(function($){
|
||||
$.fn.stupidtable = function(sortFns){
|
||||
var table = this; sortFns = sortFns || {};
|
||||
|
||||
// ==================================================== //
|
||||
// Utility functions //
|
||||
// ==================================================== //
|
||||
|
||||
// Merge sort functions with some default sort functions.
|
||||
sortFns = $.extend({}, {
|
||||
"int":function(a,b){ return parseInt(a, 10) - parseInt(b, 10); },
|
||||
"float":function(a,b){ return parseFloat(a) - parseFloat(b); },
|
||||
"string":function(a,b){ if (a<b) return -1; if (a>b) return +1; return 0;}
|
||||
}, sortFns);
|
||||
|
||||
// Array comparison. See http://stackoverflow.com/a/8618383
|
||||
var arrays_equal = function(a,b) { return !!a && !!b && !(a<b || b<a);}
|
||||
|
||||
// Return the resulting indexes of a sort so we can apply
|
||||
// this result elsewhere. This returns an array of index numbers.
|
||||
// return[0] = x means "arr's 0th element is now at x"
|
||||
var sort_map = function(arr, sort_function){
|
||||
var sorted = arr.slice(0).sort(sort_function);
|
||||
var map = [];
|
||||
var index = 0;
|
||||
for(var i=0; i<arr.length; i++){
|
||||
index = $.inArray(arr[i], sorted);
|
||||
|
||||
// If this index is already in the map, look for the next index.
|
||||
// This handles the case of duplicate entries.
|
||||
while($.inArray(index, map) != -1){
|
||||
index++;
|
||||
}
|
||||
map.push(index);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
// Apply a sort map to the array.
|
||||
var apply_sort_map = function(arr, map){
|
||||
var clone = arr.slice(0);
|
||||
for(var i=0; i<map.length; i++){
|
||||
newIndex = map[i];
|
||||
clone[newIndex] = arr[i];
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
|
||||
// Returns true if array is sorted, false otherwise.
|
||||
// Checks for both ascending and descending
|
||||
var is_sorted_array = function(arr, sort_function){
|
||||
var clone = arr.slice(0);
|
||||
var reversed = arr.slice(0).reverse();
|
||||
var sorted = arr.slice(0).sort(sort_function);
|
||||
|
||||
// Check if the array is sorted in either direction.
|
||||
return arrays_equal(clone, sorted) || arrays_equal(reversed, sorted);
|
||||
}
|
||||
|
||||
|
||||
var what_order_sorted = function(data, sf, isa)
|
||||
{
|
||||
var tmp = [data[0], data[data.length - 1]];
|
||||
|
||||
tmp.sort(sf);
|
||||
|
||||
if(data[0] == tmp[0] || !isa)
|
||||
{
|
||||
return 'desc';
|
||||
}else{
|
||||
return 'asc';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ==================================================== //
|
||||
// Begin execution! //
|
||||
// ==================================================== //
|
||||
// Do sorting when THs are clicked
|
||||
|
||||
table.delegate("th:not(.dontsort)", "click", function(){
|
||||
|
||||
if($(this).text().replace(/ /g, '') == '')
|
||||
{
|
||||
// empty header, don't allow sorting
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var trs = table.find("tbody tr");
|
||||
var i = $(this).index();
|
||||
var classes = $(this).attr("class");
|
||||
var type = null;
|
||||
|
||||
if (classes){
|
||||
classes = classes.split(/\s+/);
|
||||
|
||||
for(var j=0; j<classes.length; j++){
|
||||
if(classes[j].search("sort-type-") != -1){
|
||||
type = classes[j].replace('sort-', '');
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(type){
|
||||
type = type.split('-')[1];
|
||||
}
|
||||
else{
|
||||
type = "string";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Don't attempt to sort if no data type
|
||||
//if(!type){return false;}
|
||||
|
||||
|
||||
var sortMethod = sortFns[type];
|
||||
|
||||
|
||||
// Gather the elements for this column
|
||||
column = [];
|
||||
|
||||
// Push either the value of the 'data-order-by' attribute if specified
|
||||
// or just the text() value in this column to column[] for comparison.
|
||||
trs.each(function(index,tr){
|
||||
var e = $(tr).children().eq(i);
|
||||
var order_by = e.attr('data-order-by') || e.text();
|
||||
column.push(order_by);
|
||||
});
|
||||
|
||||
|
||||
// If the column is already sorted, just reverse the order. The sort
|
||||
// map is just reversing the indexes.
|
||||
if(is_sorted_array(column, sortMethod)){
|
||||
column.reverse();
|
||||
var theMap = [];
|
||||
for(var i=column.length-1; i>=0; i--){
|
||||
theMap.push(i);
|
||||
}
|
||||
}else{
|
||||
// Get a sort map and apply to all rows
|
||||
theMap = sort_map(column, sortMethod);
|
||||
}
|
||||
|
||||
|
||||
// remove old sort classes (on this and other columns)
|
||||
$(this).parent().find('th').each(function()
|
||||
{
|
||||
$(this).removeClass('sortasc sortdesc');
|
||||
});
|
||||
|
||||
// what order are we sorting in?
|
||||
var whatorder = what_order_sorted(column, sortMethod, is_sorted_array(column, sortMethod));
|
||||
|
||||
// set new sort class
|
||||
$(this).addClass(whatorder == 'asc' ? 'sortasc' : 'sortdesc');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var sortedTRs = $(apply_sort_map(trs, theMap));
|
||||
|
||||
|
||||
|
||||
// Replace the content of tbody with the sortedTRs. Strangely (and
|
||||
// conveniently!) enough, .append accomplishes this for us.
|
||||
table.find("tbody").append(sortedTRs);
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
// remove th icon if no header text
|
||||
$(this).find('th').each(function()
|
||||
{
|
||||
var hv = $(this).text().replace(/ /g, '');
|
||||
|
||||
if(hv == '')
|
||||
{
|
||||
$(this).css('background-image', 'none');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
})(jQuery);
|
||||
|
||||
|
||||
|
||||
|
||||
$('table.sortable').each(function()
|
||||
{
|
||||
var rows = $(this).find('tbody tr').length;
|
||||
|
||||
if(rows > 1)
|
||||
{
|
||||
$(this).stupidtable();
|
||||
}else{
|
||||
$(this).removeClass('sortable');
|
||||
}
|
||||
});
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue