Skip to content
Snippets Groups Projects
Commit 48d6d2bc authored by Christian Pointner's avatar Christian Pointner
Browse files

initial version of the simple web-ui

parent 2fd94f85
No related branches found
No related tags found
No related merge requests found
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -3,5 +3,7 @@
BASE_D=$(realpath "${BASH_SOURCE%/*}/")
export AURA_TANK_DEBUG=1
export AURA_TANK_LISTEN=127.0.0.1:8080
mkdir /run/user/1000/aura-tank
"$BASE_D/tank" --config "$BASE_D/cmd/tank/sample-cfg.yaml" "$@"
"$BASE_D/tank" --config "$BASE_D/sample-cfg.yaml" run
......@@ -4,10 +4,10 @@ store:
format: flac
sample-rate: 44100
db:
# type: "mysql"
# connection: "tank:aura@tcp(127.0.0.1:3306)/tank?charset=utf8&parseTime=True&loc=Local"
type: "postgres"
connection: "host=127.0.0.1 port=5432 user=tank dbname=tank password=aura sslmode=disable"
type: "mysql"
connection: "tank:aura@tcp(127.0.0.1:3306)/tank?charset=utf8&parseTime=True&loc=Local"
# type: "postgres"
# connection: "host=127.0.0.1 port=5432 user=tank dbname=tank password=aura sslmode=disable"
importer:
temp-path: "/tmp"
......
html{box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{box-sizing:inherit}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
/*!
* Bootstrap Reboot v4.1.1 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -12,3 +12,7 @@ body, container {
#header h1 {
font-weight: bold;
}
#error {
display: none;
}
......@@ -11,21 +11,58 @@
</head>
<body>
<div class="container">
<div id="header" class="row">
<div class="col-2"></div>
<div class="col-8">
<h1>AURA Tank</h1>
<h3><i>Import & Playlist Daemon</i></h3>
<p><a href="https://gitlab.servus.at/autoradio/tank" target="_blank">https://gitlab.servus.at/autoradio/tank</a></p>
<div id="header">
<div class="row">
<div class="col-2"></div>
<div class="col-8">
<h1>AURA Tank</h1>
<h3><i>Import & Playlist Daemon</i></h3>
<p><a href="https://gitlab.servus.at/autoradio/tank" target="_blank">https://gitlab.servus.at/autoradio/tank</a></p>
</div>
<div class="col-2"></div>
</div>
<div class="row">
<div class="col-2"></div>
<div class="col-8">
you might want to take a look at the <a href="/api/v1/" class="badge badge-primary">API</a>
</div>
<div class="col-2"></div>
</div>
<div class="col-2"></div>
</div>
<div id="body" class="row">
<div class="col-2"></div>
<div class="col-8">
nothing to see here... you might want to take a look at the <a href="/api/v1/" class="badge badge-primary">API</a>
<div id="body">
<div class="row">
<div class="col-2"></div>
<div class="col-8">
<div id="error">
<div id="error-message" class="alert alert-danger" role="alert">
</div>
</div>
</div>
<div class="col-2"></div>
</div>
<div class="row">
<div class="col-2"></div>
<div class="col-8">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">Group</span>
</div>
<select class="custom-select" id="groupSelect">
</select>
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button">Add</button>
</div>
</div>
</div>
<div class="col-2"></div>
</div>
<div class="col-2"></div>
</div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/main.js"></script>
<script type="text/javascript">
main_init();
</script>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
'use strict';
var main = main || {};
/***************** models *****************/
var groups = null;
main.GroupList = function(d) {
this.$this = $(this);
this.groups = [];
};
main.GroupList.prototype.fetch = function() {
var self = this;
self.last_error = null;
$.getJSON( "/api/v1/groups", function(data) {
self.groups = [];
for(var key in data.results) {
self.groups.push(new main.Group(data.results[key]));
}
self.groups.sort(function(a, b) {
if(a.name < b.name) return -1;
if(a.name > b.name) return 1;
return 0
});
self.$this.trigger('update');
}).fail(function(jqxhr, textStatus, error) {
if(error == "") {
self.error("connection problem");
} else {
self.error(error);
}
});
};
main.GroupList.prototype.error = function(error) {
this.last_error = error;
this.$this.trigger('error');
};
main.Group = function(inst) {
this.name = inst.name;
this.created = inst.created;
this.updated = inst.updated;
};
/***************** views *****************/
var groupListView = null;
main.GroupListView = function(model) {
this.model = model;
this.groupViews = [];
var self = this;
$(this.model).on('update', function() {
self.render_list();
});
$(this.model).on('error', function() {
self.render_error();
});
};
main.GroupListView.prototype.render_list = function() {
$('#error').hide();
var list = $('#groupSelect');
$('option', list).remove();
for (var i = 0; i < this.model.groups.length; i++) {
list.append($('<option>', {value:this.model.groups[i].name, text:this.model.groups[i].name}));
}
};
main.GroupListView.prototype.render_error = function() {
$('#error-message').text(this.model.last_error)
$('#error').show();
};
/***************** controller *****************/
function main_init() {
groups = new main.GroupList();
groupListView = new main.GroupListView(groups);
groups.fetch();
}
//go:generate go-bindata-assetfs ui/ ui/css/
//go:generate go-bindata-assetfs ui/ ui/css/ ui/js
//
// tank
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment