Skip to content

Commit c905f50

Browse files
committed
rebuild port selection
1 parent d37a065 commit c905f50

File tree

3 files changed

+32
-41
lines changed

3 files changed

+32
-41
lines changed

app/server.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ function pioRoot(){
416416
app.get('/pio/:env', function (req, res) {
417417
params=['run'];
418418
if (req.params.env!='Default')
419-
params.push('-e'+req.params.env);
419+
params.push('-e',req.params.env);
420420
pioRoot()
421421
.then(root=>
422422
pio.run(params,res)
@@ -431,15 +431,14 @@ function atob(b64string){
431431
return new Buffer(b64string, 'base64');
432432
}
433433

434-
app.get('/pio-flash/:port', function (req, res) {
434+
app.get('/pio/:env/:port', function (req, res) {
435435
var port=atob(decodeURI(req.params.port)).toString();
436436
var params=['run','-t','upload'];
437-
var close=false;
438-
if (port[0]=='/'){
439-
params.push('--upload-port')
440-
params.push(port)
441-
close=true;
442-
}
437+
var close=port!='Default';
438+
if (req.params.env!='Default')
439+
params.push('-e',req.params.env);
440+
if (close)
441+
params.push('--upload-port',port)
443442
(close&&serial_enabled?serial.close(port):Promise.resolve(true))
444443
.then(pioRoot)
445444
.then(root=>{

static/index.html

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -371,25 +371,25 @@ <h5 class="modal-title" id="mct-restoreModalLabel">Choose desired configuration
371371
<li class="nav-item mr-sm-2 p-1">
372372
<div class="btn-group">
373373
<button type="button" class="btn btn-secondary mct-pio-compile disabled" title="Compile Marlin with PlatformIO">Compile</button>
374-
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" title="select enviroment for compilation" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
374+
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" title="Select enviroment for compilation" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
375375
<span class="sr-only">Toggle Dropdown</span>
376376
</button>
377377
<div class="dropdown-menu mct-pio-env">
378378
<a class="dropdown-item bg-info" href="#">Default</a>
379379
<div class="dropdown-divider"></div>
380380
</div>
381381
</div>
382-
<button type="button" class="btn btn-secondary mct-pio-flash disabled" data-toggle="toggle" title="Upload firmware with PlatformIO to selected port">Flash</button>
383-
<div class="dropdown d-inline-block mct-ports" title="Select port for PlatformIO">
384-
<a class="btn btn-secondary dropdown-toggle" href="#" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
385-
Auto port
386-
</a>
387-
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
388-
<template class="_ports">
389-
<a class="dropdown-item" href="#"></a>
390-
</template>
382+
383+
<div class="btn-group">
384+
<button type="button" class="btn btn-secondary mct-pio-flash disabled" title="Upload firmware with PlatformIO to selected port">Flash</button>
385+
<button type="button" class="btn btn-secondary mct-pio-ports dropdown-toggle dropdown-toggle-split" title="Select port for your PlatformIO device" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
386+
<span class="sr-only">Toggle Dropdown</span>
387+
</button>
388+
<div class="dropdown-menu mct-ports">
389+
<a class="dropdown-item bg-info" href="#">Default</a>
390+
<div class="dropdown-divider"></div>
391391
</div>
392-
</div>
392+
</div>
393393
</li>
394394
<li class="nav-item mr-sm-2 p-1">
395395
<button type="button" class="btn btn-secondary mct-consoles" data-toggle="toggle" title="Manager of serial consoles">Consoles</button>

static/main.js

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -620,21 +620,14 @@ $(function(){
620620
// consoles menu
621621
$('.mct-consoles').on('click',function(){ window.open('consoles.html','_blank') });
622622
// ports dropdown menu management
623-
(function(){
624-
var ports=$('.mct-ports')
625-
var title=ports.find('a.btn')
626-
ports.find('.dropdown-menu').on('click',function(ev){
627-
title.text($(ev.target).text());
628-
})
629-
623+
(function(ports){
630624
function createPort(p){
631-
_add($('template._ports'))
632-
.text(p.comName)
625+
ports.append(`<a class="dropdown-item" href="#">${p.comName}</a>`)
633626
}
634627
function removePort(p){
635-
ports.find('.dropdown-item').filter(function(i,el){ return $(el).text()==p.comName}).remove()
636-
if(title.text()==p.comName)
637-
title.text('Auto port');
628+
ports.find('a').filter(function(i,el){ return $(el).text()==p.comName}).remove()
629+
if (!ports.find('.bg-info').length)
630+
ports.find('a').eq(0).addClass('bg-info')
638631
}
639632
var source = new EventSource("/ports");
640633
source.addEventListener('list', function(event) {
@@ -645,12 +638,10 @@ $(function(){
645638
});
646639
});
647640
source.addEventListener('error', function(event) {
648-
$('.mct-consoles').attr('disabled','')
649-
$('.mct-ports a').addClass('disabled')
641+
$('.mct-consoles,.mct-pio-ports').attr('disabled','')
650642
});
651643
source.addEventListener('open', function(event) {
652-
$('.mct-consoles').removeAttr('disabled')
653-
$('.mct-ports a').removeClass('disabled')
644+
$('.mct-consoles,.mct-pio-ports').removeAttr('disabled')
654645
});
655646
source.addEventListener('created', function(event) {
656647
var port= JSON.parse(event.data);
@@ -684,7 +675,7 @@ $(function(){
684675
}
685676
lastChanged='';
686677
});
687-
}());
678+
}($('.mct-ports')));
688679
// info menu
689680
(function(btn){
690681
var base=$('#mct-log-modal');
@@ -711,14 +702,14 @@ $(function(){
711702
}
712703
proc.log=function(text){ p.append(text); p.prop('scrollTop',p.prop('scrollHeight')); }
713704
var cmd;
714-
$('.mct-pio-compile, .mct-pio-flash, .mct-ports a')
705+
$('.mct-pio-compile, .mct-pio-flash, .mct-pio-ports')
715706
.toggleClass('disabled',!config.pio)
716707
.attr(!config.pio?'title':'null','PlatformIO not installed')
717708
.eq(0).on('click',function(){
718-
cmd=stream_cmd('/pio/'+$('.mct-pio-env .bg-info').text(),proc)()
709+
cmd=stream_cmd('/pio/'+$('.mct-pio-env .bg-info').text().trim(),proc)()
719710
}).end()
720711
.eq(1).on('click',function(){
721-
cmd=stream_cmd('/pio-flash/'+encodeURI(btoa($('.mct-ports a.btn').text().trim())),proc)()
712+
cmd=stream_cmd('/pio/'+$('.mct-pio-env .bg-info').text().trim()+'/'+encodeURI(btoa($('.mct-ports .bg-info').text().trim())),proc)()
722713
}).end()
723714
r.on('hide.bs.modal',function(){
724715
cmd.abort();
@@ -729,8 +720,9 @@ $(function(){
729720
$.each(config.env||[],function(i,name){
730721
$('.mct-pio-env').append(`<a class="dropdown-item" href="#">${name}</a>`)
731722
})
732-
$('.mct-pio-env').on('click',function(ev){
733-
$(ev.target).addClass('bg-info').siblings().removeClass('bg-info')
723+
$('.mct-pio-env,.mct-ports').on('click',function(ev){
724+
if ($(ev.target).hasClass('dropdown-item'))
725+
$(ev.target).addClass('bg-info').siblings().removeClass('bg-info')
734726
})
735727
}());
736728
// issue menu

0 commit comments

Comments
 (0)