diff --git a/api/web/src/components/CloudTAK/CoTView.vue b/api/web/src/components/CloudTAK/CoTView.vue index ffa0688b5..f82bd5b6e 100644 --- a/api/web/src/components/CloudTAK/CoTView.vue +++ b/api/web/src/components/CloudTAK/CoTView.vue @@ -174,12 +174,10 @@
- -
@@ -234,8 +232,14 @@
- Absolute - Relative + Absolute + Relative
@@ -260,9 +264,9 @@
@@ -356,10 +360,10 @@ import Share from './util/Share.vue'; import CoTStyle from './util/CoTStyle.vue'; import Coordinate from './util/Coordinate.vue'; import Course from './util/Course.vue'; +import Phone from './util/Phone.vue'; import Speed from './util/Speed.vue'; import Elevation from './util/Elevation.vue'; import Attachments from './util/Attachments.vue'; -import phone from 'phone'; import { IconX, IconAmbulance, @@ -479,17 +483,6 @@ export default { this.feat.properties.attachments.push(hash) }, - phone: function(number) { - const p = phone(number); - - if (!p.isValid) return number; - - if (p.countryCode === '+1') { - return `${p.phoneNumber.slice(0, 2)} (${p.phoneNumber.slice(2, 5)}) ${p.phoneNumber.slice(5, 8)}-${p.phoneNumber.slice(8, 12)}`; - } else { - return p; - } - }, updateStyle: async function() { if (this.feat.properties.archived) { await cotStore.add(this.feat); @@ -532,6 +525,7 @@ export default { Elevation, Attachments, Speed, + Phone, Course, Share, Coordinate, diff --git a/api/web/src/components/CloudTAK/util/CopyField.vue b/api/web/src/components/CloudTAK/util/CopyField.vue index e234cabf7..c9750b1a1 100644 --- a/api/web/src/components/CloudTAK/util/CopyField.vue +++ b/api/web/src/components/CloudTAK/util/CopyField.vue @@ -2,6 +2,7 @@
+ +
+ +
+ + + + + +
+
+ + + diff --git a/api/web/src/stores/cots.ts b/api/web/src/stores/cots.ts index 682e74f60..19165fedc 100644 --- a/api/web/src/stores/cots.ts +++ b/api/web/src/stores/cots.ts @@ -385,8 +385,6 @@ export const useCOTStore = defineStore('cots', { * Add a CoT GeoJSON to the store and modify props to meet MapLibre style requirements */ add: async function(feat: Feature, mission_guid?: string) { - feat = COT.style(feat); - mission_guid = mission_guid || this.subscriptionPending.get(feat.id); if (mission_guid) { diff --git a/api/web/src/stores/cots/cot.ts b/api/web/src/stores/cots/cot.ts index 89af24698..bf842e50c 100644 --- a/api/web/src/stores/cots/cot.ts +++ b/api/web/src/stores/cots/cot.ts @@ -35,17 +35,25 @@ export default class COT implements Feature { geometry: Feature["geometry"]; constructor(feat: Feature) { + feat = COT.style(feat); + this.id = feat.id || crypto.randomUUID(); this.type = feat.type || 'Feature'; this.path = feat.path || '/'; this.properties = feat["properties"] || {}; this.geometry = feat["geometry"]; + + if (!this.properties.archived) { + this.properties.archived = false + } } /** * Update the COT and return a boolean as to whether the COT needs to be re-rendered */ update(feat: Feature): boolean { + feat = COT.style(feat); + let changed = false; for (const prop of RENDERED_PROPERTIES) { if (this.properties[prop] !== feat.properties[prop]) { diff --git a/tasks/data/Dockerfile b/tasks/data/Dockerfile index 850a1ae1c..a190eefed 100644 --- a/tasks/data/Dockerfile +++ b/tasks/data/Dockerfile @@ -49,3 +49,4 @@ RUN npm install #ENTRYPOINT ["/usr/local/bin/npx", "aws-lambda-ric"] #CMD ["app.handler"] +CMD ["npm", "start"]