UNPKG

silk-gui

Version:

GUI for developers and Node OS

242 lines (212 loc) 5.59 kB
<!DOCTYPE html> <html> <head> <title>App Manager</title> <link href="/bc/materialize/bin/materialize.css" rel="stylesheet"> <style> body { margin-bottom: 100px; } button { font-size: 16px; color: white; box-sizing: border-box; height: 40px; padding: 10px; background-color: purple; border: none; cursor: pointer; } h3, .btn-flat { margin-left: 50px; } #manager h2 { font-weight: 300; color: #FFF; background-color: #800080; position: absolute; top: 0px; left: 0px; margin: 0px; width: 100%; padding: 15px; box-sizing: border-box; } #manager ul { margin-left: 50px; } #manager li, #installer { list-style: none; margin-bottom: 12px; background-color: #eeeeee; width: 300px; position: relative; height: 50px; box-sizing: border-box; } #manager li span, #installer p { vertical-align: middle; padding-left: 10px; } #manager li img { vertical-align: middle; max-height: 40px; max-width: 40px; margin-top: 5px; margin-left: 5px; } #manager li button { opacity: 0; position: absolute; right: 0px; top: 0px; box-sizing: border-box; height: 50px; width: 30px; border: 0px; background-color: #c62828; color: #FFF; font-size: 16px; text-align: center; -webkit-transition: .3s all; transition: .15s all; } #manager li:hover button { opacity: 1; } #installer { display: none; margin-left: 50px; } #installer p { margin: 5px; line-height: 1; } </style> </head> <body> <div id="manager"> <h3>My Apps</h3> <ul> <li v-for="app in apps"><img :src="app.icon"><span>{{app.name}}</span> <button v-on="click : remove(app)">&times;</button> </li> </ul> </div> <div id="installer"> <p></p> <div id="status"></div> </div> <a id="add" class="btn-flat light-green darken-1 modal-trigger" href="#install-modal">Install</a> <button class="btn-flat" id="reload">Reload</button> <div id="install-modal" class="modal"> <div class="modal-content"> <h4>Install</h4> <p> <div class="input-field col s6"> <input placeholder="Github User/Repo or path to local app" id="first_name" type="text" class="validate"> <label for="first_name">App</label> </div> </p> </div> <div class="modal-footer"> <a href="#!" class="next modal-action modal-close waves-effect waves-green btn-flat">Next</a> <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat">Cancel</a> </div> </div> <script src="/eureca.js"></script> <script src="/bc/vue"></script> <script src="/bc/jquery"></script> <script src="/bc/materialize/bin/materialize.js"></script> <script> var apps = []; var manager; var server; var eurecaClient = new Eureca.Client({ transport: 'sockjs' }); $("body").ready(function () { manager = new Vue({ el: "#manager", data: { apps: apps }, methods: { remove: function (app) { // don't uninstall included apps var answer = confirm('This app is included with Silk GUI \n Are you sure you want to remove it?'); if (answer === false) { return; } server("apps/remove", { folder: app.folder, name: app.title }).onReady(function (err, message) { if (err) { alert(err); $("#status").css("display", "none"); $("#status .progress").text(""); return; } $("#status .progress").text(message); if (message === " ") { $("#status .progress").text("Removed"); setTimeout(function () { $("#status").css("display", "none"); location.reload(); }, 500); } }); console.dir(app); } } }); eurecaClient.ready(function (serverProxy) { server = serverProxy; serverProxy.list().onReady(function (data) { console.log("ready"); var newData = { apps: data }; data.forEach(function (app) { if (app.icon.indexOf('/icon/') === 0) { app.icon = "//localhost:3000" + app.icon; } }); manager.$data = newData; console.dir(data); }); }); $("#reload").click(function () { location.reload(); }); $('#add').leanModal({ dismissible: false, complete: function () { // the click handler gets removed when the modal closes $('#install-modal .next').click(install); } }); function install() { var path = $('#install-modal input').val().trim(); $('#install-modal input').val(''); console.log('app name ', path); $('#installer').css('display', 'block'); $('#installer p').text(path); // alert('is github url'); methods.listen("apps/install", { url: path }, function (err, data) { if (err) { alert(err); return location.reload(); } if (data === " ") { alert('finished installing app'); return location.reload(); } else { $("#status").text(data); } }); } $('#install-modal .next').click(install); }); </script> </body> </html>