1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2025-12-15 15:03:07 +01:00

intermediate: cibuild for nodemcu

This commit is contained in:
andreas
2023-10-06 21:36:20 +02:00
parent 10058cfeec
commit 82c98eec15
4 changed files with 109 additions and 14 deletions

View File

@@ -76,7 +76,7 @@ class PipelineInfo{
setVisible('error',currentPipeline.error!==undefined,true);
let values={};
fillValues(values,['configError','environment']);
if (values.textContent) {
if (values.configError) {
enableEl('start',false);
return;
}
@@ -265,9 +265,12 @@ class PipelineInfo{
const buildSelector=(parent,config,name,current,callback)=>{
let rep=new RegExp("[^"+SEPARATOR+"]*","g");
let level=name.replace(rep,'');
let frame=addEl('div','selector level'+level.length,parent);
let frame=addEl('div','selector level'+level.length+' t'+config.type,parent);
frame.setAttribute(PATH_ATTR,name);
let title=addEl('div','title',frame,config.label);
let title=addEl('div','title t'+config.type,frame,config.label);
if (config.type === 'frame'){
callback(config.children,true,true,undefined,true);
}
if (config.type === 'select') {
if (!config.values) return;
config.values.forEach((v) => {
@@ -280,10 +283,15 @@ class PipelineInfo{
re.setAttribute('type', 'radio');
re.setAttribute('name', name);
re.addEventListener('change', (ev) => callback(v.children,key,val,v.resource,false));
if (v.description && v.url) {
let lnk = addEl('a', 'radioDescription', ef, v.description);
lnk.setAttribute('href', v.url);
lnk.setAttribute('target', '_');
if (v.description){
if(v.url) {
let lnk = addEl('a', 'radioDescription', ef, v.description);
lnk.setAttribute('href', v.url);
lnk.setAttribute('target', '_');
}
else{
let de=addEl('span','radioDescription',ef,v.description);
}
}
if (key == current) {
re.setAttribute('checked','checked');
@@ -291,6 +299,46 @@ class PipelineInfo{
}
});
}
if (config.type === 'dropdown'){
if (!config.values) return;
const valForIdx=(idx)=>{
let v=config.values[idx];
if (typeof(v) !== 'object'){
v={label:v,value:v};
}
if (v.value === null) v.value=undefined;
if (v.key === null) v.key=undefined;
return v;
};
const resourceForVal=(v)=>{
if (v === undefined) return undefined;
let key=getVal(v,KEY_NAMES);
if (key === undefined) return key;
let resource=v.resource;
if (! resource && config.resource && config.resource.match(/:$/)){
resource=config.resource+key;
}
return resource;
};
let sel=addEl('select','t'+config.type,frame);
for (let idx=0;idx<config.values.length;idx++){
let v=valForIdx(idx);
let opt=addEl('option','',sel,v.label);
let key=getVal(v,KEY_NAMES);
if (key === null) key=undefined;
opt.setAttribute('value',idx);
if (key == current){
opt.setAttribute('selected',true);
callback(undefined,key,key,resourceForVal(v),true);
}
};
sel.addEventListener('change',(ev)=>{
let resource;
let v=valForIdx(ev.target.value);
if (! v) return;
callback(undefined,getVal(v,KEY_NAMES), v.value,resourceForVal(v),false);
});
}
return frame;
}
const removeSelectors=(prefix,removeValues)=>{
@@ -323,7 +371,8 @@ class PipelineInfo{
let frame=addEl('div','selectorFrame',parent);
frame.setAttribute(PATH_ATTR,prefix);
configList.forEach((cfg)=>{
let name=prefix?(prefix+SEPARATOR+cfg.key):cfg.key;
let key=getVal(cfg,KEY_NAMES);
let name=prefix?(prefix+SEPARATOR+key):key;
let current=config[name];
buildSelector(frame,cfg,name,current,(children,key,value,resource,initial)=>{
buildSelectors(name,children,initial);
@@ -383,10 +432,11 @@ class PipelineInfo{
setValues({environment:environment,buildflags:flags});
//check resources
for (let k in currentResources){
let ak=k.replace(/:.*/,'');
let resList=currentResources[k];
if (allowedResources[k] !== undefined){
if (resList.length > allowedResources[k]){
errors+=" more than "+allowedResources[k]+" "+k+" device(s) used";
if (allowedResources[ak] !== undefined){
if (resList.length > allowedResources[ak]){
errors+=" more than "+allowedResources[ak]+" "+k+" device(s) used";
}
}
}