summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV.Krishn <vkrishn4@gmail.com>2016-07-12 03:50:11 +0530
committerV.Krishn <vkrishn4@gmail.com>2016-07-12 03:50:11 +0530
commitb4d7161963a4370604aa1e7abc92dec00a5d1826 (patch)
treea7befaff98d6461aa41ee0b213c446429b8ef319
parent6859dc5cfbb0b2ea9f49cf518d00dd816afa0d42 (diff)
downloadaports-ui-master.tar.bz2
/packages/flagged searchableHEADmaster
-rw-r--r--flagged.html42
-rw-r--r--public/js/aports.api.js32
-rw-r--r--public/js/aports.flagged.js187
3 files changed, 248 insertions, 13 deletions
diff --git a/flagged.html b/flagged.html
new file mode 100644
index 0000000..3f1b6f7
--- /dev/null
+++ b/flagged.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+ <title>Alpine Linux aports viewer</title>
+ <link rel="stylesheet" href="public/lib/bootstrap/3.3.5/css/bootstrap.min.css">
+ <link rel="stylesheet" href="public/css/aports.api.css">
+ </head>
+ <body>
+ <div class="container">
+ <div class="page-header"><h3><a href='flagged.html'>Search for packages</a></h3></div>
+
+ <div class="panel-body">
+ <form class="form-inline" role="form" id="search">
+ <div class="form-group">
+ <div class="input-group">
+ <input type="text" class="form-control" id="origin" name="origin" value="" placeholder="Origin" autofocus>
+ <span data-toggle="tooltip" class="input-group-addon cursor-pointer" title="Use _ as wildcards">?</span>
+ </div>
+ </div>
+
+ </form>
+ </div>
+ </div>
+
+ <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+ <script src="public/lib/jquery/1.11.3/jquery.min.js"></script>
+ <!-- Latest compiled and minified JavaScript -->
+ <script src="public/lib/bootstrap/3.3.5/js/bootstrap.min.js"></script>
+
+ <script src="public/lib/util/urlparser.js"></script>
+ <script src="public/lib/util/dt/date.format.js"></script>
+ <script src="public/lib/twbs-pagination/1.2.5/jquery.twbsPagination.min.js"></script>
+
+ <script src="public/js/aports.api.js"></script>
+ <script src="public/js/aports.flagged.js"></script>
+
+ </body>
+</html>
diff --git a/public/js/aports.api.js b/public/js/aports.api.js
index 3d17750..c0bc01d 100644
--- a/public/js/aports.api.js
+++ b/public/js/aports.api.js
@@ -26,7 +26,13 @@ contents = {};
contents.tblHdrs = ['File', 'Package', 'Branch', 'Repository', 'Architecture'];
contents.fields = ['file', 'package', 'branch', 'repo', 'arch'];
contents.class = 'contents';
+
flagged = {};
+flagged.tblHdrs = ['Origin', 'Version', 'New version', 'Branch', 'Repository',
+ 'Maintainer', 'Flag date', 'Message'];
+flagged.fields = ['origin', 'version', 'new_version',
+ 'branch', 'repo', 'maintainer', 'flag_date', 'message'];
+flagged.class = 'flagged';
meta = {};
meta.stats = ['count', 'total-pages', 'per-page', 'total-count',
@@ -34,7 +40,7 @@ meta.stats = ['count', 'total-pages', 'per-page', 'total-count',
link = {};
link.fields = ['self', 'first', 'next', 'last'];
-app = {}
+app = {};
app.urlDef = config.api.baseurl+'/packages';
app.resource = app.resDef = '/search/packages';
app.url = (window.location).toString().split(/\?/)
@@ -43,12 +49,12 @@ if(app.url.length > 1) {
app.res_ = app.url[1].split(/\&/);
app.resource = (app.url[1][0] == '/') ? app.res_[0] : app.resDef;
if((app.url[1][0] == '/')) app.res_.shift();
-}
+};
app.query = (app.res_ && app.res_.length > 0) ? ''+app.res_.join('&') : '';
for (a in config.api.resources) {
if(config.api.resources[a] == app.resource) { break; }
-}
-temp = {}
+};
+temp = {};
asyncReq = function(url, callback, callback2) {
var request = $.ajax({
@@ -63,7 +69,7 @@ temp = {}
success: callback2
});
return request;
- }
+ };
fmtData = function(data, field, type) {
if(data[field] == null) return '';
@@ -92,16 +98,16 @@ temp = {}
var url_ = app.baseurl + '?' + buildReq(u_, v_, packages.fields);
return makeElm( 'a', data[field], {'title':'', 'href':url_} )
}
- }
+ };
if('meta' == type) {
- }
+ };
if('links' == type) {
var text = field;
//if ('last' == field) { text = '&gt;&gt;' }
//if ('next' == field) { text = '&gt;' }
//if ('first' == field) { text = '&lt;&lt;' }
return '<a title="'+'" href="'+data[field]+'">'+text+'</a>'
- }
+ };
return data[field];
};
@@ -125,7 +131,7 @@ temp = {}
}
});
}, 600);
- }
+ };
makeTblRow = function(data, fields, cls, elm, elmWrap) {
var items = [];
@@ -136,7 +142,7 @@ temp = {}
val = fields[n];
}
if(elm) items.push(makeElm(elm, val, {}));
- }
+ };
var val = "\n"+items.join( "\n" );
if(elmWrap != '') return makeElm( elmWrap, val, {'class':cls} );
return val;
@@ -166,7 +172,7 @@ temp = {}
var req_ = items.join("&");
url_ = (url_) ? url_+'&' : '';
return url_+req_;
- }
+ };
fmtDate = function(epoch, fmt) {
fmt = fmt ? fmt : "ddd, mmm dS, yyyy, h:MM TT";
@@ -179,7 +185,7 @@ temp = {}
titleCase = function(string) {
if(string) return string.charAt(0).toUpperCase() + string.slice(1);
- }
+ };
// converted function cntrl:humanBytes(bytes) found here
// https://github.com/clandmeter/aports-turbo/blob/master/controller.lua
@@ -190,7 +196,7 @@ temp = {}
var result = bytes/Math.pow(1024, factor);
var r = Math.floor(result * mult + 0.5) / mult;
return r.toString()+' ' + size[factor];
- }
+ };
/*]]>*/
diff --git a/public/js/aports.flagged.js b/public/js/aports.flagged.js
new file mode 100644
index 0000000..0f623f3
--- /dev/null
+++ b/public/js/aports.flagged.js
@@ -0,0 +1,187 @@
+/*<![CDATA[*/
+
+/**
+ * Copyright (c) 2016 V.Krishn (vkrishn@insteps.net)
+ *
+ * This file is part of "Aports UI";
+ * ----
+ *
+ *
+ */
+
+ fmtData = function(data, field, type) {
+ if(data[field] == null) return '';
+ if('data' == type) {
+ if('version' == field) {
+ return makeElm( 'span', data[field], {'class': 'version text-danger'} );
+ }
+ if('maintainer' == field) { return data[field].split(/\</)[0] }
+ if('origin' == field) {
+ var u_ = [''];
+ var v_ = { 'name': data[field], 'branch': data['branch'],
+ 'arch': data['arch'], 'repo': data['repo'] };
+ var url_ = app.baseurl.replace(/flagged/, 'packages')
+ + '?' + buildReq(u_, v_, packages.fields);
+ return makeElm( 'a', data[field], {'title':'', 'href':url_} )
+ }
+ if('flag_date' == field) { return fmtDate(data[field], "yyyy-mm-dd HH:MM:ss") }
+ if('message' == field) { // TODO
+ var f_ = data['fid'];
+ var m_ = data['message_'];
+ var s_ = makeElm( 'span', '', {'class': 'glyphicon glyphicon-comment'} );
+ var s_ = makeElm( 'a', s_, {'title':'Message', 'href':'#', 'class': 'text-muted'} );
+ return s_;
+ }
+
+
+ };
+ if('included' == type) {
+ };
+ return data[field];
+ };
+
+ set_flagged = function(data) {
+ var included = [];
+ $.each( data.included, function( key, val ) {
+ included[val.id] = val['attributes'];
+ });
+
+ //----- data.data -----
+ var items = []; var fids = [];
+ var h = makeTblRow('', flagged.tblHdrs, 'data', 'th', 'tr');
+ $.each( data.data, function( key, val ) {
+ var fid = val['attributes'].fid;
+ var incs = included[fid];
+ val['attributes'].new_version = incs.new_version;
+ val['attributes'].flag_date = incs.created;
+ val['attributes'].message = '**';
+ val['attributes'].message_ = incs.message;
+ items.push(makeTblRow(val['attributes'], flagged.fields, 'data', 'td', 'tr'));
+ //if(val['attributes'].fid) fids[val['attributes'].fid] = '';
+ });
+/*
+ //set flagged items data
+ var fids_ = []; for(a in fids) { fids_.push(a); }
+ url_ = config.api.baseurl+'/flagged/fid/'+fids_.join(',');
+ asyncReq(url_, 'callback', set_flagged_by_fids);
+*/
+ var tbl = "\n" + h + "\n" + items.join( "\n" );
+ $( "<table/>", {
+ "id": "flagged",
+ "class": "flagged packages sortable",
+ //"class": "table table-striped table-bordered table-condensed",
+ html: tbl
+ }).appendTo( "body .container" );
+ //setTimeout(function() { sortables_init(); }, 1600);
+// flagged_ = document.getElementById('flagged');
+// flagged_.onmouseover = flaggedOver;
+
+ //----- data.links -----
+ var links = [];
+ links.push( makeTblRow(data.links, link.fields, 'links', 'td', 'tr') );
+ var tbl = links.join( "\n" );
+ $( "<div/>", {
+ "id": "api-active-pager",
+ "class": "packages flagged page-pager",
+ html: "\n"
+ }).appendTo( "body .container" );
+ makePgn(data);
+
+ //----- data.meta -----
+ var stats = [];
+ var h = makeTblRow('', meta.stats, 'meta', 'th', 'tr');
+ stats.push( makeTblRow(data.meta, meta.stats, 'meta', 'td', 'tr') );
+ var tbl = "\n" + h + "\n" + stats.join( "\n" );
+ $( "<table/>", {
+ "class": "packages flagged meta",
+ html: tbl
+ }).appendTo( "body .container" );
+
+ //----- data.meta.search -----
+ var stats = []; var f = [];
+ for (a in data.meta.search) f.push(a);
+ var h = makeTblRow('', f, 'meta', 'th', 'tr');
+ stats.push( makeTblRow(data.meta.search, f, 'meta', 'td', 'tr') );
+ var tbl = "\n" + h + "\n" + stats.join( "\n" );
+ $( "<table/>", {
+ "class": "packages flagged meta-search",
+ html: tbl
+ }).appendTo( "body .container" );
+
+ };
+/*
+ set_flagged_by_fids = function(data) {
+ //----- data.data -----
+ flagged.onpage = [];
+ $.each( data.data, function( key, val ) {
+ if(val.id) flagged.onpage[val.id] = fmtDate(val['attributes'].created, "yyyy-mm-dd HH:MM:ss");
+ });
+ };
+*/
+ flaggedOver = function(e) {
+ e.preventDefault(); obj = e.target;
+ if(obj.tagName != 'A') return;
+ if( ! $(obj).hasClass('text-danger') ) return;
+ var fid = parseInt((/[\d]+$/i).exec(obj.className));
+ obj.title = 'Flagged: '+flagged.onpage[fid];
+ }
+
+ set_categories = function(data) {
+ //----- data.data -----
+ var items = [];
+ items.push(makeElm('option', '', {}) );
+ $.each( data.data.branch, function( key, val ) {
+ items.push(makeElm('option', val, {}) );
+ });
+ var opt1 = (makeElm('select', items.join( "\n" ), {
+ 'name':'branch', 'data-placeholder':'Branch',
+ 'class':'form-control chosen-select', 'id':'branch'
+ }));
+ var items = [];
+ items.push(makeElm('option', '', {}) );
+ $.each( data.data.repo, function( key, val ) {
+ items.push(makeElm('option', val, {}) );
+ });
+ var opt2 = (makeElm('select', items.join( "\n" ), {
+ 'name':'repo', 'data-placeholder':'Repository',
+ 'class':'form-control chosen-select', 'id':'repo'
+ }));
+ attr = {'class': 'form-group'}
+ var html = "\n"+(makeElm('div', opt1, attr))
+ +"\n"+(makeElm('div', opt2, attr))
+ $( html ).appendTo( "body #search" );
+ };
+
+ set_maintainer_names = function(data) {
+ //----- data.data -----
+ var items = [];
+ items.push(makeElm('option', '', {}) );
+ $.each( data.data, function( key, val ) {
+ items.push( makeTblRow(val['attributes'], ['name'], 'data', 'option', '') );
+ });
+ var opt4 = (makeElm('select', items.join( "\n" ), {
+ 'name':'maintainer', 'data-placeholder':'Branch',
+ 'class':'form-control chosen-select', 'id':'maintainer'
+ }));
+ var btn = (makeElm('button', 'Search', {
+ 'type':'submit', 'class':'btn btn-primary'
+ }));
+ attr = {'class': 'form-group'};
+ var html = "\n"+(makeElm('div', opt4, attr))+"\n"+btn;
+ $( html ).appendTo( "body #search" );
+ };
+
+ query = (app.query) ? '&'+app.query : '';
+ url = config.api.baseurl+'/packages/flagged'+''+query;
+ asyncReq(url, 'callback', set_flagged);
+
+ url = config.api.baseurl+'/categories';
+ asyncReq(url, 'callback', set_categories);
+
+ url = config.api.baseurl+'/maintainer/names';
+ asyncReq(url, 'callback', set_maintainer_names);
+
+
+/*]]>*/
+
+