blob: 5439e75ee32d2ba7ff34400877ca1c5ab9940427 [file] [log] [blame]
mixin hyperlevel(obj, name)
- var value = obj[name];
span.nobr.icn(class="l" + value.charAt(0),title=value)
= value
mixin hyperscopes(obj, name)
- var value = obj[name];
each s in value
span.icn(class=s.Resolution,class=s.State,class=s['Resolution-Reason']?s['Resolution-Reason'].replace(/\s/g,''):null, title=[s['Planned-Release'],s.State,s.Resolution,s['Resolution-Reason']].join(' - '))
= s['Planned-Release']
span.extra
|
= s.Resolution ? s.Resolution : s.State
if s['Resolution-Reason']
|
= s['Resolution-Reason']
mixin iconCVSS(obj,name)
if obj
- var vect=["accessVector","accessComplexity", "authentication","attackVector","attackComplexity","privilegesRequired","userInteraction","scope","confidentialityImpact","integrityImpact","availabilityImpact"]
each v in vect
if obj[v]
b.icn.lbl(class=obj[v],for=v,title=v + ': ' + obj[v])=obj[v][0]
mixin hyperCVSS(obj,name)
- var value = obj[name]
- var s = parseFloat(value)
if isNaN(s) || s<0 || s>10
=value
else if s == 0
b.rnd.tag-s.NONE=value
else if value <= 3.9
b.rnd.tag-s.LOW=value
else if value <= 6.9
b.rnd.tag-s.MEDIUM=value
else if value <= 8.9
b.rnd.tag-s.HIGH= value
else if value <=10
b.rnd.tag-s.CRITICAL=value
else
=value
mixin hypersize(obj, name)
if(obj[name])
= (function(a,b,c,d,e){return (b=Math,c=b.log,d=1024,e=c(a)/c(d)|0,a/b.pow(d,e)).toFixed(2)+' '+(e?'KMGTPEZY'[--e]+'B':'Bytes')})(obj[name])
mixin hyperdate(obj, name)
- var v = false;
- var value = obj[name];
- if (value instanceof Date) { v = value;} else {
- var timestamp = Date.parse(value);
- v = isNaN(timestamp) ? false : new Date(timestamp)
- }
if v
- var nowt = Date.now();
- var vtime = v.getTime();
- var delta = nowt-vtime;
- var hidet = '';
- if (Math.abs(delta) > 43000000) { hidet = 'hid';}
- var cl = "date y"+ (nowt > vtime ? Math.floor(Math.log2((delta/31536000000)+1)*2) : 'f tag-s');
span.nobr(class=cl, title=v.toString())
= v.toISOString().slice(0,10)
span.nobr(class=hidet)
|
= v.toLocaleTimeString("de-US", {hour:"2-digit", minute:"2-digit"})
else
= obj[name]
mixin hyperLink(value, url, mid, suffix, target, cls, onclick)
a(class=cls,href=(url?url:'') + encodeURIComponent(mid) + (suffix ? suffix : ''),target=target,onclick=onclick)=value
mixin hyperVal(obj, name)
- var value = (obj !== Object(obj) || Array.isArray(obj))? obj : obj[name];
if value instanceof Date || name == 'date' || name == 'updatedAt' || name == 'createdAt'
+hyperdate(obj, name)
else
case name
when 'size'
+hypersize(obj, name)
when 'level'
+hyperlevel(obj, name)
when 'CVSS'
+hyperCVSS(obj, name)
when 'scopes'
+hyperscopes(obj, name)
default
if fields && fields[name]
- var cls = fields[name].class ? fields[name].class : '';
- var onlick = fields[name].onclick ? fields[name].onclick : false;
if fields[name].xref && fields[name].xref.class
- cls = cls + obj[fields[name].xref.class]
if Array.isArray(fields[name].links) && (value != '')
each hv, hi in fields[name].links
+hyperLink(value,hv.href,value,hv.hrefSuffix,hv.target ? hv.target: (hv.href && hv.href.startsWith('http')?"_blank":false),hv.class,hv.onclick)
else if fields[name].href != undefined
- var href = fields[name].href;
- var hrefSuffix = fields[name].hrefSuffix;
- var target = (fields[name].target ? fields[name].target : (href && href.startsWith('http')?"_blank":false))
if fields[name].xref && fields[name].xref.href
//- href = href + obj[fields[name].xref.href] + (hrefSuffix? hrefSuffix:'');
+hyperLink(value,href,obj[fields[name].xref.href],hrefSuffix,target,cls,onclick)
//-a(target=target class=cls href=href onclick=onclick)=value
else
if Array.isArray(value)
each v, i in value
+hyperVal(v,name)
//- ahref = href+v;
//- a(target=(ahref.startsWith('http')?"_blank":false) class=cls, href=ahref)=v
|
else
//- href = href+(value ? value : '')+ (hrefSuffix? hrefSuffix:'');
+hyperLink(value,href, value, hrefSuffix,target,cls,onclick)
//a(target=target class=cls href=href onclick=onclick)=value
else
if Array.isArray(value)
each v, i in value
+hyperVal(v, name)
|
else
if (typeof value === 'string') && value.match(/^[a-zA-Z0-9\-_]{1,30}$/) || typeof value === 'boolean'
if(fields[name].icons && fields[name].icons[value])
- cls = (cls ? cls + ' ' : '')+ 'vgi-'+fields[name].icons[value]
else
- cls = (cls ? cls + ' ' : '')+ value
span(class=cls title=value onclick=onlick)=value
else
=value
mixin table(docs, columns, showCheckboxes, id)
- tTime = new Date()
if !docs || docs.length == 0
p
b No items found!
else
table.tbl.wht.sortable(id=id)
if fields
colgroup
if showCheckboxes
col
each column in columns
col(class=fields[column]? fields[column].class:'')
thead.hig
tr
if showCheckboxes
th(data-sort-method='none')
input(type='checkbox',onClick='var cs = document.getElementsByClassName("rowCheck");for(c=0;c<cs.length;c++){cs[c].checked=this.checked}')
each column in columns
if pages > 1
th.sortth.nobr.pointer
label.block.pointer(for='sort'+column,class=(query ? (query['sort'] == column ? 'sortup': (query['sort'] == "-" + column ? 'sortdown' : '')): null))=column
else
case column
when 'CVSS'
th.pointer(data-sort-method='number') CVSS
default
th=column
tbody
each doc, i in docs
- rowCount ++
tr
if showCheckboxes
td.rowCheckLabel
label.rowCheckLabel
input.rowCheck(type='checkbox', name=columns[0],value=doc[columns[0]])
each column in columns
td(class=column)
+hyperVal(doc, column)
mixin tablesort
script(src=conf.basedir + 'js/tablesort.min.js')
script.
var tables = document.getElementsByClassName('sortable')
for (var i = 0; i < tables.length; i++) {
new Tablesort(tables[i]);
}
mixin asis(x)
|!{x}