1
0
Fork 0

Merge branch 'dev' into 3D

This commit is contained in:
legoboyvdlp R 2021-07-25 17:59:18 +01:00
commit 9aeb9e4f3b
36 changed files with 6573 additions and 4305 deletions

View file

@ -4773,6 +4773,20 @@
<canvas_ecam>
<file>Aircraft/A320-family/Nasal/emesary/exec.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Upper-ECAM/Upper-ECAM.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas</file>
<file>Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM.nas</file>
</canvas_ecam>
<canvas_iesi>

View file

@ -0,0 +1,320 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var apu_load = props.globals.initNode("/systems/electrical/extra/apu-load", 0, "DOUBLE");
var gen1_load = props.globals.initNode("/systems/electrical/extra/gen1-load", 0, "DOUBLE");
var gen2_load = props.globals.initNode("/systems/electrical/extra/gen2-load", 0, "DOUBLE");
var canvas_lowerECAMPageApu =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageApu,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["APUGenOff"].hide();
obj.update_items = [
props.UpdateManager.FromHashValue("apuFlap",1, func(val) {
if (val) {
obj["APUFlapOpen"].show();
} else {
obj["APUFlapOpen"].hide();
}
}),
props.UpdateManager.FromHashValue("apuNeedleRot",0.1, func(val) {
obj["APUN-needle"].setRotation((val + 90) * D2R);
}),
props.UpdateManager.FromHashValue("apuEgtRot",0.1, func(val) {
obj["APUEGT-needle"].setRotation((val + 90) * D2R);
}),
props.UpdateManager.FromHashValue("apuAvailable", nil, func(val) {
if (val) {
obj["APUAvail"].show();
} else {
obj["APUAvail"].hide();
}
}),
props.UpdateManager.FromHashList(["apuRpm","apuEgt","apuMaster","apuGenPB"], nil, func(val) {
if (val.apuRpm > 0.001) {
obj["APUN"].setColor(0.0509,0.7529,0.2941);
obj["APUN"].setText(sprintf("%s", math.round(val.apuRpm)));
obj["APUN-needle"].show();
obj["APUEGT"].setColor(0.0509,0.7529,0.2941);
obj["APUEGT"].setText(sprintf("%s", math.round(val.apuEgt, 5)));
obj["APUEGT-needle"].show();
} else {
obj["APUN"].setColor(0.7333,0.3803,0);
obj["APUN"].setText(sprintf("%s", "XX"));
obj["APUN-needle"].hide();
obj["APUEGT"].setColor(0.7333,0.3803,0);
obj["APUEGT"].setText(sprintf("%s", "XX"));
obj["APUEGT-needle"].hide();
}
if (val.apuMaster or val.apuRpm >= 94.9) {
obj["APUGenbox"].show();
if (val.apuGenPB) {
obj["APUGenOff"].hide();
obj["APUGentext"].setColor(0.8078,0.8039,0.8078);
obj["APUGenHz"].show();
obj["APUGenVolt"].show();
obj["APUGenLoad"].show();
obj["text3724"].show();
obj["text3728"].show();
obj["text3732"].show();
} else {
obj["APUGenOff"].show();
obj["APUGentext"].setColor(0.7333,0.3803,0);
obj["APUGenHz"].hide();
obj["APUGenVolt"].hide();
obj["APUGenLoad"].hide();
obj["text3724"].hide();
obj["text3728"].hide();
obj["text3732"].hide();
}
} else {
obj["APUGentext"].setColor(0.8078,0.8039,0.8078);
obj["APUGenbox"].hide();
obj["APUGenHz"].hide();
obj["APUGenVolt"].hide();
obj["APUGenLoad"].hide();
obj["text3724"].hide();
obj["text3728"].hide();
obj["text3732"].hide();
}
}),
props.UpdateManager.FromHashList(["apuFuelPumpsOff","apuFuelPump"], nil, func(val) {
if (val.apuFuelPumpsOff and !val.apuFuelPump) {
obj["APUfuelLO"].show();
} else {
obj["APUfuelLO"].hide();
}
}),
props.UpdateManager.FromHashList(["apuRpm","apuOilLevel","gear0Wow"], nil, func(val) {
if (val.apuRpm >= 94.9 and val.gear0Wow and val.apuOilLevel < 3.69) {
obj["APU-low-oil"].show();
} else {
obj["APU-low-oil"].hide();
}
}),
props.UpdateManager.FromHashList(["apuAdr","apuPsi","apuRpm"], nil, func(val) {
if (val.apuAdr and val.apuRpm > 0.001) {
obj["APUBleedPSI"].setColor(0.0509,0.7529,0.2941);
obj["APUBleedPSI"].setText(sprintf("%s", math.round(val.apuPsi)));
} else {
obj["APUBleedPSI"].setColor(0.7333,0.3803,0);
obj["APUBleedPSI"].setText(sprintf("%s", "XX"));
}
}),
props.UpdateManager.FromHashValue("apuLoad", 0.1, func(val) {
obj["APUGenLoad"].setText(sprintf("%s", math.round(val)));
if (val <= 100) {
obj["APUGenHz"].setColor(0.0509,0.7529,0.2941);
} else {
obj["APUGenHz"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("apuHertz", 1, func(val) {
if (val == 0) {
obj["APUGenHz"].setText(sprintf("XX"));
} else {
obj["APUGenHz"].setText(sprintf("%s", math.round(val)));
}
if (val >= 390 and val <= 410) {
obj["APUGenHz"].setColor(0.0509,0.7529,0.2941);
} else {
obj["APUGenHz"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("apuVolt", 0.1, func(val) {
obj["APUGenVolt"].setText(sprintf("%s", math.round(val)));
if (val >= 110 and val <= 120) {
obj["APUGenVolt"].setColor(0.0509,0.7529,0.2941);
} else {
obj["APUGenVolt"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("apuGLC", nil, func(val) {
if (val) {
obj["APUGenOnline"].show();
} else {
obj["APUGenOnline"].hide();
}
}),
props.UpdateManager.FromHashList(["apuBleedValvePos","apuBleedValveCmd"], nil, func(val) {
if (val.apuBleedValvePos == 1) {
obj["APUBleedValve"].setRotation(90 * D2R);
obj["APUBleedOnline"].show();
} else {
obj["APUBleedValve"].setRotation(0);
obj["APUBleedOnline"].hide();
}
if (val.apuBleedValveCmd == val.apuBleedValvePos) {
obj["APUBleedValveCrossBar"].setColor(0.0509,0.7529,0.2941);
obj["APUBleedValveCrossBar"].setColorFill(0.0509,0.7529,0.2941);
obj["APUBleedValve"].setColor(0.0509,0.7529,0.2941);
} else {
obj["APUBleedValveCrossBar"].setColor(0.7333,0.3803,0);
obj["APUBleedValveCrossBar"].setColorFill(0.7333,0.3803,0);
obj["APUBleedValve"].setColor(0.7333,0.3803,0);
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return ["APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUBleedValveCrossBar","APUGenOnline","APUGenOff","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil","text3724","text3728","text3732"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
apuAdr: "/systems/navigation/adr/operating-1",
apuAvailable: "/systems/apu/available",
apuBleed: "/controls/pneumatics/switches/apu",
apuBleedValveCmd: "/systems/pneumatics/valves/apu-bleed-valve-cmd",
apuBleedValvePos: "/systems/pneumatics/valves/apu-bleed-valve",
apuEgt: "/systems/apu/egt-degC",
apuEgtRot: "/ECAM/Lower/APU-EGT",
apuGenPB: "/controls/electrical/switches/apu",
apuGLC: "/systems/electrical/relay/apu-glc/contact-pos",
apuFireBtn: "/controls/apu/fire-btn",
apuFlap: "/controls/apu/inlet-flap/position-norm",
apuFuelPump: "/systems/fuel/pumps/apu-operate",
apuFuelPumpsOff: "/systems/fuel/pumps/all-eng-pump-off",
apuOilLevel: "/systems/apu/oil/level-l",
apuMaster: "/controls/apu/master",
apuNeedleRot: "/ECAM/Lower/APU-N",
apuRpm: "/engines/engine[2]/n1",
apuPsi: "/systems/pneumatics/source/apu-psi",
apuLoad: "/systems/electrical/extra/apu-load",
apuHertz: "/systems/electrical/sources/apu/output-hertz",
apuVolt: "/systems/electrical/sources/apu/output-volt",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,73 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var du4_lgt = props.globals.getNode("/controls/lighting/DU/du4", 1);
var du4_test = props.globals.initNode("/instrumentation/du/du4-test", 0, "BOOL");
var du4_test_time = props.globals.initNode("/instrumentation/du/du4-test-time", 0, "DOUBLE");
var du4_test_amount = props.globals.initNode("/instrumentation/du/du4-test-amount", 0, "DOUBLE");
var du4_offtime = props.globals.initNode("/instrumentation/du/du4-off-time", 0.0, "DOUBLE");
var canvas_lowerECAM_base =
{
init: func() {
me.canvas = canvas.new({
"name": "lowerECAM",
"size": [1024, 1024],
"view": [1024, 1024],
"mipmapping": 1
});
me.canvas.addPlacement({"node": "lecam.screen"});
me.font_mapper = func(family, weight) {
return "LiberationFonts/LiberationSans-Regular.ttf";
};
me.test = me.canvas.createGroup();
canvas.parsesvg(me.test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg", {"font-mapper": me.font_mapper} );
foreach(var key; me.getKeysTest()) {
me[key] = me.test.getElementById(key);
};
},
getKeysTest: func() {
return ["Test_white","Test_text"];
},
powerTransient: func() {
if (systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_offtime.getValue() + 3 < pts.Sim.Time.elapsedSec.getValue()) {
if (pts.Gear.wow[0].getValue()) {
if (!acconfig.getBoolValue() and !du4_test.getBoolValue()) {
du4_test.setValue(1);
du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue());
} else if (acconfig.getBoolValue() and !du4_test.getBoolValue()) {
du4_test.setValue(1);
du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue() - 30);
}
} else {
du4_test.setValue(1);
du4_test_amount.setValue(0);
du4_test_time.setValue(-100);
}
}
} else {
du4_test.setValue(0);
du4_offtime.setValue(pts.Sim.Time.elapsedSec.getValue());
}
},
# Due to weirdness of the parents hash / me reference
# you need to access it using me.Test_white rather than
# me["Test_white"]
updateTest: func(notification) {
if (du4_test_time.getValue() + 1 >= notification.elapsedTime) {
me.Test_white.show();
me.Test_text.hide();
} else {
me.Test_white.hide();
me.Test_text.show();
}
},
};
canvas_lowerECAM_base.init();

View file

@ -0,0 +1,547 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageBleed =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageBleed,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj.update_items = [
props.UpdateManager.FromHashList(["BleedCrossbleedCmd","BleedCrossbleed"], nil, func(val) {
if (val.BleedCrossbleedCmd != val.BleedCrossbleed) {
obj["BLEED-XFEED"].setColor(0.7333,0.3803,0);
obj["BLEED-XFEED-Cross"].setColorFill(0.7333,0.3803,0);
} else {
obj["BLEED-XFEED"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-XFEED-Cross"].setColorFill(0.0509,0.7529,0.2941);
}
if (val.BleedCrossbleedCmd == val.BleedCrossbleed) {
if (val.BleedCrossbleedCmd) {
obj["BLEED-XFEED"].setRotation(0);
} else {
obj["BLEED-XFEED"].setRotation(90 * D2R);
}
} else {
obj["BLEED-XFEED"].setRotation(45 * D2R);
}
if (val.BleedCrossbleed == 1) {
obj["BLEED-xbleedCenter"].show();
obj["BLEED-xbleedRight"].show();
} else {
obj["BLEED-xbleedCenter"].hide();
obj["BLEED-xbleedRight"].hide();
}
}),
props.UpdateManager.FromHashList(["BleedHPValve1","BleedHPValve1Cmd"], nil, func(val) {
if (val.BleedHPValve1Cmd == 1) {
obj["BLEED-HP-Valve-1"].setRotation(90 * D2R);
obj["BLEED-HP-1-connection"].show();
} else {
obj["BLEED-HP-Valve-1"].setRotation(0);
obj["BLEED-HP-1-connection"].hide();
}
if (val.BleedHPValve1Cmd == val.BleedHPValve1) {
obj["BLEED-HP-Valve-1"].setColor(0.0509,0.7529,0.2941);
} else {
obj["BLEED-HP-Valve-1"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["BleedHPValve2","BleedHPValve2Cmd"], nil, func(val) {
if (val.BleedHPValve2Cmd == 1) {
obj["BLEED-HP-Valve-2"].setRotation(90 * D2R);
obj["BLEED-HP-2-connection"].show();
} else {
obj["BLEED-HP-Valve-2"].setRotation(0);
obj["BLEED-HP-2-connection"].hide();
}
if (val.BleedHPValve2Cmd == val.BleedHPValve2) {
obj["BLEED-HP-Valve-2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["BLEED-HP-Valve-2"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["BleedPRVValve1Cmd","BleedPRVValve1"], nil, func(val) {
if (val.BleedPRVValve1 == 0) {
obj["BLEED-ENG-1"].setRotation(0);
} else {
obj["BLEED-ENG-1"].setRotation(90 * D2R);
}
if (val.BleedPRVValve1Cmd == val.BleedPRVValve1) {
obj["BLEED-ENG-1"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-ENG-1-Cross"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["BLEED-ENG-1"].setColor(0.7333,0.3803,0);
obj["BLEED-ENG-1-Cross"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["BleedPRVValve2Cmd","BleedPRVValve2"], nil, func(val) {
if (val.BleedPRVValve2 == 0) {
obj["BLEED-ENG-2"].setRotation(0);
} else {
obj["BLEED-ENG-2"].setRotation(90 * D2R);
}
if (val.BleedPRVValve2Cmd == val.BleedPRVValve2) {
obj["BLEED-ENG-2"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-ENG-2-Cross"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["BLEED-ENG-2"].setColor(0.7333,0.3803,0);
obj["BLEED-ENG-2-Cross"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("gear1Wow", nil, func(val) {
if (val) {
obj["BLEED-GND"].show();
} else {
obj["BLEED-GND"].hide();
}
}),
props.UpdateManager.FromHashValue("IceWingSw", nil, func(val) {
if (val) {
obj["BLEED-Anti-Ice-Left"].show();
obj["BLEED-Anti-Ice-Right"].show();
} else {
obj["BLEED-Anti-Ice-Left"].hide();
obj["BLEED-Anti-Ice-Right"].hide();
}
}),
props.UpdateManager.FromHashValue("N2_actual_1", nil, func(val) {
if (val >= 59) {
obj["BLEED-ENG-1-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["BLEED-ENG-1-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("N2_actual_2", nil, func(val) {
if (val >= 59) {
obj["BLEED-ENG-2-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["BLEED-ENG-2-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["BleedBMC1Working","BleedPreCoolerPSI1"], nil, func(val) {
if (val.BleedBMC1Working) {
if (val.BleedPreCoolerPSI1 >= 98) {
obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", 98));
} else {
obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI1,2)));
}
if (val.BleedPreCoolerPSI1 < 4 or val.BleedPreCoolerPSI1 > 57) {
obj["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Precooler-1-Inlet-Press"].setColor(0.0509,0.7529,0.2941);
}
} else {
obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", "XX"));
obj["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["BleedBMC2Working","BleedPreCoolerPSI2"], nil, func(val) {
if (val.BleedBMC2Working) {
if (val.BleedPreCoolerPSI2 >= 98) {
obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", 98));
} else {
obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI2,2)));
}
if (val.BleedPreCoolerPSI2 < 4 or val.BleedPreCoolerPSI2 > 57) {
obj["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Precooler-2-Inlet-Press"].setColor(0.0509,0.7529,0.2941);
}
} else {
obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", "XX"));
obj["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["BleedBMC1Working","BleedPreCoolerTemp1","BleedPRVValve1Cmd","BleedPreCoolerOvht1"], nil, func(val) {
if (val.BleedBMC1Working) {
if (val.BleedPreCoolerTemp1 >= 510) {
obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", 510));
} else {
obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp1, 5)));
}
if (val.BleedPRVValve1Cmd and (val.BleedPreCoolerTemp1 < 150 or val.BleedPreCoolerOvht1)) {
obj["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Precooler-1-Outlet-Temp"].setColor(0.0509,0.7529,0.2941);
}
} else {
obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", "XX"));
obj["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["BleedBMC2Working","BleedPreCoolerTemp2","BleedPRVValve2Cmd","BleedPreCoolerOvht2"], nil, func(val) {
if (val.BleedBMC2Working) {
if (val.BleedPreCoolerTemp2 >= 510) {
obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", 510));
} else {
obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp2, 5)));
}
if (val.BleedPRVValve2Cmd and (val.BleedPreCoolerTemp2 < 150 or val.BleedPreCoolerOvht2)) {
obj["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Precooler-2-Outlet-Temp"].setColor(0.0509,0.7529,0.2941);
}
} else {
obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", "XX"));
obj["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("Pack1Bypass", 1, func(val) {
obj["BLEED-Pack-1-Bypass-needle"].setRotation((val - 50) * D2R);
}),
props.UpdateManager.FromHashValue("Pack2Bypass", 1, func(val) {
obj["BLEED-Pack-2-Bypass-needle"].setRotation((val - 50) * D2R);
}),
props.UpdateManager.FromHashValue("Pack1OutTemp", 0.25, func(val) {
obj["BLEED-Pack-1-Out-Temp"].setText(sprintf("%s", math.round(val, 5)));
if (val > 90) {
obj["BLEED-Pack-1-Out-Temp"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Pack-1-Out-Temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("Pack2OutTemp", 0.25, func(val) {
obj["BLEED-Pack-2-Out-Temp"].setText(sprintf("%s", math.round(val, 5)));
if (val > 90) {
obj["BLEED-Pack-2-Out-Temp"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Pack-2-Out-Temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("Pack1OutletTemp", 0.25, func(val) {
obj["BLEED-Pack-1-Comp-Out-Temp"].setText(sprintf("%s", math.round(val, 5)));
if (val > 230) {
obj["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("Pack2OutletTemp", 0.25, func(val) {
obj["BLEED-Pack-2-Comp-Out-Temp"].setText(sprintf("%s", math.round(val, 5)));
if (val > 230) {
obj["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("Pack1FlowOutput", 0.5, func(val) {
obj["BLEED-Pack-1-Packflow-needle"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("Pack2FlowOutput", 0.5, func(val) {
obj["BLEED-Pack-2-Packflow-needle"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashList(["Pack1Switch","flowCtlValve1"], nil, func(val) {
if (val.flowCtlValve1 == 0) {
obj["BLEED-Pack-1-Packflow-needle"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Pack-1-Flow-Valve"].setRotation(90 * D2R);
} else {
obj["BLEED-Pack-1-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941);
obj["BLEED-Pack-1-Flow-Valve"].setRotation(0);
}
if (val.flowCtlValve1 == val.Pack1Switch) {
obj["BLEED-Pack-1-Flow-Valve"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-Pack-1-Flow-Valve-Cross"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["BLEED-Pack-1-Flow-Valve"].setColor(0.7333,0.3803,0);
obj["BLEED-Pack-1-Flow-Valve-Cross"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["Pack2Switch","flowCtlValve2"], nil, func(val) {
if (val.flowCtlValve2 == 0) {
obj["BLEED-Pack-2-Packflow-needle"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Pack-2-Flow-Valve"].setRotation(90 * D2R);
} else {
obj["BLEED-Pack-2-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941);
obj["BLEED-Pack-2-Flow-Valve"].setRotation(0);
}
if (val.flowCtlValve2 == val.Pack2Switch) {
obj["BLEED-Pack-2-Flow-Valve"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-Pack-2-Flow-Valve-Cross"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["BLEED-Pack-2-Flow-Valve"].setColor(0.7333,0.3803,0);
obj["BLEED-Pack-2-Flow-Valve-Cross"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["flowCtlValve1","flowCtlValve2","RamAirValve","gear1Wow"], nil, func(val) {
if (val.RamAirValve == 0) {
obj["BLEED-Ram-Air"].setRotation(90 * D2R);
obj["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941);
obj["BLEED-Ram-Air-Cross"].setColorFill(0.0509,0.7529,0.2941);
obj["BLEED-Ram-Air-connection"].hide();
} elsif (val.RamAirValve) {
obj["BLEED-Ram-Air"].setRotation(0);
if (val.gear1Wow) {
obj["BLEED-Ram-Air"].setColor(0.7333,0.3803,0);
obj["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Ram-Air-Cross"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0);
} else {
obj["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941);
obj["BLEED-Ram-Air-Cross"].setColorFill(0.0509,0.7529,0.2941);
obj["BLEED-Ram-Air-connection"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-Ram-Air-connection"].setColorFill(0.0509,0.7529,0.2941);
}
obj["BLEED-Ram-Air-connection"].show();
} else {
obj["BLEED-Ram-Air"].setRotation(45 * D2R);
obj["BLEED-Ram-Air"].setColor(0.7333,0.3803,0);
obj["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Ram-Air-Cross"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0);
obj["BLEED-Ram-Air-connection"].show();
}
if (val.flowCtlValve1 == 0 and val.flowCtlValve2 == 0) {
if (val.gear1Wow or val.RamAirValve != 1) {
obj["BLEED-cond-1"].setColor(0.7333,0.3803,0);
obj["BLEED-cond-2"].setColor(0.7333,0.3803,0);
obj["BLEED-cond-3"].setColor(0.7333,0.3803,0);
} else {
obj["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941);
}
} else {
obj["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941);
}
if (val.flowCtlValve1 == 0) {
obj["BLEED-Pack-1-connection"].setColor(0.7333,0.3803,0);
obj["BLEED-Pack-1-connection"].setColorFill(0.7333,0.3803,0);
} else {
obj["BLEED-Pack-1-connection"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-Pack-1-connection"].setColorFill(0.0509,0.7529,0.2941);
}
if (val.flowCtlValve2 == 0) {
obj["BLEED-Pack-2-connection"].setColor(0.7333,0.3803,0);
obj["BLEED-Pack-2-connection"].setColorFill(0.7333,0.3803,0);
} else {
obj["BLEED-Pack-2-connection"].setColor(0.0509,0.7529,0.2941);
obj["BLEED-Pack-2-connection"].setColorFill(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashList(["BleedCrossbleed","apuMaster","apuBleedValvePos","ApuBleedNotOn"], nil, func(val) {
if (val.apuMaster) {
obj["BLEED-APU-LINES"].show();
if (val.apuBleedValvePos == 1) {
obj["BLEED-APU-CIRCLE"].setRotation(0);
obj["BLEED-APU-connectionTop"].show();
obj["BLEED-xbleedLeft"].show();
} else {
obj["BLEED-APU-CIRCLE"].setRotation(90 * D2R);
obj["BLEED-APU-connectionTop"].hide();
if (val.BleedCrossbleed != 1) {
obj["BLEED-xbleedLeft"].hide();
} else {
obj["BLEED-xbleedLeft"].show();
}
}
if (val.ApuBleedNotOn != 1) {
obj["BLEED-APU-CIRCLE"].setColor(0.0509,0.7529,0.2941);
} else {
obj["BLEED-APU-CIRCLE"].setColor(0.7333,0.3803,0);
}
} else {
if (val.BleedCrossbleed != 1) {
obj["BLEED-xbleedLeft"].hide();
} else {
obj["BLEED-xbleedLeft"].show();
}
obj["BLEED-APU-LINES"].hide();
obj["BLEED-APU-connectionTop"].hide();
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "BLEED-XFEED", "BLEED-Ram-Air", "BLEED-Ram-Air-Cross", "BLEED-APU-CIRCLE", "BLEED-HP-Valve-1", "BLEED-XFEED-Cross",
"BLEED-APU-LINES","BLEED-ENG-1", "BLEED-HP-Valve-2", "BLEED-ENG-2", "BLEED-Precooler-1-Inlet-Press", "BLEED-Precooler-1-Outlet-Temp",
"BLEED-Precooler-2-Inlet-Press", "BLEED-Precooler-2-Outlet-Temp", "BLEED-ENG-1-label", "BLEED-ENG-2-label",
"BLEED-GND", "BLEED-Pack-1-Flow-Valve", "BLEED-Pack-2-Flow-Valve", "BLEED-Pack-1-Out-Temp","BLEED-APU-connectionTop",
"BLEED-Pack-1-Comp-Out-Temp", "BLEED-Pack-1-Packflow-needle", "BLEED-Pack-1-Bypass-needle", "BLEED-Pack-2-Out-Temp",
"BLEED-Pack-2-Bypass-needle", "BLEED-Pack-2-Comp-Out-Temp", "BLEED-Pack-2-Packflow-needle", "BLEED-Anti-Ice-Left",
"BLEED-Anti-Ice-Right", "BLEED-HP-2-connection", "BLEED-HP-1-connection", "BLEED-ANTI-ICE-ARROW-LEFT", "BLEED-ANTI-ICE-ARROW-RIGHT",
"BLEED-xbleedLeft","BLEED-xbleedCenter","BLEED-xbleedRight","BLEED-cond-1","BLEED-cond-2","BLEED-cond-3","BLEED-Ram-Air-connection","BLEED-ENG-1-Cross","BLEED-ENG-2-Cross",
"BLEED-Pack-1-Flow-Valve-Cross","BLEED-Pack-2-Flow-Valve-Cross","BLEED-Pack-1-connection","BLEED-Pack-2-connection"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
ApuBleedNotOn: "/systems/pneumatics/warnings/apu-bleed-not-on",
BleedBMC1Working: "/systems/pneumatics/indicating/bmc1-working",
BleedBMC2Working: "/systems/pneumatics/indicating/bmc2-working",
BleedCrossbleedCmd: "/systems/pneumatics/valves/crossbleed-valve-cmd",
BleedCrossbleed: "/systems/pneumatics/valves/crossbleed-valve",
BleedHPValve1: "/systems/pneumatics/valves/engine-1-hp-valve",
BleedHPValve2: "/systems/pneumatics/valves/engine-2-hp-valve",
BleedHPValve1Cmd: "/systems/pneumatics/valves/engine-1-hp-valve-cmd",
BleedHPValve2Cmd: "/systems/pneumatics/valves/engine-2-hp-valve-cmd",
BleedPRVValve1Cmd: "/controls/pneumatics/switches/bleed-1",
BleedPRVValve2Cmd: "/controls/pneumatics/switches/bleed-2",
BleedPRVValve1: "/systems/pneumatics/valves/engine-1-prv-valve",
BleedPRVValve2: "/systems/pneumatics/valves/engine-2-prv-valve",
BleedPreCoolerPSI1: "/systems/pneumatics/psi/engine-1-psi",
BleedPreCoolerPSI2: "/systems/pneumatics/psi/engine-2-psi",
BleedPreCoolerTemp1: "/systems/pneumatics/precooler/temp-1",
BleedPreCoolerTemp2: "/systems/pneumatics/precooler/temp-2",
BleedPreCoolerOvht1: "/systems/pneumatics/precooler/ovht-1",
BleedPreCoolerOvht2: "/systems/pneumatics/precooler/ovht-2",
Pack1Bypass: "/systems/pneumatics/pack-1-bypass",
Pack2Bypass: "/systems/pneumatics/pack-2-bypass",
Pack1FlowOutput: "/ECAM/Lower/pack-1-flow-output",
Pack2FlowOutput: "/ECAM/Lower/pack-2-flow-output",
Pack1OutTemp: "/systems/air-conditioning/packs/pack-1-output-temp",
Pack2OutTemp: "/systems/air-conditioning/packs/pack-2-output-temp",
Pack1OutletTemp: "/systems/air-conditioning/packs/pack-1-outlet-temp",
Pack2OutletTemp: "/systems/air-conditioning/packs/pack-2-outlet-temp",
Pack1Switch: "/controls/pneumatics/switches/pack-1",
Pack2Switch: "/controls/pneumatics/switches/pack-2",
RamAirValve: "/systems/air-conditioning/valves/ram-air",
IceWingSw: "/controls/ice-protection/wing",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,209 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageCond =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageCond,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["CONDFanFwdFault"].hide();
obj["CONDFanAftFault"].hide();
# aft cargo ventilation disabled
obj["CargoCond"].hide();
obj.update_items = [
props.UpdateManager.FromHashValue("condDuctTempCockpit", 0.5, func(val) {
obj["CONDDuctTempCKPT"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condDuctTempAft", 0.5, func(val) {
obj["CONDDuctTempAFT"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condDuctTempFwd", 0.5, func(val) {
obj["CONDDuctTempFWD"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condTempCockpit", 0.5, func(val) {
obj["CONDTempCKPT"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condTempAft", 0.5, func(val) {
obj["CONDTempAFT"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condTempFwd", 0.5, func(val) {
obj["CONDTempFWD"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condTrimCockpit", 0.01, func(val) {
obj["CONDTrimValveCKPT"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("condTrimAft", 0.01, func(val) {
obj["CONDTrimValveAFT"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("condTrimFwd", 0.01, func(val) {
obj["CONDTrimValveFWD"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashList(["condHotAirSwitch","condHotAirValve","condHotAirCmd"], nil, func(val) {
if (!val.condHotAirSwitch or (val.condHotAirCmd == 1 and val.condHotAirValve == 0)) {
obj["CONDHotAirValve"].setRotation(90 * D2R);
obj["CONDHotAirValve"].setColor(0.7333,0.3803,0);
obj["CONDHotAirValveCross"].setColorFill(0.7333,0.3803,0);
} elsif (val.condHotAirCmd == 0 and val.condHotAirValve == 0) {
obj["CONDHotAirValve"].setRotation(90 * D2R);
obj["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941);
obj["CONDHotAirValveCross"].setColorFill(0.0509,0.7529,0.2941);
} elsif (val.condHotAirCmd == 0 and val.condHotAirValve != 0) {
obj["CONDHotAirValve"].setRotation(0);
obj["CONDHotAirValve"].setColor(0.7333,0.3803,0);
obj["CONDHotAirValveCross"].setColorFill(0.7333,0.3803,0);
} else {
obj["CONDHotAirValve"].setRotation(0);
obj["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941);
obj["CONDHotAirValveCross"].setColorFill(0.0509,0.7529,0.2941);
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["CargoCond","CONDHotAirValve","CONDFanFwdFault","CONDFanAftFault","CONDTrimValveCKPT","CONDTrimValveAFT","CONDTrimValveFWD","CONDDuctTempCKPT",
"CONDDuctTempAFT","CONDDuctTempFWD","CONDTempCKPT","CONDTempAFT","CONDTempFWD","CONDHotAirValveCross"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
condDuctTempCockpit: "/systems/air-conditioning/temperatures/cockpit-duct",
condDuctTempAft: "/systems/air-conditioning/temperatures/cabin-aft-duct",
condDuctTempFwd: "/systems/air-conditioning/temperatures/cabin-fwd-duct",
condTempCockpit: "/systems/air-conditioning/temperatures/cockpit-temp",
condTempAft: "/systems/air-conditioning/temperatures/cabin-aft-temp",
condTempFwd: "/systems/air-conditioning/temperatures/cabin-fwd-temp",
condTrimCockpit: "/ECAM/Lower/trim-cockpit-output",
condTrimAft: "/ECAM/Lower/trim-aft-output",
condTrimFwd: "/ECAM/Lower/trim-fwd-output",
condHotAirCmd: "/systems/air-conditioning/valves/hot-air-cmd",
condHotAirSwitch: "/controls/pneumatics/switches/hot-air",
condHotAirValve: "/systems/air-conditioning/valves/hot-air"
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,257 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageCruise =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageCruise,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj.update_items = [
props.UpdateManager.FromHashValue("engOil1", 0.005, func(val) {
if (obj.units) {
obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5))));
} else {
obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(val * 10,5))));
}
}),
props.UpdateManager.FromHashValue("engOil2", 0.005, func(val) {
if (obj.units) {
obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5))));
} else {
obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(val * 10,5))));
}
}),
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
if (val) {
obj["Fused-weight-unit"].setText("KG");
obj["OilUnit"].setText("LTR");
# immediately update parameters
obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * QT2LTR * 10,5))));
obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * QT2LTR * 10,5))));
obj["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10)));
obj["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)));
} else {
obj["Fused-weight-unit"].setText("LBS");
obj["OilUnit"].setText("QT");
obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * 10,5))));
obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * 10,5))));
obj["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10)));
obj["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10)));
}
}),
props.UpdateManager.FromHashValue("engFuelUsed1", 1, func(val) {
if (obj.units) {
obj["FUsed1"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUsed1"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashValue("engFuelUsed2", 1, func(val) {
if (obj.units) {
obj["FUsed2"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUsed2"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashList(["engFuelUsed1","engFuelUsed2"], 1, func(val) {
if (obj.units) {
obj["FUsed"].setText(sprintf("%s", math.round((val.engFuelUsed1 + val.engFuelUsed2) * LBS2KGS, 10)));
} else {
obj["FUsed"].setText(sprintf("%s", math.round((val.engFuelUsed1 + val.engFuelUsed2), 10)));
}
}),
props.UpdateManager.FromHashValue("pressDelta", 0.05, func(val) {
if (val > 31.9) {
obj["deltaPSI"].setText(sprintf("%2.1f", 31.9));
} else if (val < -9.9) {
obj["deltaPSI"].setText(sprintf("%2.1f", -9.9));
} else {
obj["deltaPSI"].setText(sprintf("%2.1f", val));
}
if (val < -0.4 or val > 8.5) {
obj["deltaPSI"].setColor(0.7333,0.3803,0);
} else {
obj["deltaPSI"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("pressVS", 25, func(val) {
if (val > 9950) {
obj["CABVS"].setText(sprintf("%4.0f", 9950));
} else if (val < -9950) {
obj["CABVS"].setText(sprintf("%4.0f", -9950));
} else {
obj["CABVS"].setText(sprintf("%-4.0f", math.round(val,50)));
}
if (val >= 25) {
obj["VS-Arrow-UP"].show();
obj["VS-Arrow-DN"].hide();
} elsif (val <= -25) {
obj["VS-Arrow-UP"].hide();
obj["VS-Arrow-DN"].show();
} else {
obj["VS-Arrow-UP"].hide();
obj["VS-Arrow-DN"].hide();
}
}),
props.UpdateManager.FromHashValue("pressAlt", 25, func(val) {
if (val > 32750) {
obj["CABALT"].setText(sprintf("%5.0f", 32750));
} else if (val < -9950) {
obj["CABALT"].setText(sprintf("%5.0f", -9950));
} else {
obj["CABALT"].setText(sprintf("%5.0f", math.round(val,50)));
}
if (val > 9550) {
obj["CABALT"].setColor(1,0,0);
} else {
obj["CABALT"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("condTempCockpit", 0.5, func(val) {
obj["CKPT-TEMP"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condTempAft", 0.5, func(val) {
obj["AFT-TEMP"].setText(sprintf("%2.0f",val));
}),
props.UpdateManager.FromHashValue("condTempFwd", 0.5, func(val) {
obj["FWD-TEMP"].setText(sprintf("%2.0f",val));
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["Oil1","Oil2","OilUnit","FUsed1","FUsed2","FUsed","VIB1N1","VIB1N2","VIB2N1","VIB2N2","deltaPSI","LDGELEV-AUTO","LDGELEV","CABVS","CABALT","VS-Arrow-UP","VS-Arrow-DN","CKPT-TEMP","FWD-TEMP","AFT-TEMP","Fused-weight-unit"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,319 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageDoor =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageDoor,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["Cabin2LeftSlide"].hide();
obj["Cabin2RightSlide"].hide();
obj["Cabin3LeftSlide"].hide();
obj["Cabin3RightSlide"].hide();
obj["DOOROXY-REGUL-LO-PR"].hide();
obj["AvionicsLine1"].hide();
obj["AvionicsLine2"].hide();
obj["AvionicsLbl1"].hide();
obj["AvionicsLbl2"].hide();
obj["ExitLLine"].hide();
obj["ExitLLbl"].hide();
obj["ExitRLine"].hide();
obj["ExitRLbl"].hide();
obj["Cabin2Left"].hide();
obj["Cabin2LeftLine"].hide();
obj["Cabin2LeftLbl"].hide();
obj["Cabin2Right"].hide();
obj["Cabin2RightLine"].hide();
obj["Cabin2RightLbl"].hide();
obj["Cabin3Left"].hide();
obj["Cabin3LeftLine"].hide();
obj["Cabin3LeftLbl"].hide();
obj["Cabin3Right"].hide();
obj["Cabin3RightLine"].hide();
obj["Cabin3RightLbl"].hide();
obj.update_items = [
props.UpdateManager.FromHashValue("doorL1", nil, func(val) {
if (val > 0) {
obj["Cabin1Left"].show();
obj["Cabin1Left"].setColor(0.7333,0.3803,0);
obj["Cabin1Left"].setColorFill(0.7333,0.3803,0);
obj["Cabin1LeftLbl"].show();
obj["Cabin1LeftLine"].show();
obj["Cabin1LeftSlide"].hide();
} else {
obj["Cabin1Left"].setColor(0.0509,0.7529,0.2941);
obj["Cabin1Left"].setColorFill(0,0,0);
obj["Cabin1LeftLbl"].hide();
obj["Cabin1LeftLine"].hide();
obj["Cabin1LeftSlide"].show();
}
}),
props.UpdateManager.FromHashValue("doorL4", nil, func(val) {
if (val > 0) {
obj["Cabin4Left"].show();
obj["Cabin4Left"].setColor(0.7333,0.3803,0);
obj["Cabin4Left"].setColorFill(0.7333,0.3803,0);
obj["Cabin4LeftLbl"].show();
obj["Cabin4LeftLine"].show();
obj["Cabin4LeftSlide"].hide();
} else {
obj["Cabin4Left"].setColor(0.0509,0.7529,0.2941);
obj["Cabin4Left"].setColorFill(0,0,0);
obj["Cabin4LeftLbl"].hide();
obj["Cabin4LeftLine"].hide();
obj["Cabin4LeftSlide"].show();
}
}),
props.UpdateManager.FromHashValue("doorR1", nil, func(val) {
if (val > 0) {
obj["Cabin1Right"].show();
obj["Cabin1Right"].setColor(0.7333,0.3803,0);
obj["Cabin1Right"].setColorFill(0.7333,0.3803,0);
obj["Cabin1RightLbl"].show();
obj["Cabin1RightLine"].show();
obj["Cabin1RightSlide"].hide();
} else {
obj["Cabin1Right"].setColor(0.0509,0.7529,0.2941);
obj["Cabin1Right"].setColorFill(0,0,0);
obj["Cabin1RightLbl"].hide();
obj["Cabin1RightLine"].hide();
obj["Cabin1RightSlide"].show();
}
}),
props.UpdateManager.FromHashValue("doorR4", nil, func(val) {
if (val > 0) {
obj["Cabin4Right"].show();
obj["Cabin4Right"].setColor(0.7333,0.3803,0);
obj["Cabin4Right"].setColorFill(0.7333,0.3803,0);
obj["Cabin4RightLbl"].show();
obj["Cabin4RightLine"].show();
obj["Cabin4RightSlide"].hide();
} else {
obj["Cabin4Right"].setColor(0.0509,0.7529,0.2941);
obj["Cabin4Right"].setColorFill(0,0,0);
obj["Cabin4RightLbl"].hide();
obj["Cabin4RightLine"].hide();
obj["Cabin4RightSlide"].show();
}
}),
props.UpdateManager.FromHashValue("cargoAft", nil, func(val) {
if (val > 0) {
obj["Cargo2Door"].setColor(0.7333,0.3803,0);
obj["Cargo2Door"].setColorFill(0.7333,0.3803,0);
obj["Cargo2Lbl"].show();
obj["Cargo2Line"].show();
} else {
obj["Cargo2Door"].setColor(0.0509,0.7529,0.2941);
obj["Cargo2Door"].setColorFill(0,0,0);
obj["Cargo2Lbl"].hide();
obj["Cargo2Line"].hide();
}
}),
props.UpdateManager.FromHashValue("cargoBulk", nil, func(val) {
if (val > 0) {
obj["Bulk"].setColor(0.7333,0.3803,0);
obj["Bulk"].setColorFill(0.7333,0.3803,0);
obj["BulkLbl"].show();
obj["BulkLine"].show();
} else {
obj["Bulk"].setColor(0.0509,0.7529,0.2941);
obj["Bulk"].setColorFill(0,0,0);
obj["BulkLbl"].hide();
obj["BulkLine"].hide();
}
}),
props.UpdateManager.FromHashValue("cargoFwd", nil, func(val) {
if (val > 0) {
obj["Cargo1Door"].setColor(0.7333,0.3803,0);
obj["Cargo1Door"].setColorFill(0.7333,0.3803,0);
obj["Cargo1Lbl"].show();
obj["Cargo1Line"].show();
} else {
obj["Cargo1Door"].setColor(0.0509,0.7529,0.2941);
obj["Cargo1Door"].setColorFill(0,0,0);
obj["Cargo1Lbl"].hide();
obj["Cargo1Line"].hide();
}
}),
props.UpdateManager.FromHashValue("oxyPB", nil, func(val) {
if (val) {
obj["DOOROXY-OxyIndicator"].setColor(0.8078,0.8039,0.8078);
obj["DOOROXY-PR"].setColor(0.0509,0.7529,0.2941);
obj["DOOROXY-PR"].setText("1300");
} else {
obj["DOOROXY-OxyIndicator"].setColor(0.7333,0.3803,0);
obj["DOOROXY-PR"].setColor(0.7333,0.3803,0);
obj["DOOROXY-PR"].setText("0");
}
}),
props.UpdateManager.FromHashValue("pressVS", nil, func(val) {
if (val > 9950) {
obj["DOOR-VS"].setText(sprintf("%+4.0f", 9950));
} else if (val < -9950) {
obj["DOOR-VS"].setText(sprintf("%+4.0f", -9950));
} else {
obj["DOOR-VS"].setText(sprintf("%+4.0f", math.round(val,50)));
}
if (abs(val) > 2000) {
obj["DOOR-VS"].setColor(0.7333,0.3803,0);
} else {
obj["DOOR-VS"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("FWCPhase", nil, func(val) {
if (val >= 5 and val <= 7) {
obj["DOOR-VS-Container"].show();
} else {
obj["DOOR-VS-Container"].hide();
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR","DOOROXY-PR","DOOROXY-OxyIndicator","DOOR-VS","DOOR-VS-Container"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
doorL1: "/sim/model/door-positions/doorl1/position-norm",
doorL4: "/sim/model/door-positions/doorl4/position-norm",
doorR1: "/sim/model/door-positions/doorr1/position-norm",
doorR4: "/sim/model/door-positions/doorr4/position-norm",
cargoAft: "/sim/model/door-positions/cargoaft/position-norm",
cargoBulk: "/sim/model/door-positions/cargobulk/position-norm",
cargoFwd: "/sim/model/door-positions/cargofwd/position-norm",
oxyPB: "/controls/oxygen/crewOxyPB",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,827 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageElec =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageElec,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["IDG1-LOPR"].hide();
obj["IDG2-LOPR"].hide();
obj["Shed-label"].hide();
obj["IDG2-RISE-label"].hide();
obj["IDG2-RISE-Value"].hide();
obj["IDG1-RISE-label"].hide();
obj["IDG1-RISE-Value"].hide();
obj.update_items = [
props.UpdateManager.FromHashValue("apuLoad", 0.1, func(val) {
obj["APUGenLoad"].setText(sprintf("%s", math.round(val)));
if (val < 110) {
obj["APUGenHz"].setColor(0.0509,0.7529,0.2941);
} else {
obj["APUGenHz"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("apuHertz", 0.5, func(val) {
if (val == 0) {
obj["APUGenHz"].setText(sprintf("XX"));
} else {
obj["APUGenHz"].setText(sprintf("%s", math.round(val)));
}
if (val >= 390 and val <= 410) {
obj["APUGenHz"].setColor(0.0509,0.7529,0.2941);
} else {
obj["APUGenHz"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("apuVolt", 0.1, func(val) {
obj["APUGenVolt"].setText(sprintf("%s", math.round(val)));
if (val >= 110 and val <= 120) {
obj["APUGenVolt"].setColor(0.0509,0.7529,0.2941);
} else {
obj["APUGenVolt"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["apuMaster","apuVolt","apuLoad","apuHertz","apuGLC"], nil, func(val) {
if (val.apuMaster == 0) {
obj["APUGentext"].setColor(0.8078,0.8039,0.8078);
} else {
if (val.apuGLC == 0) {
obj["APUGentext"].setColor(0.7333,0.3803,0);
} else if (val.apuVolt > 120 or val.apuVolt < 110 or val.apuHertz > 410 or val.apuHertz < 390 or val.apuLoad >= 100) {
obj["APUGentext"].setColor(0.7333,0.3803,0);
} else {
obj["APUGentext"].setColor(0.8078,0.8039,0.8078);
}
}
}),
props.UpdateManager.FromHashList(["apuMaster","apuGenPB"], nil, func(val) {
if (val.apuMaster == 0) {
obj["APU-content"].hide();
obj["APUGEN-off"].hide();
obj["APU-border"].hide();
} else {
obj["APU-border"].show();
if (val.apuGenPB == 0) {
obj["APU-content"].hide();
obj["APUGEN-off"].show();
} else {
obj["APU-content"].show();
obj["APUGEN-off"].hide();
}
}
}),
props.UpdateManager.FromHashValue("elecIDG1Disc", nil, func(val) {
if (!val) {
obj["IDG1-DISC"].show();
obj["ELEC-IDG-1-label"].setColor(0.7333,0.3803,0);
} else {
obj["IDG1-DISC"].hide();
obj["ELEC-IDG-1-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashValue("elecIDG2Disc", nil, func(val) {
if (!val) {
obj["IDG2-DISC"].show();
obj["ELEC-IDG-2-label"].setColor(0.7333,0.3803,0);
} else {
obj["IDG2-DISC"].hide();
obj["ELEC-IDG-2-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashValue("engine1Running", nil, func(val) {
if (val == 0) {
obj["ELEC-IDG-1-num-label"].setColor(0.7333,0.3803,0);
obj["GEN1-num-label"].setColor(0.7333,0.3803,0);
} else {
obj["ELEC-IDG-1-num-label"].setColor(0.8078,0.8039,0.8078);
obj["GEN1-num-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashValue("engine2Running", nil, func(val) {
if (val == 0) {
obj["ELEC-IDG-2-num-label"].setColor(0.7333,0.3803,0);
obj["GEN2-num-label"].setColor(0.7333,0.3803,0);
} else {
obj["ELEC-IDG-2-num-label"].setColor(0.8078,0.8039,0.8078);
obj["GEN2-num-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashValue("dc1", 0.5, func(val) {
if (val > 25) {
obj["ELEC-DC1-label"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ELEC-DC1-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("dc2", 0.5, func(val) {
if (val > 25) {
obj["ELEC-DC2-label"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ELEC-DC2-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("dcEss", 0.5, func(val) {
if (val > 25) {
obj["ELEC-DCESS-label"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ELEC-DCESS-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("elecAC1", 0.5, func(val) {
if (val >= 110) {
obj["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941);
obj["AC1-in"].show();
obj["ELEC-Line-AC1-TR1"].show();
} else {
obj["ELEC-AC1-label"].setColor(0.7333,0.3803,0);
obj["AC1-in"].hide();
obj["ELEC-Line-AC1-TR1"].hide();
}
}),
props.UpdateManager.FromHashValue("elecAC2", 0.5, func(val) {
if (val >= 110) {
obj["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941);
obj["AC2-in"].show();
obj["ELEC-Line-AC2-TR2"].show();
} else {
obj["ELEC-AC2-label"].setColor(0.7333,0.3803,0);
obj["AC2-in"].hide();
obj["ELEC-Line-AC2-TR2"].hide();
}
}),
props.UpdateManager.FromHashValue("elecACEss", 0.5, func(val) {
if (val >= 110) {
obj["ELEC-ACESS-label"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ELEC-ACESS-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("elecACEssShed", 0.5, func(val) {
if (val >= 110) {
obj["ACESS-SHED"].hide();
} else {
obj["ACESS-SHED"].show();
}
}),
props.UpdateManager.FromHashValue("ElecGalleyShed", nil, func(val) {
if (val) {
obj["GalleyShed"].show();
} else {
obj["GalleyShed"].hide();
}
}),
props.UpdateManager.FromHashList(["elecBat1Switch","elecBat2Switch","dcBat"], nil, func(val) {
if (val.elecBat1Switch or val.elecBat2Switch) {
obj["ELEC-DCBAT-label"].setText("DC BAT");
if (val.dcBat > 25) {
obj["ELEC-DCBAT-label"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0);
}
} else {
obj["ELEC-DCBAT-label"].setText("XX"); # BCL not powered hence no voltage info supplied from BCL
obj["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["elecBat1Switch","elecBat1Volt","elecBat1Amp","elecBat1Direction","elecBat1Fault"], nil, func(val) {
if (val.elecBat1Switch == 0) {
obj["BAT1-OFF"].show();
obj["BAT1-content"].hide();
obj["BAT1-discharge"].hide();
obj["BAT1-charge"].hide();
} else {
obj["BAT1-OFF"].hide();
obj["BAT1-content"].show();
obj["Bat1Ampere"].setText(sprintf("%2.0f", val.elecBat1Amp));
obj["Bat1Volt"].setText(sprintf("%2.0f", val.elecBat1Volt));
if (val.elecBat1Volt >= 24.95 and val.elecBat1Volt <= 31.05) {
obj["Bat1Volt"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Bat1Volt"].setColor(0.7333,0.3803,0);
}
if (val.elecBat1Amp > 5 and val.elecBat1Direction == 1) {
obj["Bat1Ampere"].setColor(0.7333,0.3803,0);
} else {
obj["Bat1Ampere"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecBat1Direction == 0) {
obj["BAT1-discharge"].hide();
obj["BAT1-charge"].hide();
} else {
if (val.elecBat1Direction == -1) {
obj["BAT1-charge"].show();
obj["BAT1-discharge"].hide();
} else {
obj["BAT1-discharge"].show();
obj["BAT1-charge"].hide();
}
}
}
if (val.elecBat1Fault or val.elecBat1Volt < 25 or val.elecBat1Volt > 31 or val.elecBat1Amp > 5) {
obj["BAT1-label"].setColor(0.7333,0.3803,0);
} else {
obj["BAT1-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashList(["elecBat2Switch","elecBat2Volt","elecBat2Amp","elecBat2Direction","elecBat2Fault"], nil, func(val) {
if (val.elecBat2Switch == 0) {
obj["BAT2-OFF"].show();
obj["BAT2-content"].hide();
obj["BAT2-discharge"].hide();
obj["BAT2-charge"].hide();
} else {
obj["BAT2-OFF"].hide();
obj["BAT2-content"].show();
obj["Bat2Ampere"].setText(sprintf("%2.0f", val.elecBat2Amp));
obj["Bat2Volt"].setText(sprintf("%2.0f", val.elecBat2Volt));
if (val.elecBat2Volt >= 24.95 and val.elecBat2Volt <= 31.05) {
obj["Bat2Volt"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Bat2Volt"].setColor(0.7333,0.3803,0);
}
if (val.elecBat2Amp > 5 and val.elecBat2Direction == 1) {
obj["Bat2Ampere"].setColor(0.7333,0.3803,0);
} else {
obj["Bat2Ampere"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecBat2Direction == 0) {
obj["BAT2-discharge"].hide();
obj["BAT2-charge"].hide();
} else {
if (val.elecBat2Direction == -1) {
obj["BAT2-charge"].show();
obj["BAT2-discharge"].hide();
} else {
obj["BAT2-discharge"].show();
obj["BAT2-charge"].hide();
}
}
}
if (val.elecBat2Fault or val.elecBat2Volt < 25 or val.elecBat2Volt > 31 or val.elecBat2Amp > 5) {
obj["BAT2-label"].setColor(0.7333,0.3803,0);
} else {
obj["BAT2-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashList(["elecTR1Amp","elecTR1Volt"], nil, func(val) {
obj["TR1Volt"].setText(sprintf("%s", math.round(val.elecTR1Volt)));
obj["TR1Ampere"].setText(sprintf("%s", math.round(val.elecTR1Amp)));
if (val.elecTR1Volt < 25 or val.elecTR1Volt > 31 or val.elecTR1Amp < 5) {
obj["TR1-label"].setColor(0.7333,0.3803,0);
} else {
obj["TR1-label"].setColor(0.8078,0.8039,0.8078);
}
if (val.elecTR1Volt < 25 or val.elecTR1Volt > 31) {
obj["TR1Volt"].setColor(0.7333,0.3803,0);
} else {
obj["TR1Volt"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecTR1Amp < 5) {
obj["TR1Ampere"].setColor(0.7333,0.3803,0);
} else {
obj["TR1Ampere"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashList(["elecTR2Amp","elecTR2Volt"], nil, func(val) {
obj["TR2Volt"].setText(sprintf("%s", math.round(val.elecTR2Volt)));
obj["TR2Ampere"].setText(sprintf("%s", math.round(val.elecTR2Amp)));
if (val.elecTR2Volt < 25 or val.elecTR2Volt > 31 or val.elecTR2Amp < 5) {
obj["TR2-label"].setColor(0.7333,0.3803,0);
} else {
obj["TR2-label"].setColor(0.8078,0.8039,0.8078);
}
if (val.elecTR2Volt < 25 or val.elecTR2Volt > 31) {
obj["TR2Volt"].setColor(0.7333,0.3803,0);
} else {
obj["TR2Volt"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecTR2Amp < 5) {
obj["TR2Ampere"].setColor(0.7333,0.3803,0);
} else {
obj["TR2Ampere"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashList(["elecExtHertz","elecExtVolt","elecGroundCart"], nil, func(val) {
if (val.elecGroundCart == 0) {
obj["EXTPWR-group"].hide();
} else {
obj["EXTPWR-group"].show();
obj["ExtVolt"].setText(sprintf("%s", math.round(val.elecExtVolt)));
obj["ExtHz"].setText(sprintf("%s", math.round(val.elecExtHertz)));
if (val.elecExtHertz > 410 or val.elecExtHertz < 390 or val.elecExtVolt > 120 or val.elecExtVolt < 110) {
obj["EXTPWR-label"].setColor(0.7333,0.3803,0);
} else {
obj["EXTPWR-label"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecExtHertz > 410 or val.elecExtHertz < 390) {
obj["ExtHz"].setColor(0.7333,0.3803,0);
} else {
obj["ExtHz"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecExtVolt > 120 or val.elecExtVolt < 110) {
obj["ExtVolt"].setColor(0.7333,0.3803,0);
} else {
obj["ExtVolt"].setColor(0.0509,0.7529,0.2941);
}
}
}),
props.UpdateManager.FromHashValue("elecDCTie1", nil, func(val) {
if (val) {
obj["ELEC-Line-DC1-DCESS_DCBAT"].show();
} else {
obj["ELEC-Line-DC1-DCESS_DCBAT"].hide();
}
}),
props.UpdateManager.FromHashValue("elecDCTie2", nil, func(val) {
if (val) {
obj["ELEC-Line-DC2-DCESS_DCBAT"].show();
obj["ELEC-Line-DC2-DCBAT"].show();
} else {
obj["ELEC-Line-DC2-DCESS_DCBAT"].hide();
obj["ELEC-Line-DC2-DCBAT"].hide();
}
}),
props.UpdateManager.FromHashList(["elecDcEssFeedBat","elecDCTie1"], nil, func(val) {
if (val.elecDcEssFeedBat or val.elecDCTie1) {
obj["ELEC-Line-DC1-DCBAT"].show();
} else {
obj["ELEC-Line-DC1-DCBAT"].hide();
}
}),
props.UpdateManager.FromHashValue("elecDcEssFeedBat", nil, func(val) {
if (val) {
obj["ELEC-Line-DC1-DCESS"].show();
} else {
obj["ELEC-Line-DC1-DCESS"].hide();
}
}),
props.UpdateManager.FromHashValue("elecTrEssContact", nil, func(val) {
if (val) {
obj["ELEC-Line-ESSTR-DCESS"].show();
} else {
obj["ELEC-Line-ESSTR-DCESS"].hide();
}
}),
props.UpdateManager.FromHashValue("elecAcEssEmerGenFeed", nil, func(val) {
if (val) {
obj["EMERGEN-out"].show();
obj["ELEC-Line-Emergen-ESSTR"].show();
} else {
obj["EMERGEN-out"].hide();
obj["ELEC-Line-Emergen-ESSTR"].hide();
}
}),
props.UpdateManager.FromHashList(["elecTREssAmp","elecTREssVolt","elecTrEssContact"], nil, func(val) {
if (val.elecTrEssContact) {
obj["ESSTR-group"].show();
obj["ESSTR-Volt"].setText(sprintf("%s", math.round(val.elecTREssVolt)));
obj["ESSTR-Ampere"].setText(sprintf("%s", math.round(val.elecTREssAmp)));
if (val.elecTREssVolt < 25 or val.elecTREssVolt > 31 or val.elecTREssAmp < 5) {
obj["ESSTR"].setColor(0.7333,0.3803,0);
} else {
obj["ESSTR"].setColor(0.8078,0.8039,0.8078);
}
if (val.elecTREssVolt < 25 or val.elecTREssVolt > 31) {
obj["ESSTR-Volt"].setColor(0.7333,0.3803,0);
} else {
obj["ESSTR-Volt"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecTREssAmp < 5) {
obj["ESSTR-Ampere"].setColor(0.7333,0.3803,0);
} else {
obj["ESSTR-Ampere"].setColor(0.0509,0.7529,0.2941);
}
} else {
obj["ESSTR-group"].hide();
}
}),
props.UpdateManager.FromHashList(["elecEmerGenHertz","elecEmerGenVolts","elecEmerGenVoltsRelay"], nil, func(val) {
if (val.elecEmerGenVolts == 0) {
obj["EMERGEN-group"].hide();
obj["ELEC-Line-Emergen-ESSTR"].hide();
obj["ELEC-Line-Emergen-ESSTR-off"].show();
obj["EMERGEN-Label-off"].show();
} else {
obj["EMERGEN-group"].show();
obj["ELEC-Line-Emergen-ESSTR"].show();
obj["ELEC-Line-Emergen-ESSTR-off"].hide();
obj["EMERGEN-Label-off"].hide();
obj["EmergenVolt"].setText(sprintf("%s", math.round(val.elecEmerGenVoltsRelay)));
obj["EmergenHz"].setText(sprintf("%s", math.round(val.elecEmerGenHertz)));
if (val.elecEmerGenVoltsRelay > 120 or val.elecEmerGenVoltsRelay < 110 or val.elecEmerGenHertz > 410 or val.elecEmerGenHertz < 390) {
obj["Emergen-Label"].setColor(0.7333,0.3803,0);
} else {
obj["Emergen-Label"].setColor(0.8078,0.8039,0.8078);
}
if (val.elecEmerGenVoltsRelay > 120 or val.elecEmerGenVoltsRelay < 110) {
obj["EmergenVolt"].setColor(0.7333,0.3803,0);
} else {
obj["EmergenVolt"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecEmerGenHertz > 410 or val.elecEmerGenHertz < 390) {
obj["EmergenHz"].setColor(0.7333,0.3803,0);
} else {
obj["EmergenHz"].setColor(0.0509,0.7529,0.2941);
}
}
}),
props.UpdateManager.FromHashList(["elecGen1Switch","elecGen1Hertz","elecGen1Volt","engine1Running","elecGen1Relay"], nil, func(val) {
if (val.elecGen1Switch == 0) {
obj["GEN1-content"].hide();
obj["GEN1-off"].show();
if (val.elecGen1Relay) {
obj["GEN1-label"].setColor(0.7333,0.3803,0);
} else {
obj["GEN1-label"].setColor(0.8078,0.8039,0.8078);
}
} else {
obj["GEN1-content"].show();
obj["GEN1-off"].hide();
obj["Gen1Volt"].setText(sprintf("%s", math.round(val.elecGen1Volt)));
if (val.elecGen1Hertz == 0) {
obj["Gen1Hz"].setText(sprintf("XX"));
} else {
obj["Gen1Hz"].setText(sprintf("%s", math.round(val.elecGen1Hertz)));
}
if (val.elecGen1Volt > 120 or val.elecGen1Volt < 110 or val.elecGen1Hertz > 410 or val.elecGen1Hertz < 390) {
obj["GEN1-label"].setColor(0.7333,0.3803,0);
} else {
obj["GEN1-label"].setColor(0.8078,0.8039,0.8078);
}
if (val.elecGen1Volt > 120 or val.elecGen1Volt < 110) {
obj["Gen1Volt"].setColor(0.7333,0.3803,0);
} else {
obj["Gen1Volt"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecGen1Hertz > 410 or val.elecGen1Hertz < 390) {
obj["Gen1Hz"].setColor(0.7333,0.3803,0);
} else {
obj["Gen1Hz"].setColor(0.0509,0.7529,0.2941);
}
}
}),
props.UpdateManager.FromHashList(["elecGen2Switch","elecGen2Hertz","elecGen2Volt","engine1Running","elecGen2Relay"], nil, func(val) {
if (val.elecGen2Switch == 0) {
obj["GEN2-content"].hide();
obj["GEN2-off"].show();
if (val.elecGen2Relay) {
obj["GEN2-label"].setColor(0.7333,0.3803,0);
} else {
obj["GEN2-label"].setColor(0.8078,0.8039,0.8078);
}
} else {
obj["GEN2-content"].show();
obj["GEN2-off"].hide();
obj["Gen2Volt"].setText(sprintf("%s", math.round(val.elecGen2Volt)));
if (val.elecGen2Hertz == 0) {
obj["Gen2Hz"].setText(sprintf("XX"));
} else {
obj["Gen2Hz"].setText(sprintf("%s", math.round(val.elecGen2Hertz)));
}
if (val.elecGen2Volt > 120 or val.elecGen2Volt < 110 or val.elecGen2Hertz > 410 or val.elecGen2Hertz < 390) {
obj["GEN2-label"].setColor(0.7333,0.3803,0);
} else {
obj["GEN2-label"].setColor(0.8078,0.8039,0.8078);
}
if (val.elecGen2Volt > 120 or val.elecGen2Volt < 110) {
obj["Gen2Volt"].setColor(0.7333,0.3803,0);
} else {
obj["Gen2Volt"].setColor(0.0509,0.7529,0.2941);
}
if (val.elecGen2Hertz > 410 or val.elecGen2Hertz < 390) {
obj["Gen2Hz"].setColor(0.7333,0.3803,0);
} else {
obj["Gen2Hz"].setColor(0.0509,0.7529,0.2941);
}
}
}),
props.UpdateManager.FromHashList(["elecTR1Contact","elecAC1"], nil, func(val) {
if (val.elecTR1Contact) {
if (val.elecAC1 < 110) {
obj["ELEC-Line-AC1-TR1"].setColorFill(0.7333,0.3803,0);
} else {
obj["ELEC-Line-AC1-TR1"].setColorFill(0.0509,0.7529,0.2941);
}
obj["ELEC-Line-TR1-DC1"].show();
} else {
obj["ELEC-Line-TR1-DC1"].hide();
}
}),
props.UpdateManager.FromHashList(["elecTR2Contact","elecAC2"], nil, func(val) {
if (val.elecTR2Contact) {
if (val.elecAC2 < 110) {
obj["ELEC-Line-AC2-TR2"].setColorFill(0.7333,0.3803,0);
} else {
obj["ELEC-Line-AC2-TR2"].setColorFill(0.0509,0.7529,0.2941);
}
obj["ELEC-Line-TR2-DC2"].show();
} else {
obj["ELEC-Line-TR2-DC2"].hide();
}
}),
props.UpdateManager.FromHashList(["elecAcEssFeed1","elecAcEssFeed2","elecAC1","elecAC2"], nil, func(val) {
if (val.elecAcEssFeed1) {
if (val.elecAC1 >= 110) {
obj["ELEC-Line-AC1-ACESS"].show();
} else {
obj["ELEC-Line-AC1-ACESS"].hide();
}
obj["ELEC-Line-AC2-ACESS"].hide();
} elsif (val.elecAcEssFeed2) {
obj["ELEC-Line-AC1-ACESS"].hide();
if (val.elecAC2 >= 110) {
obj["ELEC-Line-AC2-ACESS"].show();
} else {
obj["ELEC-Line-AC2-ACESS"].hide();
}
} else {
obj["ELEC-Line-AC1-ACESS"].hide();
obj["ELEC-Line-AC2-ACESS"].hide();
}
}),
props.UpdateManager.FromHashList(["elecGen1Volt","elecGen1GLC"], nil, func(val) {
if (val.elecGen1Volt >= 110 and val.elecGen1GLC) {
obj["ELEC-Line-GEN1-AC1"].show();
} else {
obj["ELEC-Line-GEN1-AC1"].hide();
}
}),
props.UpdateManager.FromHashList(["elecGen2Volt","elecGen2GLC"], nil, func(val) {
if (val.elecGen2Volt >= 110 and val.elecGen2GLC) {
obj["ELEC-Line-GEN1-AC1"].show();
} else {
obj["ELEC-Line-GEN1-AC1"].hide();
}
}),
props.UpdateManager.FromHashList(["elecAcTie1","elecAcTie2","apuGLC","elecExtEPC","elecGen1GLC","elecGen2GLC"], nil, func(val) {
if (val.apuGLC and (val.elecAcTie1 or val.elecAcTie2)) {
obj["APU-out"].show();
} else {
obj["APU-out"].hide();
}
if (val.elecExtEPC and (val.elecAcTie1 or val.elecAcTie2)) {
obj["EXT-out"].show();
} else {
obj["EXT-out"].hide();
}
if (val.elecAcTie1 and val.elecAcTie2) {
obj["ELEC-Line-APU-AC1"].show();
obj["ELEC-Line-APU-EXT"].show();
obj["ELEC-Line-EXT-AC2"].show();
} else {
if (val.elecAcTie1) {
obj["ELEC-Line-APU-AC1"].show();
} else {
obj["ELEC-Line-APU-AC1"].hide();
}
if ((val.elecAcTie2 and val.apuGLC and !val.elecGen2GLC) or (val.elecAcTie1 and val.elecExtEPC and !val.elecGen1GLC)) {
obj["ELEC-Line-APU-EXT"].show();
} else {
obj["ELEC-Line-APU-EXT"].hide();
}
if (val.elecAcTie2) {
obj["ELEC-Line-EXT-AC2"].show();
} else {
obj["ELEC-Line-EXT-AC2"].hide();
}
}
}),
props.UpdateManager.FromHashList(["elecACEss","ELEC-Line-ACESS-TRESS","elecTR1Contact","elecTR2Contact"], nil, func(val) {
if (val.elecACEss >= 110 and !val.elecAcEssEmerGenFeed and (!val.elecTR1Contact or !val.elecTR2Contact)) {
obj["ELEC-Line-ACESS-TRESS"].show();
} else {
obj["ELEC-Line-ACESS-TRESS"].hide();
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","BAT1-label","Bat1Volt","Bat1Ampere","BAT2-label","Bat2Volt","Bat2Ampere","BAT1-charge","BAT1-discharge","BAT2-charge","BAT2-discharge","ELEC-Line-DC1-DCBAT","ELEC-Line-DC1-DCESS","ELEC-Line-DC2-DCBAT",
"ELEC-Line-DC1-DCESS_DCBAT","ELEC-Line-DC2-DCESS_DCBAT","ELEC-Line-TR1-DC1","ELEC-Line-TR2-DC2","Shed-label","ELEC-Line-ESSTR-DCESS","TR1-label","TR1Volt","TR1Ampere","TR2-label","TR2Volt","TR2Ampere","EMERGEN-group","EmergenVolt","EmergenHz",
"ELEC-Line-Emergen-ESSTR","EMERGEN-Label-off","Emergen-Label","EMERGEN-out","ELEC-Line-ACESS-TRESS","ELEC-Line-AC1-TR1","ELEC-Line-AC2-TR2","ELEC-Line-AC1-ACESS","ELEC-Line-AC2-ACESS","ACESS-SHED","ACESS","AC1-in","AC2-in","ELEC-Line-GEN1-AC1","ELEC-Line-GEN2-AC2",
"ELEC-Line-APU-AC1","ELEC-Line-APU-EXT","ELEC-Line-EXT-AC2","APU-out","EXT-out","EXTPWR-group","ExtVolt","ExtHz","APU-content","APU-border","APUGentext","APUGenLoad","APUGenVolt","APUGenHz","APUGEN-off","GEN1-label","Gen1Load","Gen1Volt","Gen1Hz",
"GEN2-label","Gen2Load","GEN2-off","Gen2Volt","Gen2Hz","ELEC-IDG-1-label","ELEC-IDG-1-num-label","ELEC-IDG-1-Temp","IDG1-LOPR","IDG1-DISC","IDG1-RISE-Value","IDG1-RISE-label","GalleyShed","ELEC-IDG-2-Temp","ELEC-IDG-2-label","ELEC-IDG-2-num-label","IDG2-RISE-label","IDG2-RISE-Value","IDG2-LOPR",
"IDG2-DISC","ESSTR-group","ESSTR","ESSTR-Volt","ESSTR-Ampere","BAT1-content","BAT2-content","BAT1-OFF","BAT2-OFF","GEN1-content","GEN2-content","GEN-1-num-label","GEN-2-num-label","GEN1-off","GEN2-off","GEN1-num-label","GEN2-num-label","EXTPWR-label",
"ELEC-ACESS-SHED-label","ELEC-DCBAT-label","ELEC-DCESS-label","ELEC-DC2-label","ELEC-DC1-label","ELEC-AC1-label","ELEC-AC2-label","ELEC-ACESS-label","ELEC-Line-ESSTR-DCESS-off","ELEC-Line-Emergen-ESSTR-off"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
elecAcEssFeed1: "/systems/electrical/relay/ac-ess-feed-1/contact-pos",
elecAcEssFeed2: "/systems/electrical/relay/ac-ess-feed-2/contact-pos",
elecBat1Amp: "/systems/electrical/sources/bat-1/amps",
elecBat2Amp: "/systems/electrical/sources/bat-2/amps",
elecBat1Direction: "/systems/electrical/sources/bat-1/direction",
elecBat2Direction: "/systems/electrical/sources/bat-2/direction",
elecBat1Fault: "/systems/electrical/light/bat-1-fault",
elecBat2Fault: "/systems/electrical/light/bat-2-fault",
elecBat1Volt: "/systems/electrical/sources/bat-1/volt",
elecBat2Volt: "/systems/electrical/sources/bat-2/volt",
elecBat1Switch: "/controls/electrical/switches/bat-1",
elecBat2Switch: "/controls/electrical/switches/bat-2",
elecTR1Amp: "/systems/electrical/relay/tr-contactor-1/output-amp",
elecTR2Amp: "/systems/electrical/relay/tr-contactor-2/output-amp",
elecTR1Volt: "/systems/electrical/relay/tr-contactor-1/output",
elecTR2Volt: "/systems/electrical/relay/tr-contactor-2/output",
elecTR1Contact: "/systems/electrical/relay/tr-contactor-1/contact-pos",
elecTR2Contact: "/systems/electrical/relay/tr-contactor-2/contact-pos",
elecTREssAmp: "/systems/electrical/relay/dc-ess-feed-tr/output-amp",
elecTrEssContact: "/systems/electrical/relay/dc-ess-feed-tr/contact-pos",
elecTREssVolt: "/systems/electrical/relay/dc-ess-feed-tr/output",
elecIDG1Disc: "/controls/electrical/switches/idg-1-disc",
elecIDG2Disc: "/controls/electrical/switches/idg-2-disc",
elecGroundCart: "/controls/electrical/ground-cart",
elecExtHertz: "/systems/electrical/sources/ext/output-hertz",
elecExtVolt: "/systems/electrical/sources/ext/output-volt",
elecDCTie1: "/systems/electrical/relay/dc-bus-tie-dc-1/contact-pos",
elecDCTie2: "/systems/electrical/relay/dc-bus-tie-dc-2/contact-pos",
elecDcEssFeedBat: "/systems/electrical/relay/dc-ess-feed-bat/contact-pos",
elecAcEssEmerGenFeed: "/systems/electrical/relay/ac-ess-feed-emer-gen/contact-pos",
elecEmerGenVolts: "/systems/electrical/sources/emer-gen/output-volt",
elecEmerGenVoltsRelay: "/systems/electrical/relay/emer-glc/output",
elecEmerGenHertz: "/systems/electrical/sources/emer-gen/output-hertz",
elecGen1Switch: "/controls/electrical/switches/gen-1",
elecGen1Hertz: "/systems/electrical/sources/idg-1/output-hertz",
elecGen1Volt: "/systems/electrical/sources/idg-1/output-volt",
elecGen1Relay: "/systems/electrical/sources/idg-1/gcr-relay",
elecGen1GLC: "/systems/electrical/relay/gen-1-glc/contact-pos",
elecGen2Switch: "/controls/electrical/switches/gen-2",
elecGen2Hertz: "/systems/electrical/sources/idg-2/output-hertz",
elecGen2Volt: "/systems/electrical/sources/idg-2/output-volt",
elecGen2Relay: "/systems/electrical/sources/idg-2/gcr-relay",
elecGen2GLC: "/systems/electrical/relay/gen-2-glc/contact-pos",
elecAcTie1: "/systems/electrical/relay/ac-bus-ac-bus-tie-1/contact-pos",
elecAcTie2: "/systems/electrical/relay/ac-bus-ac-bus-tie-2/contact-pos",
elecExtEPC: "/systems/electrical/relay/ext-epc/contact-pos",
ElecGalleyShed: "/systems/electrical/some-electric-thingie/galley-shed",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,258 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var fuel_used_lbs1 = props.globals.getNode("/systems/fuel/fuel-used-1", 1);
var fuel_used_lbs2 = props.globals.getNode("/systems/fuel/fuel-used-2", 1);
var QT2LTR = 0.946353;
var canvas_lowerECAMPageEng =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageEng,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["FUEL-clog-1"].hide();
obj["FUEL-clog-2"].hide();
obj["OIL-clog-1"].hide();
obj["OIL-clog-2"].hide();
obj.quantity = [nil, nil];
obj.update_items = [
props.UpdateManager.FromHashValue("engOilQt1", 0.005, func(val) {
if (obj.units) {
obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5)));
obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1))));
obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1)));
obj["OilQT1-needle"].setRotation(((val * QT2LTR) + 90) * D2R);
} else {
obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(val * 10,5)));
obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1))));
obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1)));
obj["OilQT1-needle"].setRotation((val + 90) * D2R);
}
}),
props.UpdateManager.FromHashValue("engOilQt2", 0.005, func(val) {
if (obj.units) {
obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5)));
obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1))));
obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1)));
obj["OilQT2-needle"].setRotation(((val * QT2LTR) + 90) * D2R);
} else {
obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(val * 10,5)));
obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1))));
obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1)));
obj["OilQT2-needle"].setRotation((val + 90) * D2R);
}
}),
props.UpdateManager.FromHashValue("engOilPsi1", 0.25, func(val) {
if (val >= 13) {
obj["OilPSI1"].setColor(0.0509,0.7529,0.2941);
obj["OilPSI1-needle"].setColor(0.0509,0.7529,0.2941);
} else {
obj["OilPSI1"].setColor(1,0,0);
obj["OilPSI1-needle"].setColor(1,0,0);
}
obj["OilPSI1"].setText(sprintf("%s", math.round(val)));
obj["OilPSI1-needle"].setRotation((val + 90) * D2R);
}),
props.UpdateManager.FromHashValue("engOilPsi2", 0.25, func(val) {
if (val >= 13) {
obj["OilPSI2"].setColor(0.0509,0.7529,0.2941);
obj["OilPSI2-needle"].setColor(0.0509,0.7529,0.2941);
} else {
obj["OilPSI2"].setColor(1,0,0);
obj["OilPSI2-needle"].setColor(1,0,0);
}
obj["OilPSI2"].setText(sprintf("%s", math.round(val)));
obj["OilPSI2-needle"].setRotation((val + 90) * D2R);
}),
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
if (val) {
obj["Fused-weight-unit"].setText("KG");
obj["Fused-oil-unit"].setText("LTR");
# immediately update parameters
obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * QT2LTR * 10,5)));
obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1))));
obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1)));
obj["OilQT1-needle"].setRotation(((pts.Engines.Engine.oilQt[0].getValue() * QT2LTR) + 90) * D2R);
obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * QT2LTR * 10,5)));
obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1))));
obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1)));
obj["OilQT2-needle"].setRotation(((pts.Engines.Engine.oilQt[1].getValue() * QT2LTR) + 90) * D2R);
obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10)));
obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)));
} else {
obj["Fused-weight-unit"].setText("LBS");
obj["Fused-oil-unit"].setText("QT");
obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * 10,5)));
obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1))));
obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1)));
obj["OilQT1-needle"].setRotation((pts.Engines.Engine.oilQt[0].getValue() + 90) * D2R);
obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * 10,5)));
obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1))));
obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1)));
obj["OilQT2-needle"].setRotation((pts.Engines.Engine.oilQt[1].getValue() + 90) * D2R);
obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10)));
obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10)));
}
}),
props.UpdateManager.FromHashValue("engFuelUsed1", 1, func(val) {
if (obj.units) {
obj["FUEL-used-1"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-used-1"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashValue("engFuelUsed2", 1, func(val) {
if (obj.units) {
obj["FUEL-used-2"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-used-2"].setText(sprintf("%s", math.round(val, 10)));
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["OilQT1-needle","OilQT2-needle","OilQT1","OilQT2","OilQT1-decimal","OilQT2-decimal","OilPSI1-needle","OilPSI2-needle","OilPSI1","OilPSI2",
"FUEL-used-1","FUEL-used-2", "Fused-weight-unit","Fused-oil-unit","FUEL-clog-1","FUEL-clog-2","OIL-clog-1","OIL-clog-2","OilTemp1","OilTemp2",
"VIB-N1-1","VIB-N1-2","VIB-N2-1","VIB-N2-2"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
engFuelUsed1: "/systems/fuel/fuel-used-1",
engFuelUsed2: "/systems/fuel/fuel-used-2",
engOilQt1: "/engines/engine[0]/oil-qt-actual",
engOilQt2: "/engines/engine[1]/oil-qt-actual",
engOilPsi1: "/engines/engine[0]/oil-psi-actual",
engOilPsi2: "/engines/engine[1]/oil-psi-actual",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,611 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageFctl =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageFctl,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj.update_items = [
props.UpdateManager.FromHashList(["green","elac1","elac2","sec2"], nil, func(val) {
if (val.green >= 1450) {
if (val.elac2 or val.sec2) {
obj["elevLgreen"].setColor(0.0509,0.7529,0.2941);
} else {
obj["elevLgreen"].setColor(0.7333,0.3803,0);
}
if (val.elac2) {
obj["ailLgreen"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ailLgreen"].setColor(0.7333,0.3803,0);
}
if (val.elac1) {
obj["ailRgreen"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ailRgreen"].setColor(0.7333,0.3803,0);
}
obj["ruddergreen"].setColor(0.0509,0.7529,0.2941);
obj["PTgreen"].setColor(0.0509,0.7529,0.2941);
obj["spdbrkgreen"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ailLgreen"].setColor(0.7333,0.3803,0);
obj["ailRgreen"].setColor(0.7333,0.3803,0);
obj["elevLgreen"].setColor(0.7333,0.3803,0);
obj["ruddergreen"].setColor(0.7333,0.3803,0);
obj["PTgreen"].setColor(0.7333,0.3803,0);
obj["spdbrkgreen"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["yellow","elac2","sec2"], nil, func(val) {
if (val.yellow >= 1450) {
if (val.elac2 or val.sec2) {
obj["elevRyellow"].setColor(0.0509,0.7529,0.2941);
} else {
obj["elevRyellow"].setColor(0.7333,0.3803,0);
}
obj["rudderyellow"].setColor(0.0509,0.7529,0.2941);
obj["PTyellow"].setColor(0.0509,0.7529,0.2941);
obj["spdbrkyellow"].setColor(0.0509,0.7529,0.2941);
} else {
obj["elevRyellow"].setColor(0.7333,0.3803,0);
obj["rudderyellow"].setColor(0.7333,0.3803,0);
obj["PTyellow"].setColor(0.7333,0.3803,0);
obj["spdbrkyellow"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["blue","elac1","elac2","sec1"], nil, func(val) {
if (val.blue >= 1500) {
if (val.elac1) {
obj["ailLblue"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ailLblue"].setColor(0.7333,0.3803,0);
}
if (val.elac1 or val.sec1) {
obj["elevLblue"].setColor(0.0509,0.7529,0.2941);
obj["elevRblue"].setColor(0.0509,0.7529,0.2941);
} else {
obj["elevLblue"].setColor(0.7333,0.3803,0);
obj["elevRblue"].setColor(0.7333,0.3803,0);
}
if (val.elac2) {
obj["ailRblue"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ailRblue"].setColor(0.7333,0.3803,0);
}
obj["rudderblue"].setColor(0.0509,0.7529,0.2941);
obj["spdbrkblue"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ailLblue"].setColor(0.7333,0.3803,0);
obj["ailRblue"].setColor(0.7333,0.3803,0);
obj["elevLblue"].setColor(0.7333,0.3803,0);
obj["elevRblue"].setColor(0.7333,0.3803,0);
obj["rudderblue"].setColor(0.7333,0.3803,0);
obj["spdbrkblue"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("fctlAilL", 0.001, func(val) {
obj["ailL"].setTranslation(0, val * 100);
}),
props.UpdateManager.FromHashValue("fctlAilR", 0.001, func(val) {
obj["ailR"].setTranslation(0, val * -100);
}),
props.UpdateManager.FromHashList(["blue","green","elac1","elac2"], nil, func(val) {
if ((val.blue < 1500 or !val.elac1) and (val.green < 1500 or !val.elac2)) {
obj["ailL"].setColor(0.7333,0.3803,0);
} else {
obj["ailL"].setColor(0.0509,0.7529,0.2941);
}
if ((val.green < 1500 or !val.elac1) and (val.blue < 1500 or !val.elac2)) {
obj["ailR"].setColor(0.7333,0.3803,0);
} else {
obj["ailR"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("fctlElevL", 0.001, func(val) {
obj["elevL"].setTranslation(0, val * 100);
}),
props.UpdateManager.FromHashValue("fctlElevR", 0.001, func(val) {
obj["elevR"].setTranslation(0, val * 100);
}),
props.UpdateManager.FromHashList(["blue","green","yellow","elac1","elac2","sec1","sec2"], nil, func(val) {
if ((val.blue < 1500 or (!val.elac1 and !val.sec1)) and (val.green < 1500 or (!val.elac2 and !val.sec2))) {
obj["elevL"].setColor(0.7333,0.3803,0);
} else {
obj["elevL"].setColor(0.0509,0.7529,0.2941);
}
if ((val.blue < 1500 or (!val.elac1 and !val.sec1)) and (val.yellow < 1500 or (!val.elac2 and !val.sec2))) {
obj["elevR"].setColor(0.7333,0.3803,0);
} else {
obj["elevR"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("fctlElevTrim", 0.01, func(val) {
obj["PT"].setText(sprintf("%2.1f", val));
if (val >= 0.09) {
obj["PTupdn"].setText("UP");
obj["PTupdn"].show();
} elsif (val <= -0.09) {
obj["PTupdn"].setText("DN");
obj["PTupdn"].show();
} else {
obj["PTupdn"].hide();
}
}),
props.UpdateManager.FromHashValue("elac1", nil, func(val) {
if (val) {
obj["elac1"].setColor(0.0509,0.7529,0.2941);
obj["path4249"].setColor(0.0509,0.7529,0.2941);
} else {
obj["elac1"].setColor(0.7333,0.3803,0);
obj["path4249"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("elac2", nil, func(val) {
if (val) {
obj["elac2"].setColor(0.0509,0.7529,0.2941);
obj["path4249-3"].setColor(0.0509,0.7529,0.2941);
} else {
obj["elac2"].setColor(0.7333,0.3803,0);
obj["path4249-3"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("sec1", nil, func(val) {
if (val) {
obj["sec1"].setColor(0.0509,0.7529,0.2941);
obj["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941);
} else {
obj["sec1"].setColor(0.7333,0.3803,0);
obj["path4249-3-6-7"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("sec2", nil, func(val) {
if (val) {
obj["sec2"].setColor(0.0509,0.7529,0.2941);
obj["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941);
} else {
obj["sec2"].setColor(0.7333,0.3803,0);
obj["path4249-3-6-7-5"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("sec3", nil, func(val) {
if (val) {
obj["sec3"].setColor(0.0509,0.7529,0.2941);
obj["path4249-3-6"].setColor(0.0509,0.7529,0.2941);
} else {
obj["sec3"].setColor(0.7333,0.3803,0);
obj["path4249-3-6"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["blue","yellow","green"], 25, func(val) {
if (val.green < 1500 and val.yellow < 1500) {
obj["PT"].setColor(0.7333,0.3803,0);
obj["PTupdn"].setColor(0.7333,0.3803,0);
obj["PTcc"].setColor(0.7333,0.3803,0);
} else {
obj["PT"].setColor(0.0509,0.7529,0.2941);
obj["PTupdn"].setColor(0.0509,0.7529,0.2941);
obj["PTcc"].setColor(0.0901,0.6039,0.7176);
}
if (val.blue < 1500 and val.yellow < 1500 and val.green < 1500) {
obj["rudder"].setColor(0.7333,0.3803,0);
} else {
obj["rudder"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("fctlRudder", 0.001, func(val) {
obj["rudder"].setRotation(val * -0.024);
}),
props.UpdateManager.FromHashValue("fctlRudderTrim", 0.01, func(val) {
obj["rudderTrimInd"].setRotation(val * -0.024);
}),
props.UpdateManager.FromHashValue("fctlTHSJam", nil, func(val) {
if (val) {
obj["pitchTrimStatus"].setColor(0.7333,0.3803,0);
} else {
obj["pitchTrimStatus"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashValue("spoilerL1", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler1Lex"].hide();
obj["spoiler1Lrt"].show();
} else {
obj["spoiler1Lrt"].hide();
obj["spoiler1Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL2", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler2Lex"].hide();
obj["spoiler2Lrt"].show();
} else {
obj["spoiler2Lrt"].hide();
obj["spoiler2Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL3", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler3Lex"].hide();
obj["spoiler3Lrt"].show();
} else {
obj["spoiler3Lrt"].hide();
obj["spoiler3Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL4", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler4Lex"].hide();
obj["spoiler4Lrt"].show();
} else {
obj["spoiler4Lrt"].hide();
obj["spoiler4Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL5", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler5Lex"].hide();
obj["spoiler5Lrt"].show();
} else {
obj["spoiler5Lrt"].hide();
obj["spoiler5Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR1", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler1Rex"].hide();
obj["spoiler1Rrt"].show();
} else {
obj["spoiler1Rrt"].hide();
obj["spoiler1Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR2", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler2Rex"].hide();
obj["spoiler2Rrt"].show();
} else {
obj["spoiler2Rrt"].hide();
obj["spoiler2Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR3", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler3Rex"].hide();
obj["spoiler3Rrt"].show();
} else {
obj["spoiler3Rrt"].hide();
obj["spoiler3Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR4", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler4Rex"].hide();
obj["spoiler4Rrt"].show();
} else {
obj["spoiler4Rrt"].hide();
obj["spoiler4Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR5", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler5Rex"].hide();
obj["spoiler5Rrt"].show();
} else {
obj["spoiler5Rrt"].hide();
obj["spoiler5Rex"].show();
}
}),
props.UpdateManager.FromHashList(["spoilerL1Failure","spoilerL1","green"], nil, func(val) {
if (val.spoilerL1Failure or val.green < 1500) {
obj["spoiler1Lex"].setColor(0.7333,0.3803,0);
obj["spoiler1Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL1 < 1.5) {
obj["spoiler1Lf"].show();
} else {
obj["spoiler1Lf"].hide();
}
} else {
obj["spoiler1Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL2Failure","spoilerL2","yellow"], nil, func(val) {
if (val.spoilerL2Failure or val.yellow < 1500) {
obj["spoiler2Lex"].setColor(0.7333,0.3803,0);
obj["spoiler2Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL2 < 1.5) {
obj["spoiler2Lf"].show();
} else {
obj["spoiler2Lf"].hide();
}
} else {
obj["spoiler2Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL3Failure","spoilerL3","blue"], nil, func(val) {
if (val.spoilerL3Failure or val.blue < 1500) {
obj["spoiler3Lex"].setColor(0.7333,0.3803,0);
obj["spoiler3Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL3 < 1.5) {
obj["spoiler3Lf"].show();
} else {
obj["spoiler3Lf"].hide();
}
} else {
obj["spoiler3Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL4Failure","spoilerL4","yellow"], nil, func(val) {
if (val.spoilerL4Failure or val.yellow < 1500) {
obj["spoiler4Lex"].setColor(0.7333,0.3803,0);
obj["spoiler4Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL4 < 1.5) {
obj["spoiler4Lf"].show();
} else {
obj["spoiler4Lf"].hide();
}
} else {
obj["spoiler4Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL5Failure","spoilerL5","green"], nil, func(val) {
if (val.spoilerL5Failure or val.green < 1500) {
obj["spoiler5Lex"].setColor(0.7333,0.3803,0);
obj["spoiler5Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL5 < 1.5) {
obj["spoiler5Lf"].show();
} else {
obj["spoiler5Lf"].hide();
}
} else {
obj["spoiler5Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR1Failure","spoilerR1","green"], nil, func(val) {
if (val.spoilerR1Failure or val.green < 1500) {
obj["spoiler1Rex"].setColor(0.7333,0.3803,0);
obj["spoiler1Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR1 < 1.5) {
obj["spoiler1Rf"].show();
} else {
obj["spoiler1Rf"].hide();
}
} else {
obj["spoiler1Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR2Failure","spoilerR2","yellow"], nil, func(val) {
if (val.spoilerR2Failure or val.yellow < 1500) {
obj["spoiler2Rex"].setColor(0.7333,0.3803,0);
obj["spoiler2Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR2 < 1.5) {
obj["spoiler2Rf"].show();
} else {
obj["spoiler2Rf"].hide();
}
} else {
obj["spoiler2Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR3Failure","spoilerR3","blue"], nil, func(val) {
if (val.spoilerR3Failure or val.blue < 1500) {
obj["spoiler3Rex"].setColor(0.7333,0.3803,0);
obj["spoiler3Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR3 < 1.5) {
obj["spoiler3Rf"].show();
} else {
obj["spoiler3Rf"].hide();
}
} else {
obj["spoiler3Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR4Failure","spoilerR4","yellow"], nil, func(val) {
if (val.spoilerR4Failure or val.yellow < 1500) {
obj["spoiler4Rex"].setColor(0.7333,0.3803,0);
obj["spoiler4Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR4 < 1.5) {
obj["spoiler4Rf"].show();
} else {
obj["spoiler4Rf"].hide();
}
} else {
obj["spoiler4Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR5Failure","spoilerR5","green"], nil, func(val) {
if (val.spoilerR5Failure or val.green < 1500) {
obj["spoiler5Rex"].setColor(0.7333,0.3803,0);
obj["spoiler5Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR5 < 1.5) {
obj["spoiler5Rf"].show();
} else {
obj["spoiler5Rf"].hide();
}
} else {
obj["spoiler5Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Rf"].hide();
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen",
"elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex",
"spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf",
"spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6","pitchTrimStatus","rudderTrimInd"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
elac1: "/systems/fctl/elac1",
elac2: "/systems/fctl/elac2",
elac1Fail: "/systems/failures/fctl/elac1",
elac2Fail: "/systems/failures/fctl/elac2",
sec1: "/systems/fctl/sec1",
sec2: "/systems/fctl/sec2",
sec3: "/systems/fctl/sec3",
sec1Fail: "/systems/failures/fctl/sec1",
sec2Fail: "/systems/failures/fctl/sec2",
sec3Fail: "/systems/failures/fctl/sec3",
fac1: "/systems/fctl/fac1-healthy-signal",
fac2: "/systems/fctl/fac2-healthy-signal",
fac1Fail: "/systems/failures/fctl/fac1",
fac2Fail: "/systems/failures/fctl/fac2",
fctlAilL: "/ECAM/Lower/aileron-ind-left",
fctlAilR: "/ECAM/Lower/aileron-ind-right",
fctlElevL: "/ECAM/Lower/elevator-ind-left",
fctlElevR: "/ECAM/Lower/elevator-ind-right",
fctlElevTrim: "/ECAM/Lower/elevator-trim-deg",
fctlRudder: "/fdm/jsbsim/hydraulics/rudder/final-deg",
fctlRudderTrim: "/fdm/jsbsim/hydraulics/rudder/trim-deg",
fctlTHSJam: "/systems/failures/fctl/ths-jam",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,600 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var fuel_used_lbs1 = props.globals.getNode("/systems/fuel/fuel-used-1", 1);
var fuel_used_lbs2 = props.globals.getNode("/systems/fuel/fuel-used-2", 1);
var canvas_lowerECAMPageFuel =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageFuel,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["FUEL-Left-blocked"].hide();
obj["FUEL-Right-blocked"].hide();
obj["FUEL-Left-Outer-Inacc"].hide();
obj["FUEL-Left-Inner-Inacc"].hide();
obj["FUEL-Right-Outer-Inacc"].hide();
obj["FUEL-Right-Inner-Inacc"].hide();
obj["FUEL-Center-Inacc"].hide();
obj.update_items = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
if (val) {
obj["FOB-weight-unit"].setText("KG");
obj["Fused-weight-unit"].setText("KG");
obj["FFlow-weight-unit"].setText("KG/MIN");
obj["FUEL-On-Board"].setText(sprintf("%s", math.round(pts.Consumables.Fuel.totalFuelLbs.getValue() * LBS2KGS, 10)));
obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue() * LBS2KGS, 10)));
obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue() * LBS2KGS, 10)));
obj["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue() * LBS2KGS, 10)));
obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue() * LBS2KGS, 10)));
obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue() * LBS2KGS, 10)));
obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((pts.Engines.Engine.fuelFlow[0].getValue() + pts.Engines.Engine.fuelFlow[1].getValue()) * LBS2KGS) / 60, 10)));
obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10)));
obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)));
obj["FUEL-used-both"].setText(sprintf("%s", (math.round((fuel_used_lbs1.getValue() * LBS2KGS) + (fuel_used_lbs2.getValue() * LBS2KGS), 10))));
} else {
obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10)));
obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10)));
obj["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() + fuel_used_lbs2.getValue(), 10))));
obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round((pts.Engines.Engine.fuelFlow[0].getValue() + pts.Engines.Engine.fuelFlow[1].getValue()) / 60, 10)));
obj["FOB-weight-unit"].setText("LBS");
obj["Fused-weight-unit"].setText("LBS");
obj["FFlow-weight-unit"].setText("LBS/MIN");
obj["FUEL-On-Board"].setText(sprintf("%s", math.round(pts.Consumables.Fuel.totalFuelLbs.getValue(), 10)));
obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue(), 10)));
obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue(), 10)));
obj["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue(), 10)));
obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue(), 10)));
obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue(), 10)));
}
}),
props.UpdateManager.FromHashValue("engFuelUsed1", 0.5, func(val) {
if (obj.units) {
obj["FUEL-used-1"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-used-1"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashValue("engFuelUsed2", 0.5, func(val) {
if (obj.units) {
obj["FUEL-used-2"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-used-2"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashList(["engFuelUsed1","engFuelUsed2"], 0.5, func(val) {
if (obj.units) {
obj["FUEL-used-both"].setText(sprintf("%s", (math.round((val.engFuelUsed1 * LBS2KGS) + (val.engFuelUsed2 * LBS2KGS), 10))));
} else {
obj["FUEL-used-both"].setText(sprintf("%s", (math.round(val.engFuelUsed1 + val.engFuelUsed2, 10))));
}
}),
props.UpdateManager.FromHashValue("fuelLeftOuterQty", 0.25, func(val) {
if (obj.units) {
obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashValue("fuelRightOuterQty", 0.25, func(val) {
if (obj.units) {
obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashValue("fuelLeftInnerQty", 0.25, func(val) {
if (obj.units) {
obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashValue("fuelRightInnerQty", 0.25, func(val) {
if (obj.units) {
obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashList(["fadecPower1","fadecPower2","fadecPowerStart","fuelflow_1","fuelflow_2"], nil, func(val) {
if (val.fadecPower1 or val.fadecPower2 or val.fadecPowerStart) {
obj["FUEL-Flow-per-min"].setColor(0.0509,0.7529,0.2941);
if (obj.units) {
obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((val.fuelflow_1 + val.fuelflow_2) * LBS2KGS) / 60, 10)));
} else {
obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round((val.fuelflow_1 + val.fuelflow_2) / 60, 10)));
}
} else {
obj["FUEL-Flow-per-min"].setColor(0.7333,0.3803,0);
obj["FUEL-Flow-per-min"].setText("XX");
}
}),
props.UpdateManager.FromHashValue("N1_actual_1", 0.05, func(val) {
if (val <= 18.8) {
obj["ENG1idFFlow"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-1-label"].setColor(0.7333,0.3803,0);
} else {
obj["ENG1idFFlow"].setColor(0.8078,0.8039,0.8078);
obj["FUEL-ENG-1-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashValue("N1_actual_2", 0.05, func(val) {
if (val <= 18.8) {
obj["ENG2idFFlow"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-2-label"].setColor(0.7333,0.3803,0);
} else {
obj["ENG2idFFlow"].setColor(0.8078,0.8039,0.8078);
obj["FUEL-ENG-2-label"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashValue("fuelLeftSwitch1", nil, func(val) {
if (val) {
obj["FUEL-Pump-Left-1-Open"].show();
obj["FUEL-Pump-Left-1-Closed"].hide();
obj["FUEL-Pump-Left-1"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-1"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-1-Square"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-1-Open"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-1-Closed"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Pump-Left-1-Open"].hide();
obj["FUEL-Pump-Left-1-Closed"].show();
obj["FUEL-Pump-Left-1"].setColor(0.7333,0.3803,0);
obj["FUEL-Pump-Left-1-Square"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Left-1"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Left-1-Open"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Left-1-Closed"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("fuelLeftSwitch2", nil, func(val) {
if (val) {
obj["FUEL-Pump-Left-2-Open"].show();
obj["FUEL-Pump-Left-2-Closed"].hide();
obj["FUEL-Pump-Left-2"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-2"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-2-Square"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-2-Open"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Left-2-Closed"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Pump-Left-2-Open"].hide();
obj["FUEL-Pump-Left-2-Closed"].show();
obj["FUEL-Pump-Left-2"].setColor(0.7333,0.3803,0);
obj["FUEL-Pump-Left-2"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Left-2-Square"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Left-2-Open"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Left-2-Closed"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("fuelCenterSwitch1", nil, func(val) {
if (val) {
obj["FUEL-Pump-Center-1-Open"].show();
obj["FUEL-Pump-Center-1-Closed"].hide();
obj["FUEL-Pump-Center-1"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-1"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-1-Square"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-1-Open"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-1-Closed"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Pump-Center-1-Open"].hide();
obj["FUEL-Pump-Center-1-Closed"].show();
obj["FUEL-Pump-Center-1"].setColor(0.7333,0.3803,0);
obj["FUEL-Pump-Center-1"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Center-1-Square"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Center-1-Open"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Center-1-Closed"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("fuelCenterSwitch2", nil, func(val) {
if (val) {
obj["FUEL-Pump-Center-2-Open"].show();
obj["FUEL-Pump-Center-2-Closed"].hide();
obj["FUEL-Pump-Center-2"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-2"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-2-Square"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-2-Open"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Center-2-Closed"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Pump-Center-2-Open"].hide();
obj["FUEL-Pump-Center-2-Closed"].show();
obj["FUEL-Pump-Center-2"].setColor(0.7333,0.3803,0);
obj["FUEL-Pump-Center-2"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Center-2-Square"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Center-2-Open"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Center-2-Closed"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("fuelRightSwitch1", nil, func(val) {
if (val) {
obj["FUEL-Pump-Right-1-Open"].show();
obj["FUEL-Pump-Right-1-Closed"].hide();
obj["FUEL-Pump-Right-1"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-1"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-1-Square"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-1-Open"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-1-Closed"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Pump-Right-1-Open"].hide();
obj["FUEL-Pump-Right-1-Closed"].show();
obj["FUEL-Pump-Right-1"].setColor(0.7333,0.3803,0);
obj["FUEL-Pump-Right-1"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Right-1-Square"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Right-1-Open"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Right-1-Closed"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("fuelRightSwitch2", nil, func(val) {
if (val) {
obj["FUEL-Pump-Right-2-Open"].show();
obj["FUEL-Pump-Right-2-Closed"].hide();
obj["FUEL-Pump-Right-2"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-2"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-2-Square"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-2-Open"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-Pump-Right-2-Closed"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Pump-Right-2-Open"].hide();
obj["FUEL-Pump-Right-2-Closed"].show();
obj["FUEL-Pump-Right-2"].setColor(0.7333,0.3803,0);
obj["FUEL-Pump-Right-2"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Right-2-Square"].setColor(0.7333,0.3803,0);
obj["FUEL-Pump-Right-2-Open"].setColorFill(0.7333,0.3803,0);
obj["FUEL-Pump-Right-2-Closed"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["fuelCenterSwitch1","fuelCenterSwitch2"], nil, func(val) {
if (!val.fuelCenterSwitch1 and !val.fuelCenterSwitch2) {
obj["FUEL-Center-blocked"].show();
} else {
obj["FUEL-Center-blocked"].hide();
}
}),
props.UpdateManager.FromHashList(["fuelCrossfeedValve","fuelCrossfeedSwitch"], nil, func(val) {
if (val.fuelCrossfeedValve == 1) {
obj["FUEL-XFEED"].setRotation(0);
obj["FUEL-XFEED-pipes"].show();
if (val.fuelCrossfeedSwitch) {
obj["FUEL-XFEED"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-XFEED"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-XFEED-Cross"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-XFEED"].setColor(0.7333,0.3803,0);
obj["FUEL-XFEED"].setColorFill(0.7333,0.3803,0);
obj["FUEL-XFEED-Cross"].setColorFill(0.7333,0.3803,0);
}
} elsif (val.fuelCrossfeedValve == 0) {
obj["FUEL-XFEED"].setRotation(90 * D2R);
obj["FUEL-XFEED-pipes"].hide();
if (!val.fuelCrossfeedSwitch) {
obj["FUEL-XFEED"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-XFEED"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-XFEED-Cross"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["FUEL-XFEED"].setColor(0.7333,0.3803,0);
obj["FUEL-XFEED"].setColorFill(0.7333,0.3803,0);
obj["FUEL-XFEED-Cross"].setColorFill(0.7333,0.3803,0);
}
} else {
obj["FUEL-XFEED"].setRotation(45 * D2R);
obj["FUEL-XFEED-pipes"].hide();
obj["FUEL-XFEED"].setColor(0.7333,0.3803,0);
obj["FUEL-XFEED"].setColorFill(0.7333,0.3803,0);
obj["FUEL-XFEED-Cross"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["fuelEngine1Valve","engineCutoff1"], nil, func(val) {
if (val.fuelEngine1Valve) {
if (val.fuelEngine1Valve == 1) {
obj["FUEL-ENG-Master-1"].setRotation(0);
} else {
obj["FUEL-ENG-Master-1"].setRotation(45 * D2R);
}
if (val.engineCutoff1) {
obj["FUEL-ENG-Master-1"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-Master-1"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-Master-1-Cross"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-1-pipe"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-1-pipe"].setColorFill(0.7333,0.3803,0);
} else {
obj["FUEL-ENG-Master-1"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-ENG-Master-1"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-ENG-Master-1-Cross"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-ENG-1-pipe"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-ENG-1-pipe"].setColorFill(0.0509,0.7529,0.2941);
}
} else {
obj["FUEL-ENG-Master-1"].setRotation(90 * D2R);
obj["FUEL-ENG-Master-1"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-Master-1"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-Master-1-Cross"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-1-pipe"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-1-pipe"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["fuelEngine2Valve","engineCutoff2"], nil, func(val) {
if (val.fuelEngine2Valve) {
if (val.fuelEngine2Valve == 1) {
obj["FUEL-ENG-Master-2"].setRotation(0);
} else {
obj["FUEL-ENG-Master-2"].setRotation(45 * D2R);
}
if (val.engineCutoff1) {
obj["FUEL-ENG-Master-2"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-Master-2"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-Master-2-Cross"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-2-pipe"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-2-pipe"].setColorFill(0.7333,0.3803,0);
} else {
obj["FUEL-ENG-Master-2"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-ENG-Master-2"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-ENG-Master-2-Cross"].setColorFill(0.0509,0.7529,0.2941);
obj["FUEL-ENG-2-pipe"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-ENG-2-pipe"].setColorFill(0.0509,0.7529,0.2941);
}
} else {
obj["FUEL-ENG-Master-2"].setRotation(90 * D2R);
obj["FUEL-ENG-Master-2"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-Master-2"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-Master-2-Cross"].setColorFill(0.7333,0.3803,0);
obj["FUEL-ENG-2-pipe"].setColor(0.7333,0.3803,0);
obj["FUEL-ENG-2-pipe"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("fuelTransferValve1", nil, func(val) {
if (val == 0) {
obj["FUEL-Left-Transfer"].hide();
} else {
if (val == 1) {
obj["FUEL-Left-Transfer"].setColor(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Left-Transfer"].setColor(0.7333,0.3803,0);
}
obj["FUEL-Left-Transfer"].show();
}
}),
props.UpdateManager.FromHashValue("fuelTransferValve2", nil, func(val) {
if (val == 0) {
obj["FUEL-Right-Transfer"].hide();
} else {
if (val == 1) {
obj["FUEL-Right-Transfer"].setColor(0.0509,0.7529,0.2941);
} else {
obj["FUEL-Right-Transfer"].setColor(0.7333,0.3803,0);
}
obj["FUEL-Right-Transfer"].show();
}
}),
props.UpdateManager.FromHashValue("fuelTotalLbs", 1, func(val) {
if (obj.units) {
obj["FUEL-On-Board"].setText(sprintf("%s", math.round(val * LBS2KGS, 10)));
} else {
obj["FUEL-On-Board"].setText(sprintf("%s", math.round(val, 10)));
}
}),
props.UpdateManager.FromHashValue("fuelTempLeftOuter", 0.25, func(val) {
obj["FUEL-Left-Outer-temp"].setText(sprintf("%s", math.round(val)));
if (val > 55 or val < -40) {
obj["FUEL-Left-Outer-temp"].setColor(0.7333,0.3803,0);
} else {
obj["FUEL-Left-Outer-temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("fuelTempLeftInner", 0.25, func(val) {
obj["FUEL-Left-Inner-temp"].setText(sprintf("%s", math.round(val)));
if (val > 45 or val < -40) {
obj["FUEL-Left-Inner-temp"].setColor(0.7333,0.3803,0);
} else {
obj["FUEL-Left-Inner-temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("fuelTempRightInner", 0.25, func(val) {
obj["FUEL-Right-Inner-temp"].setText(sprintf("%s", math.round(val)));
if (val > 45 or val < -40) {
obj["FUEL-Right-Inner-temp"].setColor(0.7333,0.3803,0);
} else {
obj["FUEL-Right-Inner-temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("fuelTempRightOuter", 0.25, func(val) {
obj["FUEL-Right-Outer-temp"].setText(sprintf("%s", math.round(val)));
if (val > 55 or val < -40) {
obj["FUEL-Right-Outer-temp"].setColor(0.7333,0.3803,0);
} else {
obj["FUEL-Right-Outer-temp"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashList(["fuelApuValve","apuMaster","apuFireBtn"], nil, func(val) {
if (val.fuelApuValve == 0) {
if (val.apuMaster or val.apuFireBtn) {
obj["FUEL-APU-label"].setColor(0.7333,0.3803,0);
obj["FUEL-APU-line"].hide();
obj["FUEL-APU-arrow"].hide();
} else {
obj["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078);
obj["FUEL-APU-arrow"].setColor(0.8078, 0.8039, 0.8078);
obj["FUEL-APU-line"].hide();
obj["FUEL-APU-arrow"].show();
}
} else {
if (!val.apuMaster or val.apuFireBtn) {
obj["FUEL-APU-label"].setColor(0.7333,0.3803,0);
obj["FUEL-APU-line"].setColor(0.7333,0.3803,0);
obj["FUEL-APU-line"].setColorFill(0.7333,0.3803,0);
obj["FUEL-APU-arrow"].setColor(0.7333,0.3803,0);
obj["FUEL-APU-line"].show();
obj["FUEL-APU-arrow"].show();
} else {
obj["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078);
obj["FUEL-APU-line"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-APU-arrow"].setColor(0.0509,0.7529,0.2941);
obj["FUEL-APU-line"].show();
obj["FUEL-APU-arrow"].show();
}
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","FUEL-Pump-Left-1","FUEL-Pump-Left-2","FUEL-Pump-Center-1","FUEL-Pump-Center-2","FUEL-Pump-Right-1","FUEL-Pump-Right-2","FUEL-Left-blocked","FUEL-Right-blocked","FUEL-Center-blocked","FUEL-Left-Transfer",
"FUEL-Right-Transfer","FUEL-Left-Outer-Inacc","FUEL-Left-Inner-Inacc","FUEL-Center-Inacc","FUEL-Right-Inner-Inacc","FUEL-Right-Outer-Inacc","FUEL-Left-Outer-quantity","FUEL-Left-Inner-quantity","FUEL-Center-quantity","FUEL-Right-Inner-quantity",
"FUEL-Right-Outer-quantity","FUEL-On-Board","FUEL-Flow-per-min","FUEL-APU-arrow","FUEL-APU-line","FUEL-APU-label","FUEL-used-1","FUEL-used-both","FUEL-used-2","FUEL-ENG-Master-1","FUEL-ENG-Master-2","FUEL-XFEED","FUEL-XFEED-Cross","FUEL-XFEED-pipes","FUEL-Left-Outer-temp",
"FUEL-Left-Inner-temp","FUEL-Right-Inner-temp","FUEL-Right-Outer-temp","FUEL-Pump-Left-1-Closed","FUEL-Pump-Left-1-Open","FUEL-Pump-Left-2-Closed","FUEL-Pump-Left-2-Open","FUEL-Pump-Center-1-Open","FUEL-Pump-Center-1-Closed","FUEL-Pump-Center-2-Closed",
"FUEL-Pump-Center-2-Open","FUEL-Pump-Right-1-Closed","FUEL-Pump-Right-1-Open","FUEL-Pump-Right-2-Closed","FUEL-Pump-Right-2-Open","FUEL-ENG-1-label","FUEL-ENG-2-label","FUEL-ENG-1-pipe","FUEL-ENG-2-pipe","ENG1idFFlow","ENG2idFFlow","FUEL-used-1","FUEL-used-2","FUEL-used-both",
"Fused-weight-unit","FFlow-weight-unit","FOB-weight-unit","FUEL-ENG-Master-1-Cross","FUEL-ENG-Master-2-Cross","FUEL-Pump-Left-1-Square","FUEL-Pump-Left-2-Square","FUEL-Pump-Center-1-Square","FUEL-Pump-Center-2-Square","FUEL-Pump-Right-1-Square","FUEL-Pump-Right-2-Square"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
engineCutoff1: "/controls/engines/engine[0]/cutoff-switch",
engineCutoff2: "/controls/engines/engine[1]/cutoff-switch",
fuelApuValve: "/systems/fuel/valves/apu-lp-valve",
fuelCrossfeedSwitch: "/controls/fuel/switches/crossfeed",
fuelCrossfeedValve: "/systems/fuel/valves/crossfeed-valve",
fuelEngine1Valve: "/systems/fuel/valves/engine-1-lp-valve",
fuelEngine2Valve: "/systems/fuel/valves/engine-2-lp-valve",
fuelTransferValve1: "/systems/fuel/valves/outer-inner-transfer-valve-1",
fuelTransferValve2: "/systems/fuel/valves/outer-inner-transfer-valve-2",
fuelLeftSwitch1: "/controls/fuel/switches/pump-left-1",
fuelLeftSwitch2: "/controls/fuel/switches/pump-left-2",
fuelCenterSwitch1: "/controls/fuel/switches/pump-center-1",
fuelCenterSwitch2: "/controls/fuel/switches/pump-center-2",
fuelRightSwitch1: "/controls/fuel/switches/pump-right-1",
fuelRightSwitch2: "/controls/fuel/switches/pump-right-2",
fuelTempLeftOuter: "/consumables/fuel/tank[0]/temperature_degC",
fuelTempLeftInner: "/consumables/fuel/tank[1]/temperature_degC",
fuelTempRightOuter: "/consumables/fuel/tank[4]/temperature_degC",
fuelTempRightInner: "/consumables/fuel/tank[3]/temperature_degC",
fuelLeftOuterQty: "/consumables/fuel/tank[0]/level-lbs",
fuelLeftInnerQty: "/consumables/fuel/tank[1]/level-lbs",
fuelRightOuterQty: "/consumables/fuel/tank[4]/level-lbs",
fuelRightInnerQty: "/consumables/fuel/tank[3]/level-lbs",
fuelCenterQty: "/consumables/fuel/tank[2]/level-lbs",
fuelTotalLbs: "/consumables/fuel/total-fuel-lbs",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,528 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var elec_pump_y_ovht = props.globals.initNode("/systems/hydraulic/elec-pump-yellow-ovht", 0, "BOOL");
var elec_pump_b_ovht = props.globals.initNode("/systems/hydraulic/elec-pump-blue-ovht", 0, "BOOL");
var y_resv_ovht = props.globals.initNode("/systems/hydraulic/yellow-resv-ovht", 0, "BOOL");
var b_resv_ovht = props.globals.initNode("/systems/hydraulic/blue-resv-ovht", 0, "BOOL");
var g_resv_ovht = props.globals.initNode("/systems/hydraulic/green-resv-ovht", 0, "BOOL");
var y_resv_lo_press = props.globals.initNode("/systems/hydraulic/yellow-resv-lo-air-press", 0, "BOOL");
var b_resv_lo_press = props.globals.initNode("/systems/hydraulic/blue-resv-lo-air-press", 0, "BOOL");
var g_resv_lo_press = props.globals.initNode("/systems/hydraulic/green-resv-lo-air-press", 0, "BOOL");
var canvas_lowerECAMPageHyd =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageHyd,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
var clip_el = obj.group.getElementById(key ~ "_clip");
if (clip_el != nil) {
clip_el.setVisible(0);
var tran_rect = clip_el.getTransformedBounds();
var clip_rect = sprintf("rect(%d,%d, %d,%d)",
tran_rect[1],
tran_rect[2],
tran_rect[3],
tran_rect[0]);
obj[key].set("clip", clip_rect);
obj[key].set("clip-frame", canvas.Element.PARENT);
}
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj.update_items = [
props.UpdateManager.FromHashValue("blue", 25, func(val) {
if (val >= 100) {
obj["Press-Blue"].setText(sprintf("%s", math.round(val, 50)));
} else {
obj["Press-Blue"].setText(sprintf("%s", 0));
}
if (val > 1450) {
obj["Blue-Line"].setColor(0.0509,0.7529,0.2941);
obj["Blue-Line"].setColorFill(0.0509,0.7529,0.2941);
obj["Blue-Line-Top"].setColorFill(0.0509,0.7529,0.2941);
obj["Blue-Line-Bottom"].setColorFill(0.0509,0.7529,0.2941);
obj["Blue-Indicator"].setColor(0.0509,0.7529,0.2941);
obj["Press-Blue"].setColor(0.0509,0.7529,0.2941);
obj["Blue-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["Blue-Line"].setColor(0.7333,0.3803,0);
obj["Blue-Line"].setColorFill(0.7333,0.3803,0);
obj["Blue-Line-Top"].setColorFill(0.7333,0.3803,0);
obj["Blue-Line-Bottom"].setColorFill(0.7333,0.3803,0);
obj["Blue-Indicator"].setColor(0.7333,0.3803,0);
obj["Press-Blue"].setColor(0.7333,0.3803,0);
obj["Blue-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("yellow", 25, func(val) {
if (val >= 100) {
obj["Press-Yellow"].setText(sprintf("%s", math.round(val, 50)));
} else {
obj["Press-Yellow"].setText(sprintf("%s", 0));
}
if (val > 1450) {
obj["Yellow-Line"].setColor(0.0509,0.7529,0.2941);
obj["Yellow-Line"].setColorFill(0.0509,0.7529,0.2941);
obj["Yellow-Line-Top"].setColorFill(0.0509,0.7529,0.2941);
obj["Yellow-Line-Middle"].setColorFill(0.0509,0.7529,0.2941);
obj["Yellow-Line-Bottom"].setColorFill(0.0509,0.7529,0.2941);
obj["Yellow-Indicator"].setColor(0.0509,0.7529,0.2941);
obj["Press-Yellow"].setColor(0.0509,0.7529,0.2941);
obj["Yellow-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["Yellow-Line"].setColor(0.7333,0.3803,0);
obj["Yellow-Line"].setColorFill(0.7333,0.3803,0);
obj["Yellow-Line-Top"].setColorFill(0.7333,0.3803,0);
obj["Yellow-Line-Middle"].setColorFill(0.7333,0.3803,0);
obj["Yellow-Line-Bottom"].setColorFill(0.7333,0.3803,0);
obj["Yellow-Indicator"].setColor(0.7333,0.3803,0);
obj["Press-Yellow"].setColor(0.7333,0.3803,0);
obj["Yellow-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("green", 25, func(val) {
if (val >= 100) {
obj["Press-Green"].setText(sprintf("%s", math.round(val, 50)));
} else {
obj["Press-Green"].setText(sprintf("%s", 0));
}
if (val > 1450) {
obj["Green-Line"].setColor(0.0509,0.7529,0.2941);
obj["Green-Line"].setColorFill(0.0509,0.7529,0.2941);
obj["Green-Line-Top"].setColorFill(0.0509,0.7529,0.2941);
obj["Green-Line-Middle"].setColorFill(0.0509,0.7529,0.2941);
obj["Green-Line-Bottom"].setColorFill(0.0509,0.7529,0.2941);
obj["Green-Indicator"].setColor(0.0509,0.7529,0.2941);
obj["Press-Green"].setColor(0.0509,0.7529,0.2941);
obj["Green-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["Green-Line"].setColor(0.7333,0.3803,0);
obj["Green-Line"].setColorFill(0.7333,0.3803,0);
obj["Green-Line-Top"].setColorFill(0.7333,0.3803,0);
obj["Green-Line-Middle"].setColorFill(0.7333,0.3803,0);
obj["Green-Line-Bottom"].setColorFill(0.7333,0.3803,0);
obj["Green-Indicator"].setColor(0.7333,0.3803,0);
obj["Press-Green"].setColor(0.7333,0.3803,0);
obj["Green-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("N2_actual_1", 0.5, func(val) {
if (val >= 59) {
obj["Pump-Green-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["Pump-Green-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("N2_actual_2", 0.5, func(val) {
if (val >= 59) {
obj["Pump-Yellow-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["Pump-Yellow-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("hydBlueResvLoPrs", nil, func(val) {
if (val) {
obj["LO-AIR-PRESS-Blue"].show();
} else {
obj["LO-AIR-PRESS-Blue"].hide();
}
}),
props.UpdateManager.FromHashValue("hydGreenResvLoPrs", nil, func(val) {
if (val) {
obj["LO-AIR-PRESS-Green"].show();
} else {
obj["LO-AIR-PRESS-Green"].hide();
}
}),
props.UpdateManager.FromHashValue("hydYellowResvLoPrs", nil, func(val) {
if (val) {
obj["LO-AIR-PRESS-Yellow"].show();
} else {
obj["LO-AIR-PRESS-Yellow"].hide();
}
}),
props.UpdateManager.FromHashValue("hydYellowElecPumpOvht", nil, func(val) {
if (val) {
obj["ELEC-OVHT-Yellow"].show();
} else {
obj["ELEC-OVHT-Yellow"].hide();
}
}),
props.UpdateManager.FromHashValue("hydBlueElecPumpOvht", nil, func(val) {
if (val) {
obj["ELEC-OVHT-Blue"].show();
} else {
obj["ELEC-OVHT-Blue"].hide();
}
}),
props.UpdateManager.FromHashValue("hydBlueResvOvht", nil, func(val) {
if (val) {
obj["OVHT-Blue"].show();
} else {
obj["OVHT-Blue"].hide();
}
}),
props.UpdateManager.FromHashValue("hydGreenResvOvht", nil, func(val) {
if (val) {
obj["OVHT-Green"].show();
} else {
obj["OVHT-Green"].hide();
}
}),
props.UpdateManager.FromHashValue("hydYellowResvOvht", nil, func(val) {
if (val) {
obj["OVHT-Yellow"].show();
} else {
obj["OVHT-Yellow"].hide();
}
}),
props.UpdateManager.FromHashValue("hydRATPosition", nil, func(val) {
if (val) {
obj["RAT-stowed"].hide();
obj["RAT-not-stowed"].show();
} else {
obj["RAT-stowed"].show();
obj["RAT-not-stowed"].hide();
}
}),
props.UpdateManager.FromHashValue("hydGreenFireValve", nil, func(val) {
if (val != 0) {
obj["Fire-Valve-Green"].setColor(0.7333,0.3803,0);
obj["Fire-Valve-Green-Cross"].setColorFill(0.7333,0.3803,0);
obj["Fire-Valve-Green"].setRotation(90 * D2R);
} else {
obj["Fire-Valve-Green"].setColor(0.0509,0.7529,0.2941);
obj["Fire-Valve-Green-Cross"].setColorFill(0.0509,0.7529,0.2941);
obj["Fire-Valve-Green"].setRotation(0);
}
}),
props.UpdateManager.FromHashValue("hydYellowFireValve", nil, func(val) {
if (val != 0) {
obj["Fire-Valve-Yellow"].setColor(0.7333,0.3803,0);
obj["Fire-Valve-Yellow-Cross"].setColorFill(0.7333,0.3803,0);
obj["Fire-Valve-Yellow"].setRotation(90 * D2R);
} else {
obj["Fire-Valve-Yellow"].setColor(0.0509,0.7529,0.2941);
obj["Fire-Valve-Yellow-Cross"].setColorFill(0.0509,0.7529,0.2941);
obj["Fire-Valve-Yellow"].setRotation(0);
}
}),
props.UpdateManager.FromHashList(["elecAC1","dcEss"], 1, func(val) {
if (val.elecAC1 >= 110 and val.dcEss >= 25) {
obj["ELEC-Blue-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["ELEC-Blue-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["elecAC2","dc2"], 1, func(val) {
if (val.elecAC2 >= 110 and val.dc2 >= 25) {
obj["ELEC-Yellow-label"].setColor(0.8078,0.8039,0.8078);
} else {
obj["ELEC-Yellow-label"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["yellow","hydYellowElecPumpSwitch"], nil, func(val) {
if (!val.hydYellowElecPumpSwitch) {
obj["ELEC-Yellow-on"].hide();
obj["ELEC-Yellow-off"].show();
} else {
obj["ELEC-Yellow-on"].show();
obj["ELEC-Yellow-off"].hide();
if (val.yellow > 1450) {
obj["ELEC-Yellow-on"].setColor(0.0509,0.7529,0.2941);
} else {
obj["ELEC-Yellow-on"].setColor(0.7333,0.3803,0);
}
}
}),
props.UpdateManager.FromHashList(["blue","hydBlueElecPumpSwitch"], nil, func(val) {
if (val.hydBlueElecPumpSwitch) {
obj["Pump-Blue-off"].hide();
if (val.blue > 1450) {
obj["Pump-Blue-on"].show();
obj["Pump-LOPR-Blue"].hide();
obj["Pump-Blue"].setColorFill(0.0509,0.7529,0.2941);
obj["Pump-Blue"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Pump-Blue-on"].hide();
obj["Pump-LOPR-Blue"].show();
obj["Pump-Blue"].setColorFill(0.7333,0.3803,0);
obj["Pump-Blue"].setColor(0.7333,0.3803,0);
}
} else {
obj["Pump-Blue-off"].show();
obj["Pump-Blue-on"].hide();
obj["Pump-LOPR-Blue"].hide();
obj["Pump-Blue"].setColorFill(0.7333,0.3803,0);
obj["Pump-Blue"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["yellow","hydYellowEDPPumpSwitch"], nil, func(val) {
if (val.hydYellowEDPPumpSwitch) {
obj["Pump-Yellow-off"].hide();
if (val.yellow > 1450) {
obj["Pump-Yellow-on"].show();
obj["Pump-LOPR-Yellow"].hide();
obj["Pump-Yellow"].setColorFill(0.0509,0.7529,0.2941);
obj["Pump-Yellow"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Pump-Yellow-on"].hide();
obj["Pump-LOPR-Yellow"].show();
obj["Pump-Yellow"].setColorFill(0.7333,0.3803,0);
obj["Pump-Yellow"].setColor(0.7333,0.3803,0);
}
} else {
obj["Pump-Yellow-off"].show();
obj["Pump-Yellow-on"].hide();
obj["Pump-LOPR-Yellow"].hide();
obj["Pump-Yellow"].setColorFill(0.7333,0.3803,0);
obj["Pump-Yellow"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["green","hydGreenEDPPumpSwitch"], nil, func(val) {
if (val.hydGreenEDPPumpSwitch) {
obj["Pump-Green-off"].hide();
if (val.green > 1450) {
obj["Pump-Green-on"].show();
obj["Pump-LOPR-Green"].hide();
obj["Pump-Green"].setColor(0.0509,0.7529,0.2941);
obj["Pump-Green"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["Pump-Green-on"].hide();
obj["Pump-LOPR-Green"].show();
obj["Pump-Green"].setColor(0.7333,0.3803,0);
obj["Pump-Green"].setColorFill(0.7333,0.3803,0);
}
} else {
obj["Pump-Green-off"].show();
obj["Pump-Green-on"].hide();
obj["Pump-LOPR-Green"].hide();
obj["Pump-Green"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashList(["hydPTUSwitch","hydPTUDiff","hydPTUActive","hydPTUFault"], nil, func(val) {
if (val.hydPTUSwitch and !val.hydPTUFault) {
obj["PTU-connection"].setColor(0.0509,0.7529,0.2941);
if (val.hydPTUActive) {
if (val.hydPTUDiff < 0) {
obj["PTU-Supply-Line"].show();
obj["PTU-supply-yellow"].show();
obj["PTU-supply-green"].hide();
obj["PTU-Auto-or-off"].hide();
} else {
obj["PTU-Supply-Line"].show();
obj["PTU-supply-yellow"].hide();
obj["PTU-supply-green"].show();
obj["PTU-Auto-or-off"].hide();
}
} else {
obj["PTU-Auto-or-off"].setColor(0.0509,0.7529,0.2941);
obj["PTU-Supply-Line"].hide();
obj["PTU-supply-yellow"].hide();
obj["PTU-supply-green"].hide();
obj["PTU-Auto-or-off"].show();
}
} else {
obj["PTU-connection"].setColor(0.7333,0.3803,0);
obj["PTU-Auto-or-off"].setColor(0.7333,0.3803,0);
obj["PTU-Supply-Line"].hide();
obj["PTU-supply-yellow"].hide();
obj["PTU-supply-green"].hide();
obj["PTU-Auto-or-off"].show();
}
}),
props.UpdateManager.FromHashValue("hydBlueQTY", 0.05, func(val) {
obj["Quantity-Indicator-Blue"].setTranslation(0,((val / 8) * -140) + 140);
if (val >= 2.4) {
obj["Quantity-Indicator-Blue"].setColor(0.0509,0.7529,0.2941);
obj["path5561-4"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Quantity-Indicator-Blue"].setColor(0.7333,0.3803,0);
obj["path5561-4"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("hydGreenQTY", 0.05, func(val) {
obj["Quantity-Indicator-Green"].setTranslation(0,((val / 18) * -140) + 140);
if (val >= 3.5) {
obj["Quantity-Indicator-Green"].setColor(0.0509,0.7529,0.2941);
obj["path5561-5"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Quantity-Indicator-Green"].setColor(0.7333,0.3803,0);
obj["path5561-5"].setColor(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("hydYellowQTY", 0.05, func(val) {
obj["Quantity-Indicator-Yellow"].setTranslation(0,((val / 15) * -140) + 140);
if (val >= 3.5) {
obj["Quantity-Indicator-Yellow"].setColor(0.0509,0.7529,0.2941);
obj["path5561"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Quantity-Indicator-Yellow"].setColor(0.7333,0.3803,0);
obj["path5561"].setColor(0.7333,0.3803,0);
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Green-Indicator","HYD-Quantity-Group-Blue","HYD-Quantity-Group-Yellow","HYD-Quantity-Group-Green","Blue-Indicator","Yellow-Indicator","Press-Green","Press-Blue","Press-Yellow","Green-Line","Blue-Line","Yellow-Line","Green-Line-Top","Blue-Line-Top","Yellow-Line-Middle","Green-Line-Middle","Yellow-Line-Bottom","Green-Line-Bottom","Blue-Line-Bottom","Yellow-Line-Top","PTU-Supply-Line","PTU-supply-yellow","PTU-supply-green","PTU-connection",
"PTU-Auto-or-off","RAT-label","RAT-stowed","RAT-not-stowed","ELEC-Yellow-off","ELEC-Yellow-on","ELEC-Yellow-label","ELEC-OVTH-Yellow","ELEC-Blue-label","ELEC-OVHT-Blue","ELEC-OVHT-Yellow","Pump-Green-label","Pump-Yellow-label","Pump-Green",
"Pump-LOPR-Green","Pump-Green-off","Pump-Green-on","Pump-Yellow","Pump-LOPR-Yellow","Pump-Yellow-off","Pump-Yellow-on","Pump-Blue","Pump-LOPR-Blue","Pump-Blue-off","Pump-Blue-on","Fire-Valve-Green","Fire-Valve-Yellow","LO-AIR-PRESS-Green",
"LO-AIR-PRESS-Yellow","LO-AIR-PRESS-Blue","OVHT-Green","OVHT-Blue","OVHT-Yellow","Quantity-Indicator-Green","Quantity-Indicator-Blue","Quantity-Indicator-Yellow","Green-label","Blue-label","Yellow-label","Fire-Valve-Yellow-Cross","Fire-Valve-Green-Cross","path5561","path5561-4","path5561-5"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
hydBlueResvOvht: "/systems/hydraulic/blue-resv-ovht",
hydGreenResvOvht: "/systems/hydraulic/green-resv-ovht",
hydYellowResvOvht: "/systems/hydraulic/yellow-resv-ovht",
hydBlueResvLoPrs: "/systems/hydraulic/blue-resv-lo-air-press",
hydGreenResvLoPrs: "/systems/hydraulic/green-resv-lo-air-press",
hydYellowResvLoPrs: "/systems/hydraulic/yellow-resv-lo-air-press",
hydYellowElecPumpOvht: "/systems/hydraulic/elec-pump-yellow-ovht",
hydBlueElecPumpOvht: "/systems/hydraulic/elec-pump-blue-ovht",
hydRATPosition: "/systems/hydraulic/sources/rat/position",
hydGreenFireValve: "/systems/hydraulic/sources/green-edp/fire-valve",
hydYellowFireValve: "/systems/hydraulic/sources/yellow-edp/fire-valve",
hydBlueElecPumpSwitch: "/controls/hydraulic/switches/blue-elec",
hydGreenEDPPumpSwitch: "/controls/hydraulic/switches/green-edp",
hydYellowElecPumpSwitch: "/controls/hydraulic/switches/yellow-elec",
hydYellowEDPPumpSwitch: "/controls/hydraulic/switches/yellow-edp",
hydPTUSwitch: "/controls/hydraulic/switches/ptu",
hydPTUFault: "/systems/failures/hydraulic/ptu",
hydPTUActive: "/systems/hydraulic/sources/ptu/ptu-hydraulic-condition",
hydPTUDiff: "/systems/hydraulic/yellow-psi-diff",
hydBlueQTY: "/systems/hydraulic/blue-qty",
hydGreenQTY: "/systems/hydraulic/green-qty",
hydYellowQTY: "/systems/hydraulic/yellow-qty",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,229 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPagePress =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPagePress,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["PRESS-Sys-2"].hide();
obj["PRESS-Outlet-Transit-Failed"].hide();
obj["PRESS-Inlet-Transit-Failed"].hide();
obj.update_items = [
props.UpdateManager.FromHashValue("pressDelta", 0.05, func(val) {
if (val > 31.9) {
obj["PRESS-deltaP"].setText(sprintf("%2.1f", 31.9));
} else if (val < -9.9) {
obj["PRESS-deltaP"].setText(sprintf("%2.1f", -9.9));
} else {
obj["PRESS-deltaP"].setText(sprintf("%2.1f", val));
}
if (val < -0.4 or val > 8.5) {
obj["PRESS-deltaP"].setColor(0.7333,0.3803,0);
} else {
obj["PRESS-deltaP"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("pressVS", 25, func(val) {
if (val > 9950) {
obj["PRESS-Cab-VS"].setText(sprintf("%4.0f", 9950));
} else if (val < -9950) {
obj["PRESS-Cab-VS"].setText(sprintf("%4.0f", -9950));
} else {
obj["PRESS-Cab-VS"].setText(sprintf("%-4.0f", math.round(val,50)));
}
if (abs(val) > 2000) {
obj["PRESS-Cab-VS"].setColor(0.7333,0.3803,0);
} else {
obj["PRESS-Cab-VS"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("pressAlt", 25, func(val) {
if (val > 32750) {
obj["PRESS-Cab-Alt"].setText(sprintf("%5.0f", 32750));
} else if (val < -9950) {
obj["PRESS-Cab-Alt"].setText(sprintf("%5.0f", -9950));
} else {
obj["PRESS-Cab-Alt"].setText(sprintf("%5.0f", math.round(val,50)));
}
if (val > 9550) {
obj["PRESS-Cab-Alt"].setColor(1,0,0);
} else {
obj["PRESS-Cab-Alt"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("pressAuto", nil, func(val) {
if (val) {
obj["PRESS-Man"].hide();
obj["PRESS-Sys-1"].show();
} else {
obj["PRESS-Man"].show();
obj["PRESS-Sys-1"].hide();
}
}),
props.UpdateManager.FromHashList(["flowCtlValve1","engine1State"], nil, func(val) {
if (val.flowCtlValve1 == 0 and val.engine1State == 3) {
obj["PRESS-Pack-1-Triangle"].setColor(0.7333,0.3803,0);
obj["PRESS-Pack-1"].setColor(0.7333,0.3803,0);
} else {
obj["PRESS-Pack-1-Triangle"].setColor(0.0509,0.7529,0.2941);
obj["PRESS-Pack-1"].setColor(0.8078,0.8039,0.8078);
}
}),
props.UpdateManager.FromHashList(["flowCtlValve2","engine2State"], nil, func(val) {
if (val.flowCtlValve2 == 0 and val.engine2State == 3) {
obj["PRESS-Pack-2-Triangle"].setColor(0.7333,0.3803,0);
obj["PRESS-Pack-2"].setColor(0.7333,0.3803,0);
} else {
obj["PRESS-Pack-2-Triangle"].setColor(0.0509,0.7529,0.2941);
obj["PRESS-Pack-2"].setColor(0.8078,0.8039,0.8078);
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["PRESS-Cab-VS", "PRESS-Cab-VS-neg", "PRESS-Cab-Alt", "PRESS-deltaP", "PRESS-LDG-Elev", "PRESS-deltaP-needle", "PRESS-VS-needle", "PRESS-Alt-needle",
"PRESS-Man", "PRESS-Sys-1", "PRESS-Sys-2", "PRESS-Outlet-Transit-Failed", "PRESS-Inlet-Transit-Failed", "PRESS-LDG-Elev-mode","PRESS-Pack-1-Triangle","PRESS-Pack-2-Triangle",
"PRESS-Pack-1","PRESS-Pack-2"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
pressAlt: "/systems/pressurization/cabinalt-norm",
pressAuto: "/systems/pressurization/auto",
pressDelta: "/systems/pressurization/deltap-norm",
pressVS: "/systems/pressurization/vs-norm",
flowCtlValve1: "/systems/air-conditioning/valves/flow-control-valve-1",
flowCtlValve2: "/systems/air-conditioning/valves/flow-control-valve-2",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,147 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageSts =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageSts,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj.update_items = [
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl",
"Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1",
"AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine",
"Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

View file

@ -0,0 +1,745 @@
# A3XX Lower ECAM Canvas
# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath
var canvas_lowerECAMPageWheel =
{
new: func(svg,name) {
var obj = {parents: [canvas_lowerECAMPageWheel,canvas_lowerECAM_base] };
obj.group = obj.canvas.createGroup();
obj.name = name;
canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} );
foreach(var key; obj.getKeys()) {
obj[key] = obj.group.getElementById(key);
};
foreach(var key; obj.getKeysBottom()) {
obj[key] = obj.group.getElementById(key);
};
obj.units = acconfig_weight_kgs.getValue();
# init
obj["leftuplock"].hide();
obj["noseuplock"].hide();
obj["rightuplock"].hide();
obj["tirepress1"].hide();
obj["tirepress2"].hide();
obj["tirepress3"].hide();
obj["tirepress4"].hide();
obj["tirepress5"].hide();
obj["tirepress6"].hide();
obj.update_items = [
props.UpdateManager.FromHashList(["gearPosNorm","gearPosNorm1","gearPosNorm2","gearLever"], nil, func(val) {
if (val.gearLever and (val.gearPosNorm != 1 or val.gearPosNorm1 != 1 or val.gearPosNorm2 != 1)) {
obj["lgctltext"].show();
} elsif (!val.gearLever and (val.gearPosNorm != 0 or val.gearPosNorm1 != 0 or val.gearPosNorm2 != 0)) {
obj["lgctltext"].show();
} else {
obj["lgctltext"].hide();
}
}),
props.UpdateManager.FromHashValue("gearPosNorm", nil, func(val) {
if (val < 0.2) {
obj["Triangle-Nose1"].hide();
obj["Triangle-Nose2"].hide();
} else {
obj["Triangle-Nose1"].show();
obj["Triangle-Nose2"].show();
}
if (val == 1) {
obj["Triangle-Nose1"].setColor(0.0509,0.7529,0.2941);
obj["Triangle-Nose2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Triangle-Nose1"].setColor(1,0,0);
obj["Triangle-Nose2"].setColor(1,0,0);
}
}),
props.UpdateManager.FromHashValue("gearPosNorm1", nil, func(val) {
if (val < 0.2) {
obj["Triangle-Left1"].hide();
obj["Triangle-Left2"].hide();
} else {
obj["Triangle-Left1"].show();
obj["Triangle-Left2"].show();
}
if (val == 1) {
obj["Triangle-Left1"].setColor(0.0509,0.7529,0.2941);
obj["Triangle-Left2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Triangle-Left1"].setColor(1,0,0);
obj["Triangle-Left2"].setColor(1,0,0);
}
}),
props.UpdateManager.FromHashValue("gearPosNorm2", nil, func(val) {
if (val < 0.2) {
obj["Triangle-Right1"].hide();
obj["Triangle-Right2"].hide();
} else {
obj["Triangle-Right1"].show();
obj["Triangle-Right2"].show();
}
if (val == 1) {
obj["Triangle-Right1"].setColor(0.0509,0.7529,0.2941);
obj["Triangle-Right2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["Triangle-Right1"].setColor(1,0,0);
obj["Triangle-Right2"].setColor(1,0,0);
}
}),
props.UpdateManager.FromHashList(["yellow","green","NWSSwitch","brakesMode","val.accumPressPsiPressPsi","leftBrakeFCS","rightBrakeFCS"], nil, func(val) {
if (val.NWSSwitch and val.yellow >= 1500) {
obj["NWStext"].hide();
obj["NWS"].hide();
obj["NWSrect"].hide();
} else if (!val.NWSSwitch and val.yellow >= 1500) {
obj["NWStext"].show();
obj["NWS"].show();
obj["NWS"].setColor(0.0509,0.7529,0.2941);
obj["NWSrect"].show();
} else {
obj["NWStext"].show();
obj["NWS"].show();
obj["NWS"].setColor(0.7333,0.3803,0);
obj["NWSrect"].show();
}
if ((val.yellow < 1500 and val.brakesMode == 1) or !val.NWSSwitch) {
obj["antiskidtext"].show();
obj["antiskidtext"].setColor(0.7333,0.3803,0);
obj["BSCUrect1"].show();
obj["BSCUrect2"].show();
obj["BSCU1"].show();
obj["BSCU2"].show();
} else {
obj["antiskidtext"].hide();
obj["BSCUrect1"].hide();
obj["BSCUrect2"].hide();
obj["BSCU1"].hide();
obj["BSCU2"].hide();
}
if (val.green >= 1500) {
obj["normbrkhyd"].setColor(0.0509,0.7529,0.2941);
} else {
obj["normbrkhyd"].setColor(0.7333,0.3803,0);
}
if (val.yellow >= 1500) {
obj["altnbrkhyd"].setColor(0.0509,0.7529,0.2941);
} else {
obj["altnbrkhyd"].setColor(0.7333,0.3803,0);
}
if (!val.NWSSwitch or val.green < 1500) {
obj["NORMbrk"].show();
obj["normbrk-rect"].show();
obj["normbrkhyd"].show();
} else {
obj["NORMbrk"].hide();
obj["normbrk-rect"].hide();
obj["normbrkhyd"].hide();
}
if (val.brakesMode != 2 or val.green < 1500 or val.yellow < 1500 or !val.NWSSwitch) {
obj["ALTNbrk"].hide();
obj["altnbrk-rect"].hide();
obj["altnbrkhyd"].hide();
} else {
obj["ALTNbrk"].show();
obj["altnbrk-rect"].show();
obj["altnbrkhyd"].show();
if (val.yellow < 1500 and val.accumPressPsi < 1500) {
obj["ALTNbrk"].setColor(0.7333,0.3803,0);
} else {
obj["ALTNbrk"].setColor(0.0509,0.7529,0.2941);
}
}
if (val.brakesMode == 2 and val.accumPressPsi < 200 and val.yellow < 1500) {
obj["accuonlyarrow"].hide();
obj["accuonly"].hide();
obj["accupress_text"].show();
obj["brakearrow"].hide();
obj["accupress_text"].setColor(0.7333,0.3803,0);
} else if (val.brakesMode == 2 and val.NWSSwitch and val.accumPressPsi > 200 and val.yellow >= 1500){
obj["accuonlyarrow"].hide();
obj["accuonly"].hide();
obj["accupress_text"].show();
obj["brakearrow"].show();
obj["accupress_text"].setColor(0.0509,0.7529,0.2941);
} else if (val.brakesMode == 2 and val.accumPressPsi > 200 and val.yellow < 1500) {
obj["accuonlyarrow"].show();
obj["accuonly"].show();
obj["brakearrow"].hide();
obj["accupress_text"].hide();
} else {
obj["accuonlyarrow"].hide();
obj["accuonly"].hide();
obj["brakearrow"].hide();
obj["accupress_text"].hide();
}
if (val.brakesMode == 1) {
obj["releaseL1"].hide();
obj["releaseL2"].hide();
obj["releaseL3"].hide();
obj["releaseL4"].hide();
obj["releaseR1"].hide();
obj["releaseR2"].hide();
obj["releaseR3"].hide();
obj["releaseR4"].hide();
} else { # Display if the brakes are released and in alternate braking
if (val.leftBrakeFCS == 0) {
obj["releaseL1"].show();
obj["releaseL2"].show();
obj["releaseL3"].show();
obj["releaseL4"].show();
} else {
obj["releaseL1"].hide();
obj["releaseL2"].hide();
obj["releaseL3"].hide();
obj["releaseL4"].hide();
}
if (val.rightBrakeFCS == 0) {
obj["releaseR1"].show();
obj["releaseR2"].show();
obj["releaseR3"].show();
obj["releaseR4"].show();
} else {
obj["releaseR1"].hide();
obj["releaseR2"].hide();
obj["releaseR3"].hide();
obj["releaseR4"].hide();
}
}
}),
props.UpdateManager.FromHashList(["brakeAutobrkMode","NWSSwitch"], nil, func(val) {
if (val.brakeAutobrkMode == 0) {
obj["autobrkind"].hide();
} elsif (val.brakeAutobrkMode == 1) {
obj["autobrkind"].show();
obj["autobrkind"].setText(sprintf("%s", "LO"));
} elsif (val.brakeAutobrkMode == 2) {
obj["autobrkind"].show();
obj["autobrkind"].setText(sprintf("%s", "MED"));
} elsif (val.brakeAutobrkMode == 3) {
obj["autobrkind"].show();
obj["autobrkind"].setText(sprintf("%s", "MAX"));
}
if (val.brakeAutobrkMode != 0 or !val.NWSSwitch) {
obj["autobrk"].show();
} else {
obj["autobrk"].hide();
}
if (!val.NWSSwitch) {
obj["autobrk"].setColor(0.7333,0.3803,0);
} else {
obj["autobrk"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("brakeLeft1", 0.5, func(val) {
obj["braketemp1"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp1"].setColor(0.7333,0.3803,0);
obj["toparc1"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc1"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc1"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp1"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("brakeLeft2", 0.5, func(val) {
obj["braketemp2"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp2"].setColor(0.7333,0.3803,0);
obj["toparc2"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc2"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc2"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp2"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("brakeRight1", 0.5, func(val) {
obj["braketemp3"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp3"].setColor(0.7333,0.3803,0);
obj["toparc3"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc3"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc3"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp3"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("brakeRight2", 0.5, func(val) {
obj["braketemp4"].setText(sprintf("%s", math.round(val, 5)));
if (val > 300) {
obj["braketemp4"].setColor(0.7333,0.3803,0);
obj["toparc4"].setColor(0.7333,0.3803,0);
} else {
if (val > 100 and val <= 300) {
obj["toparc4"].setColor(0.0509,0.7529,0.2941);
} else {
obj["toparc4"].setColor(0.8078,0.8039,0.8078);
}
obj["braketemp4"].setColor(0.0509,0.7529,0.2941);
}
}),
props.UpdateManager.FromHashValue("wheelLeftDoor", 0.5, func(val) {
obj["leftdoor"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelNoseLeftDoor", 0.5, func(val) {
obj["nosegeardoorL"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelNoseRightDoor", 0.5, func(val) {
obj["nosegeardoorR"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelRightDoor", 0.5, func(val) {
obj["rightdoor"].setRotation(val * D2R);
}),
props.UpdateManager.FromHashValue("wheelLeftDoorPos", 0.01, func(val) {
if (val == 0) {
obj["leftdoor"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["leftdoor"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("wheelNoseDoorPos", 0.01, func(val) {
if (val == 0) {
obj["nosegeardoorL"].setColorFill(0.0509,0.7529,0.2941);
obj["nosegeardoorR"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["nosegeardoorL"].setColorFill(0.7333,0.3803,0);
obj["nosegeardoorR"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("wheelRightDoorPos", 0.01, func(val) {
if (val == 0) {
obj["rightdoor"].setColorFill(0.0509,0.7529,0.2941);
} else {
obj["rightdoor"].setColorFill(0.7333,0.3803,0);
}
}),
props.UpdateManager.FromHashValue("spoilerL1", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler1Lex"].hide();
obj["spoiler1Lrt"].show();
} else {
obj["spoiler1Lrt"].hide();
obj["spoiler1Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL2", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler2Lex"].hide();
obj["spoiler2Lrt"].show();
} else {
obj["spoiler2Lrt"].hide();
obj["spoiler2Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL3", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler3Lex"].hide();
obj["spoiler3Lrt"].show();
} else {
obj["spoiler3Lrt"].hide();
obj["spoiler3Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL4", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler4Lex"].hide();
obj["spoiler4Lrt"].show();
} else {
obj["spoiler4Lrt"].hide();
obj["spoiler4Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerL5", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler5Lex"].hide();
obj["spoiler5Lrt"].show();
} else {
obj["spoiler5Lrt"].hide();
obj["spoiler5Lex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR1", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler1Rex"].hide();
obj["spoiler1Rrt"].show();
} else {
obj["spoiler1Rrt"].hide();
obj["spoiler1Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR2", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler2Rex"].hide();
obj["spoiler2Rrt"].show();
} else {
obj["spoiler2Rrt"].hide();
obj["spoiler2Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR3", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler3Rex"].hide();
obj["spoiler3Rrt"].show();
} else {
obj["spoiler3Rrt"].hide();
obj["spoiler3Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR4", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler4Rex"].hide();
obj["spoiler4Rrt"].show();
} else {
obj["spoiler4Rrt"].hide();
obj["spoiler4Rex"].show();
}
}),
props.UpdateManager.FromHashValue("spoilerR5", 0.5, func(val) {
if (val < 1.5) {
obj["spoiler5Rex"].hide();
obj["spoiler5Rrt"].show();
} else {
obj["spoiler5Rrt"].hide();
obj["spoiler5Rex"].show();
}
}),
props.UpdateManager.FromHashList(["spoilerL1Failure","spoilerL1","green"], nil, func(val) {
if (val.spoilerL1Failure or val.green < 1500) {
obj["spoiler1Lex"].setColor(0.7333,0.3803,0);
obj["spoiler1Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL1 < 1.5) {
obj["spoiler1Lf"].show();
} else {
obj["spoiler1Lf"].hide();
}
} else {
obj["spoiler1Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL2Failure","spoilerL2","yellow"], nil, func(val) {
if (val.spoilerL2Failure or val.yellow < 1500) {
obj["spoiler2Lex"].setColor(0.7333,0.3803,0);
obj["spoiler2Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL2 < 1.5) {
obj["spoiler2Lf"].show();
} else {
obj["spoiler2Lf"].hide();
}
} else {
obj["spoiler2Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL3Failure","spoilerL3","blue"], nil, func(val) {
if (val.spoilerL3Failure or val.blue < 1500) {
obj["spoiler3Lex"].setColor(0.7333,0.3803,0);
obj["spoiler3Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL3 < 1.5) {
obj["spoiler3Lf"].show();
} else {
obj["spoiler3Lf"].hide();
}
} else {
obj["spoiler3Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL4Failure","spoilerL4","yellow"], nil, func(val) {
if (val.spoilerL4Failure or val.yellow < 1500) {
obj["spoiler4Lex"].setColor(0.7333,0.3803,0);
obj["spoiler4Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL4 < 1.5) {
obj["spoiler4Lf"].show();
} else {
obj["spoiler4Lf"].hide();
}
} else {
obj["spoiler4Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerL5Failure","spoilerL5","green"], nil, func(val) {
if (val.spoilerL5Failure or val.green < 1500) {
obj["spoiler5Lex"].setColor(0.7333,0.3803,0);
obj["spoiler5Lrt"].setColor(0.7333,0.3803,0);
if (val.spoilerL5 < 1.5) {
obj["spoiler5Lf"].show();
} else {
obj["spoiler5Lf"].hide();
}
} else {
obj["spoiler5Lex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Lf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR1Failure","spoilerR1","green"], nil, func(val) {
if (val.spoilerR1Failure or val.green < 1500) {
obj["spoiler1Rex"].setColor(0.7333,0.3803,0);
obj["spoiler1Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR1 < 1.5) {
obj["spoiler1Rf"].show();
} else {
obj["spoiler1Rf"].hide();
}
} else {
obj["spoiler1Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler1Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR2Failure","spoilerR2","yellow"], nil, func(val) {
if (val.spoilerR2Failure or val.yellow < 1500) {
obj["spoiler2Rex"].setColor(0.7333,0.3803,0);
obj["spoiler2Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR2 < 1.5) {
obj["spoiler2Rf"].show();
} else {
obj["spoiler2Rf"].hide();
}
} else {
obj["spoiler2Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler2Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR3Failure","spoilerR3","blue"], nil, func(val) {
if (val.spoilerR3Failure or val.blue < 1500) {
obj["spoiler3Rex"].setColor(0.7333,0.3803,0);
obj["spoiler3Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR3 < 1.5) {
obj["spoiler3Rf"].show();
} else {
obj["spoiler3Rf"].hide();
}
} else {
obj["spoiler3Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler3Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR4Failure","spoilerR4","yellow"], nil, func(val) {
if (val.spoilerR4Failure or val.yellow < 1500) {
obj["spoiler4Rex"].setColor(0.7333,0.3803,0);
obj["spoiler4Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR4 < 1.5) {
obj["spoiler4Rf"].show();
} else {
obj["spoiler4Rf"].hide();
}
} else {
obj["spoiler4Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler4Rf"].hide();
}
}),
props.UpdateManager.FromHashList(["spoilerR5Failure","spoilerR5","green"], nil, func(val) {
if (val.spoilerR5Failure or val.green < 1500) {
obj["spoiler5Rex"].setColor(0.7333,0.3803,0);
obj["spoiler5Rrt"].setColor(0.7333,0.3803,0);
if (val.spoilerR5 < 1.5) {
obj["spoiler5Rf"].show();
} else {
obj["spoiler5Rf"].hide();
}
} else {
obj["spoiler5Rex"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941);
obj["spoiler5Rf"].hide();
}
}),
];
obj.displayedGForce = 0;
obj.updateItemsBottom = [
props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) {
obj.units = val;
if (val) {
obj["GW-weight-unit"].setText("KG");
} else {
obj["GW-weight-unit"].setText("LBS");
}
}),
props.UpdateManager.FromHashValue("hour", nil, func(val) {
obj["UTCh"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("minute", nil, func(val) {
obj["UTCm"].setText(sprintf("%02d", val));
}),
props.UpdateManager.FromHashValue("gForce", 0.05, func(val) {
if (obj.displayedGForce) {
obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val));
}
}),
props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) {
if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) {
obj.displayedGForce = 1;
obj["GLoad"].show();
} else {
obj.displayedGForce = 0;
obj["GLoad"].hide();
}
}),
];
return obj;
},
getKeysBottom: func() {
return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"];
},
getKeys: func() {
return["lgctltext","NORMbrk","NWStext","leftdoor","rightdoor","nosegeardoorL","nosegeardoorR",
"autobrk","autobrkind","NWS","NWSrect","normbrk-rect","altnbrk","normbrkhyd","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex",
"spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex","spoiler1Lrt","spoiler2Lex","spoiler2Lrt",
"spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf",
"spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf","spoiler5Lf","ALTNbrk","altnbrkhyd","altnbrk-rect","antiskidtext","brakearrow","accupress_text",
"accuonlyarrow","accuonly","braketemp1","normbrkhyd","braketemp2","braketemp3","braketemp4","toparc1","toparc2","toparc3","toparc4","leftuplock",
"noseuplock","rightuplock","Triangle-Left1","Triangle-Left2","Triangle-Nose1","Triangle-Nose2","Triangle-Right1","Triangle-Right2","BSCUrect1",
"BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6","releaseL1","releaseL2","releaseR1","releaseR2",
"releaseL3","releaseL4","releaseR3","releaseR4"];
},
updateBottom: func(notification) {
foreach(var update_item_bottom; me.updateItemsBottom)
{
update_item_bottom.update(notification);
}
if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) {
if (me.units) {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100)));
} else {
me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100)));
}
me["GW"].setColor(0.0509,0.7529,0.2941);
} else {
me["GW"].setText(sprintf("%s", "-----"));
me["GW"].setColor(0.0901,0.6039,0.7176);
}
if (dmc.DMController.DMCs[1].outputs[4] != nil) {
me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue()));
me["SAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["SAT"].setText(sprintf("%s", "XX"));
me["SAT"].setColor(0.7333,0.3803,0);
}
if (dmc.DMController.DMCs[1].outputs[5] != nil) {
me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue()));
me["TAT"].setColor(0.0509,0.7529,0.2941);
} else {
me["TAT"].setText(sprintf("%s", "XX"));
me["TAT"].setColor(0.7333,0.3803,0);
}
},
update: func(notification) {
me.updatePower();
if (me.test.getVisible() == 1) {
me.updateTest(notification);
}
if (me.group.getVisible() == 0) {
return;
}
foreach(var update_item; me.update_items)
{
update_item.update(notification);
}
me.updateBottom(notification);
},
updatePower: func() {
if (me.name == ecam.SystemDisplayController.displayedPage.name) {
if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) {
me.group.setVisible(0);
me.test.setVisible(1);
} else {
me.group.setVisible(1);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
me.test.setVisible(0);
}
} else {
me.group.setVisible(0);
# don't hide the test group; just let whichever page is active control it
}
},
};
var input = {
brakeAutobrkMode: "/controls/autobrake/mode",
brakeLeft1: "/gear/gear[1]/L1brake-temp-degc",
brakeLeft2: "/gear/gear[1]/L2brake-temp-degc",
brakeRight1: "/gear/gear[2]/R3brake-temp-degc",
brakeRight2: "/gear/gear[2]/R4brake-temp-degc",
wheelLeftDoor: "/ECAM/Lower/door-left",
wheelNoseLeftDoor: "/ECAM/Lower/door-nose-left",
wheelNoseRightDoor: "/ECAM/Lower/door-nose-right",
wheelRightDoor: "/ECAM/Lower/door-right",
wheelLeftDoorPos: "/systems/hydraulic/gear/door-left",
wheelNoseDoorPos: "/systems/hydraulic/gear/door-nose",
wheelRightDoorPos: "/systems/hydraulic/gear/door-right",
spoilerL1: "/fdm/jsbsim/hydraulics/spoiler-l1/final-deg",
spoilerL2: "/fdm/jsbsim/hydraulics/spoiler-l2/final-deg",
spoilerL3: "/fdm/jsbsim/hydraulics/spoiler-l3/final-deg",
spoilerL4: "/fdm/jsbsim/hydraulics/spoiler-l4/final-deg",
spoilerL5: "/fdm/jsbsim/hydraulics/spoiler-l5/final-deg",
spoilerR1: "/fdm/jsbsim/hydraulics/spoiler-r1/final-deg",
spoilerR2: "/fdm/jsbsim/hydraulics/spoiler-r2/final-deg",
spoilerR3: "/fdm/jsbsim/hydraulics/spoiler-r3/final-deg",
spoilerR4: "/fdm/jsbsim/hydraulics/spoiler-r4/final-deg",
spoilerR5: "/fdm/jsbsim/hydraulics/spoiler-r5/final-deg",
spoilerL1Failure: "/systems/failures/spoilers/spoiler-l1",
spoilerL2Failure: "/systems/failures/spoilers/spoiler-l2",
spoilerL3Failure: "/systems/failures/spoilers/spoiler-l3",
spoilerL4Failure: "/systems/failures/spoilers/spoiler-l4",
spoilerL5Failure: "/systems/failures/spoilers/spoiler-l5",
spoilerR1Failure: "/systems/failures/spoilers/spoiler-r1",
spoilerR2Failure: "/systems/failures/spoilers/spoiler-r2",
spoilerR3Failure: "/systems/failures/spoilers/spoiler-r3",
spoilerR4Failure: "/systems/failures/spoilers/spoiler-r4",
spoilerR5Failure: "/systems/failures/spoilers/spoiler-r5",
};
foreach (var name; keys(input)) {
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name]));
}

File diff suppressed because it is too large Load diff

View file

@ -42,8 +42,8 @@
id="namedview371"
showgrid="true"
inkscape:zoom="0.76543687"
inkscape:cx="663.42185"
inkscape:cy="457.30228"
inkscape:cx="1295.1967"
inkscape:cy="1096.0742"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -201,7 +201,7 @@
x="465.99081"
id="tspan4176"
sodipodi:role="line">00</tspan></text>
<text
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="512.93152"
@ -569,8 +569,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="APUBleedValveCrossBar"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2" />
</g>
<g
id="APUBleedOnline"
@ -774,4 +775,17 @@
y="803.22437"
style="font-size:48px;line-height:1.25;fill:#bb6100;fill-opacity:1;stroke-width:1px"
id="tspan953">LEVEL</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.99996376px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:-1.59999526px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:4.02421808px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="202.75914"
y="240.23238"
id="APUGenOff"
inkscape:label="#text5149"
transform="scale(0.96120251,1.0403635)"><tspan
sodipodi:role="line"
id="tspan4735"
x="201.95914"
y="240.23238"
style="font-size:35.999897px;line-height:0;text-align:center;letter-spacing:-1.59999526px;text-anchor:middle;stroke-width:4.02421808px">OFF</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -42,8 +42,8 @@
id="namedview371"
showgrid="true"
inkscape:zoom="0.73868665"
inkscape:cx="272.22904"
inkscape:cy="280.96379"
inkscape:cx="201.82373"
inkscape:cy="930.76571"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -67,8 +67,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="BLEED-XFEED-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2" />
</g>
<text
xml:space="preserve"
@ -189,8 +190,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-7"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="BLEED-ENG-1-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-7" />
</g>
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.35079527;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@ -231,8 +233,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="BLEED-Ram-Air-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3" />
</g>
<rect
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1.99221587;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@ -389,8 +392,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3-6-9"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="BLEED-Pack-1-Flow-Valve-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3-6-9" />
</g>
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.32549167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@ -421,8 +425,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3-6-9-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="BLEED-Pack-2-Flow-Valve-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3-6-9-2" />
</g>
<g
id="BLEED-Pack1"
@ -867,8 +872,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-7-7"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="BLEED-ENG-2-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-7-7" />
</g>
<g
id="BLEED-HP-Valve-2"

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View file

@ -41,9 +41,9 @@
inkscape:window-height="705"
id="namedview371"
showgrid="false"
inkscape:zoom="163.84"
inkscape:cx="931.44175"
inkscape:cy="894.81836"
inkscape:zoom="0.64"
inkscape:cx="695.07573"
inkscape:cy="944.3933"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -116,8 +116,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="CONDHotAirValveCross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2" />
</g>
<text
xml:space="preserve"
@ -987,7 +988,7 @@
x="560.88452"
y="976.25214"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b">00</tspan></text>
<text
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="512.93152"

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -12,7 +12,7 @@
viewBox="0 0 1024 1024"
version="1.1"
id="svg2"
inkscape:version="0.92.1 r15371"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="crz.svg">
<metadata
id="metadata375">
@ -37,16 +37,16 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1047"
inkscape:window-width="1366"
inkscape:window-height="705"
id="namedview371"
showgrid="true"
inkscape:zoom="0.5"
inkscape:cx="703.8872"
inkscape:cy="827.31856"
inkscape:window-x="3840"
inkscape:window-y="33"
inkscape:window-maximized="0"
inkscape:zoom="1"
inkscape:cx="470.5927"
inkscape:cy="1012.5262"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-nodes="false"
inkscape:snap-global="false"
@ -298,13 +298,13 @@
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="555.73187"
x="543.46399"
y="220.23506"
id="FUsed"
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan4506"
x="555.73187"
x="543.46399"
y="220.23506"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b">400</tspan></text>
<text
@ -337,14 +337,14 @@
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:-1.60000002px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:4.02423px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="399.71744"
y="631.84998"
y="628.96643"
id="ELEC-IDG-2-num-label"
inkscape:label="#text5149"
transform="scale(0.96119963,1.0403666)"><tspan
sodipodi:role="line"
id="tspan3714"
x="398.91745"
y="631.84998"
y="628.96643"
style="font-size:36px;line-height:0;text-align:center;letter-spacing:-1.60000002px;text-anchor:middle">P</tspan></text>
<text
xml:space="preserve"
@ -414,7 +414,7 @@
d="m 776.33019,117.10687 12.494,-21.584521 12.44575,21.612381 z"
inkscape:transform-center-x="0.023774226"
inkscape:transform-center-y="-3.0226495"
transform="matrix(-0.55570012,0,0,0.85384443,799.83103,554.6097)" />
transform="matrix(-0.55570012,0,0,0.85384443,799.83103,551.6097)" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
@ -543,7 +543,7 @@
d="M 642.63812,444.15624 H 601.42434"
style="fill:none;stroke:#4d4d4d;stroke-width:2.68409395;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text3907-0"
id="OilUnit"
y="298.28555"
x="549.48846"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@ -572,13 +572,13 @@
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:-1.60000002px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:4.02423px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="568.92786"
y="396.86365"
y="398.48981"
id="text3891-3-0"
inkscape:label="#text5149"
transform="scale(0.96119964,1.0403666)"><tspan
sodipodi:role="line"
x="568.12787"
y="396.86365"
y="398.48981"
style="font-size:36.00000381px;line-height:0;text-align:center;letter-spacing:-1.60000002px;text-anchor:middle;stroke-width:4.02423px"
id="tspan4870-6-6">N1</tspan></text>
<text
@ -629,7 +629,7 @@
y="416.89258"
x="340.44434"
id="tspan3905-8-0"
sodipodi:role="line">0.0</tspan></text>
sodipodi:role="line">0.2</tspan></text>
<text
inkscape:label="#text5149"
id="VIB2N1"
@ -641,7 +641,7 @@
y="419.89258"
x="745.04004"
id="tspan3905-8-0-3"
sodipodi:role="line">0.0</tspan></text>
sodipodi:role="line">0.3</tspan></text>
<text
inkscape:label="#text5149"
id="VIB1N2"
@ -653,7 +653,7 @@
y="464.89258"
x="340.04004"
id="tspan3905-8-0-5"
sodipodi:role="line">0.0</tspan></text>
sodipodi:role="line">0.1</tspan></text>
<text
inkscape:label="#text5149"
id="VIB2N2"
@ -665,7 +665,7 @@
y="460.39258"
x="742.04004"
id="tspan3905-8-0-5-2"
sodipodi:role="line">0.0</tspan></text>
sodipodi:role="line">0.2</tspan></text>
<text
inkscape:label="#text5149"
id="CABALT"
@ -707,15 +707,15 @@
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="848.42493"
x="822.92493"
y="600.46124"
id="LDGELEV"
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan3739-2"
x="848.42493"
x="822.92493"
y="600.46124"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;stroke-width:1px">0</tspan></text>
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;stroke-width:1px">500</tspan></text>
<text
transform="scale(0.89169395,1.121461)"
inkscape:label="#text4495"

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -12,7 +12,7 @@
viewBox="0 0 1024 1024"
version="1.1"
id="svg2"
inkscape:version="0.91 r13725"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="door.svg">
<metadata
id="metadata375">
@ -37,14 +37,14 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1030"
inkscape:window-width="1366"
inkscape:window-height="705"
id="namedview371"
showgrid="true"
inkscape:zoom="0.7521195"
inkscape:cx="944.15154"
inkscape:cy="187.23728"
inkscape:window-x="1592"
inkscape:zoom="0.35355339"
inkscape:cx="354.52267"
inkscape:cy="1842.4796"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
@ -81,8 +81,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="500.75214"
y="977.31793"
id="text6232"
sodipodi:linespacing="0%"><tspan
id="text6232"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-7"
x="500.75214"
@ -93,8 +92,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="254.86758"
y="938.9859"
id="text6233"
sodipodi:linespacing="0%"><tspan
id="text6233"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-3"
x="254.86758"
@ -105,8 +103,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="940.17981"
y="939.82428"
id="GW-weight-unit"
sodipodi:linespacing="0%"><tspan
id="GW-weight-unit"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-7-7"
x="940.17981"
@ -117,8 +114,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="695.24951"
y="939.8045"
id="text3912"
sodipodi:linespacing="0%"><tspan
id="text3912"><tspan
sodipodi:role="line"
id="tspan3914"
x="695.24951"
@ -129,8 +125,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="48.73233"
y="939.2984"
id="text6235"
sodipodi:linespacing="0%"><tspan
id="text6235"><tspan
sodipodi:role="line"
id="tspan3914-9"
x="48.73233"
@ -141,8 +136,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="47.952412"
y="975.40332"
id="text6236"
sodipodi:linespacing="0%"><tspan
id="text6236"><tspan
sodipodi:role="line"
id="tspan3914-9-4"
x="47.952412"
@ -154,8 +148,7 @@
x="212.32626"
y="938.96637"
id="TAT"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1"
x="212.32626"
@ -167,8 +160,7 @@
x="212.3264"
y="975.40363"
id="SAT"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1-0"
x="212.3264"
@ -180,15 +172,13 @@
x="925.0899"
y="939.78522"
id="GW"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1-9"
x="925.0899"
y="939.78522"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b">120000</tspan></text>
<text
sodipodi:linespacing="0%"
id="text4170"
y="975.42352"
x="254.86758"
@ -200,7 +190,6 @@
id="tspan4172"
sodipodi:role="line">°C</tspan></text>
<text
sodipodi:linespacing="0%"
inkscape:label="#text5149"
id="UTCh"
y="976.25214"
@ -218,8 +207,7 @@
x="560.88452"
y="976.25214"
id="UTCm"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan4180"
x="560.88452"
@ -236,7 +224,7 @@
id="tspan861"
x="512.93152"
y="940.98541"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.99999905px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6</tspan></text>
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@ -343,7 +331,7 @@
sodipodi:nodetypes="ccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="436.25317"
y="279.40991"
id="Cabin1LeftSlide"
@ -352,7 +340,7 @@
id="tspan4301"
x="436.25317"
y="279.40991"
style="font-size:32px;line-height:1.25">SLIDE</tspan></text>
style="font-size:32px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE</tspan></text>
<text
transform="scale(1.0058142,0.9942194)"
id="AvionicsLbl2"
@ -403,7 +391,7 @@
id="Cabin1RightSlide"
y="289.65512"
x="665.71307"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
transform="scale(1.0269551,0.9737524)"
inkscape:label="#text4396"><tspan
@ -411,7 +399,7 @@
x="665.71307"
id="tspan4398"
sodipodi:role="line"
style="font-size:32.86256409px;line-height:1.25">SLIDE</tspan></text>
style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE</tspan></text>
<path
style="fill:#bb6100;fill-opacity:1;fill-rule:evenodd;stroke:#bb6100;stroke-width:2.61183023;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:7.67999983;stroke-opacity:1"
d="m 853.91992,336.04297 18.49805,0 z m 25.64844,0 18.49609,0 z m 23.00391,0.1543 18.49804,0 z"
@ -449,77 +437,77 @@
<text
transform="scale(1.0269551,0.9737524)"
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="663.55597"
y="550.51556"
y="522.78827"
id="ExitRSlide"
inkscape:label="#text4430"><tspan
sodipodi:role="line"
id="tspan4432"
x="663.55597"
y="550.51556"
style="font-size:32.86256409px;line-height:1.25">SLIDE</tspan></text>
y="522.78827"
style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE</tspan></text>
<text
id="ExitLSlide"
y="550.51556"
y="522.78827"
x="427.7142"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
transform="scale(1.0269551,0.9737524)"
inkscape:label="#text4434"><tspan
y="550.51556"
y="522.78827"
x="427.7142"
id="tspan4436"
sodipodi:role="line"
style="font-size:32.86256409px;line-height:1.25">SLIDE</tspan></text>
style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE</tspan></text>
<path
style="fill:#bb6100;fill-opacity:1;fill-rule:evenodd;stroke:#bb6100;stroke-width:2.61183023;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:7.67999983;stroke-opacity:1"
d="M 853.75 652.0918 L 872.24805 652.0918 L 853.75 652.0918 z M 879.39844 652.0918 L 897.89648 652.0918 L 879.39844 652.0918 z M 902.4043 652.24805 L 920.90039 652.24805 L 902.4043 652.24805 z "
transform="scale(0.8,0.8)"
style="fill:#bb6100;fill-opacity:1;fill-rule:evenodd;stroke:#bb6100;stroke-width:2.08946419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:7.67999983;stroke-opacity:1"
d="m 683,497.67344 h 14.79844 z m 20.51875,0 h 14.79843 z m 18.40469,0.125 h 14.79687 z"
id="ExitRLine"
inkscape:label="#path4438" />
inkscape:label="#path4438"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="929.93616"
y="447.66263"
y="426.74124"
id="ExitRLbl"
transform="scale(0.87172238,1.1471542)"
inkscape:label="#text4444"><tspan
sodipodi:role="line"
x="929.93616"
y="447.66263"
y="426.74124"
id="tspan4448"
style="font-size:27.89511681px;line-height:1.25;fill:#bb6100;fill-opacity:1">EMER</tspan><tspan
sodipodi:role="line"
x="929.93616"
y="482.53152"
y="461.61014"
style="font-size:27.89511681px;line-height:1.25;fill:#bb6100;fill-opacity:1"
id="tspan4456">EXIT</tspan></text>
<text
transform="scale(0.87172238,1.1471542)"
id="ExitLLbl"
y="447.98447"
y="427.06308"
x="240.60371"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"
inkscape:label="#text4458"><tspan
style="font-size:27.89511681px;line-height:1.25;text-align:start;text-anchor:start;fill:#bb6100;fill-opacity:1"
id="tspan4460"
y="447.98447"
y="427.06308"
x="240.60371"
sodipodi:role="line">EMER</tspan><tspan
id="tspan4462"
style="font-size:27.89511681px;line-height:1.25;text-align:start;text-anchor:start;fill:#bb6100;fill-opacity:1"
y="482.85336"
y="461.93198"
x="240.60371"
sodipodi:role="line">EXIT</tspan></text>
<path
style="fill:#bb6100;fill-opacity:1;fill-rule:evenodd;stroke:#bb6100;stroke-width:2.61183023;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:7.67999983;stroke-opacity:1"
d="M 359.47656 652.55273 L 377.97461 652.55273 L 359.47656 652.55273 z M 385.125 652.55273 L 403.62109 652.55273 L 385.125 652.55273 z M 408.12891 652.70898 L 426.62695 652.70898 L 408.12891 652.70898 z "
transform="scale(0.8,0.8)"
style="fill:#bb6100;fill-opacity:1;fill-rule:evenodd;stroke:#bb6100;stroke-width:2.08946419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:7.67999983;stroke-opacity:1"
d="m 287.58125,498.04218 h 14.79844 z m 20.51875,0 h 14.79687 z m 18.40313,0.125 h 14.79843 z"
id="ExitLLine"
inkscape:label="#path4464" />
inkscape:label="#path4464"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 572.97783,450.91184 -10.90875,0.0633 0.0285,29.90121 10.83876,0.0238 z"
@ -631,14 +619,14 @@
id="Cabin4LeftSlide"
y="807.39655"
x="432.02954"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:label="#text4276"><tspan
y="807.39655"
x="432.02954"
id="tspan4278"
sodipodi:role="line"
style="font-size:32px;line-height:1.25">SLIDE</tspan></text>
style="font-size:32px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE</tspan></text>
<path
style="fill:#bb6100;fill-opacity:1;fill-rule:evenodd;stroke:#bb6100;stroke-width:2.08946419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:7.67999983;stroke-opacity:1"
d="m 321.88282,794.0375 14.79843,0 z m -37.4,0.14219 14.79843,0 z m 18.40468,0.125 14.79688,0 z"
@ -662,7 +650,7 @@
<text
transform="scale(1.0269551,0.9737524)"
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="666.375"
y="829.13342"
id="Cabin4RightSlide"
@ -671,7 +659,7 @@
id="tspan4304"
x="666.375"
y="829.13342"
style="font-size:32.86256409px;line-height:1.25">SLIDE</tspan></text>
style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE</tspan></text>
<path
style="fill:#bb6100;fill-opacity:1;fill-rule:evenodd;stroke:#bb6100;stroke-width:2.08946419;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:7.67999983;stroke-opacity:1"
d="m 684.49531,794.17031 14.79687,0 z m 20.51719,0 14.79844,0 z m 18.40468,0.125 14.79844,0 z"
@ -839,80 +827,82 @@
sodipodi:nodetypes="ccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.04751396px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.50395942px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="752.48254"
y="106.23167"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.50395942px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="852.17371"
y="64.937149"
id="DOOROXY-OxyIndicator"
inkscape:label="#text3714"
transform="scale(0.90024385,1.1108101)"><tspan
transform="scale(0.90024388,1.1108101)"><tspan
sodipodi:role="line"
id="tspan4627"
x="752.48254"
y="106.23167"
style="stroke-width:2.50395942px;fill:#0dc04b;fill-opacity:1;">OXY</tspan></text>
x="852.17371"
y="64.937149"
style="font-size:30.04751396px;line-height:0;fill:#cecdce;fill-opacity:1;stroke-width:2.50395942px;">CKPT OXY</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.04800034px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:2.50395942px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="757.76752"
y="141.4857"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:2.50395942px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="799.85938"
y="133.49768"
id="DOOROXY-REGUL-LO-PR"
inkscape:label="#text3714"
transform="scale(0.90024388,1.1108101)"><tspan
sodipodi:role="line"
id="tspan4647"
x="757.76752"
y="141.4857">REGUL LO PR</tspan></text>
x="799.85938"
y="133.49768"
style="font-size:30.04800034px;line-height:0">REGUL LO PR</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:45.96218491px;line-height:1.25;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.14905465;"
x="820.46686"
y="106.9913"
style="font-style:normal;font-weight:normal;font-size:32px;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.14905465;"
x="918.81921"
y="103.75028"
id="DOOROXY-PR"
transform="scale(0.91130679,1.0973253)"
inkscape:label="#text4651"><tspan
sodipodi:role="line"
x="820.46686"
y="106.9913"
style="stroke-width:1.14905465;fill:#0dc04b;fill-opacity:1;"
x="918.81921"
y="103.75028"
style="font-size:36px;line-height:1.25;text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:1.14905465;"
id="tspan4653">1300</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.04800034px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:2.50395942px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="974.64819"
y="105.6836"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:2.50395942px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="953.60229"
y="100.29736"
id="DOOROXY-text-psi"
inkscape:label="#text3714"
transform="scale(0.90024388,1.1108101)"><tspan
sodipodi:role="line"
id="tspan4675"
x="974.64819"
y="105.6836">PSI</tspan></text>
x="953.60229"
y="100.29736"
style="font-size:30px;line-height:0">PSI</tspan></text>
<g
id="DOOR-VS-Container"
inkscape:label="#g4751"
transform="translate(3.9697981,11.253005)">
transform="translate(12.944435,6.250187)">
<text
id="text4619"
y="182.46194"
y="180.12952"
x="679.00989"
style="font-style:normal;font-weight:normal;font-size:30px;line-height:1.25;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.75"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.75"
xml:space="preserve"><tspan
id="tspan4621"
style="fill:#cecdce;fill-opacity:1;stroke-width:0.75"
y="182.46194"
style="font-size:30px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.75"
y="180.12952"
x="679.00989"
sodipodi:role="line">V/S</tspan></text>
<text
inkscape:label="#text4619-2"
transform="scale(1.0181905,0.98213449)"
id="DOOR-VS"
y="183.64415"
x="769.71179"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.16251373px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.57906288"
y="183.35246"
x="737.38855"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.57906288"
xml:space="preserve"><tspan
style="stroke-width:0.57906288"
y="183.64415"
x="769.71179"
style="font-size:36px;line-height:1.25;stroke-width:0.57906288"
y="183.35246"
x="737.38855"
id="tspan4643"
sodipodi:role="line">1650</tspan></text>
<text
@ -920,44 +910,18 @@
id="text4619-2-6"
y="177.27403"
x="869.73895"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.38916969px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.55971754"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.55971754"
xml:space="preserve"><tspan
style="stroke-width:0.55971754"
style="font-size:29.99999809px;line-height:1.25;stroke-width:0.55971754"
y="177.27403"
x="869.73895"
id="tspan4663"
sodipodi:role="line">FT/MIN</tspan></text>
<g
id="DOOR-VS-Arrow-DN">
<path
style="fill:none;fill-rule:evenodd;stroke:#0dc04b;stroke-width:1.44767237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 731.03018,172.74699 39.64077,0.003"
id="path4257-2"
inkscape:connector-curvature="0" />
<path
style="fill:#0dc04b;fill-opacity:1;stroke:#0dc04b;stroke-width:0.75px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 770.62688,172.50761 3.32903,4.16556 6.04407,-1.41023 3.492,26.73705 -16.992,-21.75 5.77627,-3 -2.82034,-3.99238 z"
id="path-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc"
inkscape:label="#path4712" />
</g>
id="DOOR-VS-Arrow-DN" />
<g
inkscape:label="#DOOR-VS-Arrow-DN-3"
transform="matrix(1,0,0,-1,0.04406707,358.0076)"
id="DOOR-VS-Arrow-UP">
<path
style="fill:none;fill-rule:evenodd;stroke:#0dc04b;stroke-width:1.44767237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 731.03018,172.74699 39.64077,0.003"
id="path4257-2-9"
inkscape:connector-curvature="0" />
<path
style="fill:#0dc04b;fill-opacity:1;stroke:#0dc04b;stroke-width:0.75px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 770.62688,172.50761 3.32903,4.16556 6.04407,-1.41023 3.492,26.73705 -16.992,-21.75 5.77627,-3 -2.82034,-3.99238 z"
id="path-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc"
inkscape:label="#path4712" />
</g>
id="DOOR-VS-Arrow-UP" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View file

@ -12,8 +12,8 @@
viewBox="0 0 1024 1024"
version="1.1"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="eng-eis2.svg">
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="eng.svg">
<metadata
id="metadata375">
<rdf:RDF>
@ -37,14 +37,14 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1030"
inkscape:window-width="1366"
inkscape:window-height="705"
id="namedview371"
showgrid="true"
inkscape:zoom="0.5"
inkscape:cx="988.67552"
inkscape:cy="398.82462"
inkscape:window-x="1592"
inkscape:zoom="1"
inkscape:cx="593.89152"
inkscape:cy="650.40507"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
@ -81,8 +81,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="500.75214"
y="977.31793"
id="text6232"
sodipodi:linespacing="0%"><tspan
id="text6232"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-7"
x="500.75214"
@ -93,8 +92,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="254.86758"
y="938.9859"
id="text6233"
sodipodi:linespacing="0%"><tspan
id="text6233"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-3"
x="254.86758"
@ -105,8 +103,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="940.17981"
y="939.82428"
id="GW-weight-unit"
sodipodi:linespacing="0%"><tspan
id="GW-weight-unit"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-7-7"
x="940.17981"
@ -117,8 +114,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="695.24951"
y="939.8045"
id="text3912"
sodipodi:linespacing="0%"><tspan
id="text3912"><tspan
sodipodi:role="line"
id="tspan3914"
x="695.24951"
@ -129,8 +125,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="48.73233"
y="939.2984"
id="text6235"
sodipodi:linespacing="0%"><tspan
id="text6235"><tspan
sodipodi:role="line"
id="tspan3914-9"
x="48.73233"
@ -141,8 +136,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="47.952412"
y="975.40332"
id="text6236"
sodipodi:linespacing="0%"><tspan
id="text6236"><tspan
sodipodi:role="line"
id="tspan3914-9-4"
x="47.952412"
@ -154,8 +148,7 @@
x="212.32626"
y="938.96637"
id="TAT"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1"
x="212.32626"
@ -167,8 +160,7 @@
x="212.3264"
y="975.40363"
id="SAT"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1-0"
x="212.3264"
@ -180,15 +172,13 @@
x="925.0899"
y="939.78522"
id="GW"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1-9"
x="925.0899"
y="939.78522"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b">120000</tspan></text>
<text
sodipodi:linespacing="0%"
id="text4170"
y="975.42352"
x="254.86758"
@ -200,7 +190,6 @@
id="tspan4172"
sodipodi:role="line">°C</tspan></text>
<text
sodipodi:linespacing="0%"
inkscape:label="#text5149"
id="UTCh"
y="976.25214"
@ -218,8 +207,7 @@
x="560.88452"
y="976.25214"
id="UTCm"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan4180"
x="560.88452"
@ -236,7 +224,7 @@
id="tspan861"
x="512.93152"
y="940.98541"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.99999905px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6</tspan></text>
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@ -328,7 +316,8 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="482.23218"
y="296.8558"
id="text4949"><tspan
id="Fused-oil-unit"
inkscape:label="#text4949"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-3-5-9-4"
x="482.23218"
@ -342,7 +331,7 @@
id="text4476"><tspan
sodipodi:role="line"
id="tspan4478"
x="505.625"
x="504.4375"
y="284"
style="font-size:32px;line-height:1.25"> </tspan></text>
<text
@ -668,19 +657,20 @@
inkscape:transform-center-x="70.6625" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
x="264.69138"
y="181.87299"
style="font-style:normal;font-weight:normal;font-size:12.00003052px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75000191"
x="264.69104"
y="181.87344"
id="FUEL-used-1"
inkscape:label="#text5832"><tspan
inkscape:label="#text5832"
transform="scale(1.0000025,0.99999749)"><tspan
sodipodi:role="line"
id="tspan5830-5-2"
x="264.69138"
y="181.87299"
style="font-size:30.00000191px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">0000</tspan></text>
x="264.69104"
y="181.87344"
style="font-size:30.0000782px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.75000191">0000</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
x="682.74243"
y="181.74864"
id="FUEL-used-2"
@ -690,4 +680,128 @@
x="682.74243"
y="181.74864"
style="font-size:30.00000191px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">0000</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:11.99998569px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:0.74999911"
x="679.57947"
y="209.71054"
id="FUEL-clog-2"
inkscape:label="#text5832"
transform="scale(0.9999988,1.0000012)"><tspan
sodipodi:role="line"
id="tspan5830-2"
x="679.57947"
y="209.71054"
style="font-size:29.99996567px;line-height:1.25;fill:#bb6100;fill-opacity:1;stroke-width:0.74999911">CLOG</tspan></text>
<text
transform="scale(0.9999988,1.0000012)"
inkscape:label="#text5832"
id="FUEL-clog-1"
y="209.71054"
x="261.52823"
style="font-style:normal;font-weight:normal;font-size:11.99998569px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:0.74999911"
xml:space="preserve"><tspan
style="font-size:29.99996567px;line-height:1.25;fill:#bb6100;fill-opacity:1;stroke-width:0.74999911"
y="209.71054"
x="261.52823"
id="tspan933"
sodipodi:role="line">CLOG</tspan></text>
<text
transform="scale(0.9999988,1.0000012)"
inkscape:label="#text5832"
id="OIL-clog-2"
y="476.71021"
x="679.57947"
style="font-style:normal;font-weight:normal;font-size:11.99998569px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:0.74999911"
xml:space="preserve"><tspan
style="font-size:29.99996567px;line-height:1.25;fill:#bb6100;fill-opacity:1;stroke-width:0.74999911"
y="476.71021"
x="679.57947"
id="tspan937"
sodipodi:role="line">CLOG</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:11.99998569px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:0.74999911"
x="261.52823"
y="476.71021"
id="OIL-clog-1"
inkscape:label="#text5832"
transform="scale(0.9999988,1.0000012)"><tspan
sodipodi:role="line"
id="tspan941"
x="261.52823"
y="476.71021"
style="font-size:29.99996567px;line-height:1.25;fill:#bb6100;fill-opacity:1;stroke-width:0.74999911">CLOG</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="327.60934"
y="538.25732"
id="OilTemp1"
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-8-1"
x="327.60934"
y="538.25732"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:44px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;stroke-width:1px">22</tspan></text>
<text
inkscape:label="#text5149"
id="VIB-N1-1"
y="623.00732"
x="327.60934"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:44px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;stroke-width:1px"
y="623.00732"
x="327.60934"
id="tspan981"
sodipodi:role="line">0.6</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="327.60934"
y="683.75732"
id="VIB-N2-1"
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan985"
x="327.60934"
y="683.75732"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:44px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;stroke-width:1px">0.1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="757.85675"
y="623.00732"
id="VIB-N1-2"
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan989"
x="757.85675"
y="623.00732"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:44px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;stroke-width:1px">0.6</tspan></text>
<text
inkscape:label="#text5149"
id="VIB-N2-2"
y="683.75732"
x="757.85675"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:44px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;stroke-width:1px"
y="683.75732"
x="757.85675"
id="tspan993"
sodipodi:role="line">0.1</tspan></text>
<text
inkscape:label="#text5149"
id="OilTemp2"
y="538.25732"
x="745.15948"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:44px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;stroke-width:1px"
y="538.25732"
x="745.15948"
id="tspan997"
sodipodi:role="line">22</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -12,7 +12,7 @@
viewBox="0 0 1024 1024"
version="1.1"
id="svg2"
inkscape:version="0.91 r13725"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="fctl.svg">
<metadata
id="metadata375">
@ -37,14 +37,14 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1030"
inkscape:window-width="1366"
inkscape:window-height="705"
id="namedview371"
showgrid="true"
inkscape:zoom="1"
inkscape:cx="683.58709"
inkscape:cy="286.7536"
inkscape:window-x="1592"
showgrid="false"
inkscape:zoom="1.28"
inkscape:cx="608.14718"
inkscape:cy="323.45523"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
@ -81,8 +81,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="500.75214"
y="977.31793"
id="text6232"
sodipodi:linespacing="0%"><tspan
id="text6232"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-7"
x="500.75214"
@ -93,8 +92,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="254.86758"
y="938.9859"
id="text6233"
sodipodi:linespacing="0%"><tspan
id="text6233"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-3"
x="254.86758"
@ -105,8 +103,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="940.17981"
y="939.82428"
id="GW-weight-unit"
sodipodi:linespacing="0%"><tspan
id="GW-weight-unit"><tspan
sodipodi:role="line"
id="tspan3726-1-4-5-7-7"
x="940.17981"
@ -117,8 +114,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="695.24951"
y="939.8045"
id="text3912"
sodipodi:linespacing="0%"><tspan
id="text3912"><tspan
sodipodi:role="line"
id="tspan3914"
x="695.24951"
@ -129,8 +125,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="48.73233"
y="939.2984"
id="text6235"
sodipodi:linespacing="0%"><tspan
id="text6235"><tspan
sodipodi:role="line"
id="tspan3914-9"
x="48.73233"
@ -141,8 +136,7 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="47.952412"
y="975.40332"
id="text6236"
sodipodi:linespacing="0%"><tspan
id="text6236"><tspan
sodipodi:role="line"
id="tspan3914-9-4"
x="47.952412"
@ -154,8 +148,7 @@
x="212.32626"
y="938.96637"
id="TAT"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1"
x="212.32626"
@ -167,8 +160,7 @@
x="212.3264"
y="975.40363"
id="SAT"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1-0"
x="212.3264"
@ -180,15 +172,13 @@
x="925.0899"
y="939.78522"
id="GW"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan5151-5-7-1-9"
x="925.0899"
y="939.78522"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b">120000</tspan></text>
<text
sodipodi:linespacing="0%"
id="text4170"
y="975.42352"
x="254.86758"
@ -200,7 +190,6 @@
id="tspan4172"
sodipodi:role="line">°C</tspan></text>
<text
sodipodi:linespacing="0%"
inkscape:label="#text5149"
id="UTCh"
y="976.25214"
@ -218,8 +207,7 @@
x="560.88452"
y="976.25214"
id="UTCm"
inkscape:label="#text5149"
sodipodi:linespacing="0%"><tspan
inkscape:label="#text5149"><tspan
sodipodi:role="line"
id="tspan4180"
x="560.88452"
@ -236,7 +224,7 @@
id="tspan861"
x="512.93152"
y="940.98541"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.99999905px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6</tspan></text>
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@ -265,7 +253,7 @@
id="text4476"><tspan
sodipodi:role="line"
id="tspan4478"
x="505.625"
x="504.4375"
y="284"
style="font-size:32px;line-height:1.25"> </tspan></text>
<path
@ -417,11 +405,6 @@
id="path4423-0-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#969696;stroke-width:2.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 504.8,808 0,11.65 17.35,0 0,-11.7"
id="path4455"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#969696;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 592.74899,784.57483 7.16728,9.18436 13.67801,-10.67402 -7.19805,-9.22378"
@ -501,8 +484,9 @@
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="371.59274"
y="519.38177"
id="text4343"
transform="scale(0.96916814,1.0318127)"><tspan
id="pitchTrimStatus"
transform="scale(0.96916814,1.0318127)"
inkscape:label="#text4343"><tspan
sodipodi:role="line"
id="tspan4345"
x="371.59274"
@ -563,7 +547,7 @@
style="font-size:32.03270721px;line-height:1.25">DN</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="515.71716"
y="567.75739"
id="PTcc"
@ -572,7 +556,7 @@
id="tspan4391"
x="515.71716"
y="567.75739"
style="font-size:32px;line-height:1.25">°</tspan></text>
style="font-size:32px;line-height:1.25;fill:#179ab7;fill-opacity:1;">°</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
id="rect4370-2-7-0"
@ -629,59 +613,59 @@
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="73.084137"
y="275.63892"
y="341.38232"
id="text4455"
transform="scale(0.99611221,1.003903)"><tspan
transform="scale(0.99611218,1.003903)"><tspan
sodipodi:role="line"
id="tspan4457"
x="73.084137"
y="275.63892"
y="341.38232"
style="font-size:38.63742447px;line-height:1.25;fill:#cecdce;fill-opacity:1"> </tspan><tspan
sodipodi:role="line"
x="73.084137"
y="323.9357"
y="389.67911"
id="tspan4459"
style="font-size:38.63742447px;line-height:1.25;fill:#cecdce;fill-opacity:1">AIL</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="100.07736"
y="267.37128"
y="328.55365"
id="text4461"
transform="scale(0.92700693,1.0787406)"><tspan
transform="scale(0.92700692,1.0787406)"><tspan
sodipodi:role="line"
id="tspan4463"
x="100.07736"
y="267.37128"
y="328.55365"
style="font-size:34.5196991px;line-height:1.25">L</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="896.62933"
y="275.65222"
y="341.39563"
id="text4455-9"
transform="scale(0.99611227,1.0039029)"><tspan
sodipodi:role="line"
id="tspan4457-3"
x="896.62933"
y="275.65222"
y="341.39563"
style="font-size:38.63742447px;line-height:1.25;fill:#cecdce;fill-opacity:1"> </tspan><tspan
sodipodi:role="line"
x="896.62933"
y="323.94901"
y="389.69241"
id="tspan4459-6"
style="font-size:38.63742447px;line-height:1.25;fill:#cecdce;fill-opacity:1">AIL</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="985.13922"
y="267.21289"
y="328.40674"
id="text4486"
transform="scale(0.9271786,1.0785409)"><tspan
transform="scale(0.92717857,1.0785409)"><tspan
sodipodi:role="line"
id="tspan4488"
x="985.13922"
y="267.21289"
y="328.40674"
style="font-size:34.51330566px;line-height:1.25">R</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
@ -709,51 +693,39 @@
width="32.775558"
height="36.044067"
x="106.94858"
y="327.59415" />
y="408.59415" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="118.64819"
y="335.1636"
y="410.806"
id="ailLgreen"
transform="scale(0.93385575,1.0708292)"
inkscape:label="#text4347-2-2-1"><tspan
sodipodi:role="line"
id="tspan4349-9-6-8"
x="118.64819"
y="335.1636"
y="410.806"
style="font-size:34.2665329px;line-height:1.25">G</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="78.4776"
y="329.96588"
id="text4351-1-7"
transform="scale(0.91900969,1.0881278)"><tspan
sodipodi:role="line"
id="tspan4353-2-9"
x="78.4776"
y="329.96588"
style="font-size:34.82009125px;line-height:1.25">B</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
id="rect4370-3-0-6"
width="32.775558"
height="36.044067"
x="927.58649"
y="327.1442" />
y="408.1442" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1015.4791"
y="329.75821"
y="404.19797"
id="ailRblue"
transform="scale(0.91900969,1.0881278)"
inkscape:label="#text4351-1-7-2"><tspan
sodipodi:role="line"
id="tspan4353-2-9-0"
x="1015.4791"
y="329.75821"
y="404.19797"
style="font-size:34.82009125px;line-height:1.25">B</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
@ -761,43 +733,43 @@
width="32.775558"
height="36.044067"
x="887.91785"
y="327.1442" />
y="408.1442" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="955.30261"
y="335.05096"
y="410.69336"
id="ailRgreen"
transform="scale(0.93385575,1.0708292)"
inkscape:label="#text4347-2-2-1-2"><tspan
sodipodi:role="line"
id="tspan4349-9-6-8-3"
x="955.30261"
y="335.05096"
y="410.69336"
style="font-size:34.2665329px;line-height:1.25">G</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="203.8161"
y="548.85791"
y="562.763"
id="text4461-7"
transform="scale(0.92700692,1.0787406)"><tspan
sodipodi:role="line"
id="tspan4463-5"
x="203.8161"
y="548.85791"
y="562.763"
style="font-size:34.5196991px;line-height:1.25">L</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="881.46405"
y="548.97394"
y="562.88373"
id="text4486-9"
transform="scale(0.92732086,1.0783754)"><tspan
sodipodi:role="line"
id="tspan4488-2"
x="881.46405"
y="548.97394"
y="562.88373"
style="font-size:34.50801086px;line-height:1.25">R</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
@ -805,19 +777,19 @@
width="32.775558"
height="36.044067"
x="66.348572"
y="327.69415" />
y="408.69415" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="78.4776"
y="329.96588"
y="404.40564"
id="ailLblue"
transform="scale(0.91900969,1.0881278)"
inkscape:label="#text4351-1-7-28"><tspan
sodipodi:role="line"
id="tspan4353-2-9-9"
x="78.4776"
y="329.96588"
y="404.40564"
style="font-size:34.82009125px;line-height:1.25">B</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
@ -825,19 +797,19 @@
width="32.775558"
height="36.044067"
x="162.06201"
y="672.36768" />
y="664.86768" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="183.42683"
y="647.10468"
y="640.21198"
id="elevLblue"
transform="scale(0.91900969,1.0881278)"
inkscape:label="#text4351-1-7-7"><tspan
sodipodi:role="line"
id="tspan4353-2-9-3"
x="183.42683"
y="647.10468"
y="640.21198"
style="font-size:34.82009125px;line-height:1.25">B</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
@ -845,19 +817,19 @@
width="32.775558"
height="36.044067"
x="204.47299"
y="672.36139" />
y="664.86139" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="222.85838"
y="657.31158"
y="650.3078"
id="elevLgreen"
transform="scale(0.93385575,1.0708292)"
inkscape:label="#text4347-2-2-1-6"><tspan
sodipodi:role="line"
id="tspan4349-9-6-8-1"
x="222.85838"
y="657.31158"
y="650.3078"
style="font-size:34.2665329px;line-height:1.25">G</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
@ -865,19 +837,19 @@
width="32.775558"
height="36.044067"
x="831.81787"
y="671.34418" />
y="663.84418" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="911.57098"
y="646.80011"
y="639.90741"
id="elevRblue"
transform="scale(0.91900969,1.0881278)"
inkscape:label="#text4351-1-7-7-2"><tspan
sodipodi:role="line"
id="tspan4353-2-9-3-9"
x="911.57098"
y="646.80011"
y="639.90741"
style="font-size:34.82009125px;line-height:1.25">B</tspan></text>
<rect
style="fill:#898989;fill-opacity:1;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
@ -885,43 +857,43 @@
width="32.775558"
height="36.044067"
x="791.61786"
y="671.34418" />
y="663.84418" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="860.73682"
y="651.89752"
y="644.94257"
id="elevRyellow"
transform="scale(0.92732085,1.0783754)"
inkscape:label="#text4355-3"><tspan
sodipodi:role="line"
id="tspan4357-1"
x="860.73682"
y="651.89752"
y="644.94257"
style="font-size:34.50801086px;line-height:1.25">Y</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="172.05634"
y="575.58044"
y="589.32837"
id="text4714"
transform="scale(0.91652932,1.0910726)"><tspan
transform="scale(0.91652931,1.0910726)"><tspan
sodipodi:role="line"
id="tspan4716"
x="172.05634"
y="575.58044"
y="589.32837"
style="font-size:36.08533478px;line-height:1.25">ELEV</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="858.55914"
y="575.03058"
y="588.7785"
id="text4714-9"
transform="scale(0.91652937,1.0910725)"><tspan
sodipodi:role="line"
id="tspan4716-4"
x="858.55914"
y="575.03058"
y="588.7785"
style="font-size:36.08533478px;line-height:1.25">ELEV</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#0dc04b;stroke-width:2.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
@ -1292,4 +1264,11 @@
x="792.54504"
y="233.62128"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:43.1136055px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans'">5</tspan></text>
<path
style="fill:#179ab7;fill-opacity:1;stroke:#179ab7;stroke-width:1.67705202;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 513.74999,810.24995 v 18.75003"
id="rudderTrimInd"
inkscape:connector-curvature="0"
inkscape:transform-center-y="142.38281"
inkscape:label="#path1012" />
</svg>

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View file

@ -50,8 +50,8 @@
id="namedview371"
showgrid="false"
inkscape:zoom="0.68"
inkscape:cx="817.73616"
inkscape:cy="1022.6281"
inkscape:cx="434.43172"
inkscape:cy="1022.8371"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -148,8 +148,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="FUEL-XFEED-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3" />
</g>
<rect
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:6.70764637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@ -231,7 +232,7 @@
y="405.25" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="315.9696"
y="468.43625"
id="FUEL-Left-Inner-quantity"
@ -239,26 +240,26 @@
transform="scale(0.9562547,1.0457465)"><tspan
sodipodi:role="line"
id="tspan4819"
x="315.9696"
x="279.51846"
y="468.43625"
style="font-size:30.1989994px;line-height:0">0000</tspan></text>
style="font-size:30.1989994px;line-height:0;text-align:end;text-anchor:end;">0000</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="827.31793"
y="468.59464"
id="FUEL-Right-Inner-quantity"
inkscape:label="#text5149"
transform="scale(0.9562547,1.0457465)"><tspan
style="font-size:30.19900131px;line-height:0;stroke-width:2.5165925px"
style="font-size:30.19900131px;line-height:0;text-align:end;text-anchor:end;stroke-width:2.5165925px;"
y="468.59464"
x="827.31793"
x="790.86682"
sodipodi:role="line"
id="tspan4819-8">0000</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1008.5436"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="981.7066"
y="468.28946"
id="FUEL-Right-Outer-quantity"
inkscape:label="#text5149"
@ -267,10 +268,10 @@
id="tspan4857"
x="1008.5436"
y="468.28946"
style="font-size:30.1989994px;line-height:0">000</tspan></text>
style="font-size:30.1989994px;line-height:0;text-anchor:middle;text-align:center;">000</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.5165925px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="106.37531"
y="468.35995"
id="FUEL-Left-Outer-quantity"
@ -278,9 +279,9 @@
transform="scale(0.9562547,1.0457465)"><tspan
sodipodi:role="line"
id="tspan4877"
x="106.37531"
x="79.538307"
y="468.35995"
style="font-size:30.1989994px;line-height:0">000</tspan></text>
style="font-size:30.1989994px;line-height:0;text-align:end;text-anchor:end;">000</tspan></text>
<rect
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:3.17700815;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-7-3-8-3"
@ -374,8 +375,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3-4"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="FUEL-ENG-Master-1-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3-4" />
</g>
<g
id="FUEL-ENG-Master-2"
@ -392,8 +394,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3-4-3"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="FUEL-ENG-Master-2-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3-4-3" />
</g>
<text
xml:space="preserve"
@ -652,20 +655,6 @@
id="FUEL-Pump-Right-1"
inkscape:label="#g5620"
transform="translate(0,-6.6012608e-5)">
<rect
y="345.25"
x="710.85443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="654.60443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="682.5"
@ -674,22 +663,40 @@
id="FUEL-Pump-Right-1-Open"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5" />
<rect
transform="rotate(90)"
y="-712.5"
x="403.6044"
height="56.249981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="345.25"
height="57.895527"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="FUEL-Pump-Right-1-Square"
inkscape:label="#g1037">
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6"
width="5.3955846"
height="63.750004"
x="710.85443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7"
width="5.3955846"
height="63.750004"
x="654.60443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6"
width="5.3955846"
height="56.249981"
x="403.6044"
y="-712.5"
transform="rotate(90)" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9"
width="5.3955846"
height="57.895527"
x="345.25"
y="-712.5"
transform="rotate(90)" />
</g>
<rect
transform="rotate(90)"
y="-708.75"
@ -704,20 +711,6 @@
transform="translate(65.854409,-1.0289252e-5)"
id="FUEL-Pump-Right-2"
inkscape:label="#g5620">
<rect
y="345.25"
x="710.85443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="654.60443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-8"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="682.5"
@ -726,22 +719,40 @@
id="FUEL-Pump-Right-2-Open"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5" />
<rect
transform="rotate(90)"
y="-712.5"
x="403.6044"
height="56.249981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-99"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="345.25"
height="57.895527"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-6"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="FUEL-Pump-Right-2-Square"
inkscape:label="#g1043">
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-2"
width="5.3955846"
height="63.750004"
x="710.85443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-8"
width="5.3955846"
height="63.750004"
x="654.60443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-99"
width="5.3955846"
height="56.249981"
x="403.6044"
y="-712.5"
transform="rotate(90)" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-6"
width="5.3955846"
height="57.895527"
x="345.25"
y="-712.5"
transform="rotate(90)" />
</g>
<rect
transform="rotate(90)"
y="-708.75"
@ -756,20 +767,6 @@
transform="matrix(1,0,0,1.0022839,-420.75001,-0.78852587)"
id="FUEL-Pump-Left-1"
inkscape:label="#g5620">
<rect
y="345.25"
x="710.85443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-76"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="654.60443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="682.5"
@ -778,22 +775,39 @@
id="FUEL-Pump-Left-1-Open"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5" />
<rect
transform="rotate(90)"
y="-712.5"
x="403.6044"
height="56.249981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="345.25"
height="57.895527"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="FUEL-Pump-Left-1-Square">
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-76"
width="5.3955846"
height="63.750004"
x="710.85443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-1"
width="5.3955846"
height="63.750004"
x="654.60443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-2"
width="5.3955846"
height="56.249981"
x="403.6044"
y="-712.5"
transform="rotate(90)" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-1"
width="5.3955846"
height="57.895527"
x="345.25"
y="-712.5"
transform="rotate(90)" />
</g>
<rect
transform="rotate(90)"
y="-708.75"
@ -808,20 +822,39 @@
transform="translate(-355.50001,-4.5998985e-6)"
id="FUEL-Pump-Left-2"
inkscape:label="#g5620">
<rect
y="345.25"
x="710.85443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-2-9"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="654.60443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-8-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="FUEL-Pump-Left-2-Square">
<rect
y="345.25"
x="710.85443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-2-9"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="654.60443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-8-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="403.6044"
height="56.249981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-99-9"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="345.25"
height="57.895527"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-6-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<rect
y="345.25"
x="682.5"
@ -830,22 +863,6 @@
id="FUEL-Pump-Left-2-Open"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5" />
<rect
transform="rotate(90)"
y="-712.5"
x="403.6044"
height="56.249981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-99-9"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="345.25"
height="57.895527"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-6-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-708.75"
@ -861,20 +878,6 @@
id="FUEL-Pump-Center-1"
inkscape:label="#g5620"
style="stroke:none;stroke-opacity:1">
<rect
y="345.25"
x="710.85443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-76-5"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="654.60443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-1-8"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="682.5"
@ -883,22 +886,40 @@
id="FUEL-Pump-Center-1-Open"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5" />
<rect
transform="rotate(90)"
y="-712.5"
x="403.6044"
height="56.249981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-2-0"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="345.25"
height="57.895527"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-1-4"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="FUEL-Pump-Center-1-Square"
inkscape:label="#g1025">
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-76-5"
width="5.3955846"
height="63.750004"
x="710.85443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-1-8"
width="5.3955846"
height="63.750004"
x="654.60443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-2-0"
width="5.3955846"
height="56.249981"
x="403.6044"
y="-712.5"
transform="rotate(90)" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-1-4"
width="5.3955846"
height="57.895527"
x="345.25"
y="-712.5"
transform="rotate(90)" />
</g>
<rect
transform="rotate(90)"
y="-708.75"
@ -913,20 +934,6 @@
transform="translate(-131.39559,-15.00001)"
id="FUEL-Pump-Center-2"
inkscape:label="#g5620">
<rect
y="345.25"
x="710.85443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-76-5-4"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="654.60443"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-1-8-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="345.25"
x="682.5"
@ -935,22 +942,39 @@
id="FUEL-Pump-Center-2-Open"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5" />
<rect
transform="rotate(90)"
y="-712.5"
x="403.6044"
height="56.249981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-2-0-6"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-712.5"
x="345.25"
height="57.895527"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-1-4-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="FUEL-Pump-Center-2-Square">
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-76-5-4"
width="5.3955846"
height="63.750004"
x="710.85443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.7053628;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-1-8-2"
width="5.3955846"
height="63.750004"
x="654.60443"
y="345.25" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.60190916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-2-0-6"
width="5.3955846"
height="56.249981"
x="403.6044"
y="-712.5"
transform="rotate(90)" />
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.62517166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-1-4-1"
width="5.3955846"
height="57.895527"
x="345.25"
y="-712.5"
transform="rotate(90)" />
</g>
<rect
transform="rotate(90)"
y="-708.75"
@ -962,56 +986,56 @@
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-8" />
</g>
<rect
ry="0"
transform="matrix(0,1,-1,0,0,0)"
y="-261.75253"
x="232.60442"
height="18.894773"
width="5.3955846"
id="FUEL-APU-line"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.09431255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
ry="0"
transform="matrix(0,1,-1,0,0,0)"
y="-261.75253"
x="232.60442"
height="18.894773"
width="5.3955846"
id="FUEL-APU-line"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.09431255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccsc"
inkscape:connector-curvature="0"
id="FUEL-APU-arrow"
d="m 209.24999,234.99999 15.75,-7.5 16.5,-8.25 v 17.25 l 0,15.30854 c 0,0 -1.69343,-0.68362 -19.69533,-10.2091 -11.05467,-5.84944 -12.55467,-6.59944 -12.55467,-6.59944 z"
style="fill:none;stroke:#0dc04b;stroke-width:2.77499986;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.80000019;stroke-dasharray:none;stroke-opacity:1" />
sodipodi:nodetypes="cccccsc"
inkscape:connector-curvature="0"
id="FUEL-APU-arrow"
d="m 209.24999,234.99999 15.75,-7.5 16.5,-8.25 v 17.25 l 0,15.30854 c 0,0 -1.69343,-0.68362 -19.69533,-10.2091 -11.05467,-5.84944 -12.55467,-6.59944 -12.55467,-6.59944 z"
style="fill:none;stroke:#0dc04b;stroke-width:2.77499986;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.80000019;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
x="714.24243"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75;"
x="786.66431"
y="105.24868"
id="FUEL-used-2"
inkscape:label="#text5832"><tspan
sodipodi:role="line"
id="tspan5830"
x="714.24243"
x="750.45337"
y="105.24868"
style="font-size:30px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">0000</tspan></text>
style="font-size:30px;line-height:1.25;text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75;">0000</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
x="470.07513"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75;"
x="542.49701"
y="106.80015"
id="FUEL-used-both"
inkscape:label="#text5832"><tspan
sodipodi:role="line"
id="tspan5830-5"
x="470.07513"
x="506.28607"
y="106.80015"
style="font-size:30.00000191px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">0000</tspan></text>
style="font-size:30.00000191px;line-height:1.25;text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75;">0000</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
x="228.69138"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75;"
x="301.11325"
y="105.37296"
id="FUEL-used-1"
inkscape:label="#text5832"><tspan
sodipodi:role="line"
id="tspan5830-5-2"
x="228.69138"
x="264.90231"
y="105.37296"
style="font-size:30.00000191px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">0000</tspan></text>
style="font-size:30.00000191px;line-height:1.25;text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75;">0000</tspan></text>
<rect
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.82722223;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="FUEL-ENG-1-pipe"

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View file

@ -12,7 +12,7 @@
viewBox="0 0 1024 1024"
version="1.1"
id="svg2"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="hyd.svg">
<metadata
id="metadata375">
@ -55,10 +55,10 @@
inkscape:window-width="1366"
inkscape:window-height="705"
id="namedview371"
showgrid="true"
inkscape:zoom="4.0298682"
inkscape:cx="632.99286"
inkscape:cy="609.55322"
showgrid="false"
inkscape:zoom="5.6568542"
inkscape:cx="1081.6807"
inkscape:cy="259.15874"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -84,8 +84,9 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Fire-Valve-Green-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3" />
</g>
<text
xml:space="preserve"
@ -117,7 +118,7 @@
transform="translate(-504.6045,133.35439)"
id="Pump-Green"
inkscape:label="#g5620"
style="stroke:none;stroke-opacity:1;fill:#0dc04b;fill-opacity:1;stroke-width:0.99974997;stroke-miterlimit:4;stroke-dasharray:none">
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<rect
transform="rotate(90)"
y="-722.10449"
@ -125,7 +126,7 @@
height="69.75222"
width="5.3955846"
id="Pump-Green-off"
style="fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:0.99974997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-8" />
<rect
y="344.7912"
@ -133,21 +134,21 @@
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-76"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="344.7912"
x="650.70892"
height="63.750004"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="346.8956"
x="686.70892"
height="60"
width="5.3955846"
id="Pump-Green-on"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5" />
<rect
transform="rotate(90)"
@ -156,7 +157,7 @@
height="66"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-2"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(90)"
y="-718.6366"
@ -164,7 +165,7 @@
height="67.927612"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-6-6-6-4-6-7-5-6-9-1"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<text
xml:space="preserve"
@ -384,60 +385,67 @@
x="817.61298"
height="5.1203089"
width="53.195583"
id="rect5105-2-5-3-8"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Fire-Valve-Yellow-Cross"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-2-5-3-8" />
</g>
<g
id="Green-Line"
inkscape:label="#g5511"
transform="matrix(1,0,0,0.91447869,0,20.867199)">
<rect
y="666.37177"
x="181.49602"
height="50.02853"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.5107255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="567.01062"
x="182.10442"
height="37.850697"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-6"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.31405532;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Green-Line-Middle"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.31405532;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6" />
<rect
y="666.37177"
x="181.49602"
height="50.02853"
width="5.3955846"
id="Green-Line-Bottom"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.5107255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8" />
<rect
y="239.89929"
x="182.10442"
height="260.70981"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-6-8"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.44869995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Green-Line-Top"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.44869995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8" />
</g>
<g
id="Yellow-Line"
inkscape:label="#g5520"
transform="matrix(1,0,0,0.91744285,0,20.152178)">
<rect
y="669.08563"
x="812.10443"
height="47.414429"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-8"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.47072661;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="571.64478"
x="811.70526"
height="33.75"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-6-4"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.24083376;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Yellow-Line-Middle"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.24083376;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-4" />
<rect
y="666.48438"
x="812.10443"
height="50.015663"
width="5.3955846"
id="Yellow-Line-Bottom"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.51053119;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-8" />
<rect
y="235.81612"
x="812.71283"
height="269.77158"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-6-8-3"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.50812292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Yellow-Line-Top"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.50812292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8-3" />
</g>
<path
style="fill:none;stroke:#0dc04b;stroke-width:2.77499986;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.80000019;stroke-dasharray:none;stroke-opacity:1"
@ -858,15 +866,17 @@
x="497.1044"
height="322.44897"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-6-8-9"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.83536959;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Blue-Line-Top"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.83536959;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8-9" />
<rect
y="624.25513"
x="497.1044"
height="92.244881"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-6-8-9-6"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.05138826;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="Blue-Line-Bottom"
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.05138826;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8-9-6" />
</g>
<path
style="fill:none;stroke:#0dc04b;stroke-width:3.89999986;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@ -875,6 +885,16 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc"
inkscape:label="#path5530" />
<rect
style="opacity:0.8;fill:#cecdce;fill-opacity:1;stroke:#179ab7;stroke-width:1.6348666;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="HYD-Quantity-Group-Yellow_clip"
width="33.343235"
height="180.96817"
x="793.64117"
y="677.14093"
inkscape:label="#rect1048"
inkscape:transform-center-x="22.540598"
inkscape:transform-center-y="-79.48293" />
<g
id="HYD-Quantity-Group-Yellow"
inkscape:label="#g5619">
@ -882,7 +902,7 @@
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5561"
d="m 812.24998,856.74997 h -17.25"
d="m 812.24998,856.74997 h -17.0677"
style="fill:none;stroke:#0dc04b;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccc"
@ -893,15 +913,15 @@
<rect
y="677.5"
x="812.10443"
height="123.75005"
height="144.83067"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-8-1"
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.3760159;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.57043672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5559"
d="m 813.38785,802.38785 h 11.25 v 54.39495 h -11.25 z"
style="fill:none;stroke:#bb6100;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
d="m 813.15523,823.32891 h 11.71524 v 33.68651 h -11.71524 z"
style="fill:none;stroke:#bb6100;stroke-width:2.10803151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="Quantity-Indicator-Yellow"
@ -909,15 +929,23 @@
style="fill:none;stroke:#0dc04b;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#path5563" />
</g>
<rect
style="opacity:0.8;fill:#cecdce;fill-opacity:1;stroke:#179ab7;stroke-width:1.63897061;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="HYD-Quantity-Group-Blue_clip"
width="33.344971"
height="181.86841"
x="478.64029"
y="674.69995"
inkscape:label="#rect1048" />
<g
transform="translate(-314.99999)"
transform="translate(-314.99999,-1.6423255)"
id="HYD-Quantity-Group-Blue"
inkscape:label="#g5619">
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5561-4"
d="m 812.24998,856.74997 h -17.25"
d="m 812.24998,856.74997 h -17.0677"
style="fill:none;stroke:#0dc04b;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccc"
@ -928,15 +956,15 @@
<rect
y="677.5"
x="812.10443"
height="123.75005"
height="135.94765"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-8-1-6"
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.3760159;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.49036217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5559-3"
d="m 813.38785,802.38785 h 11.25 v 54.39495 h -11.25 z"
style="fill:none;stroke:#bb6100;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
d="m 813.26886,814.62253 h 11.48798 v 42.27926 h -11.48798 z"
style="fill:none;stroke:#bb6100;stroke-width:2.33861709;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="Quantity-Indicator-Blue"
@ -944,6 +972,14 @@
style="fill:none;stroke:#0dc04b;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:label="#path5563" />
</g>
<rect
style="opacity:0.8;fill:#cecdce;fill-opacity:1;stroke:#179ab7;stroke-width:1.63411391;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
id="HYD-Quantity-Group-Green_clip"
width="33.336826"
height="180.83632"
x="163.64438"
y="675.72797"
inkscape:label="#rect1048" />
<g
transform="translate(-630.6084,-1.5000219)"
id="HYD-Quantity-Group-Green"
@ -952,7 +988,7 @@
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5561-5"
d="m 812.24998,856.74997 h -17.25"
d="M 812.24998,856.74997 H 795.17576"
style="fill:none;stroke:#0dc04b;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccc"
@ -963,15 +999,15 @@
<rect
y="677.5"
x="812.10443"
height="123.75005"
height="152.12271"
width="5.3955846"
id="rect5105-6-0-7-8-6-8-8-7-3-8-8-1-62"
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.3760159;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.63435125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5559-1"
d="m 813.38785,802.38785 h 11.25 v 54.39495 h -11.25 z"
style="fill:none;stroke:#bb6100;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
d="m 812.88109,830.65833 h 12.26352 v 26.63123 h -12.26352 z"
style="fill:none;stroke:#bb6100;stroke-width:1.91768491;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="Quantity-Indicator-Green"
@ -1148,7 +1184,7 @@
x="465.99081"
id="tspan4176"
sodipodi:role="line">00</tspan></text>
<text
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="512.93152"
@ -1172,4 +1208,17 @@
x="560.88452"
y="976.25214"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b">00</tspan></text>
<text
transform="scale(0.87383883,1.1443758)"
inkscape:label="#text5149"
id="Pump-LOPR-Blue"
y="507.94836"
x="542.45435"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:3.77088857px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
sodipodi:role="line"
id="tspan4816-7"
x="542.45435"
y="507.94836"
style="font-size:45.25px;line-height:0;stroke-width:3.77088857px">LO</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View file

@ -12,7 +12,7 @@
viewBox="0 0 1024 1024"
version="1.1"
id="svg2"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="press.svg">
<metadata
id="metadata375">
@ -41,9 +41,9 @@
inkscape:window-height="705"
id="namedview371"
showgrid="true"
inkscape:zoom="0.88"
inkscape:cx="397.64824"
inkscape:cy="880.3857"
inkscape:zoom="0.64"
inkscape:cx="770.48025"
inkscape:cy="620.45739"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -467,7 +467,7 @@
style="font-size:32.18700027px;line-height:0">SYS2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:0.98999999;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.68228626px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:0.98999999;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.68228626px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="632.71191"
y="608.12244"
id="PRESS-Man"
@ -477,10 +477,10 @@
id="tspan5036"
x="632.71191"
y="608.12244"
style="font-size:32.18700027px;line-height:0">MAN</tspan></text>
style="font-size:32.18700027px;line-height:0;fill:#0dc04b;fill-opacity:1;">MAN</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.87310684"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.87310684;"
x="156.08197"
y="788.50562"
id="PRESS-Pack-1"
@ -490,10 +490,10 @@
id="tspan5038"
x="156.08197"
y="788.50562"
style="font-size:34.92427444px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.87310684">PACK 1</tspan></text>
style="font-size:34.92427444px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.87310684;">PACK 1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.87310684"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.87310684;"
x="802.58295"
y="788.27905"
id="PRESS-Pack-2"
@ -503,35 +503,24 @@
id="tspan5060"
x="802.58295"
y="788.27905"
style="font-size:34.92399979px;line-height:1.25">PACK 2</tspan></text>
style="font-size:34.92399979px;line-height:1.25;fill:#cecdce;fill-opacity:1;">PACK 2</tspan></text>
<path
style="fill:none;stroke:#cecdce;stroke-width:2.47499993;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:none;stroke:#0dc04b;stroke-width:2.47499993;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="m 191.99999,797.49995 h 20.25 v 0 l -9.75,-25.5 v 0 z"
id="path5062"
inkscape:connector-curvature="0" />
id="PRESS-Pack-1-Triangle"
inkscape:connector-curvature="0"
inkscape:label="#path5062" />
<path
style="fill:none;stroke:#cecdce;stroke-width:2.4749999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#0dc04b;stroke-width:2.4749999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 805.14493,798.24998 h 20.25 v 0 l -9.75,-25.5 v 0 z"
id="path5062-3"
inkscape:connector-curvature="0" />
id="PRESS-Pack-2-Triangle"
inkscape:connector-curvature="0"
inkscape:label="#path5062-3" />
<path
style="fill:none;stroke:#cecdce;stroke-width:2.4749999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 203.99999,195.24999 h 20.25 v 0 l -9.75,-25.5 v 0 z"
id="path5062-3-0"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:1.43711448"
x="506.89874"
y="334.31491"
id="PRESS-Cab-VS-neg"
transform="scale(0.98802114,1.0121241)"
inkscape:label="#text5100"><tspan
sodipodi:role="line"
id="tspan5098"
x="506.89874"
y="334.31491"
style="font-size:57.48457718px;line-height:1.25;fill:#0dbe4a;fill-opacity:1;stroke-width:1.43711448">-</tspan></text>
<rect
style="fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:1.60198247;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="PRESS-Alt-needle"
@ -771,32 +760,6 @@
x="185.16533"
y="366.22198"
style="font-size:27.24699974px;line-height:0">0</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:4.99181652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="169.68008"
y="538.0921"
id="PRESS-deltaP-period"
inkscape:label="#text3720"
transform="scale(1.3534057,0.73887673)"><tspan
sodipodi:role="line"
id="tspan5559"
x="169.68008"
y="538.0921"
style="font-size:59.90160751px;line-height:0;fill:#0dbe4a;fill-opacity:1;stroke-width:4.99181652px">.</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:2.27059054px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="278.09778"
y="360.78436"
id="PRESS-deltaP-Decimal"
inkscape:label="#text3720"
transform="scale(0.9147857,1.0931522)"><tspan
sodipodi:role="line"
id="tspan5595"
x="278.09778"
y="360.78436"
style="font-size:27.24699974px;line-height:0">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:2.27059054px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@ -1084,7 +1047,7 @@
x="560.88452"
y="976.25214"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b">00</tspan></text>
<text
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="512.93152"

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View file

@ -41,9 +41,9 @@
inkscape:window-height="705"
id="namedview371"
showgrid="true"
inkscape:zoom="2.3145515"
inkscape:cx="701.70396"
inkscape:cy="947.29764"
inkscape:zoom="0.64"
inkscape:cx="1071.5554"
inkscape:cy="763.4389"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@ -370,14 +370,14 @@
id="NORMbrk"
y="616.38831"
x="426.55933"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:label="#text4285"><tspan
y="616.38831"
x="426.55933"
id="tspan4287"
sodipodi:role="line"
style="font-size:32px;line-height:1.25;fill:#0dc04b;fill-opacity:1">NORM BRK</tspan></text>
style="font-size:32px;line-height:1.25;fill:#bb6100;fill-opacity:1;">NORM BRK</tspan></text>
<text
id="accupress_text"
y="707.69037"
@ -484,7 +484,7 @@
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans'">999</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="926.31042"
y="555.97632"
id="releaseR3"
@ -494,33 +494,33 @@
id="tspan4329"
x="926.31042"
y="555.97632"
style="font-size:21.63888741px;line-height:1.25">|||</tspan></text>
style="font-size:21.63888741px;line-height:1.25;fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<text
transform="scale(0.83828115,1.1929172)"
id="releaseL3"
y="555.97632"
x="852.14044"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:label="#text4331"><tspan
y="555.97632"
x="852.14044"
id="tspan4333"
sodipodi:role="line"
style="font-size:21.63888741px;line-height:1.25">|||</tspan></text>
style="font-size:21.63888741px;line-height:1.25;fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<text
transform="scale(0.83828115,1.1929172)"
id="releaseL4"
y="556.23566"
x="1048.9662"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:label="#text4335"><tspan
y="556.23566"
x="1048.9662"
id="tspan4337"
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.63888741px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans'">|||</tspan></text>
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.63888741px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@ -547,7 +547,7 @@
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans'">REL</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="80.142349"
y="607.25616"
id="releaseL1"
@ -557,23 +557,23 @@
id="tspan4353"
x="80.142349"
y="607.25616"
style="font-size:23.3301487px;line-height:1.25">|||</tspan></text>
style="font-size:23.3301487px;line-height:1.25;fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<text
transform="scale(0.91562312,1.0921524)"
id="releaseR1"
y="606.97186"
x="147.61992"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:label="#text4355"><tspan
y="606.97186"
x="147.61992"
id="tspan4357"
sodipodi:role="line"
style="font-size:23.3301487px;line-height:1.25">|||</tspan></text>
style="font-size:23.3301487px;line-height:1.25;fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="254.77022"
y="607.25616"
id="releaseL2"
@ -583,20 +583,20 @@
id="tspan4361"
x="254.77022"
y="607.25616"
style="font-size:23.3301487px;line-height:1.25">|||</tspan></text>
style="font-size:23.3301487px;line-height:1.25;fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<text
transform="scale(0.91562313,1.0921524)"
id="releaseR2"
y="606.97186"
x="321.23053"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
xml:space="preserve"
inkscape:label="#text4363"><tspan
y="606.97186"
x="321.23053"
id="tspan4365"
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.3301487px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans'">|||</tspan></text>
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.3301487px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<path
style="fill:#cecdce;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.80000001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 62.082323,383.88565 50.858397,0 0,2.80598 -50.861852,-0.0503 z"
@ -1062,7 +1062,7 @@
inkscape:label="#rect4336" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="636.59528"
y="554.79926"
id="BSCU2"
@ -1071,10 +1071,10 @@
id="tspan192"
x="636.59528"
y="554.79926"
style="font-size:32px;line-height:1.25;fill:#bb6100;fill-opacity:1">2</tspan></text>
style="font-size:32px;line-height:1.25;fill:#0dc04b;fill-opacity:1;">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="602.89856"
y="554.79913"
id="BSCU1"
@ -1083,7 +1083,7 @@
id="tspan195"
x="602.89856"
y="554.79913"
style="font-size:32px;line-height:1.25;fill:#bb6100;fill-opacity:1">1</tspan></text>
style="font-size:32px;line-height:1.25;fill:#0dc04b;fill-opacity:1;">1</tspan></text>
<rect
y="336.88196"
x="364.16824"
@ -1114,17 +1114,17 @@
inkscape:label="#path4358" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
x="1123.6205"
y="555.97632"
id="releaseR3-7"
id="releaseR4"
transform="scale(0.83828114,1.1929172)"
inkscape:label="#text4327"><tspan
sodipodi:role="line"
id="tspan4329-4"
x="1123.6205"
y="555.97632"
style="font-size:21.63888741px;line-height:1.25;stroke-width:1px">|||</tspan></text>
style="font-size:21.63888741px;line-height:1.25;stroke-width:1px;fill:#bb6100;fill-opacity:1;">|||</tspan></text>
<text
inkscape:label="#text4355-7"
transform="scale(0.92732085,1.0783754)"
@ -1190,14 +1190,14 @@
inkscape:label="#text4289"
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="455.59897"
y="707.69037"
x="441.43594"
y="707.69073"
id="accuonly"><tspan
style="font-size:32px;line-height:1.25"
sodipodi:role="line"
id="tspan4312"
x="455.59897"
y="707.69037">ACCU ONLY</tspan></text>
x="441.43594"
y="707.69073">ACCU ONLY</tspan></text>
<path
inkscape:label="#path4358"
sodipodi:nodetypes="cccccccccc"

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View file

@ -1068,9 +1068,8 @@ var UpperECAMRecipient =
var A320EWD = UpperECAMRecipient.new("A320 E/WD");
emesary.GlobalTransmitter.Register(A320EWD);
input = {
var input = {
fuelTotalLbs: "/consumables/fuel/total-fuel-lbs",
acconfigUnits: "/systems/acconfig/options/weight-kgs",
slatLocked: "/fdm/jsbsim/fcs/slat-locked",
# N1 parameters

View file

@ -4,7 +4,6 @@
# props.nas:
var dualFailNode = props.globals.initNode("/ECAM/dual-failure-enabled", 0, "BOOL");
var phaseNode = props.globals.getNode("/ECAM/warning-phase", 1);
var apWarn = props.globals.getNode("/it-autoflight/output/ap-warning", 1);
var athrWarn = props.globals.getNode("/it-autoflight/output/athr-warning", 1);
var emerGen = props.globals.getNode("/controls/electrical/switches/emer-gen", 1);
@ -46,7 +45,7 @@ var _SATval = nil;
var ecamConfigTest = props.globals.initNode("/ECAM/to-config-test", 0, "BOOL");
var messages_priority_3 = func {
phaseVar3 = phaseNode.getValue();
phaseVar3 = pts.ECAM.fwcWarningPhase.getValue();
# Stall
# todo - altn law and emer cancel flipflops page 2440
@ -1161,7 +1160,7 @@ var messages_priority_3 = func {
}
var messages_priority_2 = func {
phaseVar2 = phaseNode.getValue();
phaseVar2 = pts.ECAM.fwcWarningPhase.getValue();
if ((phaseVar2 == 2 or phaseVar2 == 3 or phaseVar2 == 9) and warningNodes.Logic.thrLeversNotSet.getValue() and engThrustLvrNotSet.clearFlag == 0) {
engThrustLvrNotSet.active = 1;
@ -3130,7 +3129,7 @@ var messages_priority_0 = func {
}
var messages_config_memo = func {
phaseVarMemo = phaseNode.getValue();
phaseVarMemo = pts.ECAM.fwcWarningPhase.getValue();
if (pts.Controls.Flight.flapsInput.getValue() == 0 or pts.Controls.Flight.flapsInput.getValue() == 4 or pts.Controls.Flight.speedbrake.getValue() != 0 or getprop("/fdm/jsbsim/hydraulics/stabilizer/final-deg") > 1.75 or getprop("/fdm/jsbsim/hydraulics/stabilizer/final-deg") < -3.65 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") < -3.55 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") > 3.55) {
setprop("/ECAM/to-config-normal", 0);
} else {
@ -3296,7 +3295,7 @@ var messages_config_memo = func {
}
var messages_memo = func {
phaseVarMemo2 = phaseNode.getValue();
phaseVarMemo2 = pts.ECAM.fwcWarningPhase.getValue();
if (getprop("/services/fuel-truck/enable") == 1 and toMemoLine1.active != 1 and ldgMemoLine1.active != 1) {
refuelg.active = 1;
} else {
@ -3399,7 +3398,7 @@ var messages_memo = func {
}
var messages_right_memo = func {
phaseVarMemo3 = phaseNode.getValue();
phaseVarMemo3 = pts.ECAM.fwcWarningPhase.getValue();
if (FWC.Timer.toInhibitOutput.getValue() == 1) {
to_inhibit.active = 1;
} else {

View file

@ -28,7 +28,7 @@ var SystemDisplayController = {
displayedPage: nil,
lastDisplayedPage: nil,
lastMode: nil,
mode: 0, # 0 = man, 1 = warning, 2 = advisory (not used yet), 3 = auto
mode: 3, # 0 = man, 1 = warning, 2 = advisory (not used yet), 3 = auto
tempFWCPhase: nil,
tempElapsedTime: nil,
tempEngineModeSel: nil,
@ -37,6 +37,7 @@ var SystemDisplayController = {
ECAMTimer.start();
},
autoCallLoop: func() {
if (me.mode != 3) { return; }
me.tempFWCPhase = pts.ECAM.fwcWarningPhase.getValue();
if (me.Display.APU) {

View file

@ -67,8 +67,8 @@ var FBW = {
rtlu1: props.globals.getNode("/systems/failures/fctl/rtlu-1"),
rtlu2: props.globals.getNode("/systems/failures/fctl/rtlu-2"),
rtlu2: props.globals.getNode("/systems/failures/fctl/rtlu-2"),
ths: props.globals.getNode("/systems/failures/fctl/ths-jam"),
spoilerl1: props.globals.getNode("/systems/failures/spoilers/spoiler-l1"),
ths: props.globals.getNode(""),
spoilerl1: props.globals.getNode(""),
spoilerl2: props.globals.getNode("/systems/failures/spoilers/spoiler-l2"),
spoilerl3: props.globals.getNode("/systems/failures/spoilers/spoiler-l3"),
spoilerl4: props.globals.getNode("/systems/failures/spoilers/spoiler-l4"),

View file

@ -391,6 +391,10 @@ var input = {
"seatbelt": "/controls/switches/seatbelt-sign",
"noSmoking": "/controls/switches/no-smoking-sign",
"gearPosNorm": "/gear/gear[0]/position-norm",
"gearPosNorm1": "/gear/gear[1]/position-norm",
"gearPosNorm2": "/gear/gear[2]/position-norm",
"engine1Running": "/engines/engine[0]/running",
"engine2Running": "/engines/engine[1]/running",
};
foreach (var name; keys(input)) {

View file

@ -83,6 +83,7 @@ var Engines = {
n1Actual: [props.globals.getNode("/engines/engine[0]/n1-actual"), props.globals.getNode("/engines/engine[1]/n1-actual")],
n2Actual: [props.globals.getNode("/engines/engine[0]/n2-actual"), props.globals.getNode("/engines/engine[1]/n2-actual")],
oilPsi: [props.globals.getNode("/engines/engine[0]/oil-psi-actual"), props.globals.getNode("/engines/engine[1]/oil-psi-actual")],
oilQt: [props.globals.getNode("/engines/engine[0]/oil-qt-actual"), props.globals.getNode("/engines/engine[1]/oil-qt-actual")],
thrust: [props.globals.getNode("/engines/engine[0]/thrust-lb"), props.globals.getNode("/engines/engine[1]/thrust-lb")],
reverser: [props.globals.getNode("/engines/engine[0]/reverser-pos-norm"), props.globals.getNode("/engines/engine[1]/reverser-pos-norm")],
state: [props.globals.getNode("/engines/engine[0]/state"), props.globals.getNode("/engines/engine[1]/state")],

View file

@ -64,9 +64,9 @@ var HYD = {
},
init: func() {
me.resetFail();
me.Qty.blueInput.setValue(math.round((rand() * 4) + 8 , 0.1)); # Random between 8 and 12
me.Qty.greenInput.setValue(math.round((rand() * 4) + 8 , 0.1)); # Random between 8 and 12
me.Qty.yellowInput.setValue(math.round((rand() * 4) + 8 , 0.1)); # Random between 8 and 12
me.Qty.blueInput.setValue(math.round((rand() * 2) + 6 , 0.1)); # Random between 6 and 8
me.Qty.greenInput.setValue(math.round((rand() * 4) + 14 , 0.1)); # Random between 14 and 18
me.Qty.yellowInput.setValue(math.round((rand() * 4) + 10 , 0.1)); # Random between 10 and 14
me.Switch.blueElec.setValue(1);
me.Switch.blueElecOvrd.setValue(0);
me.Switch.greenEDP.setValue(1);

View file

@ -42,6 +42,7 @@ input = {
frame_rate: "/sim/frame-rate",
elapsedTime: "/sim/time/elapsed-sec",
FWCPhase: "/ECAM/warning-phase",
acconfigUnits: "/systems/acconfig/options/weight-kgs",
# Just about everything uses these properties at some stage, lets add them here!
gear0Wow: "/gear/gear[0]/wow",

View file

@ -29,13 +29,25 @@
</actuator>
<!-- Green -->
<switch name="/systems/hydraulic/green-qty-cmd">
<switch name="/systems/hydraulic/green-qty-cmd-cmd">
<default value="/systems/hydraulic/green-qty-input"/>
<test value="0">
/systems/failures/hydraulic/green-leak eq 1
</test>
</switch>
<fcs_function name="/systems/hydraulic/green-qty-cmd">
<function>
<sum>
<property>/systems/hydraulic/green-qty-cmd-cmd</property>
<product>
<value>2.1</value>
<property>/gear/gear[0]/position-norm</property>
</product>
</sum>
</function>
</fcs_function>
<switch name="/systems/hydraulic/green-qty-decr-rate">
<default value="100"/> <!-- Instant -->
<test value="0.25">