fix: align DEPCNT DEPARE safety control flow

This commit is contained in:
OpenAI Codex
2026-09-21 09:23:34 +08:00
parent c1a9fa7a42
commit 1dbe1fde07
2 changed files with 27 additions and 6 deletions

View File

@@ -81,7 +81,16 @@ function dynamicRules(procedure,props,settings,context){
if(props.s52_source_object_class==="DRGARE"&&!Object.prototype.hasOwnProperty.call(props,"depth_min_m"))color="DEPMD";const out=[rule("AC",[color],{procedure:procedure})];if(props.s52_source_object_class==="DRGARE")out.push(rule("AP",["DRGARE01"]),rule("LS",["DASH","1","CHGRF"]));return out;
}
if(procedure==="DEPCNT02"){
const contour=numberValue(props,"contour_depth_m",0),safe=context.effectiveSafetyContourM!==null&&Math.abs(contour-context.effectiveSafetyContourM)<1e-4,q=numberValue(props,"s52_quapos_code",0);let out=[];
let safe=false;
if(String(props.s52_source_object_class||"")==="DEPARE"){
const d1=numberValue(props,"depth_min_m",0),d2=numberValue(props,"depth_max_m",d1);
if(d1<=settings.safetyContourM)safe=d2>=settings.safetyContourM;
else safe=context.effectiveSafetyContourM!==null&&Math.abs(d1-context.effectiveSafetyContourM)<1e-4;
}else{
const contour=numberValue(props,"contour_depth_m",0);
safe=Math.abs(contour-settings.safetyContourM)<1e-4||(context.effectiveSafetyContourM!==null&&Math.abs(contour-context.effectiveSafetyContourM)<1e-4);
}
const q=numberValue(props,"s52_quapos_code",0);let out=[];
if(q>=2&&q<10)out=safe?storedRules(props,"s52_safe_dashed_rule_chain"):[rule("LS",["DASH","1","DEPCN"])];else if(q===0)out=safe?storedRules(props,"s52_safe_solid_rule_chain"):[rule("LS",["SOLD","1","DEPCN"])];
if(safe){if(!out.length)out=[rule("LS",[q>=2?"DASH":"SOLD","2","DEPSC"])];out.unshift(sideEffect({display_category:"Displaybase",scamin:100000001}));}return out;
}return [];