@armyc2.c5isr.renderer/mil-sym-ts-web 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +57 -0
  3. package/buildNode.bat +2 -0
  4. package/buildWeb.bat +2 -0
  5. package/dist/C5Ren.d.ts +6970 -0
  6. package/dist/C5Ren.js +2 -0
  7. package/dist/C5Ren.js.map +1 -0
  8. package/dist/LICENSE +201 -0
  9. package/dist/README.md +57 -0
  10. package/dist/armyc2.c5isr.renderer-mil-sym-ts-web-2.2.0.tgz +0 -0
  11. package/dist/manifest.json +4 -0
  12. package/dist/package.json +16 -0
  13. package/index.ts +169 -0
  14. package/package.bak +50 -0
  15. package/package.json +40 -0
  16. package/package.node.json +43 -0
  17. package/package.pack.json +19 -0
  18. package/package.packWeb.json +16 -0
  19. package/package.web.json +40 -0
  20. package/src/main/ts/android/graphics/Bitmap.ts +7 -0
  21. package/src/main/ts/android/graphics/Paint.ts +26 -0
  22. package/src/main/ts/android/graphics/Path.ts +78 -0
  23. package/src/main/ts/android/graphics/PointF.ts +14 -0
  24. package/src/main/ts/android/graphics/Rect.ts +18 -0
  25. package/src/main/ts/android/graphics/RectF.ts +50 -0
  26. package/src/main/ts/android/graphics/Region.ts +36 -0
  27. package/src/main/ts/android/graphics/Typeface.ts +11 -0
  28. package/src/main/ts/armyc2/c5isr/JavaLineArray/BasicShapes.ts +99 -0
  29. package/src/main/ts/armyc2/c5isr/JavaLineArray/CChannelPoints2.ts +34 -0
  30. package/src/main/ts/armyc2/c5isr/JavaLineArray/CELineArray.ts +193 -0
  31. package/src/main/ts/armyc2/c5isr/JavaLineArray/Channels.ts +2971 -0
  32. package/src/main/ts/armyc2/c5isr/JavaLineArray/DISMSupport.ts +4008 -0
  33. package/src/main/ts/armyc2/c5isr/JavaLineArray/POINT2.ts +93 -0
  34. package/src/main/ts/armyc2/c5isr/JavaLineArray/Shape2.ts +89 -0
  35. package/src/main/ts/armyc2/c5isr/JavaLineArray/TacticalLines.ts +515 -0
  36. package/src/main/ts/armyc2/c5isr/JavaLineArray/arraysupport.ts +5403 -0
  37. package/src/main/ts/armyc2/c5isr/JavaLineArray/countsupport.ts +1084 -0
  38. package/src/main/ts/armyc2/c5isr/JavaLineArray/flot.ts +2173 -0
  39. package/src/main/ts/armyc2/c5isr/JavaLineArray/lineutility.ts +4934 -0
  40. package/src/main/ts/armyc2/c5isr/JavaLineArray/ref.ts +7 -0
  41. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/Modifier2.ts +5601 -0
  42. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/P1.ts +14 -0
  43. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/TGLight.ts +648 -0
  44. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsChannelUtility.ts +647 -0
  45. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsMETOC.ts +2994 -0
  46. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/clsUtility.ts +2663 -0
  47. package/src/main/ts/armyc2/c5isr/JavaTacticalRenderer/mdlGeodesic.ts +669 -0
  48. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipPolygon2.ts +971 -0
  49. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsClipQuad.ts +871 -0
  50. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer.ts +3507 -0
  51. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsRenderer2.ts +500 -0
  52. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtility.ts +1089 -0
  53. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityCPOF.ts +2656 -0
  54. package/src/main/ts/armyc2/c5isr/RenderMultipoints/clsUtilityGE.ts +1419 -0
  55. package/src/main/ts/armyc2/c5isr/data/genc.json +1407 -0
  56. package/src/main/ts/armyc2/c5isr/data/msd.json +17311 -0
  57. package/src/main/ts/armyc2/c5isr/data/mse.json +18500 -0
  58. package/src/main/ts/armyc2/c5isr/data/svgd.json +31214 -0
  59. package/src/main/ts/armyc2/c5isr/data/svge.json +30558 -0
  60. package/src/main/ts/armyc2/c5isr/graphics2d/AffineTransform.ts +10 -0
  61. package/src/main/ts/armyc2/c5isr/graphics2d/Area.ts +437 -0
  62. package/src/main/ts/armyc2/c5isr/graphics2d/BasicStroke.ts +429 -0
  63. package/src/main/ts/armyc2/c5isr/graphics2d/BasicTypes.ts +7 -0
  64. package/src/main/ts/armyc2/c5isr/graphics2d/BufferedImage.ts +35 -0
  65. package/src/main/ts/armyc2/c5isr/graphics2d/Font.ts +111 -0
  66. package/src/main/ts/armyc2/c5isr/graphics2d/FontMetrics.ts +29 -0
  67. package/src/main/ts/armyc2/c5isr/graphics2d/FontRenderContext.ts +18 -0
  68. package/src/main/ts/armyc2/c5isr/graphics2d/GeneralPath.ts +211 -0
  69. package/src/main/ts/armyc2/c5isr/graphics2d/Graphics2D.ts +80 -0
  70. package/src/main/ts/armyc2/c5isr/graphics2d/IPathIterator.ts +33 -0
  71. package/src/main/ts/armyc2/c5isr/graphics2d/ImageIO.ts +16 -0
  72. package/src/main/ts/armyc2/c5isr/graphics2d/Line2D.ts +726 -0
  73. package/src/main/ts/armyc2/c5isr/graphics2d/PathIterator.ts +141 -0
  74. package/src/main/ts/armyc2/c5isr/graphics2d/Point.ts +112 -0
  75. package/src/main/ts/armyc2/c5isr/graphics2d/Point2D.ts +261 -0
  76. package/src/main/ts/armyc2/c5isr/graphics2d/Polygon.ts +391 -0
  77. package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle.ts +567 -0
  78. package/src/main/ts/armyc2/c5isr/graphics2d/Rectangle2D.ts +445 -0
  79. package/src/main/ts/armyc2/c5isr/graphics2d/Shape.ts +31 -0
  80. package/src/main/ts/armyc2/c5isr/graphics2d/Stroke.ts +18 -0
  81. package/src/main/ts/armyc2/c5isr/graphics2d/TextLayout.ts +45 -0
  82. package/src/main/ts/armyc2/c5isr/graphics2d/TexturePaint.ts +25 -0
  83. package/src/main/ts/armyc2/c5isr/renderer/IIconRenderer.ts +15 -0
  84. package/src/main/ts/armyc2/c5isr/renderer/IconRenderer.ts +22 -0
  85. package/src/main/ts/armyc2/c5isr/renderer/MilStdIconRenderer.ts +269 -0
  86. package/src/main/ts/armyc2/c5isr/renderer/ModifierRenderer.ts +9882 -0
  87. package/src/main/ts/armyc2/c5isr/renderer/PatternFillRenderer.ts +146 -0
  88. package/src/main/ts/armyc2/c5isr/renderer/SinglePointSVGRenderer.ts +1265 -0
  89. package/src/main/ts/armyc2/c5isr/renderer/shapes/arc.ts +64 -0
  90. package/src/main/ts/armyc2/c5isr/renderer/shapes/bcurve.ts +95 -0
  91. package/src/main/ts/armyc2/c5isr/renderer/shapes/ellipse.ts +93 -0
  92. package/src/main/ts/armyc2/c5isr/renderer/shapes/line.ts +114 -0
  93. package/src/main/ts/armyc2/c5isr/renderer/shapes/path.ts +555 -0
  94. package/src/main/ts/armyc2/c5isr/renderer/shapes/pathiterator.ts +62 -0
  95. package/src/main/ts/armyc2/c5isr/renderer/shapes/point.ts +120 -0
  96. package/src/main/ts/armyc2/c5isr/renderer/shapes/rectangle.ts +431 -0
  97. package/src/main/ts/armyc2/c5isr/renderer/shapes/roundedrectangle.ts +99 -0
  98. package/src/main/ts/armyc2/c5isr/renderer/shapes/types.ts +25 -0
  99. package/src/main/ts/armyc2/c5isr/renderer/shapes/utilities.ts +203 -0
  100. package/src/main/ts/armyc2/c5isr/renderer/utilities/AffiliationColors.ts +104 -0
  101. package/src/main/ts/armyc2/c5isr/renderer/utilities/Color.ts +481 -0
  102. package/src/main/ts/armyc2/c5isr/renderer/utilities/DistanceUnit.ts +40 -0
  103. package/src/main/ts/armyc2/c5isr/renderer/utilities/DrawRules.ts +1323 -0
  104. package/src/main/ts/armyc2/c5isr/renderer/utilities/EntityCode.ts +51 -0
  105. package/src/main/ts/armyc2/c5isr/renderer/utilities/ErrorLogger.ts +736 -0
  106. package/src/main/ts/armyc2/c5isr/renderer/utilities/GENCLookup.ts +106 -0
  107. package/src/main/ts/armyc2/c5isr/renderer/utilities/GeoPixelConversion3D.ts +84 -0
  108. package/src/main/ts/armyc2/c5isr/renderer/utilities/IMultiPointRenderer.ts +87 -0
  109. package/src/main/ts/armyc2/c5isr/renderer/utilities/IPointConversion.ts +34 -0
  110. package/src/main/ts/armyc2/c5isr/renderer/utilities/ImageInfo.ts +324 -0
  111. package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUCache.ts +127 -0
  112. package/src/main/ts/armyc2/c5isr/renderer/utilities/LRUEntry.ts +18 -0
  113. package/src/main/ts/armyc2/c5isr/renderer/utilities/LogLevel.ts +111 -0
  114. package/src/main/ts/armyc2/c5isr/renderer/utilities/MODrawRules.ts +219 -0
  115. package/src/main/ts/armyc2/c5isr/renderer/utilities/MSInfo.ts +1008 -0
  116. package/src/main/ts/armyc2/c5isr/renderer/utilities/MSLookup.ts +882 -0
  117. package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdAttributes.ts +380 -0
  118. package/src/main/ts/armyc2/c5isr/renderer/utilities/MilStdSymbol.ts +797 -0
  119. package/src/main/ts/armyc2/c5isr/renderer/utilities/Modifiers.ts +1699 -0
  120. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversion.ts +178 -0
  121. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConversionDummy.ts +45 -0
  122. package/src/main/ts/armyc2/c5isr/renderer/utilities/PointConverter3D.ts +126 -0
  123. package/src/main/ts/armyc2/c5isr/renderer/utilities/RectUtilities.ts +118 -0
  124. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererException.ts +11 -0
  125. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererSettings.ts +1201 -0
  126. package/src/main/ts/armyc2/c5isr/renderer/utilities/RendererUtilities.ts +591 -0
  127. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGInfo.ts +29 -0
  128. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGLookup.ts +753 -0
  129. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGSymbolInfo.ts +137 -0
  130. package/src/main/ts/armyc2/c5isr/renderer/utilities/SVGTextInfo.ts +438 -0
  131. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEvent.ts +19 -0
  132. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsChangedEventListener.ts +10 -0
  133. package/src/main/ts/armyc2/c5isr/renderer/utilities/SettingsEventListener.ts +5 -0
  134. package/src/main/ts/armyc2/c5isr/renderer/utilities/Shape2SVG.ts +404 -0
  135. package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeInfo.ts +525 -0
  136. package/src/main/ts/armyc2/c5isr/renderer/utilities/ShapeUtilities.ts +55 -0
  137. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolDimensionInfo.ts +36 -0
  138. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolID.ts +1055 -0
  139. package/src/main/ts/armyc2/c5isr/renderer/utilities/SymbolUtilities.ts +2085 -0
  140. package/src/main/ts/armyc2/c5isr/renderer/utilities/TextInfo.ts +157 -0
  141. package/src/main/ts/armyc2/c5isr/web/render/GeoPixelConversion.ts +86 -0
  142. package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandler.ts +3798 -0
  143. package/src/main/ts/armyc2/c5isr/web/render/MultiPointHandlerSVG.ts +412 -0
  144. package/src/main/ts/armyc2/c5isr/web/render/PointConverter.ts +124 -0
  145. package/src/main/ts/armyc2/c5isr/web/render/SymbolModifiers.ts +26 -0
  146. package/src/main/ts/armyc2/c5isr/web/render/WebRenderer.ts +677 -0
  147. package/src/main/ts/armyc2/c5isr/web/render/utilities/JavaRendererUtilities.ts +484 -0
  148. package/src/main/ts/armyc2/c5isr/web/render/utilities/LineInfo.ts +62 -0
  149. package/src/main/ts/armyc2/c5isr/web/render/utilities/SymbolInfo.ts +46 -0
  150. package/src/main/ts/armyc2/c5isr/web/render/utilities/TextInfo.ts +51 -0
  151. package/src/main/ts/org/gavaghan/geodesy/Angle.ts +31 -0
  152. package/src/main/ts/org/gavaghan/geodesy/Ellipsoid.ts +71 -0
  153. package/src/main/ts/org/gavaghan/geodesy/GeodeticCalculator.ts +200 -0
  154. package/src/main/ts/org/gavaghan/geodesy/GeodeticCurve.ts +55 -0
  155. package/src/main/ts/org/gavaghan/geodesy/GeodeticMeasurement.ts +68 -0
  156. package/src/main/ts/org/gavaghan/geodesy/GlobalCoordinates.ts +103 -0
  157. package/src/main/ts/org/gavaghan/geodesy/GlobalPosition.ts +90 -0
  158. package/test/ExportSPImages.js +692 -0
  159. package/test/MPWW.html +556 -0
  160. package/test/MPWorker.js +318 -0
  161. package/test/SPWorker.js +233 -0
  162. package/test/SVGWW.html +363 -0
  163. package/test/singlePointTester3.html +751 -0
  164. package/tsconfig.json +54 -0
  165. package/typedoc.json +30 -0
  166. package/updateVersion.js +21 -0
  167. package/webpack.config.js +34 -0
  168. package/webpackn.config.js +28 -0
  169. package/webpackr.config.js +47 -0
  170. package/webpackw.config.js +23 -0
@@ -0,0 +1,882 @@
1
+ import { Modifiers } from "../../renderer/utilities/Modifiers"
2
+ import { MSInfo } from "../../renderer/utilities/MSInfo"
3
+ import { SymbolID } from "../../renderer/utilities/SymbolID"
4
+ import { SymbolUtilities } from "../../renderer/utilities/SymbolUtilities"
5
+ import { ErrorLogger } from "./ErrorLogger";
6
+ import { LogLevel } from "./LogLevel";
7
+ import { RendererUtilities } from "./RendererUtilities";
8
+
9
+ import jsond from '../../data/msd.json';
10
+ import jsone from '../../data/mse.json';
11
+
12
+ /**
13
+ * Class that holds all the objects with symbol information
14
+ */
15
+ export class MSLookup {
16
+
17
+ private static mse: any;
18
+ private static msd: any;
19
+ private static _instance: MSLookup;
20
+ private static _initCalled: boolean = false;
21
+ private static _isReady: boolean = false;
22
+
23
+ private static _MSLookupD: Map<string, MSInfo>;
24
+ private static _MSLookupE: Map<string, MSInfo>;
25
+ //private TAG: string = "MSLookup";
26
+ private _IDListD: Array<string> = [];
27
+ private _IDListE: Array<string> = [];
28
+ private static msdJSON:string = "/msd.json";
29
+ private static mseJSON:string = "/mse.json";
30
+
31
+ /*public static async loadData(location?:string)
32
+ {
33
+ let pathd:string = MSLookup.msdJSON;//String(msdj);
34
+ let pathe:string = MSLookup.mseJSON;//String(msej);
35
+ if(location)
36
+ {
37
+ pathd = location + pathd.substring(pathd.lastIndexOf('/')+1,pathd.length);
38
+ pathe = location + pathe.substring(pathe.lastIndexOf('/')+1,pathe.length);
39
+ }
40
+
41
+ let promises:Array<Promise<any>> = new Array<Promise<any>>()
42
+
43
+ promises.push(RendererUtilities.getData(pathd));
44
+ promises.push(RendererUtilities.getData(pathe));// RendererUtilities.getData(String(svgd)).then(function(result){this.genc = result;this.init();});
45
+ await Promise.all(promises).then(values => {MSLookup.msd = values[0];MSLookup.mse = values[1];}).catch(error => {throw error;})
46
+
47
+ //let promises:Array<Promise<any>> = new Array<Promise<any>>()
48
+
49
+ //promises.push(RendererUtilities.getData(String(msdj)));
50
+ //promises.push(RendererUtilities.getData(String(msej)));// RendererUtilities.getData(String(svgd)).then(function(result){this.genc = result;this.init();});
51
+ //await Promise.all(promises).then(values => {MSLookup.msd = values[0];MSLookup.mse = values[1];}).catch(error => {throw error;})
52
+ }//*/
53
+
54
+ /**
55
+ *
56
+ * @param urls
57
+ * @deprecated
58
+ */
59
+ public static async setData(urls:string[])
60
+ {
61
+ /*let promises:Array<Promise<any>> = new Array<Promise<any>>();
62
+
63
+ promises.push(RendererUtilities.getData(urls[0]));
64
+ promises.push(RendererUtilities.getData(urls[1]));// RendererUtilities.getData(String(svgd)).then(function(result){this.genc = result;this.init();});
65
+ await Promise.all(promises).then(values => {MSLookup.msd = values[0];MSLookup.mse = values[1];}).catch(error => {throw error;})//*/
66
+ }
67
+
68
+ /*public static setDataObject()
69
+ {
70
+ this.msd = jsond;
71
+ this.mse = jsone;
72
+ }//*/
73
+
74
+ /*
75
+ * Holds SymbolDefs for all symbols. (basicSymbolID, Description, MinPoint, MaxPoints, etc...) Call
76
+ * getInstance().
77
+ *
78
+ */
79
+ private constructor()
80
+ {
81
+ this.init();
82
+ }
83
+
84
+ public static getInstance(): MSLookup {
85
+ if (!MSLookup._instance) {
86
+ MSLookup._instance = new MSLookup();
87
+ }
88
+ return MSLookup._instance;
89
+ }
90
+
91
+ private init(): void {
92
+
93
+ if(typeof jsond === 'object')
94
+ {
95
+ MSLookup.msd = jsond;
96
+ MSLookup.mse = jsone;
97
+ }
98
+
99
+ if (MSLookup._initCalled === false) {
100
+ MSLookup._initCalled = true;
101
+ MSLookup._MSLookupD = new Map();
102
+ MSLookup._MSLookupE = new Map();
103
+ this._IDListD = new Array();
104
+ this._IDListE = new Array();
105
+
106
+ try
107
+ {
108
+ this.populateLookup(SymbolID.Version_2525Dch1);
109
+ this.populateLookup(SymbolID.Version_2525E);
110
+ if(this._IDListD.length > 0 && this._IDListE.length > 0)
111
+ MSLookup._isReady = true;
112
+
113
+ } catch (e) {
114
+ if (e instanceof Error) {
115
+ console.log(e.message);
116
+ } else {
117
+ throw e;
118
+ }
119
+ }
120
+ }
121
+ }
122
+
123
+ public isReady():boolean
124
+ {
125
+ return MSLookup._isReady;
126
+ }
127
+
128
+ private async populateLookup(version: number) {
129
+ let lookup: Map<string, MSInfo>;
130
+ let list: Array<string>;
131
+ type JSONSymbol = {
132
+ ss: string;
133
+ e: string;
134
+ et: string;
135
+ est: string;
136
+ code: string;
137
+ geometry?: string;
138
+ drawRules?: string;
139
+ modifiers?: string;
140
+ aux1?: string;
141
+ }
142
+
143
+ try {
144
+ let msJSON: JSONSymbol[];
145
+ if (version === SymbolID.Version_2525E) {
146
+ lookup = MSLookup._MSLookupE;
147
+ list = this._IDListE;
148
+ msJSON = MSLookup.mse["mse"]["SYMBOL"]
149
+ } else {
150
+ lookup = MSLookup._MSLookupD;
151
+ list = this._IDListD;
152
+ msJSON = MSLookup.msd["msd"]["SYMBOL"]
153
+ }
154
+
155
+ let ss: string = ""
156
+ for (let JSONSymbol of msJSON) {
157
+ if (JSONSymbol.code.length != 6) {
158
+ JSONSymbol.code = "000000";
159
+ }
160
+ if (JSONSymbol.ss !== "") {
161
+ ss = JSONSymbol.ss;
162
+ }
163
+
164
+ if (JSONSymbol.code !== "000000") {
165
+ let id = ss + JSONSymbol.code;
166
+ if (JSONSymbol.geometry || JSONSymbol.drawRules) {//Control Measures and METOCS
167
+ let modifiers: string[] | null = null;
168
+ if (JSONSymbol.modifiers && JSONSymbol.modifiers !== "") {
169
+ modifiers = JSONSymbol.modifiers.split(",");
170
+ }
171
+
172
+ let g: string = JSONSymbol.geometry || "";
173
+ let dr: string = JSONSymbol.drawRules || "";
174
+ lookup.set(id, new MSInfo(version, ss, JSONSymbol.e, JSONSymbol.et, JSONSymbol.est, JSONSymbol.code, g, dr, this.populateModifierList(modifiers)));
175
+ } else {//Everything else
176
+ //_MSLookupD.set(id, new MSInfo(ss, e, et, est, ec));
177
+ lookup.set(id, new MSInfo(version, ss, JSONSymbol.e, JSONSymbol.et, JSONSymbol.est, JSONSymbol.code, this.populateModifierList(ss, JSONSymbol.code, version)));
178
+ }
179
+ list.push(id);
180
+ }
181
+ }
182
+ } catch (exc) {
183
+ if (exc instanceof Error) {
184
+ console.log(exc.message);
185
+ } else {
186
+ throw exc;
187
+ }
188
+ }
189
+ }
190
+
191
+ private populateModifierList(modifiers: string[] | null): Array<string>;
192
+
193
+ private populateModifierList(symbolSet: string, ec: string, version: number): Array<string>;
194
+ private populateModifierList(...args: unknown[]): Array<string> {
195
+ switch (args.length) {
196
+ case 1: {
197
+ const [modifiers] = args as [string[]];
198
+
199
+ let mods: Array<string> = new Array<string>();
200
+ if (modifiers != null && modifiers.length > 0) {
201
+ for (let mod of modifiers) {
202
+ mods.push(Modifiers.getModifierKey(mod));
203
+ }
204
+ }
205
+ return mods;
206
+ }
207
+
208
+ case 3: {
209
+ const [symbolSet, ec, version] = args as [string, string, number];
210
+
211
+ let ss: number = parseInt(symbolSet);
212
+ let modifiers: Array<string> = new Array<string>();
213
+
214
+ if (version >= SymbolID.Version_2525E) {
215
+ switch (ss) {
216
+ case SymbolID.SymbolSet_LandUnit:
217
+ case SymbolID.SymbolSet_LandCivilianUnit_Organization: {
218
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
219
+ modifiers.push(Modifiers.B_ECHELON);
220
+ modifiers.push(Modifiers.D_TASK_FORCE_INDICATOR);
221
+ modifiers.push(Modifiers.F_REINFORCED_REDUCED);
222
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
223
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
224
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
225
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
226
+ modifiers.push(Modifiers.L_SIGNATURE_EQUIP);
227
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
228
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
229
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
230
+ modifiers.push(Modifiers.S_HQ_STAFF_INDICATOR);
231
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
232
+ modifiers.push(Modifiers.W_DTG_1);
233
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
234
+ modifiers.push(Modifiers.Y_LOCATION);
235
+ modifiers.push(Modifiers.Z_SPEED);
236
+ if (ss === SymbolID.SymbolSet_LandUnit && ec === "110000") {
237
+
238
+ modifiers.push(Modifiers.AA_SPECIAL_C2_HQ);
239
+ }
240
+
241
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
242
+ modifiers.push(Modifiers.AD_PLATFORM_TYPE);
243
+ modifiers.push(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);
244
+ modifiers.push(Modifiers.AF_COMMON_IDENTIFIER);
245
+ modifiers.push(Modifiers.AH_AREA_OF_UNCERTAINTY);
246
+ modifiers.push(Modifiers.AI_DEAD_RECKONING_TRAILER);
247
+ modifiers.push(Modifiers.AJ_SPEED_LEADER);
248
+ modifiers.push(Modifiers.AK_PAIRING_LINE);
249
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
250
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
251
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
252
+ modifiers.push(Modifiers.AS_COUNTRY);
253
+ break;
254
+ }
255
+
256
+ case SymbolID.SymbolSet_LandEquipment:
257
+ case SymbolID.SymbolSet_SignalsIntelligence: {
258
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
259
+ modifiers.push(Modifiers.C_QUANTITY);
260
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
261
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
262
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
263
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
264
+ modifiers.push(Modifiers.L_SIGNATURE_EQUIP);
265
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
266
+ modifiers.push(Modifiers.N_HOSTILE);
267
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
268
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
269
+ modifiers.push(Modifiers.R_MOBILITY_INDICATOR);
270
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
271
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
272
+ modifiers.push(Modifiers.W_DTG_1);
273
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
274
+ modifiers.push(Modifiers.Y_LOCATION);
275
+ modifiers.push(Modifiers.Z_SPEED);
276
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
277
+ modifiers.push(Modifiers.AD_PLATFORM_TYPE);
278
+ modifiers.push(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);
279
+ modifiers.push(Modifiers.AF_COMMON_IDENTIFIER);
280
+ modifiers.push(Modifiers.AG_AUX_EQUIP_INDICATOR);
281
+ modifiers.push(Modifiers.AH_AREA_OF_UNCERTAINTY);
282
+ modifiers.push(Modifiers.AI_DEAD_RECKONING_TRAILER);
283
+ modifiers.push(Modifiers.AJ_SPEED_LEADER);
284
+ modifiers.push(Modifiers.AK_PAIRING_LINE);
285
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
286
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
287
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
288
+ modifiers.push(Modifiers.AS_COUNTRY);
289
+ modifiers.push(Modifiers.AR_SPECIAL_DESIGNATOR);
290
+ break;
291
+ }
292
+
293
+ case SymbolID.SymbolSet_LandInstallation: {
294
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
295
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
296
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
297
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
298
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
299
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
300
+ modifiers.push(Modifiers.S_HQ_STAFF_INDICATOR);
301
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
302
+ modifiers.push(Modifiers.W_DTG_1);
303
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
304
+ modifiers.push(Modifiers.Y_LOCATION);
305
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
306
+ modifiers.push(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);
307
+ modifiers.push(Modifiers.AH_AREA_OF_UNCERTAINTY);
308
+ modifiers.push(Modifiers.AI_DEAD_RECKONING_TRAILER);
309
+ modifiers.push(Modifiers.AJ_SPEED_LEADER);
310
+ modifiers.push(Modifiers.AK_PAIRING_LINE);
311
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
312
+ //modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
313
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
314
+ modifiers.push(Modifiers.AS_COUNTRY);
315
+ break;
316
+ }
317
+
318
+ case SymbolID.SymbolSet_DismountedIndividuals: {
319
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
320
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
321
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
322
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
323
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
324
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
325
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
326
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
327
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
328
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
329
+ modifiers.push(Modifiers.W_DTG_1);
330
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
331
+ modifiers.push(Modifiers.Y_LOCATION);
332
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
333
+ modifiers.push(Modifiers.AF_COMMON_IDENTIFIER);
334
+ modifiers.push(Modifiers.AS_COUNTRY);
335
+ modifiers.push(Modifiers.AV_LEADERSHIP);
336
+ break;
337
+ }
338
+
339
+ case SymbolID.SymbolSet_Space:
340
+ case SymbolID.SymbolSet_SpaceMissile: {
341
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
342
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
343
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
344
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
345
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
346
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
347
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
348
+ modifiers.push(Modifiers.Z_SPEED);
349
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
350
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
351
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
352
+ modifiers.push(Modifiers.AS_COUNTRY);
353
+ break;
354
+ }
355
+
356
+ case SymbolID.SymbolSet_Air:
357
+ case SymbolID.SymbolSet_AirMissile: {
358
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
359
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
360
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
361
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
362
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
363
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
364
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
365
+ modifiers.push(Modifiers.Z_SPEED);
366
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
367
+ modifiers.push(Modifiers.AF_COMMON_IDENTIFIER);
368
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
369
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
370
+ modifiers.push(Modifiers.AS_COUNTRY);
371
+ break;
372
+ }
373
+
374
+ case SymbolID.SymbolSet_SeaSurface: {
375
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
376
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
377
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
378
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
379
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
380
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
381
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
382
+ modifiers.push(Modifiers.Y_LOCATION);
383
+ modifiers.push(Modifiers.Z_SPEED);
384
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
385
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
386
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
387
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
388
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
389
+ modifiers.push(Modifiers.AR_SPECIAL_DESIGNATOR);
390
+ modifiers.push(Modifiers.AS_COUNTRY);
391
+ break;
392
+ }
393
+
394
+ case SymbolID.SymbolSet_SeaSubsurface: {
395
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
396
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
397
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
398
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
399
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
400
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
401
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
402
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
403
+ modifiers.push(Modifiers.Y_LOCATION);
404
+ modifiers.push(Modifiers.Z_SPEED);
405
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
406
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
407
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
408
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
409
+ modifiers.push(Modifiers.AR_SPECIAL_DESIGNATOR);
410
+ modifiers.push(Modifiers.AS_COUNTRY);
411
+ break;
412
+ }
413
+
414
+ case SymbolID.SymbolSet_Activities: {
415
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
416
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
417
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
418
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
419
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
420
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
421
+ modifiers.push(Modifiers.W_DTG_1);
422
+ modifiers.push(Modifiers.Y_LOCATION);
423
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
424
+ modifiers.push(Modifiers.AS_COUNTRY);
425
+ break;
426
+ }
427
+
428
+ case SymbolID.SymbolSet_CyberSpace: {
429
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
430
+ modifiers.push(Modifiers.B_ECHELON);
431
+ modifiers.push(Modifiers.D_TASK_FORCE_INDICATOR);
432
+ modifiers.push(Modifiers.F_REINFORCED_REDUCED);
433
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
434
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
435
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
436
+ modifiers.push(Modifiers.L_SIGNATURE_EQUIP);
437
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
438
+ modifiers.push(Modifiers.S_HQ_STAFF_INDICATOR);
439
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
440
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
441
+ modifiers.push(Modifiers.W_DTG_1);
442
+ modifiers.push(Modifiers.Y_LOCATION);
443
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
444
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
445
+ modifiers.push(Modifiers.AS_COUNTRY);
446
+ break;
447
+ }
448
+
449
+ /*case SymbolID.SymbolSet_SignalsIntelligence_Air:
450
+ case SymbolID.SymbolSet_SignalsIntelligence_Land:
451
+ case SymbolID.SymbolSet_SignalsIntelligence_SeaSurface:
452
+ case SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface:
453
+ case SymbolID.SymbolSet_SignalsIntelligence_Space:
454
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
455
+ modifiers.push(Modifiers.D_TASK_FORCE_INDICATOR);
456
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
457
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
458
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
459
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
460
+ modifiers.push(Modifiers.R2_SIGNIT_MOBILITY_INDICATOR);
461
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
462
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
463
+ modifiers.push(Modifiers.W1_DTG_2);
464
+ modifiers.push(Modifiers.Y_LOCATION);
465
+ modifiers.push(Modifiers.AD_PLATFORM_TYPE);//like equipment
466
+ modifiers.push(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);//like equipment
467
+ modifiers.push(Modifiers.AF_COMMON_IDENTIFIER);//like equipment
468
+ break;*/
469
+
470
+ case SymbolID.SymbolSet_ControlMeasure: {
471
+ //values come from files during MSLookup load
472
+ break;
473
+ }
474
+
475
+ case SymbolID.SymbolSet_Atmospheric: {
476
+ //Tropopause low, Tropopause high
477
+ if ((ec === "110102") || (ec === "110202") ||
478
+ (ec === "162200")) {
479
+
480
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
481
+ }
482
+
483
+ else {
484
+ if (ec === "140200") {
485
+
486
+ modifiers.push(Modifiers.AN_AZIMUTH);
487
+ }
488
+
489
+ }
490
+
491
+ break;
492
+ }
493
+
494
+ case SymbolID.SymbolSet_MineWarfare:
495
+ case SymbolID.SymbolSet_Oceanographic:
496
+ case SymbolID.SymbolSet_MeteorologicalSpace:
497
+ default://no modifiers
498
+
499
+ }
500
+ }
501
+ else {
502
+ switch (ss) {
503
+ case SymbolID.SymbolSet_LandUnit:
504
+ case SymbolID.SymbolSet_LandCivilianUnit_Organization: {
505
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
506
+ modifiers.push(Modifiers.B_ECHELON);
507
+ modifiers.push(Modifiers.D_TASK_FORCE_INDICATOR);
508
+ modifiers.push(Modifiers.F_REINFORCED_REDUCED);
509
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
510
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
511
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
512
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
513
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
514
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
515
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
516
+ modifiers.push(Modifiers.S_HQ_STAFF_INDICATOR);
517
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
518
+ modifiers.push(Modifiers.W_DTG_1);
519
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
520
+ modifiers.push(Modifiers.Y_LOCATION);
521
+ modifiers.push(Modifiers.Z_SPEED);
522
+ if (ss === SymbolID.SymbolSet_LandUnit && ec === "110000") {
523
+
524
+ modifiers.push(Modifiers.AA_SPECIAL_C2_HQ);
525
+ }
526
+
527
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
528
+ modifiers.push(Modifiers.AH_AREA_OF_UNCERTAINTY);
529
+ modifiers.push(Modifiers.AI_DEAD_RECKONING_TRAILER);
530
+ modifiers.push(Modifiers.AJ_SPEED_LEADER);
531
+ modifiers.push(Modifiers.AK_PAIRING_LINE);
532
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
533
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
534
+ modifiers.push(Modifiers.AS_COUNTRY);
535
+ break;
536
+ }
537
+
538
+ case SymbolID.SymbolSet_LandEquipment:
539
+ case SymbolID.SymbolSet_SignalsIntelligence_Land: {
540
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
541
+ modifiers.push(Modifiers.C_QUANTITY);
542
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
543
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
544
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
545
+ modifiers.push(Modifiers.L_SIGNATURE_EQUIP);
546
+ modifiers.push(Modifiers.N_HOSTILE);
547
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
548
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
549
+ modifiers.push(Modifiers.R_MOBILITY_INDICATOR);
550
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
551
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
552
+ modifiers.push(Modifiers.W_DTG_1);
553
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
554
+ modifiers.push(Modifiers.Y_LOCATION);
555
+ modifiers.push(Modifiers.Z_SPEED);
556
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
557
+ modifiers.push(Modifiers.AD_PLATFORM_TYPE);
558
+ modifiers.push(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);
559
+ modifiers.push(Modifiers.AF_COMMON_IDENTIFIER);
560
+ modifiers.push(Modifiers.AG_AUX_EQUIP_INDICATOR);
561
+ modifiers.push(Modifiers.AH_AREA_OF_UNCERTAINTY);
562
+ modifiers.push(Modifiers.AI_DEAD_RECKONING_TRAILER);
563
+ modifiers.push(Modifiers.AJ_SPEED_LEADER);
564
+ modifiers.push(Modifiers.AK_PAIRING_LINE);
565
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
566
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
567
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
568
+ modifiers.push(Modifiers.AR_SPECIAL_DESIGNATOR);
569
+ modifiers.push(Modifiers.AS_COUNTRY);
570
+ break;
571
+ }
572
+
573
+ case SymbolID.SymbolSet_LandInstallation: {
574
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
575
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
576
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
577
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
578
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
579
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
580
+ modifiers.push(Modifiers.S_HQ_STAFF_INDICATOR);
581
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
582
+ modifiers.push(Modifiers.W_DTG_1);
583
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
584
+ modifiers.push(Modifiers.Y_LOCATION);
585
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
586
+ modifiers.push(Modifiers.AH_AREA_OF_UNCERTAINTY);
587
+ modifiers.push(Modifiers.AI_DEAD_RECKONING_TRAILER);
588
+ modifiers.push(Modifiers.AJ_SPEED_LEADER);
589
+ modifiers.push(Modifiers.AK_PAIRING_LINE);
590
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
591
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
592
+ modifiers.push(Modifiers.AS_COUNTRY);
593
+ break;
594
+ }
595
+
596
+ case SymbolID.SymbolSet_Space:
597
+ case SymbolID.SymbolSet_SpaceMissile:
598
+ case SymbolID.SymbolSet_SignalsIntelligence_Space: {
599
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
600
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
601
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
602
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
603
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
604
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
605
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
606
+ modifiers.push(Modifiers.Z_SPEED);
607
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
608
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
609
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
610
+ modifiers.push(Modifiers.AS_COUNTRY);
611
+ break;
612
+ }
613
+
614
+ case SymbolID.SymbolSet_Air:
615
+ case SymbolID.SymbolSet_AirMissile:
616
+ case SymbolID.SymbolSet_SignalsIntelligence_Air: {
617
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
618
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
619
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
620
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);//air only
621
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
622
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
623
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
624
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
625
+ modifiers.push(Modifiers.Z_SPEED);
626
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
627
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
628
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
629
+ modifiers.push(Modifiers.AS_COUNTRY);
630
+ break;
631
+ }
632
+
633
+ case SymbolID.SymbolSet_SeaSurface:
634
+ case SymbolID.SymbolSet_SignalsIntelligence_SeaSurface: {
635
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
636
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
637
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
638
+ modifiers.push(Modifiers.P_IFF_SIF_AIS);
639
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
640
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
641
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
642
+ modifiers.push(Modifiers.Y_LOCATION);
643
+ modifiers.push(Modifiers.Z_SPEED);
644
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
645
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
646
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
647
+ modifiers.push(Modifiers.AQ_GUARDED_UNIT);
648
+ modifiers.push(Modifiers.AR_SPECIAL_DESIGNATOR);
649
+ modifiers.push(Modifiers.AS_COUNTRY);
650
+ break;
651
+ }
652
+
653
+ case SymbolID.SymbolSet_SeaSubsurface:
654
+ case SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface: {
655
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
656
+ modifiers.push(Modifiers.AG_AUX_EQUIP_INDICATOR);
657
+ modifiers.push(Modifiers.AL_OPERATIONAL_CONDITION);
658
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
659
+ modifiers.push(Modifiers.AR_SPECIAL_DESIGNATOR);
660
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
661
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
662
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
663
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
664
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
665
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
666
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
667
+ modifiers.push(Modifiers.AS_COUNTRY);
668
+ break;
669
+ }
670
+
671
+ case SymbolID.SymbolSet_Activities: {
672
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
673
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
674
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
675
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
676
+ modifiers.push(Modifiers.Q_DIRECTION_OF_MOVEMENT);
677
+ modifiers.push(Modifiers.W_DTG_1);
678
+ modifiers.push(Modifiers.Y_LOCATION);
679
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
680
+ modifiers.push(Modifiers.AS_COUNTRY);
681
+ break;
682
+ }
683
+
684
+ case SymbolID.SymbolSet_CyberSpace: {
685
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
686
+ modifiers.push(Modifiers.B_ECHELON);
687
+ modifiers.push(Modifiers.D_TASK_FORCE_INDICATOR);
688
+ modifiers.push(Modifiers.F_REINFORCED_REDUCED);
689
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
690
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
691
+ modifiers.push(Modifiers.K_COMBAT_EFFECTIVENESS);
692
+ modifiers.push(Modifiers.L_SIGNATURE_EQUIP);
693
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
694
+ modifiers.push(Modifiers.S_HQ_STAFF_INDICATOR);
695
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
696
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
697
+ modifiers.push(Modifiers.W_DTG_1);
698
+ modifiers.push(Modifiers.Y_LOCATION);
699
+ modifiers.push(Modifiers.AB_FEINT_DUMMY_INDICATOR);
700
+ modifiers.push(Modifiers.AO_ENGAGEMENT_BAR);
701
+ modifiers.push(Modifiers.AS_COUNTRY);
702
+ break;
703
+ }
704
+
705
+ /*case SymbolID.SymbolSet_SignalsIntelligence_Air:
706
+ case SymbolID.SymbolSet_SignalsIntelligence_Land:
707
+ case SymbolID.SymbolSet_SignalsIntelligence_SeaSurface:
708
+ case SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface:
709
+ case SymbolID.SymbolSet_SignalsIntelligence_Space:
710
+ modifiers.push(Modifiers.A_SYMBOL_ICON);
711
+ modifiers.push(Modifiers.D_TASK_FORCE_INDICATOR);
712
+ modifiers.push(Modifiers.G_STAFF_COMMENTS);
713
+ modifiers.push(Modifiers.H_ADDITIONAL_INFO_1);
714
+ modifiers.push(Modifiers.J_EVALUATION_RATING);
715
+ modifiers.push(Modifiers.M_HIGHER_FORMATION);
716
+ modifiers.push(Modifiers.R2_SIGNIT_MOBILITY_INDICATOR);
717
+ modifiers.push(Modifiers.T_UNIQUE_DESIGNATION_1);
718
+ modifiers.push(Modifiers.V_EQUIP_TYPE);
719
+ modifiers.push(Modifiers.W1_DTG_2);
720
+ modifiers.push(Modifiers.Y_LOCATION);
721
+ modifiers.push(Modifiers.AD_PLATFORM_TYPE);//like equipment
722
+ modifiers.push(Modifiers.AE_EQUIPMENT_TEARDOWN_TIME);//like equipment
723
+ modifiers.push(Modifiers.AF_COMMON_IDENTIFIER);//like equipment
724
+ break;*/
725
+
726
+ case SymbolID.SymbolSet_ControlMeasure: {
727
+ //values come from files during MSLookup load
728
+ break;
729
+ }
730
+
731
+ case SymbolID.SymbolSet_Atmospheric: {
732
+ //Tropopause low, Tropopause high
733
+ if ((ec === "110102") || (ec === "110202") ||
734
+ (ec === "162200")) {
735
+ modifiers.push(Modifiers.X_ALTITUDE_DEPTH);
736
+ } else {
737
+ if (ec === "140200") {
738
+ modifiers.push(Modifiers.AN_AZIMUTH);
739
+ }
740
+
741
+ }
742
+
743
+ break;
744
+ }
745
+
746
+ case SymbolID.SymbolSet_MineWarfare:
747
+ case SymbolID.SymbolSet_Oceanographic:
748
+ case SymbolID.SymbolSet_MeteorologicalSpace:
749
+ default://no modifiers
750
+
751
+ }
752
+ }
753
+
754
+ if (ss === SymbolID.SymbolSet_SignalsIntelligence_Air ||
755
+ ss === SymbolID.SymbolSet_SignalsIntelligence_Land ||
756
+ ss === SymbolID.SymbolSet_SignalsIntelligence_SeaSurface ||
757
+ ss === SymbolID.SymbolSet_SignalsIntelligence_SeaSubsurface ||
758
+ ss === SymbolID.SymbolSet_SignalsIntelligence_Space) {
759
+
760
+ modifiers.push(Modifiers.R2_SIGNIT_MOBILITY_INDICATOR);
761
+ }
762
+
763
+ return modifiers;
764
+ }
765
+
766
+ default: {
767
+ throw Error(`Invalid number of arguments`);
768
+ }
769
+ }
770
+ }
771
+
772
+
773
+ /**
774
+ * @param symbolID Full 20-30 digits from the symbol code
775
+ * @return
776
+ */
777
+ public getMSLInfo(symbolID: string): MSInfo;
778
+
779
+ /**
780
+ * @param basicID id SymbolSet + Entity code like 50110100
781
+ * @param version like SymbolID.Version_2525Dch1
782
+ * @return
783
+ */
784
+ public getMSLInfo(basicID: string, version: number): MSInfo;
785
+ public getMSLInfo(...args: unknown[]): MSInfo | null {
786
+ switch (args.length) {
787
+ case 1: {
788
+ const [symbolID] = args as [string];
789
+
790
+ let length: number = symbolID.length;
791
+
792
+ if (length >= 20 && length <= 30) {
793
+ let version: number = SymbolID.getVersion(symbolID);
794
+ return this.getMSLInfo(SymbolUtilities.getBasicSymbolID(symbolID), version);
795
+ } else {
796
+ return null;
797
+ }
798
+ }
799
+
800
+ case 2: {
801
+ const [basicID, version] = args as [string, number];
802
+
803
+ let length: number = basicID.length;
804
+ if (length === 8) {
805
+ if (version === SymbolID.Version_2525E) {
806
+ return MSLookup._MSLookupE.get(basicID) || null;
807
+ } else if (version === SymbolID.Version_2525D && basicID === "25272100") {
808
+ // MSDZ can have extra point in D
809
+ return new MSInfo(SymbolID.Version_2525D, "25",
810
+ "Protection Areas", "Minimum Safe Distance Zone", "",
811
+ "272100", "Area", "Area14", []);
812
+ } else {
813
+ return MSLookup._MSLookupD.get(basicID) || null;
814
+ }
815
+ } else {
816
+ if (length >= 20 && length <= 30)//probably got a full id instead of a basic ID.
817
+ {
818
+ return this.getMSLInfo(SymbolUtilities.getBasicSymbolID(basicID), version);
819
+ } else {
820
+ return null;
821
+ }
822
+ }
823
+ }
824
+ default: {
825
+ throw Error(`Invalid number of arguments`);
826
+ }
827
+ }
828
+ }
829
+
830
+
831
+ /**
832
+ * returns a list of all the keys in the order they are listed in the MilStd 2525D document.
833
+ * @param version see {@link SymbolID.Version_2525E} and {@link SymbolID.Version_2525Dch1}
834
+ * @return
835
+ */
836
+ public getIDList(version: number): Array<string> {
837
+ if (version < SymbolID.Version_2525E) {
838
+ return this._IDListD;
839
+ } else if (version === SymbolID.Version_2525E) {
840
+ return this._IDListE;
841
+ } else {
842
+ return this._IDListD;
843
+ }
844
+ }
845
+
846
+ public addCustomSymbol(msInfo:MSInfo):boolean
847
+ {
848
+ let success = false;
849
+ try
850
+ {
851
+ let version:number = msInfo.getVersion();
852
+ if (version < SymbolID.Version_2525E)
853
+ {
854
+ if(this._IDListD.indexOf(msInfo.getBasicSymbolID()) == -1)
855
+ {
856
+ this._IDListD.push(msInfo.getBasicSymbolID());
857
+ MSLookup._MSLookupD.set(msInfo.getBasicSymbolID(), msInfo);
858
+ success = true;
859
+ }
860
+ else
861
+ ErrorLogger.LogMessage("Symbol Set and Entity Code combination already exist: " + msInfo.getBasicSymbolID(), LogLevel.INFO,false);
862
+ }
863
+ else if (version === SymbolID.Version_2525E)
864
+ {
865
+ if(this._IDListE.indexOf(msInfo.getBasicSymbolID()) == -1)
866
+ {
867
+ this._IDListE.push(msInfo.getBasicSymbolID());
868
+ MSLookup._MSLookupE.set(msInfo.getBasicSymbolID(), msInfo);
869
+ success = true;
870
+ }
871
+ else
872
+ ErrorLogger.LogMessage("Symbol Set and Entity Code combination already exist: " + msInfo.getBasicSymbolID(), LogLevel.INFO,false);
873
+ }
874
+ }
875
+ catch(e)
876
+ {
877
+ ErrorLogger.LogException("MSLookup", "addCustomSymbol",e);
878
+ }
879
+ return success;
880
+
881
+ }
882
+ }