bruce-models 0.0.2 → 0.0.3
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.
- package/dist/bruce-models.es5.js +101 -2
- package/dist/bruce-models.es5.js.map +1 -1
- package/dist/bruce-models.umd.js +101 -1
- package/dist/bruce-models.umd.js.map +1 -1
- package/dist/lib/bruce-models.js +1 -0
- package/dist/lib/bruce-models.js.map +1 -1
- package/dist/lib/common/cartes.js +20 -0
- package/dist/lib/common/cartes.js.map +1 -1
- package/dist/lib/common/carto.js +10 -0
- package/dist/lib/common/carto.js.map +1 -1
- package/dist/lib/entity/getters/entity-filter-getter.js +1 -1
- package/dist/lib/entity/getters/entity-filter-getter.js.map +1 -1
- package/dist/lib/entity/getters/entity-loaded-getter.js +74 -0
- package/dist/lib/entity/getters/entity-loaded-getter.js.map +1 -0
- package/dist/types/bruce-models.d.ts +1 -0
- package/dist/types/common/cartes.d.ts +2 -0
- package/dist/types/common/carto.d.ts +1 -0
- package/dist/types/entity/getters/entity-loaded-getter.d.ts +19 -0
- package/dist/types/entity/getters/view-monitor.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bruce-models.umd.js","sources":["../src/api/api.ts","../src/ann-document/ann-document.ts","../src/common/cache.ts","../src/api/abstract-api.ts","../src/api/bruce-api.ts","../src/api/cam-api.ts","../src/api/idm-api.ts","../src/common/color.ts","../src/util/object-utils.ts","../src/entity/entity.ts","../src/util/path-utils.ts","../src/common/bruce-variable.ts","../src/calculator/calculator.ts","../src/common/bruce-event.ts","../src/common/camera.ts","../src/common/cartes.ts","../src/common/carto.ts","../src/common/delay-queue.ts","../src/common/geometry.ts","../src/common/utc.ts","../src/entity/entity-attachment-type.ts","../src/entity/entity-attachment.ts","../src/entity/entity-comment.ts","../src/entity/entity-link.ts","../src/entity/entity-lod.ts","../src/entity/entity-relation-type.ts","../src/entity/entity-relation.ts","../src/entity/entity-source.ts","../src/entity/entity-tag.ts","../src/entity/entity-type.ts","../src/entity/getters/entity-globe.ts","../src/entity/getters/entity-filter-getter.ts","../src/file/client-file.ts","../src/program-key/program-key.ts","../src/project/menu-item-zoom-control.ts","../src/tileset/tileset.ts","../src/project/menu-item.ts","../src/project/project-view-bookmark.ts","../src/project/project-view.ts","../src/server/pending-action.ts","../src/style/style.ts","../src/tileset/tileset-entities-map-tiles.ts","../src/tileset/tileset-ext-map-tiles.ts","../src/ucs/ucs.ts","../src/user/permission.ts","../src/user/session.ts","../src/user/user-group.ts","../src/user/user.ts","../src/util/encrypt-utils.ts","../src/util/math-utils.ts"],"sourcesContent":["import { IDictionary } from \"../common/dictionary\";\r\n\r\nexport namespace Api {\r\n export enum ECacheKey {\r\n Id = \":\",\r\n Entity = \"entity\",\r\n EntityType = \"entitytype\",\r\n ProjectView = \"projectview\",\r\n ProjectViewBookmark = \"pvbookmark\",\r\n Tileset = \"tileset\",\r\n ClientFile = \"clientfile\",\r\n Session = \"session\",\r\n PendingAction = \"pendingaction\",\r\n EntitySource = \"entitysource\",\r\n ProgramKey = \"programkey\",\r\n Ucs = \"ucs\",\r\n Tag = \"tag\",\r\n Attachment = \"attachment\",\r\n Comment = \"comment\",\r\n Link = \"link\",\r\n AnnDocument = \"anndocument\",\r\n AttachmentType = \"attachmenttype\",\r\n Relation = \"relation\",\r\n RelationType = \"relationtype\",\r\n Lod = \"lod\",\r\n Style = \"style\",\r\n PublishTileset = \"publishtileset\",\r\n User = \"user\",\r\n AccessToken = \"accesstoken\",\r\n UserGroup = \"usergroup\",\r\n Account = \"account\"\r\n }\r\n export const DEFAULT_CACHE_DURATION = 60 * 5; // 5 minutes.\r\n\r\n export const TEMPLATE_ACCOUNT_ID = \"template\";\r\n export const ACCESS_TOKEN_HEADER = \"X-Access-Token\";\r\n \r\n export function Encode(str: string): string {\r\n return encodeURIComponent(str.replace(/\\+/g, \"%2B\").replace(/\\./g, \"%2E\"));\r\n }\r\n\r\n export interface IList<T> {\r\n Items: T[];\r\n TotalCount?: number;\r\n }\r\n\r\n export enum ESortOrder {\r\n None = 0,\r\n Asc = 1,\r\n Desc = -1\r\n }\r\n\r\n export enum EEncoding {\r\n UTF8 = \"UTF-8\",\r\n UTF16 = \"UTF-16BE\"\r\n }\r\n\r\n export enum EEnv {\r\n DEV = \"DEV\",\r\n STG = \"STG\",\r\n UAT = \"UAT\",\r\n PROD = \"PROD\"\r\n }\r\n export type Env = EEnv | string;\r\n\r\n export interface IReqParams {\r\n headers?: IDictionary<string>;\r\n response?: {\r\n encoding?: EEncoding | string;\r\n }\r\n }\r\n\r\n export function PrepReqParams(): IReqParams {\r\n return { response: { encoding: Api.EEncoding.UTF16 } };\r\n }\r\n\r\n export interface IUploadReqParams extends IReqParams {\r\n onProgress?: (e: ProgressEvent) => void\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\ntype Type = AnnDocument.EType | string;\r\n\r\nexport namespace AnnDocument {\r\n export function GetCacheKey(id: number) {\r\n return `${Api.ECacheKey.AnnDocument}${Api.ECacheKey.Id}${id}`;\r\n }\r\n\r\n export function GetListCacheKey(type: Type) {\r\n return Api.ECacheKey.AnnDocument + type;\r\n }\r\n\r\n export interface IDocument {\r\n ID?: number;\r\n Type: Type;\r\n Name: string;\r\n \"ClientFile.ID\": string;\r\n Settings: any;\r\n }\r\n\r\n export enum EType {\r\n SVG = \"SVG\"\r\n }\r\n\r\n export async function Get(api: BruceApi, docId: number): Promise<IDocument> {\r\n if (!docId) {\r\n throw(\"Doc ID is required.\");\r\n }\r\n const key = GetCacheKey(docId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`documentView/${docId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi, type: Type): Promise<IDocument[]> {\r\n if (!type) {\r\n type = \"\";\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(type));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IDocument[]> = new Promise(async (res, rej) => {\r\n try {\r\n const url = \"documentViews\" + (type ? \"?type=\" + type : \"\");\r\n const data = await api.GET(url, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(type), req);\r\n return req;\r\n }\r\n}","import { IDictionary } from \"./dictionary\";\r\n\r\nclass CacheItem {\r\n public Id: string;\r\n public Data: any;\r\n public Duration: number;\r\n private _created: Date;\r\n\r\n\r\n constructor(id: string, data: any, duration: number) {\r\n this.Id = id;\r\n this.Data = data;\r\n this.Duration = duration;\r\n this._created = duration > -1 ? new Date() : <any>null;\r\n }\r\n\r\n public IsExpired(): boolean {\r\n if (this._created == null) {\r\n return false;\r\n }\r\n return (new Date().getTime() - this._created.getTime()) / 1000 > this.Duration;\r\n }\r\n}\r\n\r\ntype Key = string | number;\r\n\r\nexport class CacheControl<T> {\r\n private data: IDictionary<CacheItem> = {};\r\n\r\n\r\n public Set(id: Key, data: T, duration: number = -1): void {\r\n this.data[id + \"\"] = new CacheItem(id + \"\", data, duration);\r\n }\r\n\r\n public Get(id: Key): T {\r\n const item = this.data[id + \"\"];\r\n if (item == null) {\r\n return <any>null;\r\n }\r\n if (item.IsExpired()) {\r\n delete this.data[id + \"\"];\r\n return <any>null;\r\n }\r\n return item.Data;\r\n }\r\n\r\n public Clear(): void {\r\n this.data = {};\r\n }\r\n\r\n public Remove(id: Key): void {\r\n delete this.data[id + \"\"];\r\n }\r\n\r\n public RemoveByStartsWith(text: string): void {\r\n for (const key in this.data) {\r\n if (key.startsWith(text)) {\r\n delete this.data[key];\r\n }\r\n }\r\n }\r\n\r\n public RemoveByContains(text: string): void {\r\n for (const key in this.data) {\r\n if (key.includes(text)) {\r\n delete this.data[key];\r\n }\r\n }\r\n }\r\n\r\n public GetKeys(): string[] {\r\n return Object.keys(this.data);\r\n }\r\n\r\n public GetValues(): T[] {\r\n const values: T[] = [];\r\n for (const key in this.data) {\r\n const data = this.Get(key);\r\n if (data != null) {\r\n values.push(data);\r\n }\r\n }\r\n return values;\r\n }\r\n}","import { CacheControl } from \"../common/cache\";\r\nimport { Api } from \"./api\";\r\n\r\nasync function parseResult(data: Response, encoding?: string): Promise<any> {\r\n if (data.status == 200) {\r\n if (encoding) {\r\n const buffer = await data.arrayBuffer();\r\n return JSON.parse(new TextDecoder(encoding).decode(buffer));\r\n }\r\n else {\r\n return data.json();\r\n }\r\n }\r\n else {\r\n const error = await data.json();\r\n throw(error);\r\n }\r\n}\r\n\r\nexport class AbstractApi {\r\n private ssidHeader: string;\r\n private ssid: string = \"\";\r\n public Cache: CacheControl<any> = new CacheControl<any>();\r\n\r\n\r\n constructor(ssidHeader: string) {\r\n this.ssidHeader = ssidHeader;\r\n }\r\n\r\n public GetSessionId(): string {\r\n return this.ssid;\r\n }\r\n\r\n public SetSessionId(value: string): void {\r\n this.ssid = value;\r\n }\r\n\r\n public GetSessionHeader(): string {\r\n return this.ssidHeader;\r\n }\r\n\r\n public SetSessionHeader(value: string): void {\r\n this.ssidHeader = value;\r\n }\r\n\r\n public async get(url: string, params?: Api.IReqParams): Promise<any> {\r\n if (!params) {\r\n params = {};\r\n }\r\n params.headers = params.headers || {};\r\n params.headers = {\r\n \"Content-Type\": \"application/json;\",\r\n [this.ssidHeader]: this.ssid,\r\n ...params.headers\r\n };\r\n const res = await fetch(url, {\r\n headers: params.headers\r\n });\r\n return parseResult(res, params.response?.encoding);\r\n }\r\n\r\n public async delete(url: string, params?: Api.IReqParams): Promise<any> {\r\n if (!params) {\r\n params = {};\r\n }\r\n params.headers = params.headers || {};\r\n params.headers = {\r\n \"Content-Type\": \"application/json;\",\r\n [this.ssidHeader]: this.ssid,\r\n ...params.headers\r\n };\r\n const res = await fetch(url, {\r\n headers: params.headers,\r\n method: \"DELETE\"\r\n });\r\n return parseResult(res, params.response?.encoding);\r\n }\r\n\r\n public async post(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n if (!params) {\r\n params = {};\r\n }\r\n params.headers = params.headers || {};\r\n params.headers = {\r\n \"Content-Type\": \"application/json;\",\r\n [this.ssidHeader]: this.ssid,\r\n ...params.headers\r\n };\r\n if (!data) {\r\n data = {};\r\n }\r\n if (typeof data != \"string\") {\r\n data = JSON.stringify(data);\r\n }\r\n const res = await fetch(url, {\r\n headers: params.headers,\r\n method: \"POST\",\r\n body: data\r\n });\r\n return parseResult(res, params.response?.encoding);\r\n }\r\n\r\n public async upload(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return new Promise((res, rej) => {\r\n try {\r\n let xhr = new XMLHttpRequest();\r\n const headers = <any>params?.headers;\r\n if (headers) {\r\n const headerKeys = Object.keys(headers);\r\n for (let i = 0; i < headerKeys.length; i++) {\r\n const key = headerKeys[i];\r\n const value = headers[key];\r\n xhr.setRequestHeader(key, value);\r\n }\r\n }\r\n if (params?.onProgress) {\r\n if (xhr.upload) {\r\n xhr.upload.onprogress = params?.onProgress;\r\n }\r\n else {\r\n xhr.addEventListener(\"progress\", params?.onProgress);\r\n }\r\n }\r\n xhr.onreadystatechange = (e) => {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status >= 400) {\r\n rej(e);\r\n }\r\n else {\r\n try {\r\n res(JSON.parse(xhr.responseText));\r\n }\r\n catch (e) {\r\n console.error(e, xhr.responseText);\r\n res(xhr.responseText);\r\n }\r\n }\r\n }\r\n };\r\n xhr.open(\"POST\", url, true);\r\n if (this.ssid) {\r\n xhr.setRequestHeader(this.ssidHeader, this.ssid);\r\n }\r\n const formData = new FormData();\r\n formData.append(\"file\", blob);\r\n xhr.send(formData);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n }\r\n}","import { AbstractApi } from \"./abstract-api\";\r\nimport { Api } from \"./api\";\r\n\r\nexport class BruceApi extends AbstractApi {\r\n private baseUrl: string = \"\";\r\n private accountId: string;\r\n private env: Api.Env;\r\n\r\n\r\n constructor(accountId: string, env?: Api.Env) {\r\n super(\"x-sessionid\");\r\n this.accountId = accountId;\r\n this.env = env ?? Api.EEnv.PROD;\r\n this.setBaseUrl();\r\n }\r\n\r\n private setBaseUrl(): void {\r\n const prefix = `https://${this.accountId}.api.nextspace`;\r\n let url: string;\r\n const env = this.env.toUpperCase();\r\n switch (env) {\r\n case Api.EEnv.DEV:\r\n url = prefix + \"-dev.net/\";\r\n break;\r\n case Api.EEnv.STG:\r\n url = prefix + \"-stg.net/\";\r\n break;\r\n case Api.EEnv.UAT:\r\n url = prefix + \"-uat.net/\";\r\n break;\r\n case Api.EEnv.PROD:\r\n url = prefix + \".host/\";\r\n break;\r\n default:\r\n throw(\"Specified Environment is not valid. SuppliedEnv=\" + env);\r\n }\r\n this.baseUrl = url;\r\n }\r\n\r\n public GetBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n public async GET(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.get(this.baseUrl + url, params);\r\n }\r\n\r\n public async DELETE(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.delete(this.baseUrl + url, params);\r\n }\r\n\r\n public async POST(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n return this.post(this.baseUrl + url, data, params);\r\n }\r\n\r\n public async UPLOAD(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return this.upload(this.baseUrl + url, blob, params);\r\n }\r\n}","import { AbstractApi } from \"./abstract-api\";\r\nimport { Api } from \"./api\";\r\n\r\nexport class CamApi extends AbstractApi {\r\n private baseUrl: string = \"\";\r\n private env: Api.Env;\r\n\r\n\r\n constructor(env?: Api.Env) {\r\n super(\"SSID\");\r\n this.env = env ?? Api.EEnv.PROD;\r\n this.setBaseUrl();\r\n }\r\n\r\n private setBaseUrl(): void {\r\n const prefix = \"https://cam.nextspace\";\r\n let url: string;\r\n const env = this.env.toUpperCase();\r\n switch (env) {\r\n case Api.EEnv.DEV:\r\n url = prefix + \"-dev.net/\";\r\n break;\r\n case Api.EEnv.STG:\r\n url = prefix + \"-stg.net/\";\r\n break;\r\n case Api.EEnv.UAT:\r\n url = prefix + \"-uat.net/\";\r\n break;\r\n case Api.EEnv.PROD:\r\n url = prefix + \".host/\";\r\n break;\r\n default:\r\n throw(\"Specified Environment is not valid. SuppliedEnv=\" + env);\r\n }\r\n this.baseUrl = url;\r\n }\r\n\r\n public GetBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n public async GET(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.get(this.baseUrl + url, params);\r\n }\r\n\r\n public async DELETE(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.delete(this.baseUrl + url, params);\r\n }\r\n\r\n public async POST(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n return this.post(this.baseUrl + url, data, params);\r\n }\r\n\r\n public async UPLOAD(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return this.upload(this.baseUrl + url, blob, params);\r\n }\r\n}","import { AbstractApi } from \"./abstract-api\";\r\nimport { Api } from \"./api\";\r\n\r\nexport class IdmApi extends AbstractApi {\r\n private baseUrl: string = \"\";\r\n private env: Api.Env;\r\n\r\n\r\n constructor(env?: Api.Env) {\r\n super(\"SSID\");\r\n this.env = env ?? Api.EEnv.PROD;\r\n this.setBaseUrl();\r\n }\r\n\r\n private setBaseUrl(): void {\r\n const prefix = \"https://idm.nextspace\";\r\n let url: string;\r\n const env = this.env.toUpperCase();\r\n switch (env) {\r\n case Api.EEnv.DEV:\r\n url = prefix + \"-dev.net/\";\r\n break;\r\n case Api.EEnv.STG:\r\n url = prefix + \"-stg.net/\";\r\n break;\r\n case Api.EEnv.UAT:\r\n url = prefix + \"-uat.net/\";\r\n break;\r\n case Api.EEnv.PROD:\r\n url = prefix + \".host/\";\r\n break;\r\n default:\r\n throw(\"Specified Environment is not valid. SuppliedEnv1=\" + env);\r\n }\r\n this.baseUrl = url;\r\n }\r\n\r\n public GetBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n public async GET(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.get(this.baseUrl + url, params);\r\n }\r\n\r\n public async DELETE(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.delete(this.baseUrl + url, params);\r\n }\r\n\r\n public async POST(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n return this.post(this.baseUrl + url, data, params);\r\n }\r\n\r\n public async UPLOAD(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return this.upload(this.baseUrl + url, blob, params);\r\n }\r\n}","export namespace Color {\r\n export interface IColor {\r\n // Max: 255, Min: 0.\r\n red: number;\r\n green: number;\r\n blue: number;\r\n // Max: 1, Min: 0.\r\n alpha: number ;\r\n }\r\n\r\n export enum EBlendMode {\r\n HIGHLIGHT,\r\n REPLACE,\r\n MIX\r\n }\r\n\r\n export interface IBlendSettings {\r\n blendMode?: EBlendMode;\r\n // 1 = 100% new color. 0 = original color.\r\n blendPercent?: number;\r\n }\r\n\r\n export function RandomColor(): IColor {\r\n // https://stackoverflow.com/a/7352887\r\n const brightness = 4;\r\n const rgb = [Math.random() * 256, Math.random() * 256, Math.random() * 256];\r\n const mix = [brightness * 51, brightness * 51, brightness * 51];\r\n const mixedrgb = [rgb[0] + mix[0], rgb[1] + mix[1], rgb[2] + mix[2]].map(function(x){\r\n return Math.round(x / 2.0);\r\n });\r\n const str = \"rgba(\" + mixedrgb.join(\",\") + \",0.9\" + \")\";\r\n return ColorFromStr(str);\r\n }\r\n\r\n export function ColorFromStr(str: string): IColor {\r\n let r,g,b,a;\r\n const rgba = /^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([^\\)]+)\\s*)?\\)$/.exec(str);\r\n if (rgba) {\r\n r = parseInt(rgba[1]);\r\n g = parseInt(rgba[2]);\r\n b = parseInt(rgba[3]);\r\n a = rgba[4] != null ? parseFloat(rgba[4]) : 1;\r\n return {\r\n red: r,\r\n green: g,\r\n blue: b,\r\n alpha: a\r\n }\r\n }\r\n if (str.charAt(0) == \"#\") {\r\n str = str.substring(1);\r\n }\r\n if (str.length == 6) {\r\n // rgb.\r\n const parsed = /^(.{2})(.{2})(.{2})/.exec(str);\r\n if (!parsed) {\r\n return <any>null;\r\n }\r\n r = parseInt(parsed[1], 16);\r\n g = parseInt(parsed[2], 16);\r\n b = parseInt(parsed[3], 16);\r\n a = 1;\r\n }\r\n else if (str.length == 8) {\r\n // rgba.\r\n const parsed = /^(.{2})(.{2})(.{2})(.{2})/.exec(str);\r\n if (!parsed) {\r\n return <any>null;\r\n }\r\n r = parseInt(parsed[1], 16);\r\n g = parseInt(parsed[2], 16);\r\n b = parseInt(parsed[3], 16);\r\n a = parseInt(parsed[4], 16);\r\n if (a != 0) {\r\n a = a/255;\r\n }\r\n }\r\n else {\r\n return <any>null;\r\n }\r\n if (a == null) {\r\n a = 1;\r\n }\r\n return {\r\n red: r,\r\n blue: b,\r\n green: g,\r\n alpha: a\r\n }\r\n }\r\n}","export namespace ObjectUtils {\r\n export function UId(): string {\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\r\n const r = Math.random() * 16 | 0, v = c == \"x\" ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { Bounds } from \"../common/bounds\";\r\nimport { Carto } from \"../common/carto\";\r\nimport { Geometry } from \"../common/geometry\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { Transform } from \"../common/transform\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { IDictionary } from \"../bruce-models\";\r\n\r\ntype _any = any;\r\nexport namespace Entity {\r\n export function GetCacheKey(entityId: string): string {\r\n return `${Api.ECacheKey.Entity}${Api.ECacheKey.Id}${entityId}`;\r\n }\r\n\r\n export interface IEntity extends _any {\r\n Bruce: {\r\n \"CreatedBy.User.ID\"?: string;\r\n CreatedTime?: UTC.IUTC;\r\n \"EntityType.ID\": string;\r\n ID?: string;\r\n \"Layer.ID\"?: number[];\r\n };\r\n location?: Carto.ICarto;\r\n boundaries?: Bounds.IBounds;\r\n transform?: Transform.ITransform;\r\n position?: number[][];\r\n geometry?: Geometry.IGeometry;\r\n }\r\n\r\n export async function Get(api: BruceApi, entityId: string): Promise<IEntity> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const key = GetCacheKey(entityId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entity/${entityId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetListByIds(api: BruceApi, entityIds: string[]): Promise<IEntity[]> {\r\n if (!entityIds.length) {\r\n throw(\"Entity IDs are required.\");\r\n }\r\n const reqs: Promise<IEntity>[] = [];\r\n const reqIds: string[] = [];\r\n for (let i = 0; i < entityIds.length; i++) {\r\n const entityId = entityIds[i];\r\n const key = GetCacheKey(entityId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n reqs.push(cacheData);\r\n }\r\n else {\r\n reqIds.push(entityId);\r\n }\r\n }\r\n const reqData = {\r\n Filter: {\r\n ID: {\r\n in: reqIds\r\n }\r\n },\r\n PageSize: reqIds.length\r\n };\r\n const req: Promise<Api.IList<IEntity>> = api.POST(\"entities\", reqData, Api.PrepReqParams());\r\n for (let i = 0; i < reqIds.length; i++) {\r\n const entityId = reqIds[i];\r\n const key = GetCacheKey(entityId);\r\n const prom: Promise<IEntity> = new Promise(async (res) => {\r\n try {\r\n const data = await req;\r\n const item = <IEntity>data.Items.find(x => x.Bruce.ID == entityId);\r\n res(item);\r\n }\r\n catch (e) {\r\n // No showing error as we don't want to see it 2000 times.\r\n }\r\n res(<any>null);\r\n });\r\n api.Cache.Set(key, prom, Api.DEFAULT_CACHE_DURATION);\r\n reqs.push(prom);\r\n }\r\n return (await Promise.all(reqs)).filter(x => !!x);\r\n }\r\n\r\n export async function Delete(api: BruceApi, entityId: string): Promise<void> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n await api.DELETE(`entity/${entityId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(entityId));\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IEntity, override: boolean): Promise<IEntity> {\r\n if (!data?.Bruce?.[\"EntityType.ID\"]) {\r\n throw(\"Entity Type ID is required.\");\r\n }\r\n if (!data?.Bruce?.ID) {\r\n data.Bruce = {\r\n ...data.Bruce,\r\n ID: ObjectUtils.UId()\r\n };\r\n }\r\n const reqUrl = `entity/${data.Bruce.ID}/?dataoverride=${override}&BruceEntityType=${data.Bruce[\"EntityType.ID\"]}`;\r\n data = await api.POST(reqUrl, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(<string>data.Bruce.ID));\r\n return data;\r\n }\r\n\r\n export function RemoveTag(data: IEntity, tagId: number): void {\r\n const tags = data.Bruce[\"Layer.ID\"] ?? [];\r\n const index = tags.indexOf(tagId);\r\n if (index >= 0) {\r\n tags.splice(index, 1);\r\n data.Bruce[\"Layer.ID\"] = tags;\r\n }\r\n }\r\n\r\n export function AddTag(data: IEntity, tagId: number): void {\r\n const tags = data.Bruce[\"Layer.ID\"] ?? [];\r\n if (!tags.includes(tagId)) {\r\n tags.push(tagId);\r\n data.Bruce[\"Layer.ID\"] = tags;\r\n }\r\n }\r\n\r\n export function SetValue(data: IEntity, path: string[], value: any): void {\r\n let curData = data;\r\n for (let i = 0; i < path.length; i++) {\r\n const step = path[i];\r\n if (!curData[step] || typeof curData[step] != \"object\") {\r\n curData[step] = {};\r\n }\r\n if (i >= path.length - 1) {\r\n curData[step] = value;\r\n break;\r\n }\r\n curData = curData[step];\r\n }\r\n }\r\n\r\n export function GetValue(data: IEntity, path: string[]): any {\r\n let curData = data;\r\n for (let i = 0; i < path.length; i++) {\r\n const step = path[i];\r\n if (!curData[step]) {\r\n return null;\r\n }\r\n if (i >= path.length - 1) {\r\n return curData[step];\r\n }\r\n curData = curData[step];\r\n }\r\n return null;\r\n }\r\n\r\n export namespace Filter {\r\n export namespace V1 {\r\n export interface IFilter {\r\n orderBy?: any;\r\n entityTypeId?: string;\r\n layerIds?: number[];\r\n bounds?: Bounds.IReqBounds;\r\n pageSize?: number;\r\n pageIndex?: number;\r\n lodCategoryId?: string;\r\n sortOrder?: Api.ESortOrder;\r\n entityTypeConditions?: IDictionary<any>;\r\n }\r\n\r\n export async function GetList(api: BruceApi, filter: IFilter): Promise<IEntity[]> {\r\n if (!filter?.entityTypeId) {\r\n throw(\"Entity Type ID is required.\");\r\n }\r\n \r\n let requestFilter: any = {};\r\n if (filter.entityTypeConditions) {\r\n requestFilter = {\r\n ...filter.entityTypeConditions \r\n };\r\n }\r\n if (filter.layerIds != null && filter.layerIds.length > 0) {\r\n requestFilter[\"Bruce.Layer.ID\"] = {\r\n equals: filter.layerIds \r\n };\r\n }\r\n if (filter.bounds) {\r\n requestFilter[\"geometry\"] = {\r\n \"intersects\": [\r\n filter.bounds.south, \r\n filter.bounds.north, \r\n filter.bounds.west, \r\n filter.bounds.east\r\n ] \r\n };\r\n }\r\n let url = \"entities\" +\r\n \r\n // Page size and index.\r\n `?PageSize=${filter.pageSize}&PageIndex=${filter.pageIndex}` +\r\n \r\n // Entity type id.\r\n (filter.entityTypeId ? `&BruceEntityType=${filter.entityTypeId}` : \"\") +\r\n \r\n // Lod.\r\n (filter.lodCategoryId ? \"&LODType=\" + filter.lodCategoryId : \"\") +\r\n \r\n // Attribute filter.\r\n (!requestFilter ? \"\" : \"&Filter=\" + Api.Encode(JSON.stringify(requestFilter))) +\r\n \r\n // Order by attribute + sort order.\r\n (!filter.orderBy ? \"\" : \"&OrderBy=\" + Api.Encode(JSON.stringify(filter.orderBy))) +\r\n (filter.sortOrder ? `&SortOrder=${filter.sortOrder == Api.ESortOrder.Asc ? \"ASC\" : \"DESC\"}` : \"\");\r\n \r\n const data = await api.GET(url, Api.PrepReqParams());\r\n const entities = data.Items;\r\n for (let i = 0; i < entities.length; i++) {\r\n const entity = entities[i];\r\n const id = entity.Bruce.ID;\r\n api.Cache.Set(GetCacheKey(id), entity, Api.DEFAULT_CACHE_DURATION);\r\n }\r\n return entities;\r\n }\r\n }\r\n\r\n // TODO: Helpers for constructing the filter.\r\n }\r\n}","export namespace PathUtils {\r\n export function Parse(str: string): string[] {\r\n if (!str) {\r\n return [];\r\n }\r\n const broken: string[] = str.split(\"\\\"/\\\"\");\r\n if (broken.length > 0) {\r\n let top = broken[0];\r\n if (top.length > 0) {\r\n if (top.charAt(0) == \"\\\"\") {\r\n top = top.substring(1);\r\n }\r\n broken[0] = top;\r\n }\r\n const endIndex = broken.length - 1;\r\n let bot = broken[endIndex];\r\n if (bot.length > 0) {\r\n if (bot.charAt(bot.length - 1) == \"\\\"\") {\r\n bot = bot.substring(0, bot.length - 1);\r\n }\r\n broken[endIndex] = bot;\r\n }\r\n }\r\n return broken;\r\n }\r\n\r\n export function Wrap(path: string[]): string {\r\n let tmp: string = \"\\\"\";\r\n for (let i = 0; i < path.length; i++) {\r\n let section = path[i];\r\n tmp += section;\r\n if (i < path.length - 1) {\r\n tmp += \"\\\"/\\\"\";\r\n }\r\n }\r\n tmp += \"\\\"\";\r\n return tmp;\r\n }\r\n\r\n export function ParseLegacy(str: string): string[] {\r\n const broken: string[] = str.split(\".\");\r\n for (let i = 0; i < broken.length; i++) {\r\n let piece = broken[0];\r\n if (piece.charAt(0) == \"\\\"\") {\r\n piece = broken[0] = piece.substring(1);\r\n }\r\n if (piece.charAt(piece.length - 1) == \"\\\"\") {\r\n broken[0] = piece.substring(0, piece.length - 1);\r\n }\r\n }\r\n return broken;\r\n }\r\n}","import { Entity } from \"../entity/entity\";\r\nimport { PathUtils } from \"../util/path-utils\";\r\n\r\nfunction getVariable(str: string): { text: string, path: string } {\r\n const start = str.indexOf(\"${\");\r\n if (start > -1) {\r\n const end = str.indexOf(\"}\");\r\n if (end > -1) {\r\n if (start < end) {\r\n return { path: str.substring(start + 2, end), text: str.substring(start, end) };\r\n }\r\n }\r\n }\r\n return <any>null;\r\n}\r\n\r\nexport namespace BruceVariable {\r\n export function SwapValues(str: string, data: Entity.IEntity, legacyParse?: boolean): string {\r\n if (!legacyParse) {\r\n legacyParse = false;\r\n }\r\n while (true) {\r\n const variable = getVariable(str);\r\n if (variable) {\r\n const path = legacyParse ? PathUtils.ParseLegacy(variable.path) : PathUtils.Parse(variable.path);\r\n let value = \"\";\r\n if (path.length > 0) {\r\n value = Entity.GetValue(data, path);\r\n }\r\n str = str.replace(variable.text, value);\r\n } \r\n else {\r\n break;\r\n }\r\n }\r\n return str;\r\n }\r\n}","import { Color } from \"../common/color\";\r\nimport { Entity } from \"../entity/entity\";\r\nimport { BruceVariable } from \"../common/bruce-variable\";\r\nimport { PathUtils } from \"../util/path-utils\";\r\n\r\nexport namespace Calculator {\r\n export enum EValueType {\r\n Color,\r\n Input,\r\n Gradient,\r\n Mapping,\r\n TagColor,\r\n RandomColor\r\n }\r\n\r\n export interface IMappingOption {\r\n fieldValue: string;\r\n appliedValue: string;\r\n }\r\n\r\n export interface IMappingValue {\r\n field: string;\r\n values: IMappingOption[];\r\n }\r\n\r\n export interface IGradientPoint {\r\n position: number;\r\n color: string;\r\n }\r\n\r\n export interface IGradientValue {\r\n field: string;\r\n min: number;\r\n max: number;\r\n points: IGradientPoint[];\r\n }\r\n\r\n export interface IField {\r\n value: IGradientValue | IMappingValue | string | number;\r\n type: EValueType;\r\n }\r\n\r\n export function GetValue(fields: IField[], entity: Entity.IEntity, tags: any[]): string | number | Color.IColor {\r\n if (!tags) {\r\n tags = [];\r\n }\r\n if (!entity) {\r\n entity = <any>{};\r\n }\r\n for (let i = 0; i < fields.length; i++) {\r\n const field = fields[i];\r\n let value: any;\r\n switch (field.type) {\r\n case EValueType.Color:\r\n value = <string>field.value;\r\n break;\r\n case EValueType.Gradient:\r\n value = GetGradientValue(<IGradientValue>field.value, entity);\r\n break;\r\n case EValueType.Input:\r\n value = GetInputValue(<string>field.value, entity);\r\n break;\r\n case EValueType.Mapping:\r\n value = GetMappingValue(<IMappingValue>field.value, entity);\r\n break;\r\n case EValueType.RandomColor:\r\n value = Color.RandomColor();\r\n break;\r\n case EValueType.TagColor:\r\n for (let i = 0; i < tags.length; i++) {\r\n const tag = tags[i];\r\n if (tag.Color) {\r\n value = Color.ColorFromStr(tag.Color);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n if (!value || value == 0) {\r\n return value;\r\n }\r\n }\r\n return <any>null;\r\n }\r\n\r\n export function GetMappingValue(value: IMappingValue, entity: Entity.IEntity): string | number {\r\n const attrPath: string[] = PathUtils.Parse(value.field);\r\n const eValue: number = +Entity.GetValue(entity, attrPath);\r\n for (let i = 0; i < value.values.length; i++) {\r\n const option = value.values[i];\r\n const mapValue = option.fieldValue;\r\n if (+mapValue == eValue) {\r\n return option.appliedValue;\r\n }\r\n const mapSplit = mapValue.split(\"-\");\r\n if (mapSplit.length == 2) {\r\n const min = mapSplit[0];\r\n const max = mapSplit[1];\r\n if (min != \"\") {\r\n if (eValue < +min) {\r\n continue;\r\n }\r\n }\r\n if (max != \"\") {\r\n if (eValue > +max) {\r\n continue;\r\n }\r\n }\r\n if (min == \"\" && max == \"\") {\r\n continue;\r\n }\r\n return option.appliedValue;\r\n }\r\n }\r\n return <any>null;\r\n }\r\n\r\n export function GetGradientValue(value: IGradientValue, entity: Entity.IEntity): Color.IColor {\r\n const attrPath: string[] = PathUtils.Parse(value.field);\r\n let eValue: any = Entity.GetValue(entity, attrPath);\r\n eValue = Math.min(Math.max(eValue, value.min), value.max);\r\n if (eValue < value.points[0].position) {\r\n return Color.ColorFromStr(value.points[0].color);\r\n }\r\n for (let i = 0; i < value.points.length - 1; i++) {\r\n const pointA = value.points[i];\r\n const pointB = value.points[i+1];\r\n\r\n if (eValue >= pointA.position && eValue <= pointB.position) {\r\n if (pointA.position == pointB.position) {\r\n return Color.ColorFromStr(pointA.color);\r\n }\r\n const distance = (eValue - pointA.position)/(pointB.position - pointA.position);\r\n const colorA = Color.ColorFromStr(pointA.color);\r\n const colorB = Color.ColorFromStr(pointB.color);\r\n return {\r\n red: colorA.red + (colorB.red - colorA.red) * distance,\r\n green: colorA.green + (colorB.green - colorA.green) * distance,\r\n blue: colorA.blue + (colorB.blue - colorA.blue) * distance,\r\n alpha: colorA.alpha + (colorB.alpha - colorA.alpha) * distance\r\n }\r\n }\r\n }\r\n return Color.ColorFromStr(value.points[value.points.length - 1].color);\r\n }\r\n\r\n export function GetInputValue(value: string, entity: Entity.IEntity): string | number {\r\n if (typeof value == \"string\") {\r\n try {\r\n value = BruceVariable.SwapValues(value, entity);\r\n return eval(value);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n return <any>value;\r\n }\r\n}","interface IBruceEventCallback {\r\n _id: number;\r\n removeCallback: () => void;\r\n callback: (data: any) => void;\r\n}\r\n\r\nexport class BruceEvent<TArgs> {\r\n // Counter to help differentiate subscriptions.\r\n private _counter: number = 0;\r\n\r\n // Record of all callback subscriptions for this event.\r\n private callbacks: IBruceEventCallback[] = [];\r\n\r\n\r\n public Subscribe(callback: (data: TArgs) => void): (() => void) {\r\n let id = this._counter++;\r\n let newBruceEventCallback: IBruceEventCallback = {\r\n \t_id: id,\r\n \tremoveCallback: () => {\r\n \t\tthis.Unsubscribe(id);\r\n \t},\r\n \tcallback: callback\r\n };\r\n this.callbacks.push(newBruceEventCallback);\r\n return newBruceEventCallback.removeCallback;\r\n }\r\n\r\n public Unsubscribe(id: number): void {\r\n let index = this.callbacks.findIndex(x => x._id == id);\r\n if (index > -1) {\r\n this.callbacks.splice(index, 1);\r\n }\r\n }\r\n\r\n public Trigger(data?: TArgs): void {\r\n let callbacks = this.callbacks;\r\n for (let i = 0; i < callbacks.length; i++) {\r\n let callback = callbacks[i];\r\n if (callback.callback) {\r\n callback.callback(data);\r\n }\r\n }\r\n }\r\n\r\n public Clear(): void {\r\n this.callbacks = [];\r\n }\r\n}","export namespace Camera {\r\n export enum EFrustum {\r\n Perspective,\r\n Orthographic\r\n }\r\n}","export namespace Cartes {\r\n export interface ICartes2 {\r\n x: number;\r\n y: number;\r\n }\r\n\r\n export interface ICartes3 extends ICartes2 {\r\n z: number;\r\n }\r\n\r\n export function ValidateCartes2(cartes: ICartes2): boolean {\r\n if (!cartes) {\r\n return false;\r\n }\r\n else if (!cartes.x && cartes.x != 0) {\r\n return false;\r\n }\r\n else if (!cartes.y && cartes.y != 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n export function ValidateCartes3(cartes: ICartes3): boolean {\r\n if (!ValidateCartes2(cartes)) {\r\n return false;\r\n }\r\n else if (!cartes.z && cartes.z != 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}","export namespace Carto {\r\n export interface ICarto {\r\n latitude: number;\r\n longitude: number;\r\n altitude: number;\r\n }\r\n\r\n export function ValidateCarto(carto: ICarto): boolean {\r\n if (!carto) {\r\n return false;\r\n }\r\n else if (!carto.longitude && carto.longitude != 0) {\r\n return false;\r\n }\r\n else if (!carto.latitude && carto.latitude != 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}","export class DelayQueue {\r\n // The callback is the method we want to control queue for.\r\n private callback: () => void;\r\n\r\n // Millisecond delay.\r\n public delay: number = 200;\r\n\r\n // Date-time stamp for the last callback call.\r\n private lastCallTime: number = <any>null;\r\n\r\n // The delay timeout for calling update.\r\n private delayTimeout: any;\r\n\r\n\r\n constructor(callback: () => void, delay: number = 200) {\r\n this.callback = callback;\r\n this.delay = delay;\r\n }\r\n\r\n public Call(force: boolean = false): void {\r\n if (this.lastCallTime == null) {\r\n force = true;\r\n }\r\n if (force) {\r\n let endDate = new Date().getTime();\r\n this.doCall(endDate);\r\n }\r\n else {\r\n const endDate = new Date().getTime();\r\n const seconds = (endDate - this.lastCallTime) / 1000;\r\n const delay = this.delay / 1000;\r\n if (seconds > delay) {\r\n this.doCall(endDate);\r\n }\r\n else if (this.delayTimeout == null) {\r\n const diff = (delay - seconds) * 1000;\r\n this.delayTimeout = setTimeout(() => {\r\n this.delayTimeout = null;\r\n this.Call();\r\n }, diff + 0.02);\r\n }\r\n }\r\n }\r\n\r\n private doCall(endDate: number): void {\r\n if (this.delayTimeout != null) {\r\n clearTimeout(this.delayTimeout);\r\n this.delayTimeout = null;\r\n }\r\n this.lastCallTime = endDate;\r\n this.callback();\r\n }\r\n\r\n public Dispose(): void {\r\n if (this.delayTimeout != null) {\r\n clearTimeout(this.delayTimeout);\r\n this.delayTimeout = null;\r\n }\r\n }\r\n}","import { Carto } from \"./carto\";\r\n\r\nexport namespace Geometry {\r\n export interface IGeometry {\r\n Polygon?: any[];\r\n MultiGeometry?: IGeometry[];\r\n Point?: string;\r\n LineString?: string;\r\n MultiSurface?: string;\r\n }\r\n\r\n export function LineStrFromPoints(points: Carto.ICarto[]): string {\r\n if (!points.length) {\r\n throw(\"points is empty.\");\r\n }\r\n let carto: Carto.ICarto = points[0];\r\n let lineString = `${carto.longitude},${carto.latitude}` + (carto.altitude != null ? `,${carto.altitude}` : \"\");\r\n for (let i = 1; i < points.length; i++) {\r\n carto = points[i];\r\n lineString += ` ${carto.longitude},${carto.latitude}` + (carto.altitude != null ? `,${carto.altitude}` : \"\");\r\n }\r\n return lineString;\r\n }\r\n\r\n export function RemoveRepeatPoints(positions: Carto.ICarto[]): Carto.ICarto[] {\r\n const filteredList = [];\r\n for (let i = 0; i < positions.length; i++) {\r\n const pos = positions[i];\r\n const lastPos = filteredList.length > 0 ? filteredList[filteredList.length - 1] : null;\r\n if (!lastPos || (pos.latitude != lastPos.latitude || pos.longitude != lastPos.longitude || pos.altitude != lastPos.altitude)) {\r\n filteredList.push(pos); \r\n }\r\n }\r\n return filteredList;\r\n }\r\n\r\n export function ParsePoints(data: string): Carto.ICarto[] {\r\n data = data.replace(/[^\\d.,-\\s]/g, \"\");\r\n\r\n let splitterCoordinates = \" \";\r\n let splitterAxis = \",\";\r\n const commaIndex = data.indexOf(\",\");\r\n const spaceIndex = data.indexOf(\" \");\r\n if ((spaceIndex > -1 && commaIndex > spaceIndex) || commaIndex <= -1) {\r\n splitterCoordinates = \",\";\r\n splitterAxis = \" \";\r\n }\r\n\r\n let points = data.trim().split(splitterCoordinates);\r\n points = points.filter(a => a != \"\");\r\n\r\n const result: Carto.ICarto[] = [];\r\n for (let i = 0; i < points.length; i++) {\r\n const pointData = points[i];\r\n const coords = pointData.trim().split(splitterAxis);\r\n if (coords.length == 2 || coords.length == 3) {\r\n const longitude = +coords[0];\r\n const latitude = +coords[1];\r\n const altitude = coords.length >= 3 ? +coords[2] : 0;\r\n if (longitude != null && latitude != null) {\r\n result.push({\r\n altitude: altitude,\r\n latitude: latitude,\r\n longitude: longitude\r\n });\r\n }\r\n else {\r\n console.warn(\"Invalid point data detected.\", pointData);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n export function ParseGeometry(geometry: any): IGeometry {\r\n if (typeof geometry == \"string\") {\r\n let positions: Carto.ICarto[] = [];\r\n const geometryParsed: string[] = (geometry || \"\").split(\";\");\r\n for (let i = 0; i < geometryParsed.length; i++) {\r\n const data = geometryParsed[i];\r\n const points = ParsePoints(data);\r\n if (points && points.length > 0) {\r\n positions = positions.concat(points);\r\n }\r\n }\r\n positions = RemoveRepeatPoints(positions);\r\n const newGeometry: IGeometry = {};\r\n if (positions.length > 0) {\r\n const topPoint = positions[0];\r\n newGeometry.Point = `${topPoint.latitude},${topPoint.longitude}` + (topPoint.altitude != null ? `,${topPoint.altitude}` : \"\");\r\n if (positions.length > 1) {\r\n newGeometry.Polygon = [{ Facing: \"out\", LinearRing: LineStrFromPoints(positions) }];\r\n }\r\n if (positions.length > 2) {\r\n newGeometry.LineString = LineStrFromPoints(positions);\r\n }\r\n }\r\n return newGeometry;\r\n }\r\n return geometry;\r\n }\r\n}","export namespace UTC {\r\n export enum EMonth {\r\n January = 1,\r\n February = 2,\r\n March = 3,\r\n April = 4,\r\n May = 5,\r\n June = 6,\r\n July = 7,\r\n August = 8,\r\n September = 9,\r\n October = 10,\r\n November = 11,\r\n December = 12\r\n }\r\n\r\n export interface IUTC {\r\n d: number;\r\n hh: number;\r\n m: EMonth | number;\r\n mm: number;\r\n ss: number;\r\n y: number;\r\n }\r\n\r\n export function ToDate(utc: IUTC): Date {\r\n return new Date(utc.y, utc.m - 1, utc.d, utc.hh, utc.mm, utc.ss, 0);\r\n }\r\n\r\n export function FromDate(date: Date): IUTC {\r\n return {\r\n y: date.getUTCFullYear(),\r\n m: date.getUTCMonth() + 1,\r\n d: date.getUTCDate(),\r\n hh: date.getUTCHours(),\r\n mm: date.getUTCMinutes(),\r\n ss: date.getUTCSeconds()\r\n };\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\n\r\ntype Type = EntityAttachmentType.EType | string;\r\n\r\nexport namespace EntityAttachmentType {\r\n export function GetCacheKey(id: Type): string {\r\n return Api.ECacheKey.AttachmentType + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.AttachmentType;\r\n }\r\n\r\n export interface IType {\r\n Description: string;\r\n ID: string | EType;\r\n Name: string;\r\n }\r\n\r\n export enum EType {\r\n Photo = \"photo\",\r\n Document = \"document\",\r\n Video = \"video\",\r\n Drawing = \"drawing\",\r\n Model = \"model\"\r\n }\r\n\r\n export async function Delete(api: BruceApi, id: Type): Promise<void> {\r\n if (!id) {\r\n throw(\"Type ID is required.\");\r\n }\r\n await api.DELETE(`entityAttachmentType/${id}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(id));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IType): Promise<IType> {\r\n if (!data?.ID) {\r\n throw(\"Type ID is required.\");\r\n }\r\n data = await api.post(`entityAttachmentType/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IType[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IType[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entityAttachmentTypes`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\nimport { ClientFile } from \"../file/client-file\";\r\nimport { EntityAttachmentType } from \"./entity-attachment-type\";\r\n\r\ntype Type = EntityAttachmentType.EType | string;\r\n\r\nexport namespace EntityAttachment {\r\n export function GetCacheKey(entityId: string, typeId: Type, fileId: string): string {\r\n return Api.ECacheKey.Attachment + Api.ECacheKey.Id + entityId + Api.ECacheKey.Id + typeId + Api.ECacheKey.Id + fileId;\r\n }\r\n\r\n export function GetListCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Attachment + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export interface IAttachment {\r\n ClientFile: ClientFile.IClientFile;\r\n Group: string;\r\n \"ClientFile.ID\": string;\r\n DisplayOrder: number;\r\n \"Entity.ID\": string;\r\n \"EntityAttachmentType.ID\": Type;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IAttachment): Promise<IAttachment> {\r\n if (!data?.[\"Entity.ID\"] || !data?.[\"EntityAttachmentType.ID\"] || !data?.[\"ClientFile.ID\"]) {\r\n throw(\"Entity ID, Type ID, and File ID are required.\");\r\n }\r\n const url = `entity/${data[\"Entity.ID\"]}/attachment/${data[\"EntityAttachmentType.ID\"]}/${data[\"ClientFile.ID\"]}`;\r\n data = await api.POST(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data[\"Entity.ID\"], data[\"EntityAttachmentType.ID\"], data[\"ClientFile.ID\"]));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(data[\"Entity.ID\"]));\r\n return data;\r\n }\r\n\r\n export async function UpdateOrder(api: BruceApi, entityId: string, typeId: Type, fileIds: string[]): Promise<void> {\r\n if (!entityId || !typeId || !fileIds?.length) {\r\n throw(\"Entity ID, Type ID, and File IDs are required.\");\r\n }\r\n const reqData = {\r\n \t\"DisplayOrder.Start\": 0,\r\n \t\"ClientFile.ID\": fileIds\r\n };\r\n await api.POST(`entity/${entityId}/attachments/${typeId}/setOrder`, reqData, Api.PrepReqParams());\r\n for (let i = 0; i < fileIds.length; i++) {\r\n api.Cache.Remove(GetCacheKey(entityId, typeId, fileIds[i]));\r\n }\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(entityId));\r\n }\r\n\r\n export async function Delete(api: BruceApi, data: IAttachment): Promise<void> {\r\n if (!data?.[\"Entity.ID\"] || !data?.[\"EntityAttachmentType.ID\"] || !data?.[\"ClientFile.ID\"]) {\r\n throw(\"Entity ID, Type ID, and File ID are required.\");\r\n }\r\n const reqData = {\r\n \t\"ClientFile.ID\": [data[\"ClientFile.ID\"]]\r\n };\r\n await api.POST(`entity/${data[\"Entity.ID\"]}/attachments/${data[\"EntityAttachmentType.ID\"]}/delete`, reqData, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data[\"Entity.ID\"], data[\"EntityAttachmentType.ID\"], data[\"ClientFile.ID\"]));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(data[\"Entity.ID\"]));\r\n }\r\n\r\n export async function DeleteByFileIds(api: BruceApi, entityId: string, typeId: Type, fileIds: string[]): Promise<void> {\r\n if (!entityId || !typeId || !fileIds?.length) {\r\n throw(\"Entity ID, Type ID, and File IDs are required.\");\r\n }\r\n const reqData = {\r\n \t\"ClientFile.ID\": fileIds\r\n };\r\n await api.POST(`entity/${entityId}/attachments/${typeId}/delete`, reqData, Api.PrepReqParams());\r\n for (let i = 0; i < fileIds.length; i++) {\r\n api.Cache.Remove(GetCacheKey(entityId, typeId, fileIds[i]));\r\n }\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(entityId));\r\n }\r\n\r\n export async function GetListByEntityId(api: BruceApi, entityId: string): Promise<IAttachment[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IAttachment[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entity/${entityId}/attachments`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityId), req);\r\n return req;\r\n }\r\n\r\n export async function Upload(api: BruceApi, file: Blob, entityId: string, typeId: Type, onProgress?: (e: ProgressEvent) => void): Promise<IAttachment> {\r\n if (!entityId || !typeId || !file) {\r\n throw(\"Entity ID, Type ID, and File are required.\");\r\n }\r\n const url = `entity/${entityId}/attachment/${typeId}`;\r\n const req = await api.UPLOAD(url, file, { onProgress: onProgress });\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(entityId));\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, UTC } from \"../bruce-models\";\r\n\r\nexport namespace EntityComment {\r\n export function GetCacheKey(id: number): string {\r\n return Api.ECacheKey.Comment + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Comment + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export interface IComment {\r\n Comment: string;\r\n \"Created.ByUser.ID\": string;\r\n \"Created.Date\": UTC.IUTC;\r\n ID: number;\r\n RepliesCount: number;\r\n \"ReplyTo.Comment.ID\": number;\r\n \"TargetObject.ID\": string;\r\n \"TargetObject.Type\": string;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IComment): Promise<IComment> {\r\n if (!data?.[\"TargetObject.ID\"]) {\r\n throw(\"TargetObject.ID (entity id) is required.\");\r\n }\r\n const url = `entity/${data[\"TargetObject.ID\"]}/comment` + (data.ID == null ? \"\" : \"/\" + data.ID);\r\n data = await api.POST(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Comment + Api.ECacheKey.Entity);\r\n return data;\r\n }\r\n\r\n export async function Delete(api: BruceApi, entityId: string, commentId: number): Promise<void> {\r\n if (!commentId) {\r\n throw(\"Comment ID is required.\");\r\n }\r\n await api.DELETE(`entity/${entityId}/comment/${commentId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(commentId));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Comment + Api.ECacheKey.Entity);\r\n }\r\n\r\n export async function GetListByEntityId(api: BruceApi, entityId: string): Promise<IComment[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IComment[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entity/${entityId}/comments`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityId), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\nexport namespace EntityLink {\r\n export function GetCacheKey(id: number): string {\r\n return Api.ECacheKey.Link + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Link + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export interface ILink {\r\n DisplayName: string;\r\n ID?: number;\r\n \"Entity.ID\": string;\r\n URL: string;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: ILink): Promise<ILink> {\r\n if (!data?.[\"Entity.ID\"]) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const url = `entity/${data[\"Entity.ID\"]}/link` + (data.ID == null ? \"\" : \"/\" + data.ID);\r\n data = await api.POST(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(<number>data.ID));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Link + Api.ECacheKey.Entity);\r\n return data;\r\n }\r\n\r\n export async function Delete(api: BruceApi, entityId: string, linkId: number): Promise<void> {\r\n if (!linkId) {\r\n throw(\"Link ID is required.\");\r\n }\r\n await api.DELETE(`entity/${entityId}/link/${linkId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(linkId));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Link + Api.ECacheKey.Entity);\r\n }\r\n\r\n export async function GetListByEntityId(api: BruceApi, entityId: string): Promise<ILink[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<ILink[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entity/${entityId}/links`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityId), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\nexport namespace EntityLod {\r\n export function GetCacheKey(url: string) {\r\n return Api.ECacheKey.Lod + Api.ECacheKey.Id + url;\r\n }\r\n\r\n export interface ILod {\r\n \"ClientFile.ID\": string;\r\n \"Entity.ID\": string;\r\n \"LODCategory.Key\": string;\r\n Level: number;\r\n }\r\n\r\n export function GetUrl(api: BruceApi, entityId: string, categoryId: string, level: number, strict?: boolean): string {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n if (!categoryId) {\r\n categoryId = \"GLB\";\r\n }\r\n if (!level) {\r\n level = 0;\r\n }\r\n let url: string = api.GetBaseUrl() + `entity/${entityId}/lod/${categoryId}/${level}`;\r\n if (strict) {\r\n url = url + \"?strict=true\";\r\n }\r\n return url;\r\n }\r\n\r\n export async function GetUrlFileId(api: BruceApi, url: string): Promise<string> {\r\n if (!url) {\r\n throw(\"Url is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(url));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<string> = new Promise(async (res, rej) => {\r\n try {\r\n const record: ILod = await api.get(url, Api.PrepReqParams());\r\n res(record[\"ClientFile.ID\"]);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetCacheKey(url), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetLods(api: BruceApi, params: Filter.IListParams): Promise<Filter.IListResItem[]> {\r\n if (!params?.Items?.length) {\r\n throw(\"Items are required.\");\r\n }\r\n const data = await api.POST(\"entity/getlods\", params);\r\n return data.Items;\r\n }\r\n\r\n export namespace Filter {\r\n export interface IListParamsItem {\r\n \"entityId\": string,\r\n \"categoryId\": string,\r\n \"group\"?: string,\r\n \"level\"?: number\r\n }\r\n \r\n export interface IListParams {\r\n \"strict\": boolean,\r\n \"externalSources\": boolean,\r\n \"Items\": IListParamsItem[]\r\n }\r\n \r\n export interface IListResItem {\r\n clientFileId: string;\r\n entityId: string;\r\n accountId: string;\r\n }\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\n\r\nexport namespace EntityRelationType {\r\n export function GetCacheKey(id: string): string {\r\n return Api.ECacheKey.RelationType + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.RelationType;\r\n }\r\n\r\n export interface IType {\r\n ID: string;\r\n ForwardName: string;\r\n ReverseName: string;\r\n Name: string;\r\n FlipDisplayDirection?: boolean;\r\n EntityDisplaySettingID?: string;\r\n \"Relation.EntityType.ID\"?: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, typeId: string): Promise<IType> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n const key = GetCacheKey(typeId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entityRelationType/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, typeId: string): Promise<void> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n await api.DELETE(`entityRelationType/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(typeId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IType[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IType[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"entityRelationTypes\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IType): Promise<IType> {\r\n if (!data?.ForwardName || !data?.ReverseName) {\r\n throw(\"Forward and reverse names are required.\");\r\n }\r\n if (!data.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n data = await api.post(`entityRelationType/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { Entity } from \"./entity\";\r\n\r\nexport namespace EntityRelation {\r\n export function GetCacheKey(entityA: string, entityB: string, typeId: string): string {\r\n return `${Api.ECacheKey.Relation}${Api.ECacheKey.Id}${entityA}${Api.ECacheKey.Id}${entityB}${Api.ECacheKey.Id}${typeId}`;\r\n }\r\n\r\n export function GetEntityCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Relation + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export function GetListCacheKey(params: IListParams): string {\r\n return Api.ECacheKey.Relation + Api.ECacheKey.RelationType + Api.ECacheKey.Id + params.typeId + Api.ECacheKey.Id + params.oneWayOnly + Api.ECacheKey.Id + params.loadEntityData;\r\n }\r\n\r\n export interface IRelation {\r\n \"Principal.Entity.ID\": string;\r\n \"Related.Entity.ID\": string;\r\n RelatedEntity?: Entity.IEntity;\r\n PrincipalEntity?: Entity.IEntity;\r\n \"Relation.Type.ID\": string;\r\n RelationType: any;\r\n \"Data.Entity.ID\"?: string;\r\n }\r\n\r\n export interface IListParams {\r\n typeId?: string;\r\n oneWayOnly?: boolean;\r\n loadEntityData?: boolean;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IRelation): Promise<IRelation> {\r\n if (!data[\"Principal.Entity.ID\"] || !data[\"Related.Entity.ID\"] || !data[\"Relation.Type.ID\"]) {\r\n throw(\"Principal Entity ID, Related Entity ID, and Relation Type ID are required.\");\r\n }\r\n const url = `entity/${data[\"Principal.Entity.ID\"]}/otherEntityID/${data[\"Related.Entity.ID\"]}/relation/${data[\"Relation.Type.ID\"]}/update`;\r\n data = await api.post(url, data, Api.PrepReqParams());\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.Id + data[\"Principal.Entity.ID\"]);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.Id + data[\"Related.Entity.ID\"]);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.RelationType + Api.ECacheKey.Id + data[\"Relation.Type.ID\"]);\r\n if (data[\"Data.Entity.ID\"]) {\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.Entity + Api.ECacheKey.Id + data[\"Data.Entity.ID\"]);\r\n }\r\n return data;\r\n }\r\n\r\n export async function GetList(api: BruceApi, entityId: string, params: IListParams): Promise<IRelation[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n params = {\r\n typeId: \"\",\r\n oneWayOnly: false,\r\n loadEntityData: false,\r\n ...params\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(params));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IRelation[]> = new Promise(async (res, rej) => {\r\n try {\r\n let url = `entity/${entityId}/relations`;\r\n if (params.typeId) {\r\n url += \"/\" + params.typeId;\r\n }\r\n url += `?Oneway=${params.oneWayOnly}&LoadInfo=${params.loadEntityData}`;\r\n const data = await api.GET(url, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(params), req);\r\n return req;\r\n }\r\n\r\n export async function GetByDataEntityId(api: BruceApi, entityId: string): Promise<IRelation> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetEntityCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entity/relation/${entityId}/dataentity`, Api.PrepReqParams());\r\n api.Cache.Set(GetEntityCacheKey(entityId), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, IDictionary } from \"../bruce-models\";\r\n\r\nexport namespace EntitySource {\r\n export function GetCacheKey(sourceId: number, sourceKey: string): string {\r\n return `${Api.ECacheKey.EntitySource}${Api.ECacheKey.Id}${sourceId}${Api.ECacheKey.Id}${sourceKey}`;\r\n }\r\n\r\n export interface ISource {\r\n \"Entity.ID\": string;\r\n \"Source.ID\": number;\r\n \"SourceRecord.Key\": string;\r\n }\r\n\r\n export async function Get(api: BruceApi, sourceId: number, sourceKey: string): Promise<ISource> {\r\n if (!sourceId || !sourceKey) {\r\n throw(\"Source ID and Source Key are required.\");\r\n }\r\n const key = GetCacheKey(sourceId, sourceKey);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entitysource/${sourceId}/${sourceKey}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetListByKeys(api: BruceApi, sourceId: number, sourceKeys: string[]): Promise<ISource[]> {\r\n if (!sourceId || !sourceKeys.length) {\r\n throw(\"Source ID and Source Keys are required.\");\r\n }\r\n const reqKeys: string[] = [];\r\n const reqs: Promise<ISource>[] = [];\r\n for (let i = 0; i < sourceKeys.length; i++) {\r\n const sourceKey = sourceKeys[i];\r\n const cacheData = api.Cache.Get(GetCacheKey(sourceId, sourceKey));\r\n if (cacheData) {\r\n reqs.push(cacheData);\r\n } \r\n else {\r\n reqKeys.push(sourceKey);\r\n }\r\n }\r\n if (reqKeys.length) {\r\n const prom: Promise<ISource[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.POST(`entitysource/${sourceId}`, { SourceRecordKeys: reqKeys }, Api.PrepReqParams());\r\n res(data);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n for (let i = 0; i < reqKeys.length; i++) {\r\n const req: Promise<ISource> = new Promise(async (rej, res) => {\r\n try {\r\n const sources = await prom;\r\n res(sources.find((s: ISource) => s[\"SourceRecord.Key\"] === reqKeys[i]));\r\n }\r\n catch (e) {\r\n rej(<any>e);\r\n }\r\n });\r\n reqs.push(req);\r\n }\r\n }\r\n return (await Promise.all(reqs)).filter(x => !!x);\r\n }\r\n\r\n export async function GetEntityIdsBySourceKeys(api: BruceApi, sourceId: number, sourceKeys: string[]): Promise<IDictionary<string>> {\r\n if (!sourceId || !sourceKeys.length) {\r\n throw(\"Source ID and Source Keys are required.\");\r\n }\r\n const result: IDictionary<string> = {};\r\n if (sourceKeys.length > 0) {\r\n const sources = await GetListByKeys(api, sourceId, sourceKeys);\r\n for (let i = 0; i < sources.length; i++) {\r\n const source = sources[i];\r\n for (let i = 0; i < sourceKeys.length; i++) {\r\n const key = sourceKeys[i];\r\n if (key == source[\"SourceRecord.Key\"]) {\r\n result[key] = source[\"Entity.ID\"];\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\n\r\nexport namespace EntityTag {\r\n export function GetCacheKey(tagId: number): string {\r\n return `${Api.ECacheKey.Tag}${Api.ECacheKey.Id}${tagId}`;\r\n }\r\n\r\n export function GetListCacheKey(entityTypeId?: string): string {\r\n if (entityTypeId) {\r\n return Api.ECacheKey.Tag + Api.ECacheKey.EntityType + Api.ECacheKey.Id + entityTypeId;\r\n }\r\n return Api.ECacheKey.Tag;\r\n }\r\n\r\n export interface ITag {\r\n ID: number;\r\n Name?: string;\r\n Description?: string;\r\n IsAccessRestricted?: boolean;\r\n \"EntityType.ID\"?: string;\r\n Color?: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, tagId: number): Promise<ITag> {\r\n if (!tagId) {\r\n throw(\"Tag ID is required.\");\r\n }\r\n const data = await GetListByIds(api, [tagId]);\r\n return data.length ? data[0] : <any>null;\r\n }\r\n\r\n export async function GetListByIds(api: BruceApi, tagIds: number[]): Promise<ITag[]> {\r\n if (!tagIds.length) {\r\n throw(\"Tag Ids are empty.\");\r\n }\r\n const reqIds: number[] = [];\r\n const reqs: Promise<ITag>[] = [];\r\n for (let i = 0; i < tagIds.length; i++) {\r\n const tagId = tagIds[i];\r\n const cacheData = api.Cache.Get(GetCacheKey(tagId));\r\n if (cacheData) {\r\n reqs.push(cacheData);\r\n } \r\n else {\r\n reqIds.push(tagId);\r\n }\r\n }\r\n if (reqIds.length) {\r\n const prom: Promise<ITag[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.POST(\"layers/get\", { layerIds: reqIds }, Api.PrepReqParams());\r\n res(data);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n for (let i = 0; i < reqIds.length; i++) {\r\n const req: Promise<ITag> = new Promise(async (rej, res) => {\r\n try {\r\n const tags = await prom;\r\n const tag = tags.find((t: ITag) => t.ID === reqIds[i]);\r\n res(tag);\r\n }\r\n catch (e) {\r\n rej(<any>e);\r\n }\r\n });\r\n reqs.push(req);\r\n }\r\n }\r\n return (await Promise.all(reqs)).filter(x => !!x);\r\n }\r\n\r\n export async function GetList(api: BruceApi, entityTypeId?: string): Promise<ITag[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityTypeId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<ITag[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(entityTypeId ? `entityType/${entityTypeId}/layers` : \"layers\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityTypeId), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, tagId: number): Promise<void> {\r\n if (!tagId) {\r\n throw(\"Tag ID is required.\");\r\n }\r\n await api.DELETE(`layer/${tagId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(tagId));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: ITag): Promise<ITag> {\r\n if (!data?.ID) {\r\n throw(\"Tag ID is required.\");\r\n }\r\n const url = data.ID ? `layer/${data.ID}` : \"layer\";\r\n data = await api.post(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { UTC } from \"../bruce-models\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\n\r\nexport namespace EntityType {\r\n export function GetCacheKey(typeId: string): string {\r\n return `${Api.ECacheKey.EntityType}${Api.ECacheKey.Id}${typeId}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.EntityType;\r\n }\r\n\r\n export interface IEntityType {\r\n ID?: string;\r\n IsDeleted?: boolean;\r\n Name: string;\r\n Description?: string;\r\n Data?: any;\r\n DataSchema?: IAttribute;\r\n DisplayNameAttributePath?: string;\r\n \"DisplaySetting.ID\"?: number;\r\n AuthoringSettings?: {\r\n enabledTools: string[];\r\n defaultTool: string;\r\n };\r\n \"LastUpdate.Time\"?: UTC.IUTC;\r\n \"Parent.EntityType.ID\"?: string;\r\n }\r\n\r\n export interface IAttribute {\r\n Key: string;\r\n Name?: string;\r\n Type?: EAttributeType;\r\n Size?: number;\r\n IsIndexed?: boolean;\r\n IsArray?: boolean;\r\n IsImportant?: boolean;\r\n Description?: string;\r\n Structure?: IAttribute[];\r\n IsFamilyAttribute?: boolean;\r\n IsFamilyAttributeDefault?: boolean;\r\n Sources?: string[];\r\n }\r\n\r\n export enum EAttributeType {\r\n String = \"String\",\r\n Double = \"Double\",\r\n Integer = \"Integer\",\r\n Datetime = \"Datetime\",\r\n Structure = \"Structure\",\r\n Geometry = \"Geometry\"\r\n }\r\n\r\n export async function Get(api: BruceApi, typeId: string): Promise<IEntityType> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n const key = GetCacheKey(typeId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entitytype/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, typeId: string): Promise<void> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n await api.DELETE(`entitytype/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(typeId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IEntityType[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IEntityType[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"entitytypes\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IEntityType): Promise<IEntityType> {\r\n if (!data) {\r\n data = <any>{};\r\n }\r\n if (!data.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n if (!data.Name) {\r\n data.Name = data.ID;\r\n }\r\n data = await api.POST(`entitytype`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(<string>data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Bounds, IDictionary } from \"../../bruce-models\";\r\n\r\nclass Cell {\r\n public Fetched: boolean = false;\r\n public IsFetched: () => boolean = <any>null;\r\n public FetchPageIndex: number = 0;\r\n public Boundaries: Bounds.IBounds = <any>null;\r\n\r\n public GetBounds(): Bounds.IReqBounds {\r\n // Entity data works in -180 to 180 range.\r\n function prepareRangeForBounds(range: number): number {\r\n if (range > 180) {\r\n return range - 360;\r\n }\r\n return range;\r\n }\r\n\r\n // Add minor decimal as API crashes when giving it whole numbers.\r\n const maxLon = prepareRangeForBounds(this.Boundaries.maxLongitude) + 0.00001;\r\n const minLon = prepareRangeForBounds(this.Boundaries.minLongitude) - 0.00001;\r\n const maxLat = prepareRangeForBounds(this.Boundaries.maxLatitude) + 0.00001;\r\n const minLat = prepareRangeForBounds(this.Boundaries.minLatitude) - 0.00001;\r\n return {\r\n east: maxLon,\r\n north: maxLat,\r\n south: minLat,\r\n west: minLon\r\n };\r\n }\r\n}\r\n\r\nfunction floorValueToCellSize(size: number, value: number): number {\r\n return Math.floor(value / size) * size;\r\n}\r\n\r\nfunction getCellSizeFromHeight(height: number): number {\r\n if (height < 1000) {\r\n return 0.01;\r\n }\r\n if (height < 5000) {\r\n return 0.025;\r\n }\r\n else if (height < 10000) {\r\n return 0.05;\r\n }\r\n else if (height < 30000) {\r\n return 0.1;\r\n }\r\n else if (height < 70000) {\r\n return 0.2;\r\n }\r\n else if (height < 100000) {\r\n return 0.3;\r\n }\r\n else if (height < 150000) {\r\n return 0.4;\r\n }\r\n else if (height < 200000) {\r\n return 0.5;\r\n }\r\n else if (height < 300000) {\r\n return 0.6;\r\n }\r\n else if (height < 500000) {\r\n return 1;\r\n }\r\n return 1.5;\r\n}\r\n\r\nfunction getCell(cells: IDictionary<Cell>, cellSize: number, lon: number, maxLon: number, lat: number, maxLat: number): Cell {\r\n const id = cellSize + \"_\" + lon + \"_\" + maxLon + \"_\" + lat + \"_\" + maxLat;\r\n return cells[id];\r\n}\r\n\r\nfunction isCellFetched(cell: Cell): boolean {\r\n if (cell.Fetched) {\r\n return true;\r\n }\r\n // TODO: If all cells of the size smaller are fetched then this is fetched.\r\n // TODO: If this is a cell within a larger cell that is fetched then this is fetched.\r\n return false;\r\n}\r\n\r\nfunction getOrCreateCell(cells: IDictionary<Cell>, cellSize: number, lon: number, maxLon: number, lat: number, maxLat: number): Cell {\r\n const id = cellSize + \"_\" + lon + \"_\" + maxLon + \"_\" + lat + \"_\" + maxLat;\r\n let cell = getCell(cells, cellSize, lon, maxLon, lat, maxLat);\r\n if (!cell) {\r\n cell = cells[id] = new Cell();\r\n cell.Boundaries = <Bounds.IBounds>{\r\n minLatitude: lat,\r\n maxLatitude: maxLat,\r\n minLongitude: lon,\r\n maxLongitude: maxLon\r\n };\r\n cell.IsFetched = () => isCellFetched(cell);\r\n }\r\n return cell;\r\n}\r\n\r\nexport namespace EntityGlobe {\r\n export class Grid {\r\n private cells: IDictionary<Cell> = {};\r\n \r\n public GetCellsForView(viewRect: Bounds.IReqBounds): Cell[] {\r\n const cells: Cell[] = [];\r\n const minLat = viewRect.south;\r\n const minLon = viewRect.west;\r\n const maxLat = viewRect.north;\r\n const maxLon = viewRect.east;\r\n const MAX_CELLS = 150;\r\n const cellDegreeSize = getCellSizeFromHeight(<number>viewRect.alt);\r\n const curMinLon = floorValueToCellSize(cellDegreeSize, minLon);\r\n const curMinLat = floorValueToCellSize(cellDegreeSize, minLat);\r\n const width = (maxLon - curMinLon) / cellDegreeSize;\r\n const height = (maxLat - curMinLat) / cellDegreeSize;\r\n for (let x = 0; x < width; x++) {\r\n for (let y = 0; y < height; y++) {\r\n const lon = x * cellDegreeSize + curMinLon;\r\n const lat = y * cellDegreeSize + curMinLat;\r\n const cell = getOrCreateCell(this.cells, cellDegreeSize, lon, lon + cellDegreeSize, lat, lat + cellDegreeSize);\r\n cells.push(cell);\r\n if (cells.length > MAX_CELLS) {\r\n break;\r\n }\r\n }\r\n }\r\n return cells;\r\n }\r\n }\r\n}","import { Api } from \"../../api/api\";\r\nimport { BruceApi } from \"../../api/bruce-api\";\r\nimport { Bounds } from \"../../common/bounds\";\r\nimport { BruceEvent } from \"../../common/bruce-event\";\r\nimport { Carto } from \"../../common/carto\";\r\nimport { IDictionary } from \"../../common/dictionary\";\r\nimport { Entity } from \"../entity\";\r\nimport { EntityGlobe } from \"./entity-globe\";\r\nimport { ViewMonitor } from \"./view-monitor\";\r\n\r\nconst MAX_AREA_IN_DEGREES = 90;\r\nconst MAX_RETRY_ATTEMPTS = 1;\r\nconst RETRY_DELAY_INCREMENT = 500;\r\nconst REQUEST_PAGE_DELAY = 50;\r\n\r\nclass regMenuItemGetter {\r\n TagIds: number[];\r\n MinHeight: number;\r\n MaxHeight: number;\r\n\r\n constructor(tagIds: number[], minHeight: number, maxHeight: number) {\r\n this.TagIds = tagIds;\r\n this.MinHeight = minHeight;\r\n this.MaxHeight = maxHeight;\r\n }\r\n}\r\n\r\nasync function delay(milliseconds: number): Promise<void> {\r\n return new Promise((res) => {\r\n setTimeout(() => {\r\n res();\r\n }, milliseconds);\r\n });\r\n}\r\n\r\nexport namespace EntityFilterGetter {\r\n export enum EStatus {\r\n Scanning = \"SCANNING\",\r\n Loading = \"LOADING\",\r\n }\r\n\r\n export interface IStatusUpdate {\r\n msg: EStatus;\r\n revoking: boolean;\r\n }\r\n\r\n export class Getter {\r\n private onUpdate: BruceEvent<Entity.IEntity[]> = <any>null;\r\n public get OnUpdate(): BruceEvent<Entity.IEntity[]> {\r\n if (!this.onUpdate) {\r\n this.onUpdate = new BruceEvent<Entity.IEntity[]>();\r\n }\r\n return this.onUpdate;\r\n }\r\n \r\n public LastStateUpdates: IDictionary<IStatusUpdate> = {};\r\n private onStateUpdate: BruceEvent<IStatusUpdate> = <any>null;\r\n public get OnStateUpdate(): BruceEvent<IStatusUpdate> {\r\n if (!this.onStateUpdate) {\r\n this.onStateUpdate = new BruceEvent<IStatusUpdate>();\r\n }\r\n return this.onStateUpdate;\r\n }\r\n \r\n private api: BruceApi;\r\n private viewPort: ViewMonitor.IMonitor;\r\n private viewPortChangeRemoval: () => void = <any>null;\r\n private cells: EntityGlobe.Grid = <any>null;\r\n private registeredItems: IDictionary<regMenuItemGetter> = {};\r\n private getterLoopId: number = 0;\r\n\r\n private typeId: string;\r\n private batchSize: number;\r\n private tagIds: number[] = <any>null;\r\n private minHeight = 0;\r\n private maxHeight = 100000;\r\n private attrFilter: IDictionary<any>;\r\n private viewRect: Bounds.IReqBounds = <any>null;\r\n private viewCenter: Carto.ICarto = <any>null;\r\n \r\n \r\n constructor(api: BruceApi, viewPort: ViewMonitor.IMonitor, typeId: string, batchSize: number, attrFilter: IDictionary<any>) {\r\n this.api = api;\r\n this.typeId = typeId;\r\n this.batchSize = batchSize;\r\n this.viewPort = viewPort;\r\n this.attrFilter = attrFilter;\r\n }\r\n \r\n private viewAreaSub(): void {\r\n this.viewAreaDispose();\r\n this.viewPortChangeRemoval = this.viewPort.Updated().Subscribe(() => {\r\n this.updateBounds();\r\n this.startGetterLoop();\r\n });\r\n }\r\n \r\n private viewAreaDispose(): void {\r\n this.viewPortChangeRemoval?.();\r\n }\r\n \r\n public GetMenuItems(): string[] {\r\n return Object.keys(this.registeredItems);\r\n }\r\n \r\n public IncludeMenuItem(menuItemId: string, layerIds: number[], minHeight: number, maxHeight: number): void {\r\n this.registeredItems[menuItemId] = new regMenuItemGetter(layerIds, minHeight, maxHeight);\r\n this.updateState();\r\n }\r\n \r\n public ExcludeMenuItem(menuItemId: string): void {\r\n this.registeredItems[menuItemId] = <any>null;\r\n delete this.registeredItems[menuItemId];\r\n this.updateState();\r\n }\r\n \r\n private updateBounds(): void {\r\n const viewRect = this.viewPort.GetArea();\r\n const poi = this.viewPort.GetTarget();\r\n if (viewRect && poi) {\r\n if (Math.abs(viewRect.west - viewRect.east) > MAX_AREA_IN_DEGREES) {\r\n return;\r\n }\r\n if (Math.abs(viewRect.south - viewRect.north) > MAX_AREA_IN_DEGREES) {\r\n return;\r\n }\r\n this.viewRect = viewRect;\r\n this.viewCenter = poi;\r\n }\r\n }\r\n \r\n private updateState(): void {\r\n const tagIds: number[] = [];\r\n const menuItemIds = this.GetMenuItems();\r\n let minHeight = null;\r\n let maxHeight = null;\r\n for (let i = 0; i < menuItemIds.length; i++) {\r\n const menuItem = this.registeredItems[menuItemIds[i]];\r\n if (menuItem) {\r\n if (maxHeight == null || maxHeight < menuItem.MaxHeight) {\r\n maxHeight = menuItem.MaxHeight;\r\n }\r\n if (minHeight == null || minHeight > menuItem.MinHeight) {\r\n minHeight = menuItem.MinHeight;\r\n }\r\n \r\n const itemLayerIds = menuItem.TagIds;\r\n if (itemLayerIds) {\r\n for (let j = 0; j < itemLayerIds.length; j++) {\r\n const itemLayerId = itemLayerIds[j];\r\n if (!tagIds.includes(itemLayerId)) {\r\n tagIds.push(itemLayerId);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n if (menuItemIds.length > 0) {\r\n // Reset cells so none are marked as fetched.\r\n this.cells = new EntityGlobe.Grid();\r\n this.tagIds = tagIds;\r\n this.minHeight = <number>minHeight;\r\n this.maxHeight = <number>maxHeight;\r\n this.updateBounds();\r\n this.startGetterLoop();\r\n this.viewAreaSub();\r\n }\r\n else {\r\n this.getterLoopId = -1;\r\n this.viewAreaDispose();\r\n }\r\n }\r\n\r\n private postStatus(status: IStatusUpdate): void {\r\n this.LastStateUpdates[status.msg] = status;\r\n this.onStateUpdate?.Trigger(status);\r\n }\r\n \r\n private startGetterLoop(): void {\r\n // Increase id so that existing loops stop.\r\n this.getterLoopId += 1;\r\n const loopId = this.getterLoopId;\r\n \r\n new Promise(async () => {\r\n // Minor delay to stop 50 menu items enabling doing their first request all together.\r\n // This gives it time to recognize only 1 request is needed.\r\n // Would be better to not use this delay but we're on a clock.\r\n await delay(100);\r\n \r\n const MIN_HEIGHT = this.minHeight;\r\n const MAX_HEIGHT = this.maxHeight;\r\n const PAGE_SIZE = this.batchSize;\r\n let retryAttempts = MAX_RETRY_ATTEMPTS;\r\n let retryDelay = 0;\r\n let prevFirstId: string = \"\";\r\n let prevLastId: string = \"\";\r\n \r\n while ((!this.viewCenter || !this.viewRect) && this.getterLoopId == loopId) {\r\n await delay(RETRY_DELAY_INCREMENT);\r\n }\r\n if (this.getterLoopId != loopId) {\r\n return;\r\n }\r\n const alt = <number>this.viewRect.alt;\r\n if (alt > MAX_HEIGHT || (alt < MIN_HEIGHT && MIN_HEIGHT > 0)) {\r\n return;\r\n }\r\n \r\n const cells = this.cells.GetCellsForView(this.viewRect);\r\n let curCellIndex = cells.length > 0 ? 0 : null;\r\n \r\n let postedScanning = false;\r\n let postedLoading = false;\r\n \r\n while (retryAttempts > 0 && curCellIndex != null) {\r\n if (this.getterLoopId != loopId) {\r\n break;\r\n }\r\n if (retryDelay > 0) {\r\n await delay(retryDelay);\r\n }\r\n \r\n if (!postedScanning) {\r\n this.postStatus({ msg: EStatus.Scanning, revoking: false });\r\n postedScanning = true;\r\n }\r\n \r\n const curCell = cells[curCellIndex];\r\n if (curCell.IsFetched()) {\r\n curCellIndex += 1;\r\n if (!cells[curCellIndex]) {\r\n curCellIndex = null;\r\n }\r\n continue;\r\n }\r\n \r\n try {\r\n const page = await Entity.Filter.V1.GetList(this.api,\r\n {\r\n pageSize: PAGE_SIZE,\r\n pageIndex : curCell.FetchPageIndex,\r\n entityTypeId: this.typeId,\r\n layerIds: this.tagIds,\r\n bounds: curCell.GetBounds(),\r\n sortOrder: Api.ESortOrder.Asc,\r\n entityTypeConditions: this.attrFilter\r\n }\r\n );\r\n if (this.getterLoopId != loopId) {\r\n break;\r\n }\r\n if (page) {\r\n this.onUpdate?.Trigger(page);\r\n }\r\n if (!postedLoading) {\r\n this.postStatus({ msg: EStatus.Loading, revoking: false });\r\n postedLoading = true;\r\n }\r\n \r\n if (page.length <= 0 ) {\r\n curCell.Fetched = true; // Only mark as fetched when ALL pages are done.\r\n continue;\r\n }\r\n \r\n // Checking to make sure it's not just the same batch over and over again.\r\n if (page.length > 0) {\r\n const first = page[0]?.Bruce?.ID;\r\n const last = page[page.length - 1]?.Bruce?.ID;\r\n if (prevFirstId == first && prevLastId == last) {\r\n break;\r\n }\r\n else {\r\n prevFirstId = <string>first;\r\n prevLastId = <string>last;\r\n }\r\n }\r\n curCell.FetchPageIndex++;\r\n \r\n // Request passed so let's assume it was server hiccup and refresh counts.\r\n retryAttempts = MAX_RETRY_ATTEMPTS;\r\n retryDelay = 0;\r\n }\r\n catch (e) {\r\n console.log(e);\r\n \r\n // Request failed so let's add a delay and try again soon.\r\n retryDelay += RETRY_DELAY_INCREMENT;\r\n retryAttempts -= 1;\r\n }\r\n \r\n await delay(REQUEST_PAGE_DELAY);\r\n }\r\n \r\n if (postedLoading) {\r\n this.postStatus({ msg: EStatus.Loading, revoking: true });\r\n }\r\n if (postedScanning) {\r\n this.postStatus({ msg: EStatus.Scanning, revoking: true });\r\n }\r\n });\r\n }\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\nimport { UTC } from \"../common/utc\";\r\n\r\nexport namespace ClientFile {\r\n export function GetCacheKey(fileId: string): string {\r\n return `${Api.ECacheKey.ClientFile}${Api.ECacheKey.Id}${fileId}`;\r\n }\r\n\r\n export interface IClientFile {\r\n UploadedTimeUTC: UTC.IUTC;\r\n FileExt: string;\r\n ID: string;\r\n MIMEType: string;\r\n OriginalFileName: string;\r\n OriginalLength: number;\r\n \"UploadedByUser.ID\": string;\r\n Purpose: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, fileId: string): Promise<IClientFile> {\r\n if (!fileId) {\r\n throw(\"File ID is required.\");\r\n }\r\n const key = GetCacheKey(fileId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`file/${fileId}/details`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, fileIds: string[]): Promise<void> {\r\n if (!fileIds.length) {\r\n throw(\"File IDs are required.\");\r\n }\r\n const data = {\r\n Items: fileIds\r\n };\r\n await api.POST(\"deleteFiles\", data, Api.PrepReqParams());\r\n for (let i = 0; i < fileIds.length; i++) {\r\n const key = GetCacheKey(fileIds[i]);\r\n api.Cache.Remove(key);\r\n }\r\n }\r\n\r\n export async function Upload(api: BruceApi, file: Blob, onProgress?: (e: ProgressEvent) => void): Promise<IClientFile> {\r\n if (!file) {\r\n throw(\"File is required.\");\r\n }\r\n return api.UPLOAD(\"file/uploadNew\", file, { onProgress: onProgress });\r\n }\r\n\r\n export namespace Filter {\r\n export namespace V1 {\r\n export enum EColumn {\r\n ID = \"id\",\r\n Name = \"name\",\r\n DateTime = \"datetime\",\r\n MIMEType = \"mimeType\",\r\n Size = \"size\",\r\n User = \"user\",\r\n Extension = \"extension\"\r\n }\r\n \r\n export enum ESortOrder {\r\n ASC = \"asc\",\r\n DEC = \"desc\"\r\n }\r\n\r\n export enum ERowOperator {\r\n AND = \"AND\",\r\n OR = \"OR\"\r\n }\r\n\r\n export interface IRow {\r\n column: EColumn;\r\n value: any;\r\n valueOperator: string;\r\n includes: boolean;\r\n rowOperator: ERowOperator;\r\n rows?: IRow[];\r\n }\r\n\r\n export interface IFilter {\r\n PageSize?: number;\r\n PageIndex?: number;\r\n OrderBy?: EColumn;\r\n SortOrder?: ESortOrder;\r\n Purpose?: string;\r\n FilterRows?: IRow[];\r\n }\r\n\r\n export async function GetList(api: BruceApi, filter: IFilter): Promise<IClientFile[]> {\r\n const data = await api.POST(\"files/filtered\", filter, Api.PrepReqParams());\r\n return data.Items;\r\n }\r\n }\r\n\r\n\r\n // TODO: Helpers for constructing the filter.\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\n\r\ntype Id = ProgramKey.EProgramId | string;\r\n\r\nexport namespace ProgramKey {\r\n export function GetCacheKey(programId: string): string {\r\n return Api.ECacheKey.ProgramKey + Api.ECacheKey.Id + programId;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.ProgramKey;\r\n }\r\n\r\n export enum EProgramId {\r\n CesiumIon = \"CesiumIon\",\r\n BingMaps = \"BingMaps\",\r\n Mapbox = \"Mapbox\"\r\n }\r\n\r\n export interface IKey {\r\n ProgramId: Id;\r\n Key: string;\r\n IsAccessRestricted?: boolean;\r\n }\r\n\r\n export async function Get(api: BruceApi, programId: Id): Promise<IKey> {\r\n if (!programId) {\r\n throw(\"Program ID is required.\");\r\n }\r\n const key = GetCacheKey(programId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`programkey/${programId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IKey[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IKey[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"programkeys\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, programId: Id): Promise<void> {\r\n if (!programId) {\r\n throw(\"Program ID is required.\");\r\n }\r\n await api.DELETE(`programkey/${programId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(programId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IKey): Promise<IKey> {\r\n if (!data?.ProgramId) {\r\n throw(\"Program ID is required.\");\r\n }\r\n data = await api.post(\"programkey\", data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ProgramId));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Style } from \"../bruce-models\";\r\n\r\nexport namespace MenuItemZoomControl {\r\n export enum EDisplayType {\r\n Hidden = \"hidden\",\r\n Point = \"point\",\r\n Geometry = \"geometry\",\r\n Model3D = \"3d\"\r\n }\r\n\r\n export interface IItem {\r\n MinZoom?: number,\r\n MaxZoom?: number,\r\n DisplayType?: EDisplayType,\r\n StyleID?: number,\r\n Style?: Style.IEntitySettings;\r\n LODCategoryID?: string,\r\n LODLevel?: number | string;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { TilesetPointcloud } from \"./tileset-pointcloud\";\r\nimport { TilesetCad } from \"./tileset-cad\";\r\nimport { TilesetEntitiesMapTiles } from \"./tileset-entities-map-tiles\";\r\nimport { TilesetEntities } from \"./tileset-entities\";\r\nimport { TilesetExtMapTiles } from \"./tileset-ext-map-tiles\";\r\nimport { TilesetExtTerrainTiles } from \"./tileset-ext-terrain-tiles\";\r\nimport { TilesetMapTiles } from \"./tileset-map-tiles\";\r\nimport { TilesetTerrainTiles } from \"./tileset-terrain-tiles\";\r\nimport { PendingAction } from \"../server/pending-action\";\r\nimport { GlobalApi } from \"../api/global-api\";\r\n\r\ntype Settings = TilesetPointcloud.ISettings | \r\n TilesetCad.ISettings | \r\n TilesetEntitiesMapTiles.ISettings | \r\n TilesetEntities.ISettings | \r\n TilesetExtMapTiles.ISettings | \r\n TilesetExtTerrainTiles.ISettings | \r\n TilesetMapTiles.ISettings | \r\n TilesetTerrainTiles.ISettings;\r\n\r\nexport namespace Tileset {\r\n export function GetCacheKey(tilesetId: string, loadFiles: boolean): string {\r\n return `${Api.ECacheKey.Tileset}${Api.ECacheKey.Id}${tilesetId}${Api.ECacheKey.Id}${loadFiles}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.Tileset;\r\n }\r\n\r\n export interface ITileset {\r\n id: string;\r\n name: string;\r\n type: EType;\r\n rootFileName?: string;\r\n settings?: Settings;\r\n fileIds?: string[];\r\n creationTime?: UTC.IUTC;\r\n modificationTime?: UTC.IUTC;\r\n generateVersion?: number;\r\n isDeleteDisabled?: boolean;\r\n }\r\n\r\n export enum EType {\r\n PointCloud = \"POINT_CLOUD\",\r\n GeoMap = \"GEO_MAP\", // Previously gtfRasterMaps.\r\n EntitiesMap = \"ENTITIES_MAP\", // Previously rasterMap.\r\n EntitiesSet = \"ENTITIES_SET\", // Previously dynamic.\r\n Cad = \"MODEL\", // Generated CAD tileset from entity id.\r\n Terrain = \"GEO_TERR\",\r\n ExternalTerrain = \"EXTERNAL_TERR\",\r\n ExternalGeoMap = \"EXTERNAL_MAP\"\r\n }\r\n\r\n export enum EPivot {\r\n None = \"none\",\r\n Box = \"box\", \r\n Weight = \"weight\",\r\n UCS = \"ucs\"\r\n }\r\n\r\n export interface ITransform {\r\n heading: number;\r\n pitch: number;\r\n roll: number;\r\n scale: number;\r\n }\r\n\r\n export async function Get(api: BruceApi, tilesetId: string, loadFiles: boolean = false): Promise<ITileset> {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(tilesetId, loadFiles));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`tileset/get/${tilesetId}?noFiles=${loadFiles ? 0 : 1}`);\r\n api.Cache.Set(GetCacheKey(tilesetId, loadFiles), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<ITileset[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<ITileset[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"tileset/getList\")\r\n res(data);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, tilesetId: string): Promise<void> {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n await api.DELETE(`tileset/delete/${tilesetId}`);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset + Api.ECacheKey.Id + tilesetId);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset);\r\n }\r\n\r\n export async function Update(api: BruceApi, data: ITileset): Promise<ITileset> {\r\n if (!data?.name || !data?.type) {\r\n throw(\"Tileset name and type are required.\");\r\n }\r\n let isNew = !data.id;\r\n if (isNew) {\r\n const res: ITileset = await api.GET(`tileset/new?type=${data.type}&name=${Api.Encode(data.name)}`);\r\n data = {\r\n ...data,\r\n ...res\r\n }\r\n }\r\n data = await api.post(`tileset`, data);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset + Api.ECacheKey.Id + data.id);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset);\r\n return data;\r\n }\r\n\r\n export async function UploadFile(api: BruceApi, tilesetId: string, file: Blob, onProgress?: (e: ProgressEvent) => void): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n return api.UPLOAD(`tileset/uploadFile/${tilesetId}/files`, file, { onProgress: onProgress });\r\n }\r\n\r\n export async function DeleteFile(api: BruceApi, tilesetId: string, file: string): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n await api.DELETE(`tileset/deleteFile/${tilesetId}/files/${file}`);\r\n api.Cache.Remove(GetCacheKey(tilesetId, true));\r\n }\r\n\r\n export async function UploadSrcFile(api: BruceApi, tilesetId: string, file: Blob, onProgress?: (e: ProgressEvent) => void): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n await api.UPLOAD(`tileset/uploadFile/${tilesetId}/src`, file, { onProgress: onProgress });\r\n api.Cache.Remove(GetCacheKey(tilesetId, true));\r\n }\r\n\r\n export async function DeleteSrcFile(api: BruceApi, tilesetId: string, file: string): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n await api.DELETE(`tileset/deleteFile/${tilesetId}/src/${file}`);\r\n api.Cache.Remove(GetCacheKey(tilesetId, true));\r\n }\r\n\r\n export function GetFileUrl(api: BruceApi, tilesetId: string, file: string): string {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n if (!file) {\r\n file = \"\";\r\n }\r\n return api.GetBaseUrl() + `tileset/getFile/${tilesetId}/files/${file}`;\r\n }\r\n\r\n export function GetSrcFileUrl(api: BruceApi, tilesetId: string, file: string): string {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n if (!file) {\r\n file = \"\";\r\n }\r\n return api.GetBaseUrl() + `tileset/getFile/${tilesetId}/src/${file}`;\r\n }\r\n\r\n export function GetPublicFileUrl(api: BruceApi, tilesetId: string, file: string): string {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n if (!file) {\r\n file = \"\";\r\n }\r\n return api.GetBaseUrl() + `tileset/file/${tilesetId}/${file}`;\r\n }\r\n\r\n export async function Generate(api: BruceApi, tilesetId: string): Promise<number> {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n const res: PendingAction.IAction = await api.GET(`tileset/generate/${tilesetId}`);\r\n return res.ID;\r\n }\r\n\r\n export namespace Publish {\r\n export function GetCacheKey(accountId: string, tilesetId?: string): string {\r\n if (!tilesetId) {\r\n tilesetId = \"\";\r\n }\r\n return Api.ECacheKey.PublishTileset + Api.ECacheKey.Id + accountId + Api.ECacheKey.Id + tilesetId;\r\n }\r\n\r\n export interface IPublish {\r\n ID?: number;\r\n \"Tileset.ID\"?: string;\r\n \"PublishedBy.ClientAccount.ID\"?: string;\r\n \"PublishedBy.User.ID\"?: string;\r\n \"Published.DateTime\"?: UTC.IUTC;\r\n IsPublic: boolean;\r\n \"EnabledFor.ClientAccount.ID\"?: string[];\r\n }\r\n\r\n export async function Update(api: GlobalApi, data: IPublish): Promise<IPublish> {\r\n if (!data?.[\"Tileset.ID\"] || !data?.[\"PublishedBy.ClientAccount.ID\"] || !data?.[\"PublishedBy.User.ID\"]) {\r\n throw(\"Tileset ID, client account ID, and user ID are required.\");\r\n }\r\n if (!data.ID) {\r\n data.ID = 0;\r\n }\r\n const res: IPublish = await api.POST(`tileset/${data.ID}`, data);\r\n const req = {\r\n \"ClientAccount.ID\": data[\"EnabledFor.ClientAccount.ID\"]\r\n };\r\n data.ID = res.ID;\r\n await api.POST(`tileset/${data.ID}/enableForAccounts`, req);\r\n api.Cache.Remove(GetCacheKey(data[\"PublishedBy.ClientAccount.ID\"], data[\"Tileset.ID\"]));\r\n api.Cache.Remove(GetCacheKey(data[\"PublishedBy.ClientAccount.ID\"]));\r\n return data;\r\n }\r\n\r\n export async function Get(api: GlobalApi, accountId: string, tilesetId: string): Promise<IPublish> {\r\n if (!accountId || !tilesetId) {\r\n throw(\"Client account ID and tileset ID are required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(accountId, tilesetId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`tilesetByPublisher/${accountId}/${tilesetId}`);\r\n api.Cache.Set(GetCacheKey(accountId, tilesetId), req);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: GlobalApi, accountId: string): Promise<IPublish[]> {\r\n if (!accountId) {\r\n throw(\"Client account ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IPublish[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`tilesets/enabledForAccount/${accountId}`);\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetCacheKey(accountId), req);\r\n return req;\r\n }\r\n }\r\n}","import { Tileset } from \"../tileset/tileset\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { MenuItemZoomControl } from \"./menu-item-zoom-control\";\r\n\r\nexport namespace MenuItem {\r\n export enum EType {\r\n None = \"NONE\",\r\n BruceEntities = \"BruceEntity\",\r\n BruceEntity = \"SingleEntity\",\r\n Osm = \"OSMBuildingsTileset\",\r\n CadTileset = \"ModelTileset\",\r\n ArbTileset = \"Cesium3DTileset\",\r\n Kml = \"StaticKML\",\r\n EntitiesTileset = \"EntitiesTileset\",\r\n EntitiesRaster = \"RasterEntitiesTileset\",\r\n PointCloud = \"PointCloudTileset\",\r\n }\r\n\r\n export interface ILegend {\r\n model3d: boolean;\r\n point: boolean;\r\n polygon: boolean;\r\n polylines: boolean;\r\n tileset3d: boolean;\r\n }\r\n\r\n export interface IItem {\r\n id: string;\r\n Caption: string;\r\n Children?: IItem[];\r\n Type: EType;\r\n hideChildren?: boolean;\r\n legend?: ILegend;\r\n authoringEnabled?: boolean;\r\n LabelColor?: string;\r\n renderPriority?: number;\r\n }\r\n\r\n export function CreateFromEntityId(entityId: string, typeId: string, styleId?: number): IItem {\r\n return <Item.IBruceEntity>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.BruceEntity,\r\n Caption: \"Generated Entity Menu Item\",\r\n BruceEntity: {\r\n \"EntityType.ID\": typeId,\r\n EntityId: entityId\r\n },\r\n CameraZoomSettings: [\r\n {\r\n DisplayType: MenuItemZoomControl.EDisplayType.Model3D,\r\n MaxZoom: 8000,\r\n MinZoom: 0,\r\n StyleID: styleId\r\n }\r\n ]\r\n };\r\n }\r\n\r\n export function CreateFromTypeId(typeId: string, styleId?: number): IItem {\r\n return <Item.IBruceEntities>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.BruceEntities,\r\n Caption: \"Generated Entity Type Menu Item\",\r\n BruceEntity: {\r\n \"EntityType.ID\": typeId\r\n },\r\n CameraZoomSettings: [\r\n {\r\n DisplayType: MenuItemZoomControl.EDisplayType.Model3D,\r\n MaxZoom: 8000,\r\n MinZoom: 0,\r\n StyleID: styleId\r\n }\r\n ]\r\n };\r\n }\r\n\r\n export function CreateFromTilesetId(tilesetId: string, type: Tileset.EType): IItem {\r\n if (type === Tileset.EType.Cad) {\r\n return <Item.ICadTileset>{\r\n\t id: ObjectUtils.UId(),\r\n\t Type: EType.CadTileset,\r\n Caption: \"Generated CAD Menu Item\",\r\n\t FlyTo: false,\r\n\t\t\t\ttileset: {\r\n\t\t\t\t\tTilesetID: tilesetId\r\n\t\t\t\t}\r\n };\r\n }\r\n else if (type == Tileset.EType.EntitiesSet) {\r\n return <Item.IEntitiesTileset>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.EntitiesTileset,\r\n Caption: \"Generated Entities Menu Item\",\r\n FlyTo: false,\r\n tileset: {\r\n TilesetID: tilesetId\r\n }\r\n };\r\n }\r\n else if (type == Tileset.EType.PointCloud) {\r\n return <Item.IPointcloud>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.PointCloud,\r\n Caption: \"Generated Point Cloud Menu Item\",\r\n FlyTo: false,\r\n tileset: {\r\n TilesetID: tilesetId\r\n }\r\n };\r\n }\r\n else if (type == Tileset.EType.EntitiesMap) {\r\n return <Item.IEntitiesRaster>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.EntitiesRaster,\r\n Caption: \"Generated Entities Menu Item\",\r\n tileset: {\r\n TilesetID: tilesetId\r\n }\r\n };\r\n }\r\n throw(\"Tileset type not supported.\");\r\n }\r\n\r\n export namespace Item {\r\n export interface ITileset {\r\n TilesetURL?: string;\r\n ClientAccountID?: string;\r\n TilesetID?: string;\r\n }\r\n \r\n export interface IBruceEntities extends IItem {\r\n BruceEntity: {\r\n \"EntityType.ID\": string;\r\n };\r\n CameraZoomSettings: MenuItemZoomControl.IItem[];\r\n showAllLayers: boolean;\r\n showAllLayersExcludeBelow: boolean;\r\n tagIds: number[];\r\n }\r\n \r\n export interface IBruceEntity extends IItem {\r\n BruceEntity: {\r\n \"EntityType.ID\": string;\r\n EntityId: string;\r\n };\r\n CameraZoomSettings: MenuItemZoomControl.IItem[];\r\n showAllLayers: boolean;\r\n showAllLayersExcludeBelow: boolean;\r\n tagIds: number[];\r\n }\r\n \r\n export interface IArbTileset extends IItem {\r\n FlyTo: boolean;\r\n BruceEntity?: {\r\n \"EntityType.ID\"?: string;\r\n };\r\n tileset: ITileset;\r\n StyleMapping: any[];\r\n styleId: number;\r\n }\r\n \r\n export interface ICadTileset extends IItem {\r\n FlyTo: boolean;\r\n tileset: ITileset;\r\n StyleMapping?: any[];\r\n styleId?: number;\r\n }\r\n \r\n export interface IPointcloud extends IItem {\r\n FlyTo: boolean;\r\n tileset: ITileset;\r\n }\r\n \r\n export interface IEntitiesRaster extends IItem {\r\n tileset: ITileset;\r\n }\r\n \r\n export interface IOsm extends IItem {\r\n BruceEntity?: {\r\n \"EntityType.ID\"?: string;\r\n SourceId: string;\r\n };\r\n ghostLoading: boolean;\r\n }\r\n \r\n export interface IKml extends IItem {\r\n KML: {\r\n ClientFile: {\r\n ID: string;\r\n }\r\n }\r\n }\r\n \r\n export interface IEntitiesTileset extends IItem {\r\n FlyTo: boolean;\r\n tileset: ITileset;\r\n }\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { Camera } from \"../common/camera\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { Markup } from \"../markup/markup\";\r\n\r\nexport namespace ProjectViewBookmark {\r\n export function GetCacheKey(viewId: string, bookmarkId: string): string {\r\n return `${Api.ECacheKey.ProjectViewBookmark}${Api.ECacheKey.Id}${viewId}${Api.ECacheKey.Id}${bookmarkId}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.ProjectViewBookmark;\r\n }\r\n\r\n export interface IBookmarkSettings {\r\n selectedItemIds?: string[];\r\n order?: number;\r\n hiddenEntityIds?: string[];\r\n drawnRelationEntityIDs?: string[];\r\n imagery?: any[];\r\n terrain?: string;\r\n globeColor?: string;\r\n shadows?: boolean;\r\n groundOcclusion?: boolean;\r\n ambientOcclusion?: boolean;\r\n markup?: Markup.IMarkup;\r\n cameraFrustum?: Camera.EFrustum;\r\n displayTimeline?: boolean;\r\n timelineSettings?: any;\r\n }\r\n\r\n export interface IBookmark {\r\n ID?: string;\r\n Camera?: any;\r\n \"Created.ByUser.ID\"?: string;\r\n \"Created.Date\"?: UTC.IUTC;\r\n Note?: string;\r\n Settings?: IBookmarkSettings;\r\n Title?: string;\r\n \"UI.View.ID\"?: string;\r\n DisplayOrder?: number;\r\n \"Screenshot.ClientFile.ID\"?: string;\r\n \"UI.SlideGroup.ID\"?: number;\r\n }\r\n\r\n export async function Get(api: BruceApi, viewId: string, bookmarkId: string): Promise<IBookmark> {\r\n if (!viewId || !bookmarkId) {\r\n throw(\"View ID and Bookmark ID are required.\");\r\n }\r\n const key = GetCacheKey(viewId, bookmarkId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ui.view/${viewId}/slide/${bookmarkId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, viewId: string, bookmarkId: string): Promise<void> {\r\n if (!viewId || !bookmarkId) {\r\n throw(\"View ID and Bookmark ID are required.\");\r\n }\r\n await api.DELETE(`ui.view/${viewId}/slide/${bookmarkId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(viewId, bookmarkId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi, viewId: string): Promise<IBookmark[]> {\r\n if (!viewId) {\r\n throw(\"View ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IBookmark[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`ui.view/${viewId}/slides`, Api.PrepReqParams());;\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, viewId: string, data: IBookmark): Promise<IBookmark> {\r\n if (!data?.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n if (!data?.Title) {\r\n data.Title = data.ID;\r\n }\r\n data = await api.post(`ui.view/${viewId}/slide/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(viewId, <string>data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { MenuItem } from \"./menu-item\";\r\nimport { ProjectViewTileSource } from \"./project-view-tile-source\";\r\n\r\nexport namespace ProjectView {\r\n export function GetCacheKey(viewId: string): string {\r\n return `${Api.ECacheKey.ProjectView}${Api.ECacheKey.Id}${viewId}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.ProjectView;\r\n }\r\n\r\n export interface IView {\r\n ID: string;\r\n Name: string;\r\n Description: string;\r\n Feature: string[];\r\n \"CreatedByUser.ID\": string;\r\n CreatedTime: UTC.IUTC;\r\n Settings?: IViewSettings;\r\n DefaultUISlideID: string;\r\n CreatedByUIVersion: string;\r\n }\r\n\r\n export interface IShadowSettings {\r\n IsShadowEnabled: boolean;\r\n IsShadowSoft: boolean;\r\n ShadowSampleSize: number;\r\n }\r\n\r\n export interface IViewSettings {\r\n BookmarkTransitionSpeed: number;\r\n Camera: any;\r\n CameraFrustum: number;\r\n CesiumMapSources: ProjectViewTileSource.IMapSource[];\r\n CesiumTerrainSources: ProjectViewTileSource.ITerrainSource[];\r\n ControlsSettings: any;\r\n DefaultMapTiles: string;\r\n DefaultTerrain: string;\r\n DisplayTimeline: boolean;\r\n GroundOcclusion: boolean;\r\n Extensions: any;\r\n GlobeColor: string;\r\n SelectionHighlightColor?: string;\r\n LayersMenu?: MenuItem.IItem[];\r\n OASettings?: any;\r\n LogoImage: any;\r\n LegendImage: any;\r\n IsRestricted: boolean;\r\n IsLoginRequired: boolean;\r\n TilesetBackfaceCulling: boolean;\r\n TopPanelComponents?: string[];\r\n LeftPanelComponents?: string[];\r\n PostProcessFXAA?: boolean;\r\n Shadows: boolean;\r\n Shadow: {\r\n StaticCamera: IShadowSettings;\r\n MovingCamera: IShadowSettings;\r\n }\r\n }\r\n\r\n export async function Get(api: BruceApi, viewId: string): Promise<IView> {\r\n if (!viewId) {\r\n throw(\"View ID is required.\");\r\n }\r\n const key = GetCacheKey(viewId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ui.view/${viewId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IView[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IView[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"ui.view/list\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, viewId: string): Promise<void> {\r\n if (!viewId) {\r\n throw(\"View ID is required.\");\r\n }\r\n await api.DELETE(`ui.view/${viewId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(viewId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IView): Promise<IView> {\r\n if (!data?.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n if (!data?.Name) {\r\n data.Name = data.ID;\r\n }\r\n data = await api.post(`ui.view`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, UTC } from \"../bruce-models\";\r\n\r\nexport namespace PendingAction {\r\n export interface IAction {\r\n ID: number;\r\n \"CreatedBy.Application\": string;\r\n \"Created.Time\": UTC.IUTC;\r\n \"CreatedByUser.ID\": string;\r\n Result: string;\r\n Progress: number;\r\n \"Completed.Time\": UTC.IUTC;\r\n Description: string;\r\n Status: EStatus;\r\n lastUpdated: UTC.IUTC;\r\n }\r\n\r\n export enum EStatus {\r\n InProgress = \"IN_PROGRESS\",\r\n Cancelled = \"CANCELLED\",\r\n Complete = \"COMPLETE\",\r\n Failed = \"FAILED\"\r\n }\r\n\r\n export interface IMessage {\r\n \"PendingAction.ID\": number;\r\n ID: number;\r\n \"CreatedBy.Application\": string;\r\n \"Created.Time\": UTC.IUTC;\r\n \"Message.Type\": string;\r\n Message: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, actionId: number): Promise<IAction> {\r\n if (!actionId) {\r\n throw(\"Action ID is required.\");\r\n }\r\n return api.GET(`pendingAction/${actionId}`, Api.PrepReqParams());\r\n }\r\n\r\n export async function GetRelevantList(api: BruceApi, stricter: boolean = false): Promise<IAction[]> {\r\n const data = await api.GET(`pendingActions/important?Update=${stricter}`, Api.PrepReqParams());\r\n return data.Items;\r\n }\r\n\r\n export async function GetMessages(api: BruceApi, actionId: number, order?: Api.ESortOrder, startIndex?: number, amount?: number): Promise<IMessage[]> {\r\n if (amount == null) {\r\n amount = 500;\r\n }\r\n if (startIndex == null) {\r\n startIndex = 0;\r\n }\r\n if (order == null) {\r\n order = Api.ESortOrder.Asc;\r\n }\r\n const args = `?SortOrder=${order == Api.ESortOrder.Desc ? \"DESC\" : \"ASC\"}&PageSize=${amount}&PageIndex=${startIndex}`; \r\n const data = await api.GET(`pendingAction/${actionId}/progressMessages` + args, Api.PrepReqParams());\r\n return data.Items;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\nexport namespace Style {\r\n export function GetCacheKey(id: number): string {\r\n return Api.ECacheKey.Style + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.Style;\r\n }\r\n\r\n export enum EType {\r\n Entity = \"ENTITY\",\r\n EntityRelationship = \"ENTITY_RELATIONSHIP\"\r\n }\r\n\r\n export interface IEntitySettings {\r\n pointStyle?: any;\r\n polygonStyle?: any;\r\n polylineStyle?: any;\r\n modelStyle?: any;\r\n }\r\n\r\n export interface IRelationSettings {\r\n lineColor?: any;\r\n lineWidth?: any;\r\n heightDistanceRatio?: any;\r\n duration?: any;\r\n }\r\n\r\n export type Settings = IEntitySettings | IRelationSettings;\r\n\r\n export interface IStyle {\r\n ID: number;\r\n Name: string;\r\n Settings: Settings;\r\n Type: EType;\r\n }\r\n\r\n export function GetList(api: BruceApi): Promise<IStyle[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IStyle[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"ui.entityDisplaySettings\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export function Get(api: BruceApi, id: number): Promise<IStyle> {\r\n if (!id) {\r\n throw(\"Style ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(id));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ui.entityDisplaySetting/${id}`, Api.PrepReqParams());\r\n api.Cache.Set(GetCacheKey(id), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IStyle): Promise<IStyle> {\r\n if (!data?.Name) {\r\n throw(\"Style name is required.\");\r\n }\r\n if (!data.ID) {\r\n data.ID = 0;\r\n }\r\n data = await api.POST(`ui.entityDisplaySetting/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n\r\n export async function Delete(api: BruceApi, id: number): Promise<void> {\r\n if (!id) {\r\n throw(\"Style ID is required.\");\r\n }\r\n await api.DELETE(`ui.entityDisplaySetting/${id}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(id));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n}","import { Bounds } from \"../common/bounds\";\r\n\r\nexport namespace TilesetEntitiesMapTiles {\r\n export enum ETileSize {\r\n IMG_256 = 256,\r\n IMG_512 = 512,\r\n IMG_1024 = 1024,\r\n IMG_2048 = 2048\r\n }\r\n\r\n export interface ISettings {\r\n imageSize: ETileSize;\r\n levelMin: number;\r\n levelMax: number;\r\n entityTypeId: string;\r\n styleId: number;\r\n filter: any;\r\n boundaries: Bounds.IBounds;\r\n }\r\n}","export namespace TilesetExtMapTiles {\r\n export enum EType {\r\n TileMapImagery = \"TileMapImagery\",\r\n OpenStreetMapImagery = \"OpenStreetMapImagery\",\r\n MapBoxImagery = \"MapBoxImagery\",\r\n CesiumIon = \"CesiumIon\"\r\n }\r\n\r\n export interface ISettings {\r\n url?: string;\r\n mapType?: EType;\r\n sourceExt?: string;\r\n ionId?: number;\r\n mapBoxStyleId?: string;\r\n mapBoxAccount?: string;\r\n mapBoxKey?: string;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, Tileset } from \"../bruce-models\";\r\n\r\nexport namespace Ucs {\r\n export function GetCacheKey(id: number, expandUsage: boolean): string {\r\n return Api.ECacheKey.Ucs + Api.ECacheKey.Id + id + Api.ECacheKey + expandUsage;\r\n }\r\n \r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.Ucs;\r\n }\r\n\r\n export interface IUcs {\r\n id?: number;\r\n name?: string;\r\n description?: string;\r\n pivot?: any;\r\n epsg?: number;\r\n state?: EState;\r\n latitude?: number;\r\n longitude?: number;\r\n altitude?: number;\r\n tilesets?: Tileset.ITileset[];\r\n }\r\n\r\n export enum EState {\r\n Undefined = \"undef\",\r\n Prepared = \"ready\"\r\n }\r\n\r\n export async function Get(api: BruceApi, ucsId: number, expandUsage?: boolean): Promise<IUcs> {\r\n if (!ucsId) {\r\n throw(\"UCS ID is required.\");\r\n }\r\n if (!expandUsage) {\r\n expandUsage = false;\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(ucsId, expandUsage));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ucs/${ucsId}`);\r\n api.Cache.Set(GetCacheKey(ucsId, expandUsage), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, ucsId: number): Promise<void> {\r\n if (!ucsId) {\r\n throw(\"UCS ID is required.\");\r\n }\r\n await api.DELETE(`ucs/${ucsId}`);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Ucs + Api.ECacheKey.Id + ucsId);\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IUcs[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(\"ucs\");\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IUcs): Promise<IUcs> {\r\n if (!data?.name) {\r\n throw(\"UCS name is required.\");\r\n }\r\n data = await api.post(`ucs${ !data.id ? \"\" : \"/\" + data.id }`, data);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Ucs + Api.ECacheKey.Id + data.id);\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","export namespace Permission {\r\n export type Perm = EPerm | string;\r\n\r\n export enum EPerm {\r\n ADMIN = \"ADMIN\",\r\n LOGIN = \"LOGIN\",\r\n DELETE_ENTITY_TYPE = \"DELETE_ENTITY_TYPE\",\r\n CREATE_ENTITY_TYPE = \"CREATE_ENTITY_TYPE\",\r\n UPDATE_ENTITY_TYPE = \"UPDATE_ENTITY_TYPE\"\r\n }\r\n\r\n export enum EPermPrefix {\r\n ACCESS_PROJECT_VIEW = \"UIVIEW_\",\r\n MANAGE_PROJECT_VIEW_BOOKMARKS = \"UIVIEW_MANAGE_BOOKMARKS_\",\r\n ACCESS_TILESET = \"TILESET_\"\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { IdmApi } from \"../api/idm-api\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { Permission } from \"./permission\";\r\nimport { User } from \"./user\";\r\n\r\nexport namespace Session {\r\n function GetCacheKey(sessionId: string): string {\r\n return `${Api.ECacheKey.Session}${Api.ECacheKey.Id}${sessionId}`;\r\n }\r\n\r\n export interface ISession {\r\n AccessPermissions: IAccessPermissions;\r\n HypeportalAccessPermisssions?: IAccessPermissions;\r\n \"ClientAccount.ID\": string;\r\n ID: string;\r\n IP: string;\r\n LastAccessTime: UTC.IUTC;\r\n User: User.IUser;\r\n }\r\n\r\n export interface IAccessPermissions {\r\n EnabledFeatures?: Permission.Perm[];\r\n UserGroups?: string[];\r\n }\r\n\r\n export async function Get(api: IdmApi, sessionId: string): Promise<ISession> {\r\n if (!sessionId) {\r\n throw(\"Session ID is required.\");\r\n }\r\n const key = GetCacheKey(sessionId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`session/${sessionId}`);\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Login(api: IdmApi, username: string, password: string, accountId?: string): Promise<ISession> {\r\n if (!username || !password) {\r\n throw(\"Username and password are required.\");\r\n }\r\n const data: ISession = await api.POST(\"login\", {\r\n account: accountId ? accountId : \"\",\r\n login: username,\r\n password: password\r\n });\r\n const ssid = data?.ID;\r\n api.SetSessionId(ssid);\r\n api.Cache.Remove(GetCacheKey(ssid));\r\n return data;\r\n }\r\n\r\n export async function Logout(api: IdmApi): Promise<void> {\r\n const ssid = api.GetSessionId();\r\n if (ssid) {\r\n await api.POST(\"logout\", null);\r\n api.SetSessionId(<any>null);\r\n api.Cache.Remove(GetCacheKey(ssid));\r\n }\r\n }\r\n\r\n export function IsPermEnabled(session: ISession, perm: string): boolean {\r\n if (!perm) {\r\n throw(\"Perm is required.\");\r\n }\r\n perm = perm.toLocaleUpperCase();\r\n const accessPerms = session.AccessPermissions?.EnabledFeatures ?? [];\r\n return accessPerms.findIndex(x => x.toLocaleUpperCase() == perm) > -1;\r\n }\r\n\r\n export function IsSuperPermEnabled(session: ISession, perm: string): boolean {\r\n if (!perm) {\r\n throw(\"Perm is required.\");\r\n }\r\n perm = perm.toLocaleUpperCase();\r\n const accessPerms = session.HypeportalAccessPermisssions?.EnabledFeatures ?? [];\r\n return accessPerms.findIndex(x => x.toLocaleUpperCase() == perm) > -1;\r\n }\r\n\r\n export function IsAccountAdmin(session: ISession): boolean {\r\n return IsPermEnabled(session, Permission.EPerm.ADMIN);\r\n }\r\n\r\n export function IsSuperAdmin(session: ISession): boolean {\r\n return IsSuperPermEnabled(session, Permission.EPerm.ADMIN);\r\n }\r\n}","import { IdmApi, Permission } from \"../bruce-models\";\r\nimport { User } from \"./user\";\r\n\r\nexport namespace UserGroup {\r\n export interface IGroup {\r\n \"ClientAccount.ID\"?: string;\r\n \"Features\": Permission.Perm[];\r\n \"ID\": string;\r\n \"Name\"?: string;\r\n }\r\n\r\n export async function GetByName(api: IdmApi, accountId: string, name: string): Promise<IGroup> {\r\n if (!name || !accountId) {\r\n throw(\"Name and AccountID are required.\");\r\n }\r\n return api.GET(`account/${accountId}/userGroupByName/${name}`);\r\n }\r\n\r\n export async function GetUsers(api: IdmApi, accountId: string, id: string): Promise<User.IUser[]> {\r\n if (!accountId || !id) {\r\n throw(\"AccountID and ID are required.\");\r\n }\r\n const data = await api.GET(`userGroup/${accountId}/${id}/users`);\r\n return data.Items;\r\n }\r\n\r\n export async function GetListByPerm(api: IdmApi, accountId: string, perm: Permission.Perm): Promise<IGroup[]> {\r\n if (!accountId || !perm) {\r\n throw(\"AccountID and Perm are required.\");\r\n }\r\n const data = await api.GET(`userGroupsByFeature/${accountId}/${perm}`);\r\n return data.Items;\r\n }\r\n\r\n export async function GetList(api: IdmApi, accountId: string): Promise<IGroup[]> {\r\n if (!accountId) {\r\n throw(\"AccountID is required.\");\r\n }\r\n const data = await api.GET(`userGroups/${accountId}`);\r\n return data.Items;\r\n }\r\n\r\n export async function Delete(api: IdmApi, accountId: string, id: string): Promise<void> {\r\n if (!accountId || !id) {\r\n throw(\"AccountID and ID are required.\");\r\n }\r\n return api.DELETE(`account/${accountId}/userGroupID/${id}`);\r\n }\r\n\r\n export async function Update(api: IdmApi, data: IGroup): Promise<IGroup> {\r\n if (!data.Name || !data[\"ClientAccount.ID\"]) {\r\n throw(\"User group name and client account ID are required.\");\r\n }\r\n data = await api.POST(`userGroup${data.ID ? (\"/\" + data.ID) : \"\"}`, data);\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { IdmApi } from \"../api/idm-api\";\r\nimport { UserGroup } from \"./user-group\";\r\n\r\nexport namespace User {\r\n export function GetCacheKey(userId: string, accountId: string): string {\r\n return Api.ECacheKey.User + Api.ECacheKey.Id + userId + Api.ECacheKey.Id + accountId;\r\n }\r\n\r\n export interface IUser {\r\n AccessPermissions?: IAccessPermission[];\r\n Email?: string;\r\n Login?: string;\r\n FullName?: string;\r\n ID?: string;\r\n IsActivated?: boolean;\r\n IsDisabled?: boolean;\r\n IsPasswordChangeRequired?: boolean;\r\n Mobile?: string;\r\n Password?: string;\r\n Settings?: any;\r\n Type?: EType;\r\n }\r\n\r\n export enum EType {\r\n User = \"LOGIN_USER\",\r\n AccessToken = \"ACCESS_TOKEN\"\r\n }\r\n\r\n export interface IAccessPermission {\r\n \"ClientAccount.ID\": string;\r\n \"UserGroup.ID\"?: string[];\r\n \"UserGroups\"?: UserGroup.IGroup[];\r\n }\r\n\r\n export async function Get(api: IdmApi, id: string, accountId: string): Promise<IUser> {\r\n if (!id) {\r\n throw(\"ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(id, accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = await api.GET(`user/${id}`);\r\n api.Cache.Set(GetCacheKey(id, accountId), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: IdmApi, data: IUser): Promise<IUser> {\r\n if (!data?.ID || !data?.Type) {\r\n throw(\"ID and Type are required.\");\r\n }\r\n data = await api.POST(`user/${data.ID}`, data);\r\n api.Cache.RemoveByContains(Api.ECacheKey.User + Api.ECacheKey.Id + data.ID);\r\n if (data.Type == EType.AccessToken) {\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.AccessToken + Api.ECacheKey.Account);\r\n }\r\n else if (data.Type == EType.User) {\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.User + Api.ECacheKey.Account);\r\n }\r\n return data;\r\n }\r\n\r\n export namespace LoginUser {\r\n export function GetListCacheKey(accountId: string): string {\r\n return Api.ECacheKey.User + Api.ECacheKey.Account + Api.ECacheKey.Id + accountId;\r\n }\r\n\r\n export async function GetList(api: IdmApi, accountId: string, exclusive?: boolean): Promise<IUser[]> {\r\n if (!accountId) {\r\n throw(\"Client account ID is required.\");\r\n }\r\n if (!exclusive) {\r\n exclusive = false;\r\n }\r\n const cacheData = exclusive ? null : api.Cache.Get(GetListCacheKey(accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IUser[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`users?clientAccountID=${accountId}${exclusive ? \"&allExcludingClientAccount=true\" : \"\" }`);\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n req.then((users) => {\r\n for (let i = 0; i < users.length; i++) {\r\n api.Cache.Set(GetCacheKey(<string>users[i].ID, accountId), users[i]);\r\n }\r\n });\r\n if (!exclusive) {\r\n api.Cache.Set(GetListCacheKey(accountId), req, Api.DEFAULT_CACHE_DURATION);\r\n }\r\n return req;\r\n }\r\n }\r\n\r\n export namespace AccessToken {\r\n export function GetListCacheKey(accountId: string): string {\r\n return Api.ECacheKey.AccessToken + Api.ECacheKey.Account + Api.ECacheKey.Id + accountId;\r\n }\r\n\r\n export async function GetList(api: IdmApi, accountId: string): Promise<IUser[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey(accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IUser[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"usersByClientAccount/accessTokens\");\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n req.then((users) => {\r\n for (let i = 0; i < users.length; i++) {\r\n api.Cache.Set(GetCacheKey(<string>users[i].ID, accountId), users[i]);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(accountId), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: IdmApi, id: string): Promise<void> {\r\n await api.DELETE(`accessToken/${id}`);\r\n api.Cache.RemoveByContains(Api.ECacheKey.User + Api.ECacheKey.Id + id);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.AccessToken + Api.ECacheKey.Account);\r\n }\r\n\r\n export async function Create(api: IdmApi, data: IUser): Promise<IUser> {\r\n if (!data) {\r\n data = {};\r\n }\r\n if (data.Type == EType.User) {\r\n throw(\"User type is not allowed.\");\r\n }\r\n if (!data.Type) {\r\n data.Type = EType.AccessToken;\r\n }\r\n data = await api.POST(\"accessToken\", data);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.AccessToken + Api.ECacheKey.Account);\r\n return data;\r\n }\r\n }\r\n}","export namespace EncryptUtils {\r\n // https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript\r\n export function Cyrb53Hash(str: string, seed: number = 0): number {\r\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\r\n for (let i = 0, ch; i < str.length; i++) {\r\n ch = str.charCodeAt(i);\r\n h1 = Math.imul(h1 ^ ch, 2654435761);\r\n h2 = Math.imul(h2 ^ ch, 1597334677);\r\n }\r\n h1 = Math.imul(h1 ^ (h1>>>16), 2246822507) ^ Math.imul(h2 ^ (h2>>>13), 3266489909);\r\n h2 = Math.imul(h2 ^ (h2>>>16), 2246822507) ^ Math.imul(h1 ^ (h1>>>13), 3266489909);\r\n return (4294967296 * (2097151 & h2) + (h1>>>0));\r\n }\r\n}","export namespace MathUtils {\r\n export function Round(num: number, decimals: number = 0): number {\r\n if (decimals <= 0) {\r\n return Math.round(num);\r\n }\r\n let tmp = \"1\";\r\n for (let i = 0; i < decimals; i++) {\r\n tmp += \"0\";\r\n }\r\n const d = parseFloat(tmp);\r\n return Math.round((num + Number.EPSILON) * d) / d;\r\n }\r\n\r\n export function RandInt(min: number, max: number): number {\r\n if (min == max) {\r\n return min;\r\n }\r\n else if (min > max) {\r\n throw(\"Min is greater than max.\");\r\n }\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}"],"names":["Api","AnnDocument","Color","ObjectUtils","Entity","PathUtils","Calculator","Camera","Cartes","Carto","Geometry","UTC","EntityAttachmentType","EntityAttachment","EntityComment","EntityLink","EntityLod","EntityRelationType","EntityRelation","EntitySource","EntityTag","EntityType","EntityGlobe","EntityFilterGetter","ClientFile","ProgramKey","MenuItemZoomControl","Tileset","MenuItem","ProjectViewBookmark","ProjectView","PendingAction","Style","TilesetEntitiesMapTiles","TilesetExtMapTiles","Ucs","Permission","Session","UserGroup","User","EncryptUtils","MathUtils"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bruce-models.umd.js","sources":["../src/api/api.ts","../src/ann-document/ann-document.ts","../src/common/cache.ts","../src/api/abstract-api.ts","../src/api/bruce-api.ts","../src/api/cam-api.ts","../src/api/idm-api.ts","../src/common/color.ts","../src/util/object-utils.ts","../src/entity/entity.ts","../src/util/path-utils.ts","../src/common/bruce-variable.ts","../src/calculator/calculator.ts","../src/common/bruce-event.ts","../src/common/camera.ts","../src/common/cartes.ts","../src/common/carto.ts","../src/common/delay-queue.ts","../src/common/geometry.ts","../src/common/utc.ts","../src/entity/entity-attachment-type.ts","../src/entity/entity-attachment.ts","../src/entity/entity-comment.ts","../src/entity/entity-link.ts","../src/entity/entity-lod.ts","../src/entity/entity-relation-type.ts","../src/entity/entity-relation.ts","../src/entity/entity-source.ts","../src/entity/entity-tag.ts","../src/entity/entity-type.ts","../src/entity/getters/entity-globe.ts","../src/entity/getters/entity-filter-getter.ts","../src/entity/getters/entity-loaded-getter.ts","../src/file/client-file.ts","../src/program-key/program-key.ts","../src/project/menu-item-zoom-control.ts","../src/tileset/tileset.ts","../src/project/menu-item.ts","../src/project/project-view-bookmark.ts","../src/project/project-view.ts","../src/server/pending-action.ts","../src/style/style.ts","../src/tileset/tileset-entities-map-tiles.ts","../src/tileset/tileset-ext-map-tiles.ts","../src/ucs/ucs.ts","../src/user/permission.ts","../src/user/session.ts","../src/user/user-group.ts","../src/user/user.ts","../src/util/encrypt-utils.ts","../src/util/math-utils.ts"],"sourcesContent":["import { IDictionary } from \"../common/dictionary\";\r\n\r\nexport namespace Api {\r\n export enum ECacheKey {\r\n Id = \":\",\r\n Entity = \"entity\",\r\n EntityType = \"entitytype\",\r\n ProjectView = \"projectview\",\r\n ProjectViewBookmark = \"pvbookmark\",\r\n Tileset = \"tileset\",\r\n ClientFile = \"clientfile\",\r\n Session = \"session\",\r\n PendingAction = \"pendingaction\",\r\n EntitySource = \"entitysource\",\r\n ProgramKey = \"programkey\",\r\n Ucs = \"ucs\",\r\n Tag = \"tag\",\r\n Attachment = \"attachment\",\r\n Comment = \"comment\",\r\n Link = \"link\",\r\n AnnDocument = \"anndocument\",\r\n AttachmentType = \"attachmenttype\",\r\n Relation = \"relation\",\r\n RelationType = \"relationtype\",\r\n Lod = \"lod\",\r\n Style = \"style\",\r\n PublishTileset = \"publishtileset\",\r\n User = \"user\",\r\n AccessToken = \"accesstoken\",\r\n UserGroup = \"usergroup\",\r\n Account = \"account\"\r\n }\r\n export const DEFAULT_CACHE_DURATION = 60 * 5; // 5 minutes.\r\n\r\n export const TEMPLATE_ACCOUNT_ID = \"template\";\r\n export const ACCESS_TOKEN_HEADER = \"X-Access-Token\";\r\n \r\n export function Encode(str: string): string {\r\n return encodeURIComponent(str.replace(/\\+/g, \"%2B\").replace(/\\./g, \"%2E\"));\r\n }\r\n\r\n export interface IList<T> {\r\n Items: T[];\r\n TotalCount?: number;\r\n }\r\n\r\n export enum ESortOrder {\r\n None = 0,\r\n Asc = 1,\r\n Desc = -1\r\n }\r\n\r\n export enum EEncoding {\r\n UTF8 = \"UTF-8\",\r\n UTF16 = \"UTF-16BE\"\r\n }\r\n\r\n export enum EEnv {\r\n DEV = \"DEV\",\r\n STG = \"STG\",\r\n UAT = \"UAT\",\r\n PROD = \"PROD\"\r\n }\r\n export type Env = EEnv | string;\r\n\r\n export interface IReqParams {\r\n headers?: IDictionary<string>;\r\n response?: {\r\n encoding?: EEncoding | string;\r\n }\r\n }\r\n\r\n export function PrepReqParams(): IReqParams {\r\n return { response: { encoding: Api.EEncoding.UTF16 } };\r\n }\r\n\r\n export interface IUploadReqParams extends IReqParams {\r\n onProgress?: (e: ProgressEvent) => void\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\ntype Type = AnnDocument.EType | string;\r\n\r\nexport namespace AnnDocument {\r\n export function GetCacheKey(id: number) {\r\n return `${Api.ECacheKey.AnnDocument}${Api.ECacheKey.Id}${id}`;\r\n }\r\n\r\n export function GetListCacheKey(type: Type) {\r\n return Api.ECacheKey.AnnDocument + type;\r\n }\r\n\r\n export interface IDocument {\r\n ID?: number;\r\n Type: Type;\r\n Name: string;\r\n \"ClientFile.ID\": string;\r\n Settings: any;\r\n }\r\n\r\n export enum EType {\r\n SVG = \"SVG\"\r\n }\r\n\r\n export async function Get(api: BruceApi, docId: number): Promise<IDocument> {\r\n if (!docId) {\r\n throw(\"Doc ID is required.\");\r\n }\r\n const key = GetCacheKey(docId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`documentView/${docId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi, type: Type): Promise<IDocument[]> {\r\n if (!type) {\r\n type = \"\";\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(type));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IDocument[]> = new Promise(async (res, rej) => {\r\n try {\r\n const url = \"documentViews\" + (type ? \"?type=\" + type : \"\");\r\n const data = await api.GET(url, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(type), req);\r\n return req;\r\n }\r\n}","import { IDictionary } from \"./dictionary\";\r\n\r\nclass CacheItem {\r\n public Id: string;\r\n public Data: any;\r\n public Duration: number;\r\n private _created: Date;\r\n\r\n\r\n constructor(id: string, data: any, duration: number) {\r\n this.Id = id;\r\n this.Data = data;\r\n this.Duration = duration;\r\n this._created = duration > -1 ? new Date() : <any>null;\r\n }\r\n\r\n public IsExpired(): boolean {\r\n if (this._created == null) {\r\n return false;\r\n }\r\n return (new Date().getTime() - this._created.getTime()) / 1000 > this.Duration;\r\n }\r\n}\r\n\r\ntype Key = string | number;\r\n\r\nexport class CacheControl<T> {\r\n private data: IDictionary<CacheItem> = {};\r\n\r\n\r\n public Set(id: Key, data: T, duration: number = -1): void {\r\n this.data[id + \"\"] = new CacheItem(id + \"\", data, duration);\r\n }\r\n\r\n public Get(id: Key): T {\r\n const item = this.data[id + \"\"];\r\n if (item == null) {\r\n return <any>null;\r\n }\r\n if (item.IsExpired()) {\r\n delete this.data[id + \"\"];\r\n return <any>null;\r\n }\r\n return item.Data;\r\n }\r\n\r\n public Clear(): void {\r\n this.data = {};\r\n }\r\n\r\n public Remove(id: Key): void {\r\n delete this.data[id + \"\"];\r\n }\r\n\r\n public RemoveByStartsWith(text: string): void {\r\n for (const key in this.data) {\r\n if (key.startsWith(text)) {\r\n delete this.data[key];\r\n }\r\n }\r\n }\r\n\r\n public RemoveByContains(text: string): void {\r\n for (const key in this.data) {\r\n if (key.includes(text)) {\r\n delete this.data[key];\r\n }\r\n }\r\n }\r\n\r\n public GetKeys(): string[] {\r\n return Object.keys(this.data);\r\n }\r\n\r\n public GetValues(): T[] {\r\n const values: T[] = [];\r\n for (const key in this.data) {\r\n const data = this.Get(key);\r\n if (data != null) {\r\n values.push(data);\r\n }\r\n }\r\n return values;\r\n }\r\n}","import { CacheControl } from \"../common/cache\";\r\nimport { Api } from \"./api\";\r\n\r\nasync function parseResult(data: Response, encoding?: string): Promise<any> {\r\n if (data.status == 200) {\r\n if (encoding) {\r\n const buffer = await data.arrayBuffer();\r\n return JSON.parse(new TextDecoder(encoding).decode(buffer));\r\n }\r\n else {\r\n return data.json();\r\n }\r\n }\r\n else {\r\n const error = await data.json();\r\n throw(error);\r\n }\r\n}\r\n\r\nexport class AbstractApi {\r\n private ssidHeader: string;\r\n private ssid: string = \"\";\r\n public Cache: CacheControl<any> = new CacheControl<any>();\r\n\r\n\r\n constructor(ssidHeader: string) {\r\n this.ssidHeader = ssidHeader;\r\n }\r\n\r\n public GetSessionId(): string {\r\n return this.ssid;\r\n }\r\n\r\n public SetSessionId(value: string): void {\r\n this.ssid = value;\r\n }\r\n\r\n public GetSessionHeader(): string {\r\n return this.ssidHeader;\r\n }\r\n\r\n public SetSessionHeader(value: string): void {\r\n this.ssidHeader = value;\r\n }\r\n\r\n public async get(url: string, params?: Api.IReqParams): Promise<any> {\r\n if (!params) {\r\n params = {};\r\n }\r\n params.headers = params.headers || {};\r\n params.headers = {\r\n \"Content-Type\": \"application/json;\",\r\n [this.ssidHeader]: this.ssid,\r\n ...params.headers\r\n };\r\n const res = await fetch(url, {\r\n headers: params.headers\r\n });\r\n return parseResult(res, params.response?.encoding);\r\n }\r\n\r\n public async delete(url: string, params?: Api.IReqParams): Promise<any> {\r\n if (!params) {\r\n params = {};\r\n }\r\n params.headers = params.headers || {};\r\n params.headers = {\r\n \"Content-Type\": \"application/json;\",\r\n [this.ssidHeader]: this.ssid,\r\n ...params.headers\r\n };\r\n const res = await fetch(url, {\r\n headers: params.headers,\r\n method: \"DELETE\"\r\n });\r\n return parseResult(res, params.response?.encoding);\r\n }\r\n\r\n public async post(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n if (!params) {\r\n params = {};\r\n }\r\n params.headers = params.headers || {};\r\n params.headers = {\r\n \"Content-Type\": \"application/json;\",\r\n [this.ssidHeader]: this.ssid,\r\n ...params.headers\r\n };\r\n if (!data) {\r\n data = {};\r\n }\r\n if (typeof data != \"string\") {\r\n data = JSON.stringify(data);\r\n }\r\n const res = await fetch(url, {\r\n headers: params.headers,\r\n method: \"POST\",\r\n body: data\r\n });\r\n return parseResult(res, params.response?.encoding);\r\n }\r\n\r\n public async upload(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return new Promise((res, rej) => {\r\n try {\r\n let xhr = new XMLHttpRequest();\r\n const headers = <any>params?.headers;\r\n if (headers) {\r\n const headerKeys = Object.keys(headers);\r\n for (let i = 0; i < headerKeys.length; i++) {\r\n const key = headerKeys[i];\r\n const value = headers[key];\r\n xhr.setRequestHeader(key, value);\r\n }\r\n }\r\n if (params?.onProgress) {\r\n if (xhr.upload) {\r\n xhr.upload.onprogress = params?.onProgress;\r\n }\r\n else {\r\n xhr.addEventListener(\"progress\", params?.onProgress);\r\n }\r\n }\r\n xhr.onreadystatechange = (e) => {\r\n if (xhr.readyState == 4) {\r\n if (xhr.status >= 400) {\r\n rej(e);\r\n }\r\n else {\r\n try {\r\n res(JSON.parse(xhr.responseText));\r\n }\r\n catch (e) {\r\n console.error(e, xhr.responseText);\r\n res(xhr.responseText);\r\n }\r\n }\r\n }\r\n };\r\n xhr.open(\"POST\", url, true);\r\n if (this.ssid) {\r\n xhr.setRequestHeader(this.ssidHeader, this.ssid);\r\n }\r\n const formData = new FormData();\r\n formData.append(\"file\", blob);\r\n xhr.send(formData);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n }\r\n}","import { AbstractApi } from \"./abstract-api\";\r\nimport { Api } from \"./api\";\r\n\r\nexport class BruceApi extends AbstractApi {\r\n private baseUrl: string = \"\";\r\n private accountId: string;\r\n private env: Api.Env;\r\n\r\n\r\n constructor(accountId: string, env?: Api.Env) {\r\n super(\"x-sessionid\");\r\n this.accountId = accountId;\r\n this.env = env ?? Api.EEnv.PROD;\r\n this.setBaseUrl();\r\n }\r\n\r\n private setBaseUrl(): void {\r\n const prefix = `https://${this.accountId}.api.nextspace`;\r\n let url: string;\r\n const env = this.env.toUpperCase();\r\n switch (env) {\r\n case Api.EEnv.DEV:\r\n url = prefix + \"-dev.net/\";\r\n break;\r\n case Api.EEnv.STG:\r\n url = prefix + \"-stg.net/\";\r\n break;\r\n case Api.EEnv.UAT:\r\n url = prefix + \"-uat.net/\";\r\n break;\r\n case Api.EEnv.PROD:\r\n url = prefix + \".host/\";\r\n break;\r\n default:\r\n throw(\"Specified Environment is not valid. SuppliedEnv=\" + env);\r\n }\r\n this.baseUrl = url;\r\n }\r\n\r\n public GetBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n public async GET(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.get(this.baseUrl + url, params);\r\n }\r\n\r\n public async DELETE(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.delete(this.baseUrl + url, params);\r\n }\r\n\r\n public async POST(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n return this.post(this.baseUrl + url, data, params);\r\n }\r\n\r\n public async UPLOAD(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return this.upload(this.baseUrl + url, blob, params);\r\n }\r\n}","import { AbstractApi } from \"./abstract-api\";\r\nimport { Api } from \"./api\";\r\n\r\nexport class CamApi extends AbstractApi {\r\n private baseUrl: string = \"\";\r\n private env: Api.Env;\r\n\r\n\r\n constructor(env?: Api.Env) {\r\n super(\"SSID\");\r\n this.env = env ?? Api.EEnv.PROD;\r\n this.setBaseUrl();\r\n }\r\n\r\n private setBaseUrl(): void {\r\n const prefix = \"https://cam.nextspace\";\r\n let url: string;\r\n const env = this.env.toUpperCase();\r\n switch (env) {\r\n case Api.EEnv.DEV:\r\n url = prefix + \"-dev.net/\";\r\n break;\r\n case Api.EEnv.STG:\r\n url = prefix + \"-stg.net/\";\r\n break;\r\n case Api.EEnv.UAT:\r\n url = prefix + \"-uat.net/\";\r\n break;\r\n case Api.EEnv.PROD:\r\n url = prefix + \".host/\";\r\n break;\r\n default:\r\n throw(\"Specified Environment is not valid. SuppliedEnv=\" + env);\r\n }\r\n this.baseUrl = url;\r\n }\r\n\r\n public GetBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n public async GET(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.get(this.baseUrl + url, params);\r\n }\r\n\r\n public async DELETE(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.delete(this.baseUrl + url, params);\r\n }\r\n\r\n public async POST(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n return this.post(this.baseUrl + url, data, params);\r\n }\r\n\r\n public async UPLOAD(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return this.upload(this.baseUrl + url, blob, params);\r\n }\r\n}","import { AbstractApi } from \"./abstract-api\";\r\nimport { Api } from \"./api\";\r\n\r\nexport class IdmApi extends AbstractApi {\r\n private baseUrl: string = \"\";\r\n private env: Api.Env;\r\n\r\n\r\n constructor(env?: Api.Env) {\r\n super(\"SSID\");\r\n this.env = env ?? Api.EEnv.PROD;\r\n this.setBaseUrl();\r\n }\r\n\r\n private setBaseUrl(): void {\r\n const prefix = \"https://idm.nextspace\";\r\n let url: string;\r\n const env = this.env.toUpperCase();\r\n switch (env) {\r\n case Api.EEnv.DEV:\r\n url = prefix + \"-dev.net/\";\r\n break;\r\n case Api.EEnv.STG:\r\n url = prefix + \"-stg.net/\";\r\n break;\r\n case Api.EEnv.UAT:\r\n url = prefix + \"-uat.net/\";\r\n break;\r\n case Api.EEnv.PROD:\r\n url = prefix + \".host/\";\r\n break;\r\n default:\r\n throw(\"Specified Environment is not valid. SuppliedEnv1=\" + env);\r\n }\r\n this.baseUrl = url;\r\n }\r\n\r\n public GetBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n public async GET(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.get(this.baseUrl + url, params);\r\n }\r\n\r\n public async DELETE(url: string, params?: Api.IReqParams): Promise<any> {\r\n return this.delete(this.baseUrl + url, params);\r\n }\r\n\r\n public async POST(url: string, data: any, params?: Api.IReqParams): Promise<any> {\r\n return this.post(this.baseUrl + url, data, params);\r\n }\r\n\r\n public async UPLOAD(url: string, blob: Blob, params?: Api.IUploadReqParams): Promise<any> {\r\n return this.upload(this.baseUrl + url, blob, params);\r\n }\r\n}","export namespace Color {\r\n export interface IColor {\r\n // Max: 255, Min: 0.\r\n red: number;\r\n green: number;\r\n blue: number;\r\n // Max: 1, Min: 0.\r\n alpha: number ;\r\n }\r\n\r\n export enum EBlendMode {\r\n HIGHLIGHT,\r\n REPLACE,\r\n MIX\r\n }\r\n\r\n export interface IBlendSettings {\r\n blendMode?: EBlendMode;\r\n // 1 = 100% new color. 0 = original color.\r\n blendPercent?: number;\r\n }\r\n\r\n export function RandomColor(): IColor {\r\n // https://stackoverflow.com/a/7352887\r\n const brightness = 4;\r\n const rgb = [Math.random() * 256, Math.random() * 256, Math.random() * 256];\r\n const mix = [brightness * 51, brightness * 51, brightness * 51];\r\n const mixedrgb = [rgb[0] + mix[0], rgb[1] + mix[1], rgb[2] + mix[2]].map(function(x){\r\n return Math.round(x / 2.0);\r\n });\r\n const str = \"rgba(\" + mixedrgb.join(\",\") + \",0.9\" + \")\";\r\n return ColorFromStr(str);\r\n }\r\n\r\n export function ColorFromStr(str: string): IColor {\r\n let r,g,b,a;\r\n const rgba = /^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([^\\)]+)\\s*)?\\)$/.exec(str);\r\n if (rgba) {\r\n r = parseInt(rgba[1]);\r\n g = parseInt(rgba[2]);\r\n b = parseInt(rgba[3]);\r\n a = rgba[4] != null ? parseFloat(rgba[4]) : 1;\r\n return {\r\n red: r,\r\n green: g,\r\n blue: b,\r\n alpha: a\r\n }\r\n }\r\n if (str.charAt(0) == \"#\") {\r\n str = str.substring(1);\r\n }\r\n if (str.length == 6) {\r\n // rgb.\r\n const parsed = /^(.{2})(.{2})(.{2})/.exec(str);\r\n if (!parsed) {\r\n return <any>null;\r\n }\r\n r = parseInt(parsed[1], 16);\r\n g = parseInt(parsed[2], 16);\r\n b = parseInt(parsed[3], 16);\r\n a = 1;\r\n }\r\n else if (str.length == 8) {\r\n // rgba.\r\n const parsed = /^(.{2})(.{2})(.{2})(.{2})/.exec(str);\r\n if (!parsed) {\r\n return <any>null;\r\n }\r\n r = parseInt(parsed[1], 16);\r\n g = parseInt(parsed[2], 16);\r\n b = parseInt(parsed[3], 16);\r\n a = parseInt(parsed[4], 16);\r\n if (a != 0) {\r\n a = a/255;\r\n }\r\n }\r\n else {\r\n return <any>null;\r\n }\r\n if (a == null) {\r\n a = 1;\r\n }\r\n return {\r\n red: r,\r\n blue: b,\r\n green: g,\r\n alpha: a\r\n }\r\n }\r\n}","export namespace ObjectUtils {\r\n export function UId(): string {\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\r\n const r = Math.random() * 16 | 0, v = c == \"x\" ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { Bounds } from \"../common/bounds\";\r\nimport { Carto } from \"../common/carto\";\r\nimport { Geometry } from \"../common/geometry\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { Transform } from \"../common/transform\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { IDictionary } from \"../bruce-models\";\r\n\r\ntype _any = any;\r\nexport namespace Entity {\r\n export function GetCacheKey(entityId: string): string {\r\n return `${Api.ECacheKey.Entity}${Api.ECacheKey.Id}${entityId}`;\r\n }\r\n\r\n export interface IEntity extends _any {\r\n Bruce: {\r\n \"CreatedBy.User.ID\"?: string;\r\n CreatedTime?: UTC.IUTC;\r\n \"EntityType.ID\": string;\r\n ID?: string;\r\n \"Layer.ID\"?: number[];\r\n };\r\n location?: Carto.ICarto;\r\n boundaries?: Bounds.IBounds;\r\n transform?: Transform.ITransform;\r\n position?: number[][];\r\n geometry?: Geometry.IGeometry;\r\n }\r\n\r\n export async function Get(api: BruceApi, entityId: string): Promise<IEntity> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const key = GetCacheKey(entityId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entity/${entityId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetListByIds(api: BruceApi, entityIds: string[]): Promise<IEntity[]> {\r\n if (!entityIds.length) {\r\n throw(\"Entity IDs are required.\");\r\n }\r\n const reqs: Promise<IEntity>[] = [];\r\n const reqIds: string[] = [];\r\n for (let i = 0; i < entityIds.length; i++) {\r\n const entityId = entityIds[i];\r\n const key = GetCacheKey(entityId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n reqs.push(cacheData);\r\n }\r\n else {\r\n reqIds.push(entityId);\r\n }\r\n }\r\n const reqData = {\r\n Filter: {\r\n ID: {\r\n in: reqIds\r\n }\r\n },\r\n PageSize: reqIds.length\r\n };\r\n const req: Promise<Api.IList<IEntity>> = api.POST(\"entities\", reqData, Api.PrepReqParams());\r\n for (let i = 0; i < reqIds.length; i++) {\r\n const entityId = reqIds[i];\r\n const key = GetCacheKey(entityId);\r\n const prom: Promise<IEntity> = new Promise(async (res) => {\r\n try {\r\n const data = await req;\r\n const item = <IEntity>data.Items.find(x => x.Bruce.ID == entityId);\r\n res(item);\r\n }\r\n catch (e) {\r\n // No showing error as we don't want to see it 2000 times.\r\n }\r\n res(<any>null);\r\n });\r\n api.Cache.Set(key, prom, Api.DEFAULT_CACHE_DURATION);\r\n reqs.push(prom);\r\n }\r\n return (await Promise.all(reqs)).filter(x => !!x);\r\n }\r\n\r\n export async function Delete(api: BruceApi, entityId: string): Promise<void> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n await api.DELETE(`entity/${entityId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(entityId));\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IEntity, override: boolean): Promise<IEntity> {\r\n if (!data?.Bruce?.[\"EntityType.ID\"]) {\r\n throw(\"Entity Type ID is required.\");\r\n }\r\n if (!data?.Bruce?.ID) {\r\n data.Bruce = {\r\n ...data.Bruce,\r\n ID: ObjectUtils.UId()\r\n };\r\n }\r\n const reqUrl = `entity/${data.Bruce.ID}/?dataoverride=${override}&BruceEntityType=${data.Bruce[\"EntityType.ID\"]}`;\r\n data = await api.POST(reqUrl, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(<string>data.Bruce.ID));\r\n return data;\r\n }\r\n\r\n export function RemoveTag(data: IEntity, tagId: number): void {\r\n const tags = data.Bruce[\"Layer.ID\"] ?? [];\r\n const index = tags.indexOf(tagId);\r\n if (index >= 0) {\r\n tags.splice(index, 1);\r\n data.Bruce[\"Layer.ID\"] = tags;\r\n }\r\n }\r\n\r\n export function AddTag(data: IEntity, tagId: number): void {\r\n const tags = data.Bruce[\"Layer.ID\"] ?? [];\r\n if (!tags.includes(tagId)) {\r\n tags.push(tagId);\r\n data.Bruce[\"Layer.ID\"] = tags;\r\n }\r\n }\r\n\r\n export function SetValue(data: IEntity, path: string[], value: any): void {\r\n let curData = data;\r\n for (let i = 0; i < path.length; i++) {\r\n const step = path[i];\r\n if (!curData[step] || typeof curData[step] != \"object\") {\r\n curData[step] = {};\r\n }\r\n if (i >= path.length - 1) {\r\n curData[step] = value;\r\n break;\r\n }\r\n curData = curData[step];\r\n }\r\n }\r\n\r\n export function GetValue(data: IEntity, path: string[]): any {\r\n let curData = data;\r\n for (let i = 0; i < path.length; i++) {\r\n const step = path[i];\r\n if (!curData[step]) {\r\n return null;\r\n }\r\n if (i >= path.length - 1) {\r\n return curData[step];\r\n }\r\n curData = curData[step];\r\n }\r\n return null;\r\n }\r\n\r\n export namespace Filter {\r\n export namespace V1 {\r\n export interface IFilter {\r\n orderBy?: any;\r\n entityTypeId?: string;\r\n layerIds?: number[];\r\n bounds?: Bounds.IReqBounds;\r\n pageSize?: number;\r\n pageIndex?: number;\r\n lodCategoryId?: string;\r\n sortOrder?: Api.ESortOrder;\r\n entityTypeConditions?: IDictionary<any>;\r\n }\r\n\r\n export async function GetList(api: BruceApi, filter: IFilter): Promise<IEntity[]> {\r\n if (!filter?.entityTypeId) {\r\n throw(\"Entity Type ID is required.\");\r\n }\r\n \r\n let requestFilter: any = {};\r\n if (filter.entityTypeConditions) {\r\n requestFilter = {\r\n ...filter.entityTypeConditions \r\n };\r\n }\r\n if (filter.layerIds != null && filter.layerIds.length > 0) {\r\n requestFilter[\"Bruce.Layer.ID\"] = {\r\n equals: filter.layerIds \r\n };\r\n }\r\n if (filter.bounds) {\r\n requestFilter[\"geometry\"] = {\r\n \"intersects\": [\r\n filter.bounds.south, \r\n filter.bounds.north, \r\n filter.bounds.west, \r\n filter.bounds.east\r\n ] \r\n };\r\n }\r\n let url = \"entities\" +\r\n \r\n // Page size and index.\r\n `?PageSize=${filter.pageSize}&PageIndex=${filter.pageIndex}` +\r\n \r\n // Entity type id.\r\n (filter.entityTypeId ? `&BruceEntityType=${filter.entityTypeId}` : \"\") +\r\n \r\n // Lod.\r\n (filter.lodCategoryId ? \"&LODType=\" + filter.lodCategoryId : \"\") +\r\n \r\n // Attribute filter.\r\n (!requestFilter ? \"\" : \"&Filter=\" + Api.Encode(JSON.stringify(requestFilter))) +\r\n \r\n // Order by attribute + sort order.\r\n (!filter.orderBy ? \"\" : \"&OrderBy=\" + Api.Encode(JSON.stringify(filter.orderBy))) +\r\n (filter.sortOrder ? `&SortOrder=${filter.sortOrder == Api.ESortOrder.Asc ? \"ASC\" : \"DESC\"}` : \"\");\r\n \r\n const data = await api.GET(url, Api.PrepReqParams());\r\n const entities = data.Items;\r\n for (let i = 0; i < entities.length; i++) {\r\n const entity = entities[i];\r\n const id = entity.Bruce.ID;\r\n api.Cache.Set(GetCacheKey(id), entity, Api.DEFAULT_CACHE_DURATION);\r\n }\r\n return entities;\r\n }\r\n }\r\n\r\n // TODO: Helpers for constructing the filter.\r\n }\r\n}","export namespace PathUtils {\r\n export function Parse(str: string): string[] {\r\n if (!str) {\r\n return [];\r\n }\r\n const broken: string[] = str.split(\"\\\"/\\\"\");\r\n if (broken.length > 0) {\r\n let top = broken[0];\r\n if (top.length > 0) {\r\n if (top.charAt(0) == \"\\\"\") {\r\n top = top.substring(1);\r\n }\r\n broken[0] = top;\r\n }\r\n const endIndex = broken.length - 1;\r\n let bot = broken[endIndex];\r\n if (bot.length > 0) {\r\n if (bot.charAt(bot.length - 1) == \"\\\"\") {\r\n bot = bot.substring(0, bot.length - 1);\r\n }\r\n broken[endIndex] = bot;\r\n }\r\n }\r\n return broken;\r\n }\r\n\r\n export function Wrap(path: string[]): string {\r\n let tmp: string = \"\\\"\";\r\n for (let i = 0; i < path.length; i++) {\r\n let section = path[i];\r\n tmp += section;\r\n if (i < path.length - 1) {\r\n tmp += \"\\\"/\\\"\";\r\n }\r\n }\r\n tmp += \"\\\"\";\r\n return tmp;\r\n }\r\n\r\n export function ParseLegacy(str: string): string[] {\r\n const broken: string[] = str.split(\".\");\r\n for (let i = 0; i < broken.length; i++) {\r\n let piece = broken[0];\r\n if (piece.charAt(0) == \"\\\"\") {\r\n piece = broken[0] = piece.substring(1);\r\n }\r\n if (piece.charAt(piece.length - 1) == \"\\\"\") {\r\n broken[0] = piece.substring(0, piece.length - 1);\r\n }\r\n }\r\n return broken;\r\n }\r\n}","import { Entity } from \"../entity/entity\";\r\nimport { PathUtils } from \"../util/path-utils\";\r\n\r\nfunction getVariable(str: string): { text: string, path: string } {\r\n const start = str.indexOf(\"${\");\r\n if (start > -1) {\r\n const end = str.indexOf(\"}\");\r\n if (end > -1) {\r\n if (start < end) {\r\n return { path: str.substring(start + 2, end), text: str.substring(start, end) };\r\n }\r\n }\r\n }\r\n return <any>null;\r\n}\r\n\r\nexport namespace BruceVariable {\r\n export function SwapValues(str: string, data: Entity.IEntity, legacyParse?: boolean): string {\r\n if (!legacyParse) {\r\n legacyParse = false;\r\n }\r\n while (true) {\r\n const variable = getVariable(str);\r\n if (variable) {\r\n const path = legacyParse ? PathUtils.ParseLegacy(variable.path) : PathUtils.Parse(variable.path);\r\n let value = \"\";\r\n if (path.length > 0) {\r\n value = Entity.GetValue(data, path);\r\n }\r\n str = str.replace(variable.text, value);\r\n } \r\n else {\r\n break;\r\n }\r\n }\r\n return str;\r\n }\r\n}","import { Color } from \"../common/color\";\r\nimport { Entity } from \"../entity/entity\";\r\nimport { BruceVariable } from \"../common/bruce-variable\";\r\nimport { PathUtils } from \"../util/path-utils\";\r\n\r\nexport namespace Calculator {\r\n export enum EValueType {\r\n Color,\r\n Input,\r\n Gradient,\r\n Mapping,\r\n TagColor,\r\n RandomColor\r\n }\r\n\r\n export interface IMappingOption {\r\n fieldValue: string;\r\n appliedValue: string;\r\n }\r\n\r\n export interface IMappingValue {\r\n field: string;\r\n values: IMappingOption[];\r\n }\r\n\r\n export interface IGradientPoint {\r\n position: number;\r\n color: string;\r\n }\r\n\r\n export interface IGradientValue {\r\n field: string;\r\n min: number;\r\n max: number;\r\n points: IGradientPoint[];\r\n }\r\n\r\n export interface IField {\r\n value: IGradientValue | IMappingValue | string | number;\r\n type: EValueType;\r\n }\r\n\r\n export function GetValue(fields: IField[], entity: Entity.IEntity, tags: any[]): string | number | Color.IColor {\r\n if (!tags) {\r\n tags = [];\r\n }\r\n if (!entity) {\r\n entity = <any>{};\r\n }\r\n for (let i = 0; i < fields.length; i++) {\r\n const field = fields[i];\r\n let value: any;\r\n switch (field.type) {\r\n case EValueType.Color:\r\n value = <string>field.value;\r\n break;\r\n case EValueType.Gradient:\r\n value = GetGradientValue(<IGradientValue>field.value, entity);\r\n break;\r\n case EValueType.Input:\r\n value = GetInputValue(<string>field.value, entity);\r\n break;\r\n case EValueType.Mapping:\r\n value = GetMappingValue(<IMappingValue>field.value, entity);\r\n break;\r\n case EValueType.RandomColor:\r\n value = Color.RandomColor();\r\n break;\r\n case EValueType.TagColor:\r\n for (let i = 0; i < tags.length; i++) {\r\n const tag = tags[i];\r\n if (tag.Color) {\r\n value = Color.ColorFromStr(tag.Color);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n if (!value || value == 0) {\r\n return value;\r\n }\r\n }\r\n return <any>null;\r\n }\r\n\r\n export function GetMappingValue(value: IMappingValue, entity: Entity.IEntity): string | number {\r\n const attrPath: string[] = PathUtils.Parse(value.field);\r\n const eValue: number = +Entity.GetValue(entity, attrPath);\r\n for (let i = 0; i < value.values.length; i++) {\r\n const option = value.values[i];\r\n const mapValue = option.fieldValue;\r\n if (+mapValue == eValue) {\r\n return option.appliedValue;\r\n }\r\n const mapSplit = mapValue.split(\"-\");\r\n if (mapSplit.length == 2) {\r\n const min = mapSplit[0];\r\n const max = mapSplit[1];\r\n if (min != \"\") {\r\n if (eValue < +min) {\r\n continue;\r\n }\r\n }\r\n if (max != \"\") {\r\n if (eValue > +max) {\r\n continue;\r\n }\r\n }\r\n if (min == \"\" && max == \"\") {\r\n continue;\r\n }\r\n return option.appliedValue;\r\n }\r\n }\r\n return <any>null;\r\n }\r\n\r\n export function GetGradientValue(value: IGradientValue, entity: Entity.IEntity): Color.IColor {\r\n const attrPath: string[] = PathUtils.Parse(value.field);\r\n let eValue: any = Entity.GetValue(entity, attrPath);\r\n eValue = Math.min(Math.max(eValue, value.min), value.max);\r\n if (eValue < value.points[0].position) {\r\n return Color.ColorFromStr(value.points[0].color);\r\n }\r\n for (let i = 0; i < value.points.length - 1; i++) {\r\n const pointA = value.points[i];\r\n const pointB = value.points[i+1];\r\n\r\n if (eValue >= pointA.position && eValue <= pointB.position) {\r\n if (pointA.position == pointB.position) {\r\n return Color.ColorFromStr(pointA.color);\r\n }\r\n const distance = (eValue - pointA.position)/(pointB.position - pointA.position);\r\n const colorA = Color.ColorFromStr(pointA.color);\r\n const colorB = Color.ColorFromStr(pointB.color);\r\n return {\r\n red: colorA.red + (colorB.red - colorA.red) * distance,\r\n green: colorA.green + (colorB.green - colorA.green) * distance,\r\n blue: colorA.blue + (colorB.blue - colorA.blue) * distance,\r\n alpha: colorA.alpha + (colorB.alpha - colorA.alpha) * distance\r\n }\r\n }\r\n }\r\n return Color.ColorFromStr(value.points[value.points.length - 1].color);\r\n }\r\n\r\n export function GetInputValue(value: string, entity: Entity.IEntity): string | number {\r\n if (typeof value == \"string\") {\r\n try {\r\n value = BruceVariable.SwapValues(value, entity);\r\n return eval(value);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n return <any>value;\r\n }\r\n}","interface IBruceEventCallback {\r\n _id: number;\r\n removeCallback: () => void;\r\n callback: (data: any) => void;\r\n}\r\n\r\nexport class BruceEvent<TArgs> {\r\n // Counter to help differentiate subscriptions.\r\n private _counter: number = 0;\r\n\r\n // Record of all callback subscriptions for this event.\r\n private callbacks: IBruceEventCallback[] = [];\r\n\r\n\r\n public Subscribe(callback: (data: TArgs) => void): (() => void) {\r\n let id = this._counter++;\r\n let newBruceEventCallback: IBruceEventCallback = {\r\n \t_id: id,\r\n \tremoveCallback: () => {\r\n \t\tthis.Unsubscribe(id);\r\n \t},\r\n \tcallback: callback\r\n };\r\n this.callbacks.push(newBruceEventCallback);\r\n return newBruceEventCallback.removeCallback;\r\n }\r\n\r\n public Unsubscribe(id: number): void {\r\n let index = this.callbacks.findIndex(x => x._id == id);\r\n if (index > -1) {\r\n this.callbacks.splice(index, 1);\r\n }\r\n }\r\n\r\n public Trigger(data?: TArgs): void {\r\n let callbacks = this.callbacks;\r\n for (let i = 0; i < callbacks.length; i++) {\r\n let callback = callbacks[i];\r\n if (callback.callback) {\r\n callback.callback(data);\r\n }\r\n }\r\n }\r\n\r\n public Clear(): void {\r\n this.callbacks = [];\r\n }\r\n}","export namespace Camera {\r\n export enum EFrustum {\r\n Perspective,\r\n Orthographic\r\n }\r\n}","export namespace Cartes {\r\n export interface ICartes2 {\r\n x: number;\r\n y: number;\r\n }\r\n\r\n export interface ICartes3 extends ICartes2 {\r\n z: number;\r\n }\r\n\r\n export function ValidateCartes2(cartes: ICartes2): boolean {\r\n if (!cartes) {\r\n return false;\r\n }\r\n else if (!cartes.x && cartes.x != 0) {\r\n return false;\r\n }\r\n else if (!cartes.y && cartes.y != 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n export function ValidateCartes3(cartes: ICartes3): boolean {\r\n if (!ValidateCartes2(cartes)) {\r\n return false;\r\n }\r\n else if (!cartes.z && cartes.z != 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n export function IsEqualCartes2(a: ICartes2, b: ICartes2): boolean {\r\n if (a.x != b.x) {\r\n return false;\r\n }\r\n else if (a.y != b.y) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n export function IsEqualCartes3(a: ICartes3, b: ICartes3): boolean {\r\n if (!IsEqualCartes2(a, b)) {\r\n return false;\r\n }\r\n else if (a.z != b.z) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}","export namespace Carto {\r\n export interface ICarto {\r\n latitude: number;\r\n longitude: number;\r\n altitude: number;\r\n }\r\n\r\n export function ValidateCarto(carto: ICarto): boolean {\r\n if (!carto) {\r\n return false;\r\n }\r\n else if (!carto.longitude && carto.longitude != 0) {\r\n return false;\r\n }\r\n else if (!carto.latitude && carto.latitude != 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n export function IsEqual(a: ICarto, b: ICarto): boolean {\r\n if (a.longitude != b.longitude) {\r\n return false;\r\n }\r\n else if (a.latitude != b.latitude) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}","export class DelayQueue {\r\n // The callback is the method we want to control queue for.\r\n private callback: () => void;\r\n\r\n // Millisecond delay.\r\n public delay: number = 200;\r\n\r\n // Date-time stamp for the last callback call.\r\n private lastCallTime: number = <any>null;\r\n\r\n // The delay timeout for calling update.\r\n private delayTimeout: any;\r\n\r\n\r\n constructor(callback: () => void, delay: number = 200) {\r\n this.callback = callback;\r\n this.delay = delay;\r\n }\r\n\r\n public Call(force: boolean = false): void {\r\n if (this.lastCallTime == null) {\r\n force = true;\r\n }\r\n if (force) {\r\n let endDate = new Date().getTime();\r\n this.doCall(endDate);\r\n }\r\n else {\r\n const endDate = new Date().getTime();\r\n const seconds = (endDate - this.lastCallTime) / 1000;\r\n const delay = this.delay / 1000;\r\n if (seconds > delay) {\r\n this.doCall(endDate);\r\n }\r\n else if (this.delayTimeout == null) {\r\n const diff = (delay - seconds) * 1000;\r\n this.delayTimeout = setTimeout(() => {\r\n this.delayTimeout = null;\r\n this.Call();\r\n }, diff + 0.02);\r\n }\r\n }\r\n }\r\n\r\n private doCall(endDate: number): void {\r\n if (this.delayTimeout != null) {\r\n clearTimeout(this.delayTimeout);\r\n this.delayTimeout = null;\r\n }\r\n this.lastCallTime = endDate;\r\n this.callback();\r\n }\r\n\r\n public Dispose(): void {\r\n if (this.delayTimeout != null) {\r\n clearTimeout(this.delayTimeout);\r\n this.delayTimeout = null;\r\n }\r\n }\r\n}","import { Carto } from \"./carto\";\r\n\r\nexport namespace Geometry {\r\n export interface IGeometry {\r\n Polygon?: any[];\r\n MultiGeometry?: IGeometry[];\r\n Point?: string;\r\n LineString?: string;\r\n MultiSurface?: string;\r\n }\r\n\r\n export function LineStrFromPoints(points: Carto.ICarto[]): string {\r\n if (!points.length) {\r\n throw(\"points is empty.\");\r\n }\r\n let carto: Carto.ICarto = points[0];\r\n let lineString = `${carto.longitude},${carto.latitude}` + (carto.altitude != null ? `,${carto.altitude}` : \"\");\r\n for (let i = 1; i < points.length; i++) {\r\n carto = points[i];\r\n lineString += ` ${carto.longitude},${carto.latitude}` + (carto.altitude != null ? `,${carto.altitude}` : \"\");\r\n }\r\n return lineString;\r\n }\r\n\r\n export function RemoveRepeatPoints(positions: Carto.ICarto[]): Carto.ICarto[] {\r\n const filteredList = [];\r\n for (let i = 0; i < positions.length; i++) {\r\n const pos = positions[i];\r\n const lastPos = filteredList.length > 0 ? filteredList[filteredList.length - 1] : null;\r\n if (!lastPos || (pos.latitude != lastPos.latitude || pos.longitude != lastPos.longitude || pos.altitude != lastPos.altitude)) {\r\n filteredList.push(pos); \r\n }\r\n }\r\n return filteredList;\r\n }\r\n\r\n export function ParsePoints(data: string): Carto.ICarto[] {\r\n data = data.replace(/[^\\d.,-\\s]/g, \"\");\r\n\r\n let splitterCoordinates = \" \";\r\n let splitterAxis = \",\";\r\n const commaIndex = data.indexOf(\",\");\r\n const spaceIndex = data.indexOf(\" \");\r\n if ((spaceIndex > -1 && commaIndex > spaceIndex) || commaIndex <= -1) {\r\n splitterCoordinates = \",\";\r\n splitterAxis = \" \";\r\n }\r\n\r\n let points = data.trim().split(splitterCoordinates);\r\n points = points.filter(a => a != \"\");\r\n\r\n const result: Carto.ICarto[] = [];\r\n for (let i = 0; i < points.length; i++) {\r\n const pointData = points[i];\r\n const coords = pointData.trim().split(splitterAxis);\r\n if (coords.length == 2 || coords.length == 3) {\r\n const longitude = +coords[0];\r\n const latitude = +coords[1];\r\n const altitude = coords.length >= 3 ? +coords[2] : 0;\r\n if (longitude != null && latitude != null) {\r\n result.push({\r\n altitude: altitude,\r\n latitude: latitude,\r\n longitude: longitude\r\n });\r\n }\r\n else {\r\n console.warn(\"Invalid point data detected.\", pointData);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n export function ParseGeometry(geometry: any): IGeometry {\r\n if (typeof geometry == \"string\") {\r\n let positions: Carto.ICarto[] = [];\r\n const geometryParsed: string[] = (geometry || \"\").split(\";\");\r\n for (let i = 0; i < geometryParsed.length; i++) {\r\n const data = geometryParsed[i];\r\n const points = ParsePoints(data);\r\n if (points && points.length > 0) {\r\n positions = positions.concat(points);\r\n }\r\n }\r\n positions = RemoveRepeatPoints(positions);\r\n const newGeometry: IGeometry = {};\r\n if (positions.length > 0) {\r\n const topPoint = positions[0];\r\n newGeometry.Point = `${topPoint.latitude},${topPoint.longitude}` + (topPoint.altitude != null ? `,${topPoint.altitude}` : \"\");\r\n if (positions.length > 1) {\r\n newGeometry.Polygon = [{ Facing: \"out\", LinearRing: LineStrFromPoints(positions) }];\r\n }\r\n if (positions.length > 2) {\r\n newGeometry.LineString = LineStrFromPoints(positions);\r\n }\r\n }\r\n return newGeometry;\r\n }\r\n return geometry;\r\n }\r\n}","export namespace UTC {\r\n export enum EMonth {\r\n January = 1,\r\n February = 2,\r\n March = 3,\r\n April = 4,\r\n May = 5,\r\n June = 6,\r\n July = 7,\r\n August = 8,\r\n September = 9,\r\n October = 10,\r\n November = 11,\r\n December = 12\r\n }\r\n\r\n export interface IUTC {\r\n d: number;\r\n hh: number;\r\n m: EMonth | number;\r\n mm: number;\r\n ss: number;\r\n y: number;\r\n }\r\n\r\n export function ToDate(utc: IUTC): Date {\r\n return new Date(utc.y, utc.m - 1, utc.d, utc.hh, utc.mm, utc.ss, 0);\r\n }\r\n\r\n export function FromDate(date: Date): IUTC {\r\n return {\r\n y: date.getUTCFullYear(),\r\n m: date.getUTCMonth() + 1,\r\n d: date.getUTCDate(),\r\n hh: date.getUTCHours(),\r\n mm: date.getUTCMinutes(),\r\n ss: date.getUTCSeconds()\r\n };\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\n\r\ntype Type = EntityAttachmentType.EType | string;\r\n\r\nexport namespace EntityAttachmentType {\r\n export function GetCacheKey(id: Type): string {\r\n return Api.ECacheKey.AttachmentType + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.AttachmentType;\r\n }\r\n\r\n export interface IType {\r\n Description: string;\r\n ID: string | EType;\r\n Name: string;\r\n }\r\n\r\n export enum EType {\r\n Photo = \"photo\",\r\n Document = \"document\",\r\n Video = \"video\",\r\n Drawing = \"drawing\",\r\n Model = \"model\"\r\n }\r\n\r\n export async function Delete(api: BruceApi, id: Type): Promise<void> {\r\n if (!id) {\r\n throw(\"Type ID is required.\");\r\n }\r\n await api.DELETE(`entityAttachmentType/${id}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(id));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IType): Promise<IType> {\r\n if (!data?.ID) {\r\n throw(\"Type ID is required.\");\r\n }\r\n data = await api.post(`entityAttachmentType/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IType[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IType[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entityAttachmentTypes`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\nimport { ClientFile } from \"../file/client-file\";\r\nimport { EntityAttachmentType } from \"./entity-attachment-type\";\r\n\r\ntype Type = EntityAttachmentType.EType | string;\r\n\r\nexport namespace EntityAttachment {\r\n export function GetCacheKey(entityId: string, typeId: Type, fileId: string): string {\r\n return Api.ECacheKey.Attachment + Api.ECacheKey.Id + entityId + Api.ECacheKey.Id + typeId + Api.ECacheKey.Id + fileId;\r\n }\r\n\r\n export function GetListCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Attachment + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export interface IAttachment {\r\n ClientFile: ClientFile.IClientFile;\r\n Group: string;\r\n \"ClientFile.ID\": string;\r\n DisplayOrder: number;\r\n \"Entity.ID\": string;\r\n \"EntityAttachmentType.ID\": Type;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IAttachment): Promise<IAttachment> {\r\n if (!data?.[\"Entity.ID\"] || !data?.[\"EntityAttachmentType.ID\"] || !data?.[\"ClientFile.ID\"]) {\r\n throw(\"Entity ID, Type ID, and File ID are required.\");\r\n }\r\n const url = `entity/${data[\"Entity.ID\"]}/attachment/${data[\"EntityAttachmentType.ID\"]}/${data[\"ClientFile.ID\"]}`;\r\n data = await api.POST(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data[\"Entity.ID\"], data[\"EntityAttachmentType.ID\"], data[\"ClientFile.ID\"]));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(data[\"Entity.ID\"]));\r\n return data;\r\n }\r\n\r\n export async function UpdateOrder(api: BruceApi, entityId: string, typeId: Type, fileIds: string[]): Promise<void> {\r\n if (!entityId || !typeId || !fileIds?.length) {\r\n throw(\"Entity ID, Type ID, and File IDs are required.\");\r\n }\r\n const reqData = {\r\n \t\"DisplayOrder.Start\": 0,\r\n \t\"ClientFile.ID\": fileIds\r\n };\r\n await api.POST(`entity/${entityId}/attachments/${typeId}/setOrder`, reqData, Api.PrepReqParams());\r\n for (let i = 0; i < fileIds.length; i++) {\r\n api.Cache.Remove(GetCacheKey(entityId, typeId, fileIds[i]));\r\n }\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(entityId));\r\n }\r\n\r\n export async function Delete(api: BruceApi, data: IAttachment): Promise<void> {\r\n if (!data?.[\"Entity.ID\"] || !data?.[\"EntityAttachmentType.ID\"] || !data?.[\"ClientFile.ID\"]) {\r\n throw(\"Entity ID, Type ID, and File ID are required.\");\r\n }\r\n const reqData = {\r\n \t\"ClientFile.ID\": [data[\"ClientFile.ID\"]]\r\n };\r\n await api.POST(`entity/${data[\"Entity.ID\"]}/attachments/${data[\"EntityAttachmentType.ID\"]}/delete`, reqData, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data[\"Entity.ID\"], data[\"EntityAttachmentType.ID\"], data[\"ClientFile.ID\"]));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(data[\"Entity.ID\"]));\r\n }\r\n\r\n export async function DeleteByFileIds(api: BruceApi, entityId: string, typeId: Type, fileIds: string[]): Promise<void> {\r\n if (!entityId || !typeId || !fileIds?.length) {\r\n throw(\"Entity ID, Type ID, and File IDs are required.\");\r\n }\r\n const reqData = {\r\n \t\"ClientFile.ID\": fileIds\r\n };\r\n await api.POST(`entity/${entityId}/attachments/${typeId}/delete`, reqData, Api.PrepReqParams());\r\n for (let i = 0; i < fileIds.length; i++) {\r\n api.Cache.Remove(GetCacheKey(entityId, typeId, fileIds[i]));\r\n }\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(entityId));\r\n }\r\n\r\n export async function GetListByEntityId(api: BruceApi, entityId: string): Promise<IAttachment[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IAttachment[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entity/${entityId}/attachments`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityId), req);\r\n return req;\r\n }\r\n\r\n export async function Upload(api: BruceApi, file: Blob, entityId: string, typeId: Type, onProgress?: (e: ProgressEvent) => void): Promise<IAttachment> {\r\n if (!entityId || !typeId || !file) {\r\n throw(\"Entity ID, Type ID, and File are required.\");\r\n }\r\n const url = `entity/${entityId}/attachment/${typeId}`;\r\n const req = await api.UPLOAD(url, file, { onProgress: onProgress });\r\n api.Cache.RemoveByStartsWith(GetListCacheKey(entityId));\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, UTC } from \"../bruce-models\";\r\n\r\nexport namespace EntityComment {\r\n export function GetCacheKey(id: number): string {\r\n return Api.ECacheKey.Comment + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Comment + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export interface IComment {\r\n Comment: string;\r\n \"Created.ByUser.ID\": string;\r\n \"Created.Date\": UTC.IUTC;\r\n ID: number;\r\n RepliesCount: number;\r\n \"ReplyTo.Comment.ID\": number;\r\n \"TargetObject.ID\": string;\r\n \"TargetObject.Type\": string;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IComment): Promise<IComment> {\r\n if (!data?.[\"TargetObject.ID\"]) {\r\n throw(\"TargetObject.ID (entity id) is required.\");\r\n }\r\n const url = `entity/${data[\"TargetObject.ID\"]}/comment` + (data.ID == null ? \"\" : \"/\" + data.ID);\r\n data = await api.POST(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Comment + Api.ECacheKey.Entity);\r\n return data;\r\n }\r\n\r\n export async function Delete(api: BruceApi, entityId: string, commentId: number): Promise<void> {\r\n if (!commentId) {\r\n throw(\"Comment ID is required.\");\r\n }\r\n await api.DELETE(`entity/${entityId}/comment/${commentId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(commentId));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Comment + Api.ECacheKey.Entity);\r\n }\r\n\r\n export async function GetListByEntityId(api: BruceApi, entityId: string): Promise<IComment[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IComment[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entity/${entityId}/comments`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityId), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\nexport namespace EntityLink {\r\n export function GetCacheKey(id: number): string {\r\n return Api.ECacheKey.Link + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Link + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export interface ILink {\r\n DisplayName: string;\r\n ID?: number;\r\n \"Entity.ID\": string;\r\n URL: string;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: ILink): Promise<ILink> {\r\n if (!data?.[\"Entity.ID\"]) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const url = `entity/${data[\"Entity.ID\"]}/link` + (data.ID == null ? \"\" : \"/\" + data.ID);\r\n data = await api.POST(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(<number>data.ID));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Link + Api.ECacheKey.Entity);\r\n return data;\r\n }\r\n\r\n export async function Delete(api: BruceApi, entityId: string, linkId: number): Promise<void> {\r\n if (!linkId) {\r\n throw(\"Link ID is required.\");\r\n }\r\n await api.DELETE(`entity/${entityId}/link/${linkId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(linkId));\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Link + Api.ECacheKey.Entity);\r\n }\r\n\r\n export async function GetListByEntityId(api: BruceApi, entityId: string): Promise<ILink[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<ILink[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`entity/${entityId}/links`, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityId), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\nexport namespace EntityLod {\r\n export function GetCacheKey(url: string) {\r\n return Api.ECacheKey.Lod + Api.ECacheKey.Id + url;\r\n }\r\n\r\n export interface ILod {\r\n \"ClientFile.ID\": string;\r\n \"Entity.ID\": string;\r\n \"LODCategory.Key\": string;\r\n Level: number;\r\n }\r\n\r\n export function GetUrl(api: BruceApi, entityId: string, categoryId: string, level: number, strict?: boolean): string {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n if (!categoryId) {\r\n categoryId = \"GLB\";\r\n }\r\n if (!level) {\r\n level = 0;\r\n }\r\n let url: string = api.GetBaseUrl() + `entity/${entityId}/lod/${categoryId}/${level}`;\r\n if (strict) {\r\n url = url + \"?strict=true\";\r\n }\r\n return url;\r\n }\r\n\r\n export async function GetUrlFileId(api: BruceApi, url: string): Promise<string> {\r\n if (!url) {\r\n throw(\"Url is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(url));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<string> = new Promise(async (res, rej) => {\r\n try {\r\n const record: ILod = await api.get(url, Api.PrepReqParams());\r\n res(record[\"ClientFile.ID\"]);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetCacheKey(url), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetLods(api: BruceApi, params: Filter.IListParams): Promise<Filter.IListResItem[]> {\r\n if (!params?.Items?.length) {\r\n throw(\"Items are required.\");\r\n }\r\n const data = await api.POST(\"entity/getlods\", params);\r\n return data.Items;\r\n }\r\n\r\n export namespace Filter {\r\n export interface IListParamsItem {\r\n \"entityId\": string,\r\n \"categoryId\": string,\r\n \"group\"?: string,\r\n \"level\"?: number\r\n }\r\n \r\n export interface IListParams {\r\n \"strict\": boolean,\r\n \"externalSources\": boolean,\r\n \"Items\": IListParamsItem[]\r\n }\r\n \r\n export interface IListResItem {\r\n clientFileId: string;\r\n entityId: string;\r\n accountId: string;\r\n }\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\n\r\nexport namespace EntityRelationType {\r\n export function GetCacheKey(id: string): string {\r\n return Api.ECacheKey.RelationType + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.RelationType;\r\n }\r\n\r\n export interface IType {\r\n ID: string;\r\n ForwardName: string;\r\n ReverseName: string;\r\n Name: string;\r\n FlipDisplayDirection?: boolean;\r\n EntityDisplaySettingID?: string;\r\n \"Relation.EntityType.ID\"?: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, typeId: string): Promise<IType> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n const key = GetCacheKey(typeId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entityRelationType/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, typeId: string): Promise<void> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n await api.DELETE(`entityRelationType/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(typeId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IType[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IType[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"entityRelationTypes\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IType): Promise<IType> {\r\n if (!data?.ForwardName || !data?.ReverseName) {\r\n throw(\"Forward and reverse names are required.\");\r\n }\r\n if (!data.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n data = await api.post(`entityRelationType/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { Entity } from \"./entity\";\r\n\r\nexport namespace EntityRelation {\r\n export function GetCacheKey(entityA: string, entityB: string, typeId: string): string {\r\n return `${Api.ECacheKey.Relation}${Api.ECacheKey.Id}${entityA}${Api.ECacheKey.Id}${entityB}${Api.ECacheKey.Id}${typeId}`;\r\n }\r\n\r\n export function GetEntityCacheKey(entityId: string): string {\r\n return Api.ECacheKey.Relation + Api.ECacheKey.Entity + Api.ECacheKey.Id + entityId;\r\n }\r\n\r\n export function GetListCacheKey(params: IListParams): string {\r\n return Api.ECacheKey.Relation + Api.ECacheKey.RelationType + Api.ECacheKey.Id + params.typeId + Api.ECacheKey.Id + params.oneWayOnly + Api.ECacheKey.Id + params.loadEntityData;\r\n }\r\n\r\n export interface IRelation {\r\n \"Principal.Entity.ID\": string;\r\n \"Related.Entity.ID\": string;\r\n RelatedEntity?: Entity.IEntity;\r\n PrincipalEntity?: Entity.IEntity;\r\n \"Relation.Type.ID\": string;\r\n RelationType: any;\r\n \"Data.Entity.ID\"?: string;\r\n }\r\n\r\n export interface IListParams {\r\n typeId?: string;\r\n oneWayOnly?: boolean;\r\n loadEntityData?: boolean;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IRelation): Promise<IRelation> {\r\n if (!data[\"Principal.Entity.ID\"] || !data[\"Related.Entity.ID\"] || !data[\"Relation.Type.ID\"]) {\r\n throw(\"Principal Entity ID, Related Entity ID, and Relation Type ID are required.\");\r\n }\r\n const url = `entity/${data[\"Principal.Entity.ID\"]}/otherEntityID/${data[\"Related.Entity.ID\"]}/relation/${data[\"Relation.Type.ID\"]}/update`;\r\n data = await api.post(url, data, Api.PrepReqParams());\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.Id + data[\"Principal.Entity.ID\"]);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.Id + data[\"Related.Entity.ID\"]);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.RelationType + Api.ECacheKey.Id + data[\"Relation.Type.ID\"]);\r\n if (data[\"Data.Entity.ID\"]) {\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Relation + Api.ECacheKey.Entity + Api.ECacheKey.Id + data[\"Data.Entity.ID\"]);\r\n }\r\n return data;\r\n }\r\n\r\n export async function GetList(api: BruceApi, entityId: string, params: IListParams): Promise<IRelation[]> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n params = {\r\n typeId: \"\",\r\n oneWayOnly: false,\r\n loadEntityData: false,\r\n ...params\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey(params));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IRelation[]> = new Promise(async (res, rej) => {\r\n try {\r\n let url = `entity/${entityId}/relations`;\r\n if (params.typeId) {\r\n url += \"/\" + params.typeId;\r\n }\r\n url += `?Oneway=${params.oneWayOnly}&LoadInfo=${params.loadEntityData}`;\r\n const data = await api.GET(url, Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(params), req);\r\n return req;\r\n }\r\n\r\n export async function GetByDataEntityId(api: BruceApi, entityId: string): Promise<IRelation> {\r\n if (!entityId) {\r\n throw(\"Entity ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetEntityCacheKey(entityId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entity/relation/${entityId}/dataentity`, Api.PrepReqParams());\r\n api.Cache.Set(GetEntityCacheKey(entityId), req);\r\n return req;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, IDictionary } from \"../bruce-models\";\r\n\r\nexport namespace EntitySource {\r\n export function GetCacheKey(sourceId: number, sourceKey: string): string {\r\n return `${Api.ECacheKey.EntitySource}${Api.ECacheKey.Id}${sourceId}${Api.ECacheKey.Id}${sourceKey}`;\r\n }\r\n\r\n export interface ISource {\r\n \"Entity.ID\": string;\r\n \"Source.ID\": number;\r\n \"SourceRecord.Key\": string;\r\n }\r\n\r\n export async function Get(api: BruceApi, sourceId: number, sourceKey: string): Promise<ISource> {\r\n if (!sourceId || !sourceKey) {\r\n throw(\"Source ID and Source Key are required.\");\r\n }\r\n const key = GetCacheKey(sourceId, sourceKey);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entitysource/${sourceId}/${sourceKey}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetListByKeys(api: BruceApi, sourceId: number, sourceKeys: string[]): Promise<ISource[]> {\r\n if (!sourceId || !sourceKeys.length) {\r\n throw(\"Source ID and Source Keys are required.\");\r\n }\r\n const reqKeys: string[] = [];\r\n const reqs: Promise<ISource>[] = [];\r\n for (let i = 0; i < sourceKeys.length; i++) {\r\n const sourceKey = sourceKeys[i];\r\n const cacheData = api.Cache.Get(GetCacheKey(sourceId, sourceKey));\r\n if (cacheData) {\r\n reqs.push(cacheData);\r\n } \r\n else {\r\n reqKeys.push(sourceKey);\r\n }\r\n }\r\n if (reqKeys.length) {\r\n const prom: Promise<ISource[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.POST(`entitysource/${sourceId}`, { SourceRecordKeys: reqKeys }, Api.PrepReqParams());\r\n res(data);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n for (let i = 0; i < reqKeys.length; i++) {\r\n const req: Promise<ISource> = new Promise(async (rej, res) => {\r\n try {\r\n const sources = await prom;\r\n res(sources.find((s: ISource) => s[\"SourceRecord.Key\"] === reqKeys[i]));\r\n }\r\n catch (e) {\r\n rej(<any>e);\r\n }\r\n });\r\n reqs.push(req);\r\n }\r\n }\r\n return (await Promise.all(reqs)).filter(x => !!x);\r\n }\r\n\r\n export async function GetEntityIdsBySourceKeys(api: BruceApi, sourceId: number, sourceKeys: string[]): Promise<IDictionary<string>> {\r\n if (!sourceId || !sourceKeys.length) {\r\n throw(\"Source ID and Source Keys are required.\");\r\n }\r\n const result: IDictionary<string> = {};\r\n if (sourceKeys.length > 0) {\r\n const sources = await GetListByKeys(api, sourceId, sourceKeys);\r\n for (let i = 0; i < sources.length; i++) {\r\n const source = sources[i];\r\n for (let i = 0; i < sourceKeys.length; i++) {\r\n const key = sourceKeys[i];\r\n if (key == source[\"SourceRecord.Key\"]) {\r\n result[key] = source[\"Entity.ID\"];\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\n\r\nexport namespace EntityTag {\r\n export function GetCacheKey(tagId: number): string {\r\n return `${Api.ECacheKey.Tag}${Api.ECacheKey.Id}${tagId}`;\r\n }\r\n\r\n export function GetListCacheKey(entityTypeId?: string): string {\r\n if (entityTypeId) {\r\n return Api.ECacheKey.Tag + Api.ECacheKey.EntityType + Api.ECacheKey.Id + entityTypeId;\r\n }\r\n return Api.ECacheKey.Tag;\r\n }\r\n\r\n export interface ITag {\r\n ID: number;\r\n Name?: string;\r\n Description?: string;\r\n IsAccessRestricted?: boolean;\r\n \"EntityType.ID\"?: string;\r\n Color?: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, tagId: number): Promise<ITag> {\r\n if (!tagId) {\r\n throw(\"Tag ID is required.\");\r\n }\r\n const data = await GetListByIds(api, [tagId]);\r\n return data.length ? data[0] : <any>null;\r\n }\r\n\r\n export async function GetListByIds(api: BruceApi, tagIds: number[]): Promise<ITag[]> {\r\n if (!tagIds.length) {\r\n throw(\"Tag Ids are empty.\");\r\n }\r\n const reqIds: number[] = [];\r\n const reqs: Promise<ITag>[] = [];\r\n for (let i = 0; i < tagIds.length; i++) {\r\n const tagId = tagIds[i];\r\n const cacheData = api.Cache.Get(GetCacheKey(tagId));\r\n if (cacheData) {\r\n reqs.push(cacheData);\r\n } \r\n else {\r\n reqIds.push(tagId);\r\n }\r\n }\r\n if (reqIds.length) {\r\n const prom: Promise<ITag[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.POST(\"layers/get\", { layerIds: reqIds }, Api.PrepReqParams());\r\n res(data);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n for (let i = 0; i < reqIds.length; i++) {\r\n const req: Promise<ITag> = new Promise(async (rej, res) => {\r\n try {\r\n const tags = await prom;\r\n const tag = tags.find((t: ITag) => t.ID === reqIds[i]);\r\n res(tag);\r\n }\r\n catch (e) {\r\n rej(<any>e);\r\n }\r\n });\r\n reqs.push(req);\r\n }\r\n }\r\n return (await Promise.all(reqs)).filter(x => !!x);\r\n }\r\n\r\n export async function GetList(api: BruceApi, entityTypeId?: string): Promise<ITag[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey(entityTypeId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<ITag[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(entityTypeId ? `entityType/${entityTypeId}/layers` : \"layers\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(entityTypeId), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, tagId: number): Promise<void> {\r\n if (!tagId) {\r\n throw(\"Tag ID is required.\");\r\n }\r\n await api.DELETE(`layer/${tagId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(tagId));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: ITag): Promise<ITag> {\r\n if (!data?.ID) {\r\n throw(\"Tag ID is required.\");\r\n }\r\n const url = data.ID ? `layer/${data.ID}` : \"layer\";\r\n data = await api.post(url, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.RemoveByStartsWith(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { UTC } from \"../bruce-models\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\n\r\nexport namespace EntityType {\r\n export function GetCacheKey(typeId: string): string {\r\n return `${Api.ECacheKey.EntityType}${Api.ECacheKey.Id}${typeId}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.EntityType;\r\n }\r\n\r\n export interface IEntityType {\r\n ID?: string;\r\n IsDeleted?: boolean;\r\n Name: string;\r\n Description?: string;\r\n Data?: any;\r\n DataSchema?: IAttribute;\r\n DisplayNameAttributePath?: string;\r\n \"DisplaySetting.ID\"?: number;\r\n AuthoringSettings?: {\r\n enabledTools: string[];\r\n defaultTool: string;\r\n };\r\n \"LastUpdate.Time\"?: UTC.IUTC;\r\n \"Parent.EntityType.ID\"?: string;\r\n }\r\n\r\n export interface IAttribute {\r\n Key: string;\r\n Name?: string;\r\n Type?: EAttributeType;\r\n Size?: number;\r\n IsIndexed?: boolean;\r\n IsArray?: boolean;\r\n IsImportant?: boolean;\r\n Description?: string;\r\n Structure?: IAttribute[];\r\n IsFamilyAttribute?: boolean;\r\n IsFamilyAttributeDefault?: boolean;\r\n Sources?: string[];\r\n }\r\n\r\n export enum EAttributeType {\r\n String = \"String\",\r\n Double = \"Double\",\r\n Integer = \"Integer\",\r\n Datetime = \"Datetime\",\r\n Structure = \"Structure\",\r\n Geometry = \"Geometry\"\r\n }\r\n\r\n export async function Get(api: BruceApi, typeId: string): Promise<IEntityType> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n const key = GetCacheKey(typeId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`entitytype/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, typeId: string): Promise<void> {\r\n if (!typeId) {\r\n throw(\"Type ID is required.\");\r\n }\r\n await api.DELETE(`entitytype/${typeId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(typeId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IEntityType[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IEntityType[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"entitytypes\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IEntityType): Promise<IEntityType> {\r\n if (!data) {\r\n data = <any>{};\r\n }\r\n if (!data.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n if (!data.Name) {\r\n data.Name = data.ID;\r\n }\r\n data = await api.POST(`entitytype`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(<string>data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Bounds, IDictionary } from \"../../bruce-models\";\r\n\r\nclass Cell {\r\n public Fetched: boolean = false;\r\n public IsFetched: () => boolean = <any>null;\r\n public FetchPageIndex: number = 0;\r\n public Boundaries: Bounds.IBounds = <any>null;\r\n\r\n public GetBounds(): Bounds.IReqBounds {\r\n // Entity data works in -180 to 180 range.\r\n function prepareRangeForBounds(range: number): number {\r\n if (range > 180) {\r\n return range - 360;\r\n }\r\n return range;\r\n }\r\n\r\n // Add minor decimal as API crashes when giving it whole numbers.\r\n const maxLon = prepareRangeForBounds(this.Boundaries.maxLongitude) + 0.00001;\r\n const minLon = prepareRangeForBounds(this.Boundaries.minLongitude) - 0.00001;\r\n const maxLat = prepareRangeForBounds(this.Boundaries.maxLatitude) + 0.00001;\r\n const minLat = prepareRangeForBounds(this.Boundaries.minLatitude) - 0.00001;\r\n return {\r\n east: maxLon,\r\n north: maxLat,\r\n south: minLat,\r\n west: minLon\r\n };\r\n }\r\n}\r\n\r\nfunction floorValueToCellSize(size: number, value: number): number {\r\n return Math.floor(value / size) * size;\r\n}\r\n\r\nfunction getCellSizeFromHeight(height: number): number {\r\n if (height < 1000) {\r\n return 0.01;\r\n }\r\n if (height < 5000) {\r\n return 0.025;\r\n }\r\n else if (height < 10000) {\r\n return 0.05;\r\n }\r\n else if (height < 30000) {\r\n return 0.1;\r\n }\r\n else if (height < 70000) {\r\n return 0.2;\r\n }\r\n else if (height < 100000) {\r\n return 0.3;\r\n }\r\n else if (height < 150000) {\r\n return 0.4;\r\n }\r\n else if (height < 200000) {\r\n return 0.5;\r\n }\r\n else if (height < 300000) {\r\n return 0.6;\r\n }\r\n else if (height < 500000) {\r\n return 1;\r\n }\r\n return 1.5;\r\n}\r\n\r\nfunction getCell(cells: IDictionary<Cell>, cellSize: number, lon: number, maxLon: number, lat: number, maxLat: number): Cell {\r\n const id = cellSize + \"_\" + lon + \"_\" + maxLon + \"_\" + lat + \"_\" + maxLat;\r\n return cells[id];\r\n}\r\n\r\nfunction isCellFetched(cell: Cell): boolean {\r\n if (cell.Fetched) {\r\n return true;\r\n }\r\n // TODO: If all cells of the size smaller are fetched then this is fetched.\r\n // TODO: If this is a cell within a larger cell that is fetched then this is fetched.\r\n return false;\r\n}\r\n\r\nfunction getOrCreateCell(cells: IDictionary<Cell>, cellSize: number, lon: number, maxLon: number, lat: number, maxLat: number): Cell {\r\n const id = cellSize + \"_\" + lon + \"_\" + maxLon + \"_\" + lat + \"_\" + maxLat;\r\n let cell = getCell(cells, cellSize, lon, maxLon, lat, maxLat);\r\n if (!cell) {\r\n cell = cells[id] = new Cell();\r\n cell.Boundaries = <Bounds.IBounds>{\r\n minLatitude: lat,\r\n maxLatitude: maxLat,\r\n minLongitude: lon,\r\n maxLongitude: maxLon\r\n };\r\n cell.IsFetched = () => isCellFetched(cell);\r\n }\r\n return cell;\r\n}\r\n\r\nexport namespace EntityGlobe {\r\n export class Grid {\r\n private cells: IDictionary<Cell> = {};\r\n \r\n public GetCellsForView(viewRect: Bounds.IReqBounds): Cell[] {\r\n const cells: Cell[] = [];\r\n const minLat = viewRect.south;\r\n const minLon = viewRect.west;\r\n const maxLat = viewRect.north;\r\n const maxLon = viewRect.east;\r\n const MAX_CELLS = 150;\r\n const cellDegreeSize = getCellSizeFromHeight(<number>viewRect.alt);\r\n const curMinLon = floorValueToCellSize(cellDegreeSize, minLon);\r\n const curMinLat = floorValueToCellSize(cellDegreeSize, minLat);\r\n const width = (maxLon - curMinLon) / cellDegreeSize;\r\n const height = (maxLat - curMinLat) / cellDegreeSize;\r\n for (let x = 0; x < width; x++) {\r\n for (let y = 0; y < height; y++) {\r\n const lon = x * cellDegreeSize + curMinLon;\r\n const lat = y * cellDegreeSize + curMinLat;\r\n const cell = getOrCreateCell(this.cells, cellDegreeSize, lon, lon + cellDegreeSize, lat, lat + cellDegreeSize);\r\n cells.push(cell);\r\n if (cells.length > MAX_CELLS) {\r\n break;\r\n }\r\n }\r\n }\r\n return cells;\r\n }\r\n }\r\n}","import { Api } from \"../../api/api\";\r\nimport { BruceApi } from \"../../api/bruce-api\";\r\nimport { Bounds } from \"../../common/bounds\";\r\nimport { BruceEvent } from \"../../common/bruce-event\";\r\nimport { Carto } from \"../../common/carto\";\r\nimport { IDictionary } from \"../../common/dictionary\";\r\nimport { Entity } from \"../entity\";\r\nimport { EntityGlobe } from \"./entity-globe\";\r\nimport { ViewMonitor } from \"./view-monitor\";\r\n\r\nconst MAX_AREA_IN_DEGREES = 90;\r\nconst MAX_RETRY_ATTEMPTS = 1;\r\nconst RETRY_DELAY_INCREMENT = 500;\r\nconst REQUEST_PAGE_DELAY = 50;\r\n\r\nclass regMenuItemGetter {\r\n TagIds: number[];\r\n MinHeight: number;\r\n MaxHeight: number;\r\n\r\n constructor(tagIds: number[], minHeight: number, maxHeight: number) {\r\n this.TagIds = tagIds;\r\n this.MinHeight = minHeight;\r\n this.MaxHeight = maxHeight;\r\n }\r\n}\r\n\r\nasync function delay(milliseconds: number): Promise<void> {\r\n return new Promise((res) => {\r\n setTimeout(() => {\r\n res();\r\n }, milliseconds);\r\n });\r\n}\r\n\r\nexport namespace EntityFilterGetter {\r\n export enum EStatus {\r\n Scanning = \"SCANNING\",\r\n Loading = \"LOADING\",\r\n }\r\n\r\n export interface IStatusUpdate {\r\n msg: EStatus;\r\n revoking: boolean;\r\n }\r\n\r\n export class Getter {\r\n private onUpdate: BruceEvent<Entity.IEntity[]> = <any>null;\r\n public get OnUpdate(): BruceEvent<Entity.IEntity[]> {\r\n if (!this.onUpdate) {\r\n this.onUpdate = new BruceEvent<Entity.IEntity[]>();\r\n }\r\n return this.onUpdate;\r\n }\r\n \r\n public LastStateUpdates: IDictionary<IStatusUpdate> = {};\r\n private onStateUpdate: BruceEvent<IStatusUpdate> = <any>null;\r\n public get OnStateUpdate(): BruceEvent<IStatusUpdate> {\r\n if (!this.onStateUpdate) {\r\n this.onStateUpdate = new BruceEvent<IStatusUpdate>();\r\n }\r\n return this.onStateUpdate;\r\n }\r\n \r\n private api: BruceApi;\r\n private viewPort: ViewMonitor.IMonitor;\r\n private viewPortChangeRemoval: () => void = <any>null;\r\n private cells: EntityGlobe.Grid = <any>null;\r\n private registeredItems: IDictionary<regMenuItemGetter> = {};\r\n private getterLoopId: number = 0;\r\n\r\n private typeId: string;\r\n private batchSize: number;\r\n private tagIds: number[] = <any>null;\r\n private minHeight = 0;\r\n private maxHeight = 100000;\r\n private attrFilter: IDictionary<any>;\r\n private viewRect: Bounds.IReqBounds = <any>null;\r\n private viewCenter: Carto.ICarto = <any>null;\r\n \r\n \r\n constructor(api: BruceApi, viewPort: ViewMonitor.IMonitor, typeId: string, batchSize: number, attrFilter: IDictionary<any>) {\r\n this.api = api;\r\n this.typeId = typeId;\r\n this.batchSize = batchSize;\r\n this.viewPort = viewPort;\r\n this.attrFilter = attrFilter;\r\n }\r\n \r\n private viewAreaSub(): void {\r\n this.viewAreaDispose();\r\n this.viewPortChangeRemoval = this.viewPort.Updated().Subscribe(() => {\r\n this.updateBounds();\r\n this.startGetterLoop();\r\n });\r\n }\r\n \r\n private viewAreaDispose(): void {\r\n this.viewPortChangeRemoval?.();\r\n }\r\n \r\n public GetMenuItems(): string[] {\r\n return Object.keys(this.registeredItems);\r\n }\r\n \r\n public IncludeMenuItem(menuItemId: string, layerIds: number[], minHeight: number, maxHeight: number): void {\r\n this.registeredItems[menuItemId] = new regMenuItemGetter(layerIds, minHeight, maxHeight);\r\n this.updateState();\r\n }\r\n \r\n public ExcludeMenuItem(menuItemId: string): void {\r\n this.registeredItems[menuItemId] = <any>null;\r\n delete this.registeredItems[menuItemId];\r\n this.updateState();\r\n }\r\n \r\n private updateBounds(): void {\r\n const viewRect = this.viewPort.GetBounds();\r\n const poi = this.viewPort.GetTarget();\r\n if (viewRect && poi) {\r\n if (Math.abs(viewRect.west - viewRect.east) > MAX_AREA_IN_DEGREES) {\r\n return;\r\n }\r\n if (Math.abs(viewRect.south - viewRect.north) > MAX_AREA_IN_DEGREES) {\r\n return;\r\n }\r\n this.viewRect = viewRect;\r\n this.viewCenter = poi;\r\n }\r\n }\r\n \r\n private updateState(): void {\r\n const tagIds: number[] = [];\r\n const menuItemIds = this.GetMenuItems();\r\n let minHeight = null;\r\n let maxHeight = null;\r\n for (let i = 0; i < menuItemIds.length; i++) {\r\n const menuItem = this.registeredItems[menuItemIds[i]];\r\n if (menuItem) {\r\n if (maxHeight == null || maxHeight < menuItem.MaxHeight) {\r\n maxHeight = menuItem.MaxHeight;\r\n }\r\n if (minHeight == null || minHeight > menuItem.MinHeight) {\r\n minHeight = menuItem.MinHeight;\r\n }\r\n \r\n const itemLayerIds = menuItem.TagIds;\r\n if (itemLayerIds) {\r\n for (let j = 0; j < itemLayerIds.length; j++) {\r\n const itemLayerId = itemLayerIds[j];\r\n if (!tagIds.includes(itemLayerId)) {\r\n tagIds.push(itemLayerId);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n if (menuItemIds.length > 0) {\r\n // Reset cells so none are marked as fetched.\r\n this.cells = new EntityGlobe.Grid();\r\n this.tagIds = tagIds;\r\n this.minHeight = <number>minHeight;\r\n this.maxHeight = <number>maxHeight;\r\n this.updateBounds();\r\n this.startGetterLoop();\r\n this.viewAreaSub();\r\n }\r\n else {\r\n this.getterLoopId = -1;\r\n this.viewAreaDispose();\r\n }\r\n }\r\n\r\n private postStatus(status: IStatusUpdate): void {\r\n this.LastStateUpdates[status.msg] = status;\r\n this.onStateUpdate?.Trigger(status);\r\n }\r\n \r\n private startGetterLoop(): void {\r\n // Increase id so that existing loops stop.\r\n this.getterLoopId += 1;\r\n const loopId = this.getterLoopId;\r\n \r\n new Promise(async () => {\r\n // Minor delay to stop 50 menu items enabling doing their first request all together.\r\n // This gives it time to recognize only 1 request is needed.\r\n // Would be better to not use this delay but we're on a clock.\r\n await delay(100);\r\n \r\n const MIN_HEIGHT = this.minHeight;\r\n const MAX_HEIGHT = this.maxHeight;\r\n const PAGE_SIZE = this.batchSize;\r\n let retryAttempts = MAX_RETRY_ATTEMPTS;\r\n let retryDelay = 0;\r\n let prevFirstId: string = \"\";\r\n let prevLastId: string = \"\";\r\n \r\n while ((!this.viewCenter || !this.viewRect) && this.getterLoopId == loopId) {\r\n await delay(RETRY_DELAY_INCREMENT);\r\n }\r\n if (this.getterLoopId != loopId) {\r\n return;\r\n }\r\n const alt = <number>this.viewRect.alt;\r\n if (alt > MAX_HEIGHT || (alt < MIN_HEIGHT && MIN_HEIGHT > 0)) {\r\n return;\r\n }\r\n \r\n const cells = this.cells.GetCellsForView(this.viewRect);\r\n let curCellIndex = cells.length > 0 ? 0 : null;\r\n \r\n let postedScanning = false;\r\n let postedLoading = false;\r\n \r\n while (retryAttempts > 0 && curCellIndex != null) {\r\n if (this.getterLoopId != loopId) {\r\n break;\r\n }\r\n if (retryDelay > 0) {\r\n await delay(retryDelay);\r\n }\r\n \r\n if (!postedScanning) {\r\n this.postStatus({ msg: EStatus.Scanning, revoking: false });\r\n postedScanning = true;\r\n }\r\n \r\n const curCell = cells[curCellIndex];\r\n if (curCell.IsFetched()) {\r\n curCellIndex += 1;\r\n if (!cells[curCellIndex]) {\r\n curCellIndex = null;\r\n }\r\n continue;\r\n }\r\n \r\n try {\r\n const page = await Entity.Filter.V1.GetList(this.api,\r\n {\r\n pageSize: PAGE_SIZE,\r\n pageIndex : curCell.FetchPageIndex,\r\n entityTypeId: this.typeId,\r\n layerIds: this.tagIds,\r\n bounds: curCell.GetBounds(),\r\n sortOrder: Api.ESortOrder.Asc,\r\n entityTypeConditions: this.attrFilter\r\n }\r\n );\r\n if (this.getterLoopId != loopId) {\r\n break;\r\n }\r\n if (page) {\r\n this.onUpdate?.Trigger(page);\r\n }\r\n if (!postedLoading) {\r\n this.postStatus({ msg: EStatus.Loading, revoking: false });\r\n postedLoading = true;\r\n }\r\n \r\n if (page.length <= 0 ) {\r\n curCell.Fetched = true; // Only mark as fetched when ALL pages are done.\r\n continue;\r\n }\r\n \r\n // Checking to make sure it's not just the same batch over and over again.\r\n if (page.length > 0) {\r\n const first = page[0]?.Bruce?.ID;\r\n const last = page[page.length - 1]?.Bruce?.ID;\r\n if (prevFirstId == first && prevLastId == last) {\r\n break;\r\n }\r\n else {\r\n prevFirstId = <string>first;\r\n prevLastId = <string>last;\r\n }\r\n }\r\n curCell.FetchPageIndex++;\r\n \r\n // Request passed so let's assume it was server hiccup and refresh counts.\r\n retryAttempts = MAX_RETRY_ATTEMPTS;\r\n retryDelay = 0;\r\n }\r\n catch (e) {\r\n console.log(e);\r\n \r\n // Request failed so let's add a delay and try again soon.\r\n retryDelay += RETRY_DELAY_INCREMENT;\r\n retryAttempts -= 1;\r\n }\r\n \r\n await delay(REQUEST_PAGE_DELAY);\r\n }\r\n \r\n if (postedLoading) {\r\n this.postStatus({ msg: EStatus.Loading, revoking: true });\r\n }\r\n if (postedScanning) {\r\n this.postStatus({ msg: EStatus.Scanning, revoking: true });\r\n }\r\n });\r\n }\r\n }\r\n}","import { Bounds } from \"../../common/bounds\";\r\nimport { BruceEvent } from \"../../common/bruce-event\";\r\nimport { Carto } from \"../../common/carto\";\r\nimport { Entity } from \"../entity\";\r\nimport { ViewMonitor } from \"./view-monitor\";\r\n\r\nconst MAX_AREA_IN_DEGREES = 90;\r\nconst GETTER_DELAY = 50;\r\n\r\nexport class EntityLoadedGetter {\r\n private viewPort: ViewMonitor.IMonitor\r\n private viewPortRemoval: () => void = <any>null;\r\n\r\n private batchSize: number;\r\n private viewRect: Bounds.IReqBounds = <any>null;\r\n private viewCenter: Carto.ICarto = <any>null;\r\n private getterInterval: any;\r\n private entities: Entity.IEntity[];\r\n\r\n private onUpdate: BruceEvent<Entity.IEntity[]> = <any>null;\r\n public get OnUpdate(): BruceEvent<Entity.IEntity[]> {\r\n if (!this.onUpdate) {\r\n this.onUpdate = new BruceEvent<Entity.IEntity[]>();\r\n }\r\n return this.onUpdate;\r\n }\r\n\r\n\r\n public constructor(entities: Entity.IEntity[], viewPort: ViewMonitor.IMonitor, batchSize: number) {\r\n this.entities = entities;\r\n this.viewPort = viewPort;\r\n this.batchSize = batchSize;\r\n this.viewPortRemoval = this.viewPort.Updated().Subscribe(() => {\r\n this.updateBounds();\r\n this.startGetterLoop();\r\n });\r\n }\r\n\r\n public Dispose(): void {\r\n this.viewPortRemoval?.();\r\n }\r\n\r\n private updateBounds(): void {\r\n const viewRect = this.viewPort.GetBounds();\r\n const poi = this.viewPort.GetTarget();\r\n if (viewRect && poi) {\r\n if (Math.abs(viewRect.west - viewRect.east) > MAX_AREA_IN_DEGREES) {\r\n return;\r\n }\r\n if (Math.abs(viewRect.south - viewRect.north) > MAX_AREA_IN_DEGREES) {\r\n return;\r\n }\r\n this.viewRect = viewRect;\r\n this.viewCenter = poi;\r\n }\r\n }\r\n\r\n private startGetterLoop(): void {\r\n clearInterval(this.getterInterval);\r\n if (!this.viewRect || !this.viewCenter) {\r\n return;\r\n }\r\n let index = 0;\r\n this.getterInterval = setInterval(() => {\r\n this.processBatch(this.entities.slice(index, index + this.batchSize));\r\n index += this.batchSize;\r\n if (index >= this.entities.length) {\r\n clearInterval(this.getterInterval);\r\n }\r\n }, GETTER_DELAY);\r\n }\r\n\r\n private processBatch(batch: Entity.IEntity[]): void {\r\n if (batch.length > 0) {\r\n this.onUpdate?.Trigger(batch);\r\n }\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\nimport { UTC } from \"../common/utc\";\r\n\r\nexport namespace ClientFile {\r\n export function GetCacheKey(fileId: string): string {\r\n return `${Api.ECacheKey.ClientFile}${Api.ECacheKey.Id}${fileId}`;\r\n }\r\n\r\n export interface IClientFile {\r\n UploadedTimeUTC: UTC.IUTC;\r\n FileExt: string;\r\n ID: string;\r\n MIMEType: string;\r\n OriginalFileName: string;\r\n OriginalLength: number;\r\n \"UploadedByUser.ID\": string;\r\n Purpose: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, fileId: string): Promise<IClientFile> {\r\n if (!fileId) {\r\n throw(\"File ID is required.\");\r\n }\r\n const key = GetCacheKey(fileId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`file/${fileId}/details`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, fileIds: string[]): Promise<void> {\r\n if (!fileIds.length) {\r\n throw(\"File IDs are required.\");\r\n }\r\n const data = {\r\n Items: fileIds\r\n };\r\n await api.POST(\"deleteFiles\", data, Api.PrepReqParams());\r\n for (let i = 0; i < fileIds.length; i++) {\r\n const key = GetCacheKey(fileIds[i]);\r\n api.Cache.Remove(key);\r\n }\r\n }\r\n\r\n export async function Upload(api: BruceApi, file: Blob, onProgress?: (e: ProgressEvent) => void): Promise<IClientFile> {\r\n if (!file) {\r\n throw(\"File is required.\");\r\n }\r\n return api.UPLOAD(\"file/uploadNew\", file, { onProgress: onProgress });\r\n }\r\n\r\n export namespace Filter {\r\n export namespace V1 {\r\n export enum EColumn {\r\n ID = \"id\",\r\n Name = \"name\",\r\n DateTime = \"datetime\",\r\n MIMEType = \"mimeType\",\r\n Size = \"size\",\r\n User = \"user\",\r\n Extension = \"extension\"\r\n }\r\n \r\n export enum ESortOrder {\r\n ASC = \"asc\",\r\n DEC = \"desc\"\r\n }\r\n\r\n export enum ERowOperator {\r\n AND = \"AND\",\r\n OR = \"OR\"\r\n }\r\n\r\n export interface IRow {\r\n column: EColumn;\r\n value: any;\r\n valueOperator: string;\r\n includes: boolean;\r\n rowOperator: ERowOperator;\r\n rows?: IRow[];\r\n }\r\n\r\n export interface IFilter {\r\n PageSize?: number;\r\n PageIndex?: number;\r\n OrderBy?: EColumn;\r\n SortOrder?: ESortOrder;\r\n Purpose?: string;\r\n FilterRows?: IRow[];\r\n }\r\n\r\n export async function GetList(api: BruceApi, filter: IFilter): Promise<IClientFile[]> {\r\n const data = await api.POST(\"files/filtered\", filter, Api.PrepReqParams());\r\n return data.Items;\r\n }\r\n }\r\n\r\n\r\n // TODO: Helpers for constructing the filter.\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\n\r\ntype Id = ProgramKey.EProgramId | string;\r\n\r\nexport namespace ProgramKey {\r\n export function GetCacheKey(programId: string): string {\r\n return Api.ECacheKey.ProgramKey + Api.ECacheKey.Id + programId;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.ProgramKey;\r\n }\r\n\r\n export enum EProgramId {\r\n CesiumIon = \"CesiumIon\",\r\n BingMaps = \"BingMaps\",\r\n Mapbox = \"Mapbox\"\r\n }\r\n\r\n export interface IKey {\r\n ProgramId: Id;\r\n Key: string;\r\n IsAccessRestricted?: boolean;\r\n }\r\n\r\n export async function Get(api: BruceApi, programId: Id): Promise<IKey> {\r\n if (!programId) {\r\n throw(\"Program ID is required.\");\r\n }\r\n const key = GetCacheKey(programId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`programkey/${programId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IKey[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IKey[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"programkeys\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, programId: Id): Promise<void> {\r\n if (!programId) {\r\n throw(\"Program ID is required.\");\r\n }\r\n await api.DELETE(`programkey/${programId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(programId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IKey): Promise<IKey> {\r\n if (!data?.ProgramId) {\r\n throw(\"Program ID is required.\");\r\n }\r\n data = await api.post(\"programkey\", data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ProgramId));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Style } from \"../bruce-models\";\r\n\r\nexport namespace MenuItemZoomControl {\r\n export enum EDisplayType {\r\n Hidden = \"hidden\",\r\n Point = \"point\",\r\n Geometry = \"geometry\",\r\n Model3D = \"3d\"\r\n }\r\n\r\n export interface IItem {\r\n MinZoom?: number,\r\n MaxZoom?: number,\r\n DisplayType?: EDisplayType,\r\n StyleID?: number,\r\n Style?: Style.IEntitySettings;\r\n LODCategoryID?: string,\r\n LODLevel?: number | string;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { TilesetPointcloud } from \"./tileset-pointcloud\";\r\nimport { TilesetCad } from \"./tileset-cad\";\r\nimport { TilesetEntitiesMapTiles } from \"./tileset-entities-map-tiles\";\r\nimport { TilesetEntities } from \"./tileset-entities\";\r\nimport { TilesetExtMapTiles } from \"./tileset-ext-map-tiles\";\r\nimport { TilesetExtTerrainTiles } from \"./tileset-ext-terrain-tiles\";\r\nimport { TilesetMapTiles } from \"./tileset-map-tiles\";\r\nimport { TilesetTerrainTiles } from \"./tileset-terrain-tiles\";\r\nimport { PendingAction } from \"../server/pending-action\";\r\nimport { GlobalApi } from \"../api/global-api\";\r\n\r\ntype Settings = TilesetPointcloud.ISettings | \r\n TilesetCad.ISettings | \r\n TilesetEntitiesMapTiles.ISettings | \r\n TilesetEntities.ISettings | \r\n TilesetExtMapTiles.ISettings | \r\n TilesetExtTerrainTiles.ISettings | \r\n TilesetMapTiles.ISettings | \r\n TilesetTerrainTiles.ISettings;\r\n\r\nexport namespace Tileset {\r\n export function GetCacheKey(tilesetId: string, loadFiles: boolean): string {\r\n return `${Api.ECacheKey.Tileset}${Api.ECacheKey.Id}${tilesetId}${Api.ECacheKey.Id}${loadFiles}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.Tileset;\r\n }\r\n\r\n export interface ITileset {\r\n id: string;\r\n name: string;\r\n type: EType;\r\n rootFileName?: string;\r\n settings?: Settings;\r\n fileIds?: string[];\r\n creationTime?: UTC.IUTC;\r\n modificationTime?: UTC.IUTC;\r\n generateVersion?: number;\r\n isDeleteDisabled?: boolean;\r\n }\r\n\r\n export enum EType {\r\n PointCloud = \"POINT_CLOUD\",\r\n GeoMap = \"GEO_MAP\", // Previously gtfRasterMaps.\r\n EntitiesMap = \"ENTITIES_MAP\", // Previously rasterMap.\r\n EntitiesSet = \"ENTITIES_SET\", // Previously dynamic.\r\n Cad = \"MODEL\", // Generated CAD tileset from entity id.\r\n Terrain = \"GEO_TERR\",\r\n ExternalTerrain = \"EXTERNAL_TERR\",\r\n ExternalGeoMap = \"EXTERNAL_MAP\"\r\n }\r\n\r\n export enum EPivot {\r\n None = \"none\",\r\n Box = \"box\", \r\n Weight = \"weight\",\r\n UCS = \"ucs\"\r\n }\r\n\r\n export interface ITransform {\r\n heading: number;\r\n pitch: number;\r\n roll: number;\r\n scale: number;\r\n }\r\n\r\n export async function Get(api: BruceApi, tilesetId: string, loadFiles: boolean = false): Promise<ITileset> {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(tilesetId, loadFiles));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`tileset/get/${tilesetId}?noFiles=${loadFiles ? 0 : 1}`);\r\n api.Cache.Set(GetCacheKey(tilesetId, loadFiles), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<ITileset[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<ITileset[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"tileset/getList\")\r\n res(data);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, tilesetId: string): Promise<void> {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n await api.DELETE(`tileset/delete/${tilesetId}`);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset + Api.ECacheKey.Id + tilesetId);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset);\r\n }\r\n\r\n export async function Update(api: BruceApi, data: ITileset): Promise<ITileset> {\r\n if (!data?.name || !data?.type) {\r\n throw(\"Tileset name and type are required.\");\r\n }\r\n let isNew = !data.id;\r\n if (isNew) {\r\n const res: ITileset = await api.GET(`tileset/new?type=${data.type}&name=${Api.Encode(data.name)}`);\r\n data = {\r\n ...data,\r\n ...res\r\n }\r\n }\r\n data = await api.post(`tileset`, data);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset + Api.ECacheKey.Id + data.id);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Tileset);\r\n return data;\r\n }\r\n\r\n export async function UploadFile(api: BruceApi, tilesetId: string, file: Blob, onProgress?: (e: ProgressEvent) => void): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n return api.UPLOAD(`tileset/uploadFile/${tilesetId}/files`, file, { onProgress: onProgress });\r\n }\r\n\r\n export async function DeleteFile(api: BruceApi, tilesetId: string, file: string): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n await api.DELETE(`tileset/deleteFile/${tilesetId}/files/${file}`);\r\n api.Cache.Remove(GetCacheKey(tilesetId, true));\r\n }\r\n\r\n export async function UploadSrcFile(api: BruceApi, tilesetId: string, file: Blob, onProgress?: (e: ProgressEvent) => void): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n await api.UPLOAD(`tileset/uploadFile/${tilesetId}/src`, file, { onProgress: onProgress });\r\n api.Cache.Remove(GetCacheKey(tilesetId, true));\r\n }\r\n\r\n export async function DeleteSrcFile(api: BruceApi, tilesetId: string, file: string): Promise<void> {\r\n if (!tilesetId || !file) {\r\n throw(\"Tileset ID and file are required.\");\r\n }\r\n await api.DELETE(`tileset/deleteFile/${tilesetId}/src/${file}`);\r\n api.Cache.Remove(GetCacheKey(tilesetId, true));\r\n }\r\n\r\n export function GetFileUrl(api: BruceApi, tilesetId: string, file: string): string {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n if (!file) {\r\n file = \"\";\r\n }\r\n return api.GetBaseUrl() + `tileset/getFile/${tilesetId}/files/${file}`;\r\n }\r\n\r\n export function GetSrcFileUrl(api: BruceApi, tilesetId: string, file: string): string {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n if (!file) {\r\n file = \"\";\r\n }\r\n return api.GetBaseUrl() + `tileset/getFile/${tilesetId}/src/${file}`;\r\n }\r\n\r\n export function GetPublicFileUrl(api: BruceApi, tilesetId: string, file: string): string {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n if (!file) {\r\n file = \"\";\r\n }\r\n return api.GetBaseUrl() + `tileset/file/${tilesetId}/${file}`;\r\n }\r\n\r\n export async function Generate(api: BruceApi, tilesetId: string): Promise<number> {\r\n if (!tilesetId) {\r\n throw(\"Tileset ID is required.\");\r\n }\r\n const res: PendingAction.IAction = await api.GET(`tileset/generate/${tilesetId}`);\r\n return res.ID;\r\n }\r\n\r\n export namespace Publish {\r\n export function GetCacheKey(accountId: string, tilesetId?: string): string {\r\n if (!tilesetId) {\r\n tilesetId = \"\";\r\n }\r\n return Api.ECacheKey.PublishTileset + Api.ECacheKey.Id + accountId + Api.ECacheKey.Id + tilesetId;\r\n }\r\n\r\n export interface IPublish {\r\n ID?: number;\r\n \"Tileset.ID\"?: string;\r\n \"PublishedBy.ClientAccount.ID\"?: string;\r\n \"PublishedBy.User.ID\"?: string;\r\n \"Published.DateTime\"?: UTC.IUTC;\r\n IsPublic: boolean;\r\n \"EnabledFor.ClientAccount.ID\"?: string[];\r\n }\r\n\r\n export async function Update(api: GlobalApi, data: IPublish): Promise<IPublish> {\r\n if (!data?.[\"Tileset.ID\"] || !data?.[\"PublishedBy.ClientAccount.ID\"] || !data?.[\"PublishedBy.User.ID\"]) {\r\n throw(\"Tileset ID, client account ID, and user ID are required.\");\r\n }\r\n if (!data.ID) {\r\n data.ID = 0;\r\n }\r\n const res: IPublish = await api.POST(`tileset/${data.ID}`, data);\r\n const req = {\r\n \"ClientAccount.ID\": data[\"EnabledFor.ClientAccount.ID\"]\r\n };\r\n data.ID = res.ID;\r\n await api.POST(`tileset/${data.ID}/enableForAccounts`, req);\r\n api.Cache.Remove(GetCacheKey(data[\"PublishedBy.ClientAccount.ID\"], data[\"Tileset.ID\"]));\r\n api.Cache.Remove(GetCacheKey(data[\"PublishedBy.ClientAccount.ID\"]));\r\n return data;\r\n }\r\n\r\n export async function Get(api: GlobalApi, accountId: string, tilesetId: string): Promise<IPublish> {\r\n if (!accountId || !tilesetId) {\r\n throw(\"Client account ID and tileset ID are required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(accountId, tilesetId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`tilesetByPublisher/${accountId}/${tilesetId}`);\r\n api.Cache.Set(GetCacheKey(accountId, tilesetId), req);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: GlobalApi, accountId: string): Promise<IPublish[]> {\r\n if (!accountId) {\r\n throw(\"Client account ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IPublish[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`tilesets/enabledForAccount/${accountId}`);\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetCacheKey(accountId), req);\r\n return req;\r\n }\r\n }\r\n}","import { Tileset } from \"../tileset/tileset\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { MenuItemZoomControl } from \"./menu-item-zoom-control\";\r\n\r\nexport namespace MenuItem {\r\n export enum EType {\r\n None = \"NONE\",\r\n BruceEntities = \"BruceEntity\",\r\n BruceEntity = \"SingleEntity\",\r\n Osm = \"OSMBuildingsTileset\",\r\n CadTileset = \"ModelTileset\",\r\n ArbTileset = \"Cesium3DTileset\",\r\n Kml = \"StaticKML\",\r\n EntitiesTileset = \"EntitiesTileset\",\r\n EntitiesRaster = \"RasterEntitiesTileset\",\r\n PointCloud = \"PointCloudTileset\",\r\n }\r\n\r\n export interface ILegend {\r\n model3d: boolean;\r\n point: boolean;\r\n polygon: boolean;\r\n polylines: boolean;\r\n tileset3d: boolean;\r\n }\r\n\r\n export interface IItem {\r\n id: string;\r\n Caption: string;\r\n Children?: IItem[];\r\n Type: EType;\r\n hideChildren?: boolean;\r\n legend?: ILegend;\r\n authoringEnabled?: boolean;\r\n LabelColor?: string;\r\n renderPriority?: number;\r\n }\r\n\r\n export function CreateFromEntityId(entityId: string, typeId: string, styleId?: number): IItem {\r\n return <Item.IBruceEntity>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.BruceEntity,\r\n Caption: \"Generated Entity Menu Item\",\r\n BruceEntity: {\r\n \"EntityType.ID\": typeId,\r\n EntityId: entityId\r\n },\r\n CameraZoomSettings: [\r\n {\r\n DisplayType: MenuItemZoomControl.EDisplayType.Model3D,\r\n MaxZoom: 8000,\r\n MinZoom: 0,\r\n StyleID: styleId\r\n }\r\n ]\r\n };\r\n }\r\n\r\n export function CreateFromTypeId(typeId: string, styleId?: number): IItem {\r\n return <Item.IBruceEntities>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.BruceEntities,\r\n Caption: \"Generated Entity Type Menu Item\",\r\n BruceEntity: {\r\n \"EntityType.ID\": typeId\r\n },\r\n CameraZoomSettings: [\r\n {\r\n DisplayType: MenuItemZoomControl.EDisplayType.Model3D,\r\n MaxZoom: 8000,\r\n MinZoom: 0,\r\n StyleID: styleId\r\n }\r\n ]\r\n };\r\n }\r\n\r\n export function CreateFromTilesetId(tilesetId: string, type: Tileset.EType): IItem {\r\n if (type === Tileset.EType.Cad) {\r\n return <Item.ICadTileset>{\r\n\t id: ObjectUtils.UId(),\r\n\t Type: EType.CadTileset,\r\n Caption: \"Generated CAD Menu Item\",\r\n\t FlyTo: false,\r\n\t\t\t\ttileset: {\r\n\t\t\t\t\tTilesetID: tilesetId\r\n\t\t\t\t}\r\n };\r\n }\r\n else if (type == Tileset.EType.EntitiesSet) {\r\n return <Item.IEntitiesTileset>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.EntitiesTileset,\r\n Caption: \"Generated Entities Menu Item\",\r\n FlyTo: false,\r\n tileset: {\r\n TilesetID: tilesetId\r\n }\r\n };\r\n }\r\n else if (type == Tileset.EType.PointCloud) {\r\n return <Item.IPointcloud>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.PointCloud,\r\n Caption: \"Generated Point Cloud Menu Item\",\r\n FlyTo: false,\r\n tileset: {\r\n TilesetID: tilesetId\r\n }\r\n };\r\n }\r\n else if (type == Tileset.EType.EntitiesMap) {\r\n return <Item.IEntitiesRaster>{\r\n id: ObjectUtils.UId(),\r\n Type: EType.EntitiesRaster,\r\n Caption: \"Generated Entities Menu Item\",\r\n tileset: {\r\n TilesetID: tilesetId\r\n }\r\n };\r\n }\r\n throw(\"Tileset type not supported.\");\r\n }\r\n\r\n export namespace Item {\r\n export interface ITileset {\r\n TilesetURL?: string;\r\n ClientAccountID?: string;\r\n TilesetID?: string;\r\n }\r\n \r\n export interface IBruceEntities extends IItem {\r\n BruceEntity: {\r\n \"EntityType.ID\": string;\r\n };\r\n CameraZoomSettings: MenuItemZoomControl.IItem[];\r\n showAllLayers: boolean;\r\n showAllLayersExcludeBelow: boolean;\r\n tagIds: number[];\r\n }\r\n \r\n export interface IBruceEntity extends IItem {\r\n BruceEntity: {\r\n \"EntityType.ID\": string;\r\n EntityId: string;\r\n };\r\n CameraZoomSettings: MenuItemZoomControl.IItem[];\r\n showAllLayers: boolean;\r\n showAllLayersExcludeBelow: boolean;\r\n tagIds: number[];\r\n }\r\n \r\n export interface IArbTileset extends IItem {\r\n FlyTo: boolean;\r\n BruceEntity?: {\r\n \"EntityType.ID\"?: string;\r\n };\r\n tileset: ITileset;\r\n StyleMapping: any[];\r\n styleId: number;\r\n }\r\n \r\n export interface ICadTileset extends IItem {\r\n FlyTo: boolean;\r\n tileset: ITileset;\r\n StyleMapping?: any[];\r\n styleId?: number;\r\n }\r\n \r\n export interface IPointcloud extends IItem {\r\n FlyTo: boolean;\r\n tileset: ITileset;\r\n }\r\n \r\n export interface IEntitiesRaster extends IItem {\r\n tileset: ITileset;\r\n }\r\n \r\n export interface IOsm extends IItem {\r\n BruceEntity?: {\r\n \"EntityType.ID\"?: string;\r\n SourceId: string;\r\n };\r\n ghostLoading: boolean;\r\n }\r\n \r\n export interface IKml extends IItem {\r\n KML: {\r\n ClientFile: {\r\n ID: string;\r\n }\r\n }\r\n }\r\n \r\n export interface IEntitiesTileset extends IItem {\r\n FlyTo: boolean;\r\n tileset: ITileset;\r\n }\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { Camera } from \"../common/camera\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { Markup } from \"../markup/markup\";\r\n\r\nexport namespace ProjectViewBookmark {\r\n export function GetCacheKey(viewId: string, bookmarkId: string): string {\r\n return `${Api.ECacheKey.ProjectViewBookmark}${Api.ECacheKey.Id}${viewId}${Api.ECacheKey.Id}${bookmarkId}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.ProjectViewBookmark;\r\n }\r\n\r\n export interface IBookmarkSettings {\r\n selectedItemIds?: string[];\r\n order?: number;\r\n hiddenEntityIds?: string[];\r\n drawnRelationEntityIDs?: string[];\r\n imagery?: any[];\r\n terrain?: string;\r\n globeColor?: string;\r\n shadows?: boolean;\r\n groundOcclusion?: boolean;\r\n ambientOcclusion?: boolean;\r\n markup?: Markup.IMarkup;\r\n cameraFrustum?: Camera.EFrustum;\r\n displayTimeline?: boolean;\r\n timelineSettings?: any;\r\n }\r\n\r\n export interface IBookmark {\r\n ID?: string;\r\n Camera?: any;\r\n \"Created.ByUser.ID\"?: string;\r\n \"Created.Date\"?: UTC.IUTC;\r\n Note?: string;\r\n Settings?: IBookmarkSettings;\r\n Title?: string;\r\n \"UI.View.ID\"?: string;\r\n DisplayOrder?: number;\r\n \"Screenshot.ClientFile.ID\"?: string;\r\n \"UI.SlideGroup.ID\"?: number;\r\n }\r\n\r\n export async function Get(api: BruceApi, viewId: string, bookmarkId: string): Promise<IBookmark> {\r\n if (!viewId || !bookmarkId) {\r\n throw(\"View ID and Bookmark ID are required.\");\r\n }\r\n const key = GetCacheKey(viewId, bookmarkId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ui.view/${viewId}/slide/${bookmarkId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, viewId: string, bookmarkId: string): Promise<void> {\r\n if (!viewId || !bookmarkId) {\r\n throw(\"View ID and Bookmark ID are required.\");\r\n }\r\n await api.DELETE(`ui.view/${viewId}/slide/${bookmarkId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(viewId, bookmarkId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi, viewId: string): Promise<IBookmark[]> {\r\n if (!viewId) {\r\n throw(\"View ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IBookmark[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`ui.view/${viewId}/slides`, Api.PrepReqParams());;\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, viewId: string, data: IBookmark): Promise<IBookmark> {\r\n if (!data?.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n if (!data?.Title) {\r\n data.Title = data.ID;\r\n }\r\n data = await api.post(`ui.view/${viewId}/slide/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(viewId, <string>data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../api/bruce-api\";\r\nimport { ObjectUtils } from \"../util/object-utils\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { MenuItem } from \"./menu-item\";\r\nimport { ProjectViewTileSource } from \"./project-view-tile-source\";\r\n\r\nexport namespace ProjectView {\r\n export function GetCacheKey(viewId: string): string {\r\n return `${Api.ECacheKey.ProjectView}${Api.ECacheKey.Id}${viewId}`;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.ProjectView;\r\n }\r\n\r\n export interface IView {\r\n ID: string;\r\n Name: string;\r\n Description: string;\r\n Feature: string[];\r\n \"CreatedByUser.ID\": string;\r\n CreatedTime: UTC.IUTC;\r\n Settings?: IViewSettings;\r\n DefaultUISlideID: string;\r\n CreatedByUIVersion: string;\r\n }\r\n\r\n export interface IShadowSettings {\r\n IsShadowEnabled: boolean;\r\n IsShadowSoft: boolean;\r\n ShadowSampleSize: number;\r\n }\r\n\r\n export interface IViewSettings {\r\n BookmarkTransitionSpeed: number;\r\n Camera: any;\r\n CameraFrustum: number;\r\n CesiumMapSources: ProjectViewTileSource.IMapSource[];\r\n CesiumTerrainSources: ProjectViewTileSource.ITerrainSource[];\r\n ControlsSettings: any;\r\n DefaultMapTiles: string;\r\n DefaultTerrain: string;\r\n DisplayTimeline: boolean;\r\n GroundOcclusion: boolean;\r\n Extensions: any;\r\n GlobeColor: string;\r\n SelectionHighlightColor?: string;\r\n LayersMenu?: MenuItem.IItem[];\r\n OASettings?: any;\r\n LogoImage: any;\r\n LegendImage: any;\r\n IsRestricted: boolean;\r\n IsLoginRequired: boolean;\r\n TilesetBackfaceCulling: boolean;\r\n TopPanelComponents?: string[];\r\n LeftPanelComponents?: string[];\r\n PostProcessFXAA?: boolean;\r\n Shadows: boolean;\r\n Shadow: {\r\n StaticCamera: IShadowSettings;\r\n MovingCamera: IShadowSettings;\r\n }\r\n }\r\n\r\n export async function Get(api: BruceApi, viewId: string): Promise<IView> {\r\n if (!viewId) {\r\n throw(\"View ID is required.\");\r\n }\r\n const key = GetCacheKey(viewId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ui.view/${viewId}`, Api.PrepReqParams());\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IView[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IView[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"ui.view/list\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, viewId: string): Promise<void> {\r\n if (!viewId) {\r\n throw(\"View ID is required.\");\r\n }\r\n await api.DELETE(`ui.view/${viewId}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(viewId));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IView): Promise<IView> {\r\n if (!data?.ID) {\r\n data.ID = ObjectUtils.UId();\r\n }\r\n if (!data?.Name) {\r\n data.Name = data.ID;\r\n }\r\n data = await api.post(`ui.view`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, UTC } from \"../bruce-models\";\r\n\r\nexport namespace PendingAction {\r\n export interface IAction {\r\n ID: number;\r\n \"CreatedBy.Application\": string;\r\n \"Created.Time\": UTC.IUTC;\r\n \"CreatedByUser.ID\": string;\r\n Result: string;\r\n Progress: number;\r\n \"Completed.Time\": UTC.IUTC;\r\n Description: string;\r\n Status: EStatus;\r\n lastUpdated: UTC.IUTC;\r\n }\r\n\r\n export enum EStatus {\r\n InProgress = \"IN_PROGRESS\",\r\n Cancelled = \"CANCELLED\",\r\n Complete = \"COMPLETE\",\r\n Failed = \"FAILED\"\r\n }\r\n\r\n export interface IMessage {\r\n \"PendingAction.ID\": number;\r\n ID: number;\r\n \"CreatedBy.Application\": string;\r\n \"Created.Time\": UTC.IUTC;\r\n \"Message.Type\": string;\r\n Message: string;\r\n }\r\n\r\n export async function Get(api: BruceApi, actionId: number): Promise<IAction> {\r\n if (!actionId) {\r\n throw(\"Action ID is required.\");\r\n }\r\n return api.GET(`pendingAction/${actionId}`, Api.PrepReqParams());\r\n }\r\n\r\n export async function GetRelevantList(api: BruceApi, stricter: boolean = false): Promise<IAction[]> {\r\n const data = await api.GET(`pendingActions/important?Update=${stricter}`, Api.PrepReqParams());\r\n return data.Items;\r\n }\r\n\r\n export async function GetMessages(api: BruceApi, actionId: number, order?: Api.ESortOrder, startIndex?: number, amount?: number): Promise<IMessage[]> {\r\n if (amount == null) {\r\n amount = 500;\r\n }\r\n if (startIndex == null) {\r\n startIndex = 0;\r\n }\r\n if (order == null) {\r\n order = Api.ESortOrder.Asc;\r\n }\r\n const args = `?SortOrder=${order == Api.ESortOrder.Desc ? \"DESC\" : \"ASC\"}&PageSize=${amount}&PageIndex=${startIndex}`; \r\n const data = await api.GET(`pendingAction/${actionId}/progressMessages` + args, Api.PrepReqParams());\r\n return data.Items;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi } from \"../bruce-models\";\r\n\r\nexport namespace Style {\r\n export function GetCacheKey(id: number): string {\r\n return Api.ECacheKey.Style + Api.ECacheKey.Id + id;\r\n }\r\n\r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.Style;\r\n }\r\n\r\n export enum EType {\r\n Entity = \"ENTITY\",\r\n EntityRelationship = \"ENTITY_RELATIONSHIP\"\r\n }\r\n\r\n export interface IEntitySettings {\r\n pointStyle?: any;\r\n polygonStyle?: any;\r\n polylineStyle?: any;\r\n modelStyle?: any;\r\n }\r\n\r\n export interface IRelationSettings {\r\n lineColor?: any;\r\n lineWidth?: any;\r\n heightDistanceRatio?: any;\r\n duration?: any;\r\n }\r\n\r\n export type Settings = IEntitySettings | IRelationSettings;\r\n\r\n export interface IStyle {\r\n ID: number;\r\n Name: string;\r\n Settings: Settings;\r\n Type: EType;\r\n }\r\n\r\n export function GetList(api: BruceApi): Promise<IStyle[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IStyle[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"ui.entityDisplaySettings\", Api.PrepReqParams());\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export function Get(api: BruceApi, id: number): Promise<IStyle> {\r\n if (!id) {\r\n throw(\"Style ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(id));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ui.entityDisplaySetting/${id}`, Api.PrepReqParams());\r\n api.Cache.Set(GetCacheKey(id), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IStyle): Promise<IStyle> {\r\n if (!data?.Name) {\r\n throw(\"Style name is required.\");\r\n }\r\n if (!data.ID) {\r\n data.ID = 0;\r\n }\r\n data = await api.POST(`ui.entityDisplaySetting/${data.ID}`, data, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(data.ID));\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n\r\n export async function Delete(api: BruceApi, id: number): Promise<void> {\r\n if (!id) {\r\n throw(\"Style ID is required.\");\r\n }\r\n await api.DELETE(`ui.entityDisplaySetting/${id}`, Api.PrepReqParams());\r\n api.Cache.Remove(GetCacheKey(id));\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n}","import { Bounds } from \"../common/bounds\";\r\n\r\nexport namespace TilesetEntitiesMapTiles {\r\n export enum ETileSize {\r\n IMG_256 = 256,\r\n IMG_512 = 512,\r\n IMG_1024 = 1024,\r\n IMG_2048 = 2048\r\n }\r\n\r\n export interface ISettings {\r\n imageSize: ETileSize;\r\n levelMin: number;\r\n levelMax: number;\r\n entityTypeId: string;\r\n styleId: number;\r\n filter: any;\r\n boundaries: Bounds.IBounds;\r\n }\r\n}","export namespace TilesetExtMapTiles {\r\n export enum EType {\r\n TileMapImagery = \"TileMapImagery\",\r\n OpenStreetMapImagery = \"OpenStreetMapImagery\",\r\n MapBoxImagery = \"MapBoxImagery\",\r\n CesiumIon = \"CesiumIon\"\r\n }\r\n\r\n export interface ISettings {\r\n url?: string;\r\n mapType?: EType;\r\n sourceExt?: string;\r\n ionId?: number;\r\n mapBoxStyleId?: string;\r\n mapBoxAccount?: string;\r\n mapBoxKey?: string;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { BruceApi, Tileset } from \"../bruce-models\";\r\n\r\nexport namespace Ucs {\r\n export function GetCacheKey(id: number, expandUsage: boolean): string {\r\n return Api.ECacheKey.Ucs + Api.ECacheKey.Id + id + Api.ECacheKey + expandUsage;\r\n }\r\n \r\n export function GetListCacheKey(): string {\r\n return Api.ECacheKey.Ucs;\r\n }\r\n\r\n export interface IUcs {\r\n id?: number;\r\n name?: string;\r\n description?: string;\r\n pivot?: any;\r\n epsg?: number;\r\n state?: EState;\r\n latitude?: number;\r\n longitude?: number;\r\n altitude?: number;\r\n tilesets?: Tileset.ITileset[];\r\n }\r\n\r\n export enum EState {\r\n Undefined = \"undef\",\r\n Prepared = \"ready\"\r\n }\r\n\r\n export async function Get(api: BruceApi, ucsId: number, expandUsage?: boolean): Promise<IUcs> {\r\n if (!ucsId) {\r\n throw(\"UCS ID is required.\");\r\n }\r\n if (!expandUsage) {\r\n expandUsage = false;\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(ucsId, expandUsage));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`ucs/${ucsId}`);\r\n api.Cache.Set(GetCacheKey(ucsId, expandUsage), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: BruceApi, ucsId: number): Promise<void> {\r\n if (!ucsId) {\r\n throw(\"UCS ID is required.\");\r\n }\r\n await api.DELETE(`ucs/${ucsId}`);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Ucs + Api.ECacheKey.Id + ucsId);\r\n api.Cache.Remove(GetListCacheKey());\r\n }\r\n\r\n export async function GetList(api: BruceApi): Promise<IUcs[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey());\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(\"ucs\");\r\n api.Cache.Set(GetListCacheKey(), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: BruceApi, data: IUcs): Promise<IUcs> {\r\n if (!data?.name) {\r\n throw(\"UCS name is required.\");\r\n }\r\n data = await api.post(`ucs${ !data.id ? \"\" : \"/\" + data.id }`, data);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.Ucs + Api.ECacheKey.Id + data.id);\r\n api.Cache.Remove(GetListCacheKey());\r\n return data;\r\n }\r\n}","export namespace Permission {\r\n export type Perm = EPerm | string;\r\n\r\n export enum EPerm {\r\n ADMIN = \"ADMIN\",\r\n LOGIN = \"LOGIN\",\r\n DELETE_ENTITY_TYPE = \"DELETE_ENTITY_TYPE\",\r\n CREATE_ENTITY_TYPE = \"CREATE_ENTITY_TYPE\",\r\n UPDATE_ENTITY_TYPE = \"UPDATE_ENTITY_TYPE\"\r\n }\r\n\r\n export enum EPermPrefix {\r\n ACCESS_PROJECT_VIEW = \"UIVIEW_\",\r\n MANAGE_PROJECT_VIEW_BOOKMARKS = \"UIVIEW_MANAGE_BOOKMARKS_\",\r\n ACCESS_TILESET = \"TILESET_\"\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { IdmApi } from \"../api/idm-api\";\r\nimport { UTC } from \"../common/utc\";\r\nimport { Permission } from \"./permission\";\r\nimport { User } from \"./user\";\r\n\r\nexport namespace Session {\r\n function GetCacheKey(sessionId: string): string {\r\n return `${Api.ECacheKey.Session}${Api.ECacheKey.Id}${sessionId}`;\r\n }\r\n\r\n export interface ISession {\r\n AccessPermissions: IAccessPermissions;\r\n HypeportalAccessPermisssions?: IAccessPermissions;\r\n \"ClientAccount.ID\": string;\r\n ID: string;\r\n IP: string;\r\n LastAccessTime: UTC.IUTC;\r\n User: User.IUser;\r\n }\r\n\r\n export interface IAccessPermissions {\r\n EnabledFeatures?: Permission.Perm[];\r\n UserGroups?: string[];\r\n }\r\n\r\n export async function Get(api: IdmApi, sessionId: string): Promise<ISession> {\r\n if (!sessionId) {\r\n throw(\"Session ID is required.\");\r\n }\r\n const key = GetCacheKey(sessionId);\r\n const cacheData = api.Cache.Get(key);\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = api.GET(`session/${sessionId}`);\r\n api.Cache.Set(key, req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Login(api: IdmApi, username: string, password: string, accountId?: string): Promise<ISession> {\r\n if (!username || !password) {\r\n throw(\"Username and password are required.\");\r\n }\r\n const data: ISession = await api.POST(\"login\", {\r\n account: accountId ? accountId : \"\",\r\n login: username,\r\n password: password\r\n });\r\n const ssid = data?.ID;\r\n api.SetSessionId(ssid);\r\n api.Cache.Remove(GetCacheKey(ssid));\r\n return data;\r\n }\r\n\r\n export async function Logout(api: IdmApi): Promise<void> {\r\n const ssid = api.GetSessionId();\r\n if (ssid) {\r\n await api.POST(\"logout\", null);\r\n api.SetSessionId(<any>null);\r\n api.Cache.Remove(GetCacheKey(ssid));\r\n }\r\n }\r\n\r\n export function IsPermEnabled(session: ISession, perm: string): boolean {\r\n if (!perm) {\r\n throw(\"Perm is required.\");\r\n }\r\n perm = perm.toLocaleUpperCase();\r\n const accessPerms = session.AccessPermissions?.EnabledFeatures ?? [];\r\n return accessPerms.findIndex(x => x.toLocaleUpperCase() == perm) > -1;\r\n }\r\n\r\n export function IsSuperPermEnabled(session: ISession, perm: string): boolean {\r\n if (!perm) {\r\n throw(\"Perm is required.\");\r\n }\r\n perm = perm.toLocaleUpperCase();\r\n const accessPerms = session.HypeportalAccessPermisssions?.EnabledFeatures ?? [];\r\n return accessPerms.findIndex(x => x.toLocaleUpperCase() == perm) > -1;\r\n }\r\n\r\n export function IsAccountAdmin(session: ISession): boolean {\r\n return IsPermEnabled(session, Permission.EPerm.ADMIN);\r\n }\r\n\r\n export function IsSuperAdmin(session: ISession): boolean {\r\n return IsSuperPermEnabled(session, Permission.EPerm.ADMIN);\r\n }\r\n}","import { IdmApi, Permission } from \"../bruce-models\";\r\nimport { User } from \"./user\";\r\n\r\nexport namespace UserGroup {\r\n export interface IGroup {\r\n \"ClientAccount.ID\"?: string;\r\n \"Features\": Permission.Perm[];\r\n \"ID\": string;\r\n \"Name\"?: string;\r\n }\r\n\r\n export async function GetByName(api: IdmApi, accountId: string, name: string): Promise<IGroup> {\r\n if (!name || !accountId) {\r\n throw(\"Name and AccountID are required.\");\r\n }\r\n return api.GET(`account/${accountId}/userGroupByName/${name}`);\r\n }\r\n\r\n export async function GetUsers(api: IdmApi, accountId: string, id: string): Promise<User.IUser[]> {\r\n if (!accountId || !id) {\r\n throw(\"AccountID and ID are required.\");\r\n }\r\n const data = await api.GET(`userGroup/${accountId}/${id}/users`);\r\n return data.Items;\r\n }\r\n\r\n export async function GetListByPerm(api: IdmApi, accountId: string, perm: Permission.Perm): Promise<IGroup[]> {\r\n if (!accountId || !perm) {\r\n throw(\"AccountID and Perm are required.\");\r\n }\r\n const data = await api.GET(`userGroupsByFeature/${accountId}/${perm}`);\r\n return data.Items;\r\n }\r\n\r\n export async function GetList(api: IdmApi, accountId: string): Promise<IGroup[]> {\r\n if (!accountId) {\r\n throw(\"AccountID is required.\");\r\n }\r\n const data = await api.GET(`userGroups/${accountId}`);\r\n return data.Items;\r\n }\r\n\r\n export async function Delete(api: IdmApi, accountId: string, id: string): Promise<void> {\r\n if (!accountId || !id) {\r\n throw(\"AccountID and ID are required.\");\r\n }\r\n return api.DELETE(`account/${accountId}/userGroupID/${id}`);\r\n }\r\n\r\n export async function Update(api: IdmApi, data: IGroup): Promise<IGroup> {\r\n if (!data.Name || !data[\"ClientAccount.ID\"]) {\r\n throw(\"User group name and client account ID are required.\");\r\n }\r\n data = await api.POST(`userGroup${data.ID ? (\"/\" + data.ID) : \"\"}`, data);\r\n return data;\r\n }\r\n}","import { Api } from \"../api/api\";\r\nimport { IdmApi } from \"../api/idm-api\";\r\nimport { UserGroup } from \"./user-group\";\r\n\r\nexport namespace User {\r\n export function GetCacheKey(userId: string, accountId: string): string {\r\n return Api.ECacheKey.User + Api.ECacheKey.Id + userId + Api.ECacheKey.Id + accountId;\r\n }\r\n\r\n export interface IUser {\r\n AccessPermissions?: IAccessPermission[];\r\n Email?: string;\r\n Login?: string;\r\n FullName?: string;\r\n ID?: string;\r\n IsActivated?: boolean;\r\n IsDisabled?: boolean;\r\n IsPasswordChangeRequired?: boolean;\r\n Mobile?: string;\r\n Password?: string;\r\n Settings?: any;\r\n Type?: EType;\r\n }\r\n\r\n export enum EType {\r\n User = \"LOGIN_USER\",\r\n AccessToken = \"ACCESS_TOKEN\"\r\n }\r\n\r\n export interface IAccessPermission {\r\n \"ClientAccount.ID\": string;\r\n \"UserGroup.ID\"?: string[];\r\n \"UserGroups\"?: UserGroup.IGroup[];\r\n }\r\n\r\n export async function Get(api: IdmApi, id: string, accountId: string): Promise<IUser> {\r\n if (!id) {\r\n throw(\"ID is required.\");\r\n }\r\n const cacheData = api.Cache.Get(GetCacheKey(id, accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req = await api.GET(`user/${id}`);\r\n api.Cache.Set(GetCacheKey(id, accountId), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Update(api: IdmApi, data: IUser): Promise<IUser> {\r\n if (!data?.ID || !data?.Type) {\r\n throw(\"ID and Type are required.\");\r\n }\r\n data = await api.POST(`user/${data.ID}`, data);\r\n api.Cache.RemoveByContains(Api.ECacheKey.User + Api.ECacheKey.Id + data.ID);\r\n if (data.Type == EType.AccessToken) {\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.AccessToken + Api.ECacheKey.Account);\r\n }\r\n else if (data.Type == EType.User) {\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.User + Api.ECacheKey.Account);\r\n }\r\n return data;\r\n }\r\n\r\n export namespace LoginUser {\r\n export function GetListCacheKey(accountId: string): string {\r\n return Api.ECacheKey.User + Api.ECacheKey.Account + Api.ECacheKey.Id + accountId;\r\n }\r\n\r\n export async function GetList(api: IdmApi, accountId: string, exclusive?: boolean): Promise<IUser[]> {\r\n if (!accountId) {\r\n throw(\"Client account ID is required.\");\r\n }\r\n if (!exclusive) {\r\n exclusive = false;\r\n }\r\n const cacheData = exclusive ? null : api.Cache.Get(GetListCacheKey(accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IUser[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(`users?clientAccountID=${accountId}${exclusive ? \"&allExcludingClientAccount=true\" : \"\" }`);\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n req.then((users) => {\r\n for (let i = 0; i < users.length; i++) {\r\n api.Cache.Set(GetCacheKey(<string>users[i].ID, accountId), users[i]);\r\n }\r\n });\r\n if (!exclusive) {\r\n api.Cache.Set(GetListCacheKey(accountId), req, Api.DEFAULT_CACHE_DURATION);\r\n }\r\n return req;\r\n }\r\n }\r\n\r\n export namespace AccessToken {\r\n export function GetListCacheKey(accountId: string): string {\r\n return Api.ECacheKey.AccessToken + Api.ECacheKey.Account + Api.ECacheKey.Id + accountId;\r\n }\r\n\r\n export async function GetList(api: IdmApi, accountId: string): Promise<IUser[]> {\r\n const cacheData = api.Cache.Get(GetListCacheKey(accountId));\r\n if (cacheData) {\r\n return cacheData;\r\n }\r\n const req: Promise<IUser[]> = new Promise(async (res, rej) => {\r\n try {\r\n const data = await api.GET(\"usersByClientAccount/accessTokens\");\r\n res(data.Items);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n req.then((users) => {\r\n for (let i = 0; i < users.length; i++) {\r\n api.Cache.Set(GetCacheKey(<string>users[i].ID, accountId), users[i]);\r\n }\r\n });\r\n api.Cache.Set(GetListCacheKey(accountId), req, Api.DEFAULT_CACHE_DURATION);\r\n return req;\r\n }\r\n\r\n export async function Delete(api: IdmApi, id: string): Promise<void> {\r\n await api.DELETE(`accessToken/${id}`);\r\n api.Cache.RemoveByContains(Api.ECacheKey.User + Api.ECacheKey.Id + id);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.AccessToken + Api.ECacheKey.Account);\r\n }\r\n\r\n export async function Create(api: IdmApi, data: IUser): Promise<IUser> {\r\n if (!data) {\r\n data = {};\r\n }\r\n if (data.Type == EType.User) {\r\n throw(\"User type is not allowed.\");\r\n }\r\n if (!data.Type) {\r\n data.Type = EType.AccessToken;\r\n }\r\n data = await api.POST(\"accessToken\", data);\r\n api.Cache.RemoveByStartsWith(Api.ECacheKey.AccessToken + Api.ECacheKey.Account);\r\n return data;\r\n }\r\n }\r\n}","export namespace EncryptUtils {\r\n // https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript\r\n export function Cyrb53Hash(str: string, seed: number = 0): number {\r\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\r\n for (let i = 0, ch; i < str.length; i++) {\r\n ch = str.charCodeAt(i);\r\n h1 = Math.imul(h1 ^ ch, 2654435761);\r\n h2 = Math.imul(h2 ^ ch, 1597334677);\r\n }\r\n h1 = Math.imul(h1 ^ (h1>>>16), 2246822507) ^ Math.imul(h2 ^ (h2>>>13), 3266489909);\r\n h2 = Math.imul(h2 ^ (h2>>>16), 2246822507) ^ Math.imul(h1 ^ (h1>>>13), 3266489909);\r\n return (4294967296 * (2097151 & h2) + (h1>>>0));\r\n }\r\n}","export namespace MathUtils {\r\n export function Round(num: number, decimals: number = 0): number {\r\n if (decimals <= 0) {\r\n return Math.round(num);\r\n }\r\n let tmp = \"1\";\r\n for (let i = 0; i < decimals; i++) {\r\n tmp += \"0\";\r\n }\r\n const d = parseFloat(tmp);\r\n return Math.round((num + Number.EPSILON) * d) / d;\r\n }\r\n\r\n export function RandInt(min: number, max: number): number {\r\n if (min == max) {\r\n return min;\r\n }\r\n else if (min > max) {\r\n throw(\"Min is greater than max.\");\r\n }\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}"],"names":["Api","AnnDocument","Color","ObjectUtils","Entity","PathUtils","Calculator","Camera","Cartes","Carto","Geometry","UTC","EntityAttachmentType","EntityAttachment","EntityComment","EntityLink","EntityLod","EntityRelationType","EntityRelation","EntitySource","EntityTag","EntityType","EntityGlobe","EntityFilterGetter","MAX_AREA_IN_DEGREES","ClientFile","ProgramKey","MenuItemZoomControl","Tileset","MenuItem","ProjectViewBookmark","ProjectView","PendingAction","Style","TilesetEntitiesMapTiles","TilesetExtMapTiles","Ucs","Permission","Session","UserGroup","User","EncryptUtils","MathUtils"],"mappings":"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"}
|