' + fpgaResources + '', 5); - }, 0); - } + common.FPGAResources.pios = findFPGAResources(/PIOs\s+([0-9]+)\s/g, stdout, common.FPGAResources.pios); + common.FPGAResources.plbs = findFPGAResources(/PLBs\s+([0-9]+)\s/g, stdout, common.FPGAResources.plbs); + common.FPGAResources.brams = findFPGAResources(/BRAMs\s+([0-9]+)\s/g, stdout, common.FPGAResources.brams); + utils.rootScopeSafeApply(); } } }); } + function findFPGAResources(pattern, output, previousValue) { + var match = pattern.exec(output); + return (match && match[1]) ? match[1] : previousValue; + } + function mapCodeModules(code) { var codelines = code.split('\n'); var match, module = { params: [] }, modules = []; @@ -828,18 +832,7 @@ angular.module('icestudio') updateProgress(gettextCatalog.getString('Installation completed'), 100); closeToolchainAlert(); alertify.success(gettextCatalog.getString('Toolchain installed')); - var message = gettextCatalog.getString('Click here to setup the drivers'); - if (!infoAlert) { - setTimeout(function() { - infoAlert = alertify.message(message, 30); - infoAlert.callback = function(isClicked) { - infoAlert = null; - if (isClicked) { - $rootScope.$broadcast('enableDrivers'); - } - }; - }, 1000); - } + setupDriversAlert(); } else { closeToolchainAlert(); @@ -850,6 +843,24 @@ angular.module('icestudio') }); } + function setupDriversAlert() { + var message = gettextCatalog.getString('Click here to setup the drivers'); + if (!infoAlert) { + setTimeout(function() { + infoAlert = alertify.message(message, 30); + infoAlert.callback = function(isClicked) { + infoAlert = null; + if (isClicked) { + if (resultAlert) { + resultAlert.dismiss(false); + } + $rootScope.$broadcast('enableDrivers'); + } + }; + }, 1000); + } + } + function updateProgress(message, value) { angular.element('#progress-message') .text(message); diff --git a/app/styles/design.css b/app/styles/design.css index c18dd7016..d02ed0b2f 100644 --- a/app/styles/design.css +++ b/app/styles/design.css @@ -18,13 +18,14 @@ position: absolute; bottom: 0; width: 100%; - min-height: 45px; - padding: 4px; + min-height: 47px; border-top: 1px solid #d5dadd; z-index: 1501; } .breadcrumbs-container { + display: flex; + align-items: center; flex: 1; } @@ -34,6 +35,14 @@ padding: 0 15px; } +.fpga-resources { + color: #777; +} + +.fpga-resources span { + margin-right: 20px; +} + .breadcrumb { margin: 0; background-color: #f5f6f7; diff --git a/app/styles/main.css b/app/styles/main.css index a322eb26f..6f050f2dc 100644 --- a/app/styles/main.css +++ b/app/styles/main.css @@ -70,6 +70,24 @@ body { animation-duration: 10ms; } +.ajs-header { + display: none; +} + +.ajs-footer { + background: white !important; + border-top: none !important; +} + + +input:focus { + outline: #ccc solid 1px; +} + +button:focus { + outline: #ccc solid 2px; +} + ::selection { color: #fff; background: #3593d2; diff --git a/app/styles/menu.css b/app/styles/menu.css index 3f834a4c4..15e5c6f8e 100644 --- a/app/styles/menu.css +++ b/app/styles/menu.css @@ -110,3 +110,28 @@ .navbar-default .navbar-nav>li>a { color: #333 !important; } + +.marker { + float: left; + width: 8px; + height: 8px; + margin-top: 6px; + margin-right: 12px; + border-radius: 1px; +} +.marker-yellow { + background-color: #f6f688; +} +.marker-orange { + background-color: #f8e5a0; +} +.marker-blue { + background-color: #c0dfeb; +} +.marker-gray { + background-color: #ddd; +} + +.disabled > a { + cursor: default !important; +} diff --git a/app/views/design.html b/app/views/design.html index ff5309b64..7f268e4a9 100644 --- a/app/views/design.html +++ b/app/views/design.html @@ -1,11 +1,11 @@