-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit d70fccb
Showing
95 changed files
with
2,117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
runtime: python27 | ||
api_version: 1 | ||
threadsafe: true | ||
|
||
builtins: | ||
- deferred: on | ||
|
||
handlers: | ||
- url: /css | ||
static_dir: css | ||
|
||
- url: /js | ||
static_dir: js | ||
|
||
- url: /.* | ||
script: mplus.app | ||
|
||
- url: /_ah/queue/deferred | ||
script: google.appengine.ext.deferred.deferred.application | ||
login: admin | ||
|
||
libraries: | ||
- name: numpy | ||
version: "1.6.1" | ||
- name: jinja2 | ||
version: latest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
cron: | ||
- description: "data pull + generate html" | ||
url: /generate_html | ||
schedule: every 4 hours from 00:45 to 23:45 | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
body {background-color: #c4c4c4; | ||
font-family: sans-serif;} | ||
|
||
table { | ||
background:#eee; | ||
max-width:100%; | ||
border-spacing:0; | ||
margin:10px 0; | ||
border:1px solid #ddd; | ||
border-collapse:separate; | ||
*border-collapse:collapsed; | ||
-webkit-box-shadow:0 0 4px rgba(0,0,0,0.10); | ||
-moz-box-shadow:0 0 4px rgba(0,0,0,0.10); | ||
box-shadow:0 0 4px rgba(0,0,0,0.10); | ||
} | ||
table th, | ||
table td { | ||
padding:8px; | ||
line-height:18px; | ||
text-align:left; | ||
border-top:1px solid #ddd; | ||
} | ||
table th { | ||
background:#eea; | ||
background:-webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#eee)); | ||
background:-moz-linear-gradient(top, #f6f6f6, #eee); | ||
text-shadow:0 1px 0 #fff; | ||
font-weight:bold; | ||
vertical-align:bottom; | ||
} | ||
table td { | ||
vertical-align:top; | ||
} | ||
table thead:first-child tr th, | ||
table thead:first-child tr td { | ||
border-top:0; | ||
} | ||
table tbody + tbody { | ||
border-top:2px solid #ddd; | ||
} | ||
table th + th, | ||
table td + td, | ||
table th + td, | ||
table td + th { | ||
border-left:1px solid #ddd; | ||
} | ||
table thead:first-child tr:first-child th, | ||
table tbody:first-child tr:first-child th, | ||
table tbody:first-child tr:first-child td { | ||
border-top:0; | ||
} | ||
|
||
.container{ | ||
display:inline-flex; | ||
flex-wrap:wrap; | ||
} | ||
.flex-direction{ | ||
flex-direction:row; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
th[role=columnheader]:not(.no-sort) { | ||
cursor: pointer; | ||
} | ||
|
||
th[role=columnheader]:not(.no-sort):after { | ||
content: ''; | ||
float: right; | ||
margin-top: 7px; | ||
border-width: 0 4px 4px; | ||
border-style: solid; | ||
border-color: #404040 transparent; | ||
visibility: hidden; | ||
opacity: 0; | ||
-ms-user-select: none; | ||
-webkit-user-select: none; | ||
-moz-user-select: none; | ||
user-select: none; | ||
} | ||
|
||
th[aria-sort=ascending]:not(.no-sort):after { | ||
border-bottom: none; | ||
border-width: 4px 4px 0; | ||
} | ||
|
||
th[aria-sort]:not(.no-sort):after { | ||
visibility: visible; | ||
opacity: 0.4; | ||
} | ||
|
||
th[role=columnheader]:not(.no-sort):hover:after { | ||
visibility: visible; | ||
opacity: 1; | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
indexes: | ||
|
||
# AUTOGENERATED | ||
|
||
# This index.yaml is automatically updated whenever the dev_appserver | ||
# detects that a new type of query is run. If you want to manage the | ||
# index.yaml file manually, remove the above marker line (the line | ||
# saying "# AUTOGENERATED"). If you want to manage some indexes | ||
# manually, move them above the marker line. The index.yaml file is | ||
# automatically uploaded to the admin console when you next deploy | ||
# your application using appcfg.py. | ||
|
||
- kind: Run | ||
properties: | ||
- name: affixes | ||
- name: dungeon | ||
- name: region | ||
- name: pull.date | ||
direction: desc | ||
|
||
- kind: Run | ||
properties: | ||
- name: affixes | ||
- name: pull.date | ||
direction: desc | ||
|
||
- kind: Run | ||
properties: | ||
- name: affixes | ||
- name: region | ||
- name: pull.date | ||
direction: desc | ||
|
||
- kind: Run | ||
properties: | ||
- name: region | ||
- name: pull.date | ||
direction: desc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
// Basic dates in dd/mm/yy or dd-mm-yy format. | ||
// Years can be 4 digits. Days and Months can be 1 or 2 digits. | ||
(function(){ | ||
var parseDate = function(date) { | ||
date = date.replace(/\-/g, '/'); | ||
date = date.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, '$1/$2/$3'); // format before getTime | ||
|
||
return new Date(date).getTime() || -1; | ||
}; | ||
|
||
Tablesort.extend('date', function(item) { | ||
return ( | ||
item.search(/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\.?\,?\s*/i) !== -1 || | ||
item.search(/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/) !== -1 || | ||
item.search(/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i) !== -1 | ||
) && !isNaN(parseDate(item)); | ||
}, function(a, b) { | ||
a = a.toLowerCase(); | ||
b = b.toLowerCase(); | ||
|
||
return parseDate(b) - parseDate(a); | ||
}); | ||
}()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
// Dot separated values. E.g. IP addresses or version numbers. | ||
Tablesort.extend('dotsep', function(item) { | ||
return /^(\d+\.)+\d+$/.test(item); | ||
}, function(a, b) { | ||
a = a.split('.'); | ||
b = b.split('.'); | ||
|
||
for (var i = 0, len = a.length, ai, bi; i < len; i++) { | ||
ai = parseInt(a[i], 10); | ||
bi = parseInt(b[i], 10); | ||
|
||
if (ai === bi) continue; | ||
if (ai > bi) return -1; | ||
if (ai < bi) return 1; | ||
} | ||
|
||
return 0; | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// Filesizes. e.g. '5.35 K', '10 MB', '12.45 GB', or '4.67 TiB' | ||
(function(){ | ||
var compareNumber = function(a, b) { | ||
a = parseFloat(a); | ||
b = parseFloat(b); | ||
|
||
a = isNaN(a) ? 0 : a; | ||
b = isNaN(b) ? 0 : b; | ||
|
||
return a - b; | ||
}, | ||
|
||
cleanNumber = function(i) { | ||
return i.replace(/[^\-?0-9.]/g, ''); | ||
}, | ||
|
||
// Returns suffix multiplier | ||
// Ex. suffix2num('KB') -> 1000 | ||
// Ex. suffix2num('KiB') -> 1024 | ||
suffix2num = function(suffix) { | ||
suffix = suffix.toLowerCase(); | ||
var base = suffix[1] === 'i' ? 1024 : 1000; | ||
|
||
switch(suffix[0]) { | ||
case 'k': | ||
return Math.pow(base, 2); | ||
case 'm': | ||
return Math.pow(base, 3); | ||
case 'g': | ||
return Math.pow(base, 4); | ||
case 't': | ||
return Math.pow(base, 5); | ||
case 'p': | ||
return Math.pow(base, 6); | ||
case 'e': | ||
return Math.pow(base, 7); | ||
case 'z': | ||
return Math.pow(base, 8); | ||
case 'y': | ||
return Math.pow(base, 9); | ||
default: | ||
return base; | ||
} | ||
}, | ||
|
||
// Converts filesize to bytes | ||
// Ex. filesize2num('123 KB') -> 123000 | ||
// Ex. filesize2num('123 KiB') -> 125952 | ||
filesize2num = function(filesize) { | ||
var matches = filesize.match(/^(\d+(\.\d+)?) ?((K|M|G|T|P|E|Z|Y|B$)i?B?)$/i); | ||
|
||
var num = parseFloat(cleanNumber(matches[1])), | ||
suffix = matches[3]; | ||
|
||
return num * suffix2num(suffix); | ||
}; | ||
|
||
Tablesort.extend('filesize', function(item) { | ||
return /^\d+(\.\d+)? ?(K|M|G|T|P|E|Z|Y|B$)i?B?$/i.test(item); | ||
}, function(a, b) { | ||
a = filesize2num(a); | ||
b = filesize2num(b); | ||
|
||
return compareNumber(b, a); | ||
}); | ||
}()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
(function(){ | ||
|
||
Tablesort.extend('monthname', function(item) { | ||
return ( | ||
item.search(/(January|February|March|April|May|June|July|August|September|October|November|December)/i) !== -1 | ||
); | ||
}, function(a, b) { | ||
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; | ||
return monthNames.indexOf(b) - monthNames.indexOf(a); | ||
}); | ||
}()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
(function(){ | ||
var cleanNumber = function(i) { | ||
return i.replace(/[^\-?0-9.]/g, ''); | ||
}, | ||
|
||
compareNumber = function(a, b) { | ||
a = parseFloat(a); | ||
b = parseFloat(b); | ||
|
||
a = isNaN(a) ? 0 : a; | ||
b = isNaN(b) ? 0 : b; | ||
|
||
return a - b; | ||
}; | ||
|
||
Tablesort.extend('number', function(item) { | ||
return item.match(/^[-+]?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/) || // Prefixed currency | ||
item.match(/^[-+]?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/) || // Suffixed currency | ||
item.match(/^[-+]?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/); // Number | ||
}, function(a, b) { | ||
a = cleanNumber(a); | ||
b = cleanNumber(b); | ||
|
||
return compareNumber(b, a); | ||
}); | ||
}()); |
Oops, something went wrong.