-
Notifications
You must be signed in to change notification settings - Fork 3
/
CustomOperatorFlags.js
88 lines (86 loc) · 5.66 KB
/
CustomOperatorFlags.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* global VRS */
function customPipeSeparatedCode(text, code)
{
var result = text;
if(code && code.length) {
if(result.length) {
result += "|";
}
result += code;
}
return result;
}
function customFormatOperatorIcaoImageHtml(manufacturer, operatorIcao, registration, icao)
{
var codeToUse = "";
codeToUse = customPipeSeparatedCode(codeToUse, registration);
codeToUse = customPipeSeparatedCode(codeToUse, operatorIcao);
codeToUse = customPipeSeparatedCode(codeToUse, icao);
codeToUse = customPipeSeparatedCode(codeToUse, manufacturer);
var size = VRS.globalOptions.aircraftOperatorFlagSize;
var result = "<img src=\"images/File-" + encodeURIComponent(codeToUse);
if(VRS.browserHelper.isHighDpi()) {
result += "/HiDpi";
}
result += "/OpFlag.png\"" +
" width=\"" + size.width.toString() + "px\"" +
" height=\"" + size.height.toString() + "px\"" +
" />";
return result;
}
function customFormatOperatorIcaoImageHtmlAircraft(aircraft)
{
return customFormatOperatorIcaoImageHtml(aircraft.manufacturer.val, aircraft.operatorIcao.val, aircraft.registration.val, aircraft.icao.val);
}
if(VRS && VRS.globalDispatch && VRS.serverConfig) {
VRS.globalDispatch.hook(VRS.globalEvent.bootstrapCreated, function(bootStrap) {
if(VRS.renderPropertyHandlers) {
VRS.renderPropertyHandlers[VRS.RenderProperty.OperatorFlag] = new VRS.RenderPropertyHandler({
property: VRS.RenderProperty.OperatorFlag,
surfaces: VRS.RenderSurface.List + VRS.RenderSurface.DetailHead + VRS.RenderSurface.InfoWindow,
headingKey: "ListOperatorFlag",
labelKey: "OperatorFlag",
sortableField: VRS.AircraftListSortableField.OperatorIcao,
headingAlignment: VRS.Alignment.Centre,
suppressLabelCallback() { return true; },
fixedWidth() { return VRS.globalOptions.aircraftOperatorFlagSize.width.toString() + "px"; },
hasChangedCallback(aircraft) { return aircraft.operatorIcao.chg || aircraft.icao.chg || aircraft.registration.chg || aircraft.manufacturer.chg; },
renderCallback(aircraft) { return customFormatOperatorIcaoImageHtmlAircraft(aircraft); },
tooltipChangedCallback(aircraft) { return aircraft.operatorIcao.chg || aircraft.operator.chg; },
tooltipCallback(aircraft) { return aircraft.formatOperatorIcaoAndName(); }
});
VRS.renderPropertyHandlers[VRS.RenderProperty.SilhouetteAndOpFlag] = new VRS.RenderPropertyHandler({
property: VRS.RenderProperty.SilhouetteAndOpFlag,
surfaces: VRS.RenderSurface.List,
headingKey: "ListModelSilhouetteAndOpFlag",
labelKey: "SilhouetteAndOpFlag",
headingAlignment: VRS.Alignment.Centre,
sortableField: VRS.AircraftListSortableField.OperatorIcao,
fixedWidth() { return Math.max(VRS.globalOptions.aircraftSilhouetteSize.width, VRS.globalOptions.aircraftOperatorFlagSize.width).toString() + "px"; },
// Changed the following line to include manufacturer
hasChangedCallback(aircraft) { return aircraft.modelIcao.chg || aircraft.operatorIcao.chg || aircraft.registration.chg || aircraft.manufacturer.chg; },
// And this line to include a call to the custom HTML
renderCallback(aircraft) { return aircraft.formatModelIcaoImageHtml() + customFormatOperatorIcaoImageHtmlAircraft(aircraft); },
tooltipChangedCallback(aircraft) { return aircraft.model.chg || aircraft.modelIcao.chg || aircraft.countEngines.chg || aircraft.engineType.chg || aircraft.species.chg || aircraft.wakeTurbulenceCat.chg || aircraft.operatorIcao.chg || aircraft.operator.chg; },
tooltipCallback(aircraft) {
var silhouetteTooltip = aircraft.formatModelIcaoNameAndDetail();
var opFlagTooltip = aircraft.formatOperatorIcaoAndName();
return silhouetteTooltip && opFlagTooltip ? silhouetteTooltip + ". " + opFlagTooltip : silhouetteTooltip ? silhouetteTooltip : opFlagTooltip;
}
});
}
if(VRS.reportPropertyHandlers) {
VRS.reportPropertyHandlers[VRS.ReportAircraftProperty.OperatorFlag] = new VRS.ReportPropertyHandler({
property: VRS.ReportAircraftProperty.OperatorFlag,
surfaces: VRS.ReportSurface.List + VRS.ReportSurface.DetailHead,
headingKey: "ListOperatorFlag",
labelKey: "OperatorFlag",
headingAlignment: VRS.Alignment.Centre,
fixedWidth() { return VRS.globalOptions.aircraftOperatorFlagSize.width.toString() + "px"; },
hasValue(/* VRS_JSON_REPORT_AIRCRAFT */ json) { return !!json.opFlag || !!json.icao || !!json.reg || !!json.manufacturer; },
renderCallback(/* VRS_JSON_REPORT_AIRCRAFT */ json) { return customFormatOperatorIcaoImageHtml(json.manufacturer, json.opFlag, json.reg, json.icao); },
tooltipCallback(/* VRS_JSON_REPORT_AIRCRAFT */ json) { return VRS.format.operatorIcaoAndName(json.owner, json.opFlag); }
});
}
});
}