{"version":3,"file":"searchServiceExtended-f1ce0a04.js","sources":["../../src/app/services/generated/searchService.ts","../../src/app/services/extensions/searchServiceExtended.ts"],"sourcesContent":["import Guid from \"@/app/types/common/guid\";\nimport { Instant, LocalDate, LocalTime } from \"@js-joda/core\";\nimport {ModelObject, BaseModelObject, ValidationRule} from \"@/app/services/modelObject\";\nimport ServiceBase from \"@/app/services/serviceBase\";\nimport converters from \"@/app/services/converters\"\n\n// Model Objects\n\nexport class SearchQuery extends ModelObject {\n\n public query: string = \"\";\n\n public constructor(jsonSerializedObject?: any) {\n super();\n if (jsonSerializedObject) {\n this.query = jsonSerializedObject.query;\n }\n\n }\n\n public toJsonSerializedObject(): any {\n const toRet = {} as any;\n toRet.query = this.query;\n return toRet;\n }\n\n public toProto(): any {\n return this.toJsonSerializedObject();\n }\n\n public toBinary(): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(this.toJsonSerializedObject()));\n }\n\n public validationRules: ValidationRule = [\n ];\n}\n\n\nexport class SearchResultItem extends ModelObject {\n\n public type: string = \"\";\n public objectId: Guid = Guid.createEmpty();\n public description: string = \"\";\n public isHidden: boolean = false;\n\n public constructor(jsonSerializedObject?: any) {\n super();\n if (jsonSerializedObject) {\n this.type = jsonSerializedObject.type;\n this.objectId = Guid.fromString(jsonSerializedObject.objectId);\n this.description = jsonSerializedObject.description;\n this.isHidden = jsonSerializedObject.isHidden;\n }\n\n }\n\n public toJsonSerializedObject(): any {\n const toRet = {} as any;\n toRet.type = this.type;\n toRet.objectId = this.objectId.toString();\n toRet.description = this.description;\n toRet.isHidden = this.isHidden;\n return toRet;\n }\n\n public toProto(): any {\n return this.toJsonSerializedObject();\n }\n\n public toBinary(): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(this.toJsonSerializedObject()));\n }\n\n public validationRules: ValidationRule = [\n {field: \"objectId\", rule: (v: any) => !v.isEmpty() || \"SearchResultItem.ObjectId cannot be empty\"},\n ];\n}\n\n\nexport class SearchResult extends ModelObject {\n\n public searchResultItems: SearchResultItem[] = [];\n\n public constructor(jsonSerializedObject?: any) {\n super();\n if (jsonSerializedObject) {\n this.searchResultItems = jsonSerializedObject.searchResultItems.map((v: any) => new SearchResultItem(v));\n }\n\n }\n\n public toJsonSerializedObject(): any {\n const toRet = {} as any;\n toRet.searchResultItems = this.searchResultItems.map(v => v.toJsonSerializedObject());\n return toRet;\n }\n\n public toProto(): any {\n return this.toJsonSerializedObject();\n }\n\n public toBinary(): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(this.toJsonSerializedObject()));\n }\n\n public validationRules: ValidationRule = [\n {field: \"searchResultItems\", rule: (v: any) => !!v || \"searchResultItems is required\"},\n {field: \"searchResultItems\", rule: (v: any) => {\n if (v === null) {\n return true;\n }\n\n return (v as SearchResultItem[]).reduce((acc: Array, curr: SearchResultItem) => acc.concat(curr.validate()), new Array());\n }},\n ];\n}\n\n\nexport class LiveUsesResult extends ModelObject {\n\n /**\n * Total sum of lengths of all Id arrays.\n */\n public totalCount: number = 0;\n /**\n * Ids of live stock items using the given item.\n */\n public stockItemIds: Guid[] = [];\n /**\n * Ids of live outlets using the given item.\n */\n public outletIds: Guid[] = [];\n /**\n * Ids of live suppliers and manufacturer using the given item.\n */\n public supplierManufacturerIds: Guid[] = [];\n\n public constructor(jsonSerializedObject?: any) {\n super();\n if (jsonSerializedObject) {\n this.totalCount = jsonSerializedObject.totalCount;\n this.stockItemIds = jsonSerializedObject.stockItemIds.map((v: any) => Guid.fromString(v));\n this.outletIds = jsonSerializedObject.outletIds.map((v: any) => Guid.fromString(v));\n this.supplierManufacturerIds = jsonSerializedObject.supplierManufacturerIds.map((v: any) => Guid.fromString(v));\n }\n\n }\n\n public toJsonSerializedObject(): any {\n const toRet = {} as any;\n toRet.totalCount = this.totalCount;\n toRet.stockItemIds = this.stockItemIds.map(v => v.toString());\n toRet.outletIds = this.outletIds.map(v => v.toString());\n toRet.supplierManufacturerIds = this.supplierManufacturerIds.map(v => v.toString());\n return toRet;\n }\n\n public toProto(): any {\n return this.toJsonSerializedObject();\n }\n\n public toBinary(): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(this.toJsonSerializedObject()));\n }\n\n public validationRules: ValidationRule = [\n {field: \"totalCount\", rule: (v: any) => v == null || v >= -2147483648 || \"TotalCount is not greater than minimum allowed value: -2147483648\"},\n {field: \"totalCount\", rule: (v: any) => v == null || v <= 2147483647 || \"TotalCount is above maximum allowed value: 2147483647\"},\n ];\n}\n\n\nexport class SearchRequest extends ModelObject {\n\n public tenantId: Guid = Guid.createEmpty();\n public searchQuery: SearchQuery = new SearchQuery();\n\n public constructor(jsonSerializedObject?: any) {\n super();\n if (jsonSerializedObject) {\n this.tenantId = Guid.fromString(jsonSerializedObject.tenantId);\n this.searchQuery = new SearchQuery(jsonSerializedObject.searchQuery);\n }\n\n }\n\n public toJsonSerializedObject(): any {\n const toRet = {} as any;\n toRet.tenantId = this.tenantId.toString();\n toRet.searchQuery = this.searchQuery.toJsonSerializedObject();\n return toRet;\n }\n\n public toProto(): any {\n return this.toJsonSerializedObject();\n }\n\n public toBinary(): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(this.toJsonSerializedObject()));\n }\n\n public validationRules: ValidationRule = [\n {field: \"tenantId\", rule: (v: any) => !v.isEmpty() || \".TenantId cannot be empty\"},\n {field: \"searchQuery\", rule: (v: any) => !!v || \"searchQuery is required\"},\n {field: \"searchQuery\", rule: (v: any) => v.validate()},\n ];\n}\n\n\nexport class SearchResponse extends ModelObject {\n\n public searchResult: SearchResult = new SearchResult();\n\n public constructor(jsonSerializedObject?: any) {\n super();\n if (jsonSerializedObject) {\n this.searchResult = new SearchResult(jsonSerializedObject.searchResult);\n }\n\n }\n\n public toJsonSerializedObject(): any {\n const toRet = {} as any;\n toRet.searchResult = this.searchResult.toJsonSerializedObject();\n return toRet;\n }\n\n public toProto(): any {\n return this.toJsonSerializedObject();\n }\n\n public toBinary(): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(this.toJsonSerializedObject()));\n }\n\n public validationRules: ValidationRule = [\n {field: \"searchResult\", rule: (v: any) => !!v || \"searchResult is required\"},\n {field: \"searchResult\", rule: (v: any) => v.validate()},\n ];\n}\n\n\nexport class SearchService extends ServiceBase {\n\n public async search(tenantId: Guid, searchQuery: SearchQuery, opts?: {requestTimeoutMs?: number, sessionToken?: string}): Promise {\n const req = new SearchRequest();\n req.tenantId = tenantId;\n req.searchQuery = searchQuery;\n const extractor = (response:any) => new SearchResponse(response).searchResult;\n return this.makeJsonRequest(\"search/v1/search\", req.toJsonSerializedObject(), extractor, opts);\n };\n}\n\nexport const searchService = new SearchService();","import type { SearchResultItem } from \"@/app/services/generated/searchService\";\nimport {\n SearchQuery,\n SearchService,\n} from \"@/app/services/generated/searchService\";\nimport type Guid from \"@/app/types/common/guid\";\nimport messages, { translate, keys } from \"@/plugins/i18n\";\nimport type { RawLocation } from \"vue-router\";\nimport { routes } from \"@/app/ui/navigation/menuItems\";\nimport { contactsMenu } from \"@/app/ui/navigation/contactsMenu\";\nimport { EnumBmEntityType } from \"../generated/enums/enumBmEntityType.generated\";\nimport { ullageRoutes } from \"@/app/ui/navigation/ullagesMenu\";\nimport { priceListSubRoutes } from \"@/app/ui/navigation/pricingMenu\";\nimport { signInWithQuery } from \"@/app/ui/navigation/accountManagement\";\nimport { salesMenu } from \"@/app/ui/navigation/salesMenu\";\nimport { adminRoutes } from \"@/app/ui/navigation/administrationMenu\";\n\nexport class SearchResultItemType {\n private static allValues: SearchResultItemType[] = []; // make sure this is top-most\n\n public static outlet = new SearchResultItemType(\n \"Outlet\",\n EnumBmEntityType.outlet.translation,\n (result) => contactsMenu.viewOutlet(result.objectId)\n );\n public static outletContact = new SearchResultItemType(\n \"OutletContact\",\n messages.search_type_outlet_contact,\n (result) => {\n return {\n name: routes.contactsMenu.outlets.contacts,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static group = new SearchResultItemType(\n \"Group\",\n EnumBmEntityType.outletGroup.translation,\n (result) => {\n return {\n name: routes.contactsMenu.outletGroups.view,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static groupContact = new SearchResultItemType(\n \"GroupContact\",\n messages.search_type_group_contact,\n (result) => {\n return {\n name: routes.contactsMenu.outletGroups.contacts,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static order = new SearchResultItemType(\n \"Order\",\n EnumBmEntityType.order.translation,\n (result) => routes.salesMenu.viewOrder(result.objectId)\n );\n public static creditNote = new SearchResultItemType(\n \"CreditNote\",\n EnumBmEntityType.credit.translation,\n (result) => salesMenu.viewCreditNote(result.objectId)\n );\n public static material = new SearchResultItemType(\n \"Material\",\n EnumBmEntityType.material.translation,\n (result) => {\n return {\n name: routes.stockMenu.stock.view,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static product = new SearchResultItemType(\n \"Product\",\n EnumBmEntityType.product.translation,\n (result) => {\n return {\n name: routes.stockMenu.stock.view,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static autoAssembledItem = new SearchResultItemType(\n \"AutoAssembledItem\",\n messages.search_type_auto_assembled_item,\n (result) => {\n return {\n name: routes.stockMenu.stock.view,\n params: { id: result.objectId.toString() },\n };\n }\n );\n\n public static deliveryService = new SearchResultItemType(\n \"DeliveryService\",\n messages.distribution_delivery_service_noun,\n (result) => {\n return {\n name: routes.distributionMenu.settings.deliveryServices.edit,\n params: { id: result.objectId.toString(), mode: \"view\" },\n };\n }\n );\n\n public static bottleDepositCharge = new SearchResultItemType(\n \"BottleDepositCharge\",\n messages.bottle_deposit_charge_item_noun,\n (result) =>\n adminRoutes.editBottleDepositChargeItem.location({\n id: result.objectId,\n editing: false,\n })\n );\n\n public static bottleDepositRedemption = new SearchResultItemType(\n \"BottleDepositRedemption\",\n messages.bottle_deposit_redemption_item_noun,\n (result) =>\n adminRoutes.editBottleDepositRedemptionItem.location({\n id: result.objectId,\n editing: false,\n })\n );\n\n public static recipe = new SearchResultItemType(\n \"MaterialProduction\",\n messages.search_type_recipe,\n (result) => {\n return {\n name: routes.productionMenu.recipe.view,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static packaging = new SearchResultItemType(\n \"ProductPackaging\",\n messages.search_type_packaging,\n (result) => {\n return {\n name: routes.productionMenu.packaging.view,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static assembly = new SearchResultItemType(\n \"Assembly\",\n EnumBmEntityType.assembly.translation,\n (result) => {\n return {\n name: routes.productionMenu.assembly.view,\n params: { id: result.objectId.toString() },\n };\n }\n );\n public static priceList = new SearchResultItemType(\n \"PriceList\",\n EnumBmEntityType.priceList.translation,\n (result) => priceListSubRoutes.pricesTab.location(result.objectId)\n );\n\n public static supplier = new SearchResultItemType(\n \"Supplier\",\n EnumBmEntityType.supplier.translation,\n (result) => routes.contactsMenu.viewSupplier(result.objectId)\n );\n\n public static purchaseOrder = new SearchResultItemType(\n \"PurchaseOrder\",\n EnumBmEntityType.purchaseOrder.translation,\n (result) =>\n routes.stockMenu.purchaseOrdering.viewPurchaseOrder(result.objectId)\n );\n\n public static ullage = new SearchResultItemType(\n \"Ullage\",\n EnumBmEntityType.ullage.translation,\n (result) => ullageRoutes.view.location(result.objectId)\n );\n\n public static container = new SearchResultItemType(\n \"Container\",\n messages.search_type_container,\n (result) => routes.containerTrackingMenu.viewContainer(result.objectId)\n );\n\n public static lead = new SearchResultItemType(\n \"Lead\",\n translate(keys.leads_noun).toString(),\n (result) => routes.salesMenu.leads.viewLead(result.objectId)\n );\n\n public static productBrand = new SearchResultItemType(\n \"ProductBrand\",\n translate(keys.product_brand).toString(),\n (result) =>\n routes.stockMenu.productBrands.editLocation(result.objectId, false)\n );\n\n public static stockTake = new SearchResultItemType(\n \"StockTake\",\n translate(keys.stock_take).toString(),\n (result) => routes.stockMenu.stockTake.viewLocation(result.objectId)\n );\n\n public static stockTransfer = new SearchResultItemType(\n \"StockTransfer\",\n translate(keys.stock_transfer_noun).toString(),\n (result) =>\n routes.stockMenu.stockMovements.stockTransfer.editStockTransfer(\n result.objectId,\n false\n )\n );\n\n public static stockAdjustment = new SearchResultItemType(\n \"StockAdjustment\",\n translate(keys.stock_adjustment_noun).toString(),\n (result) =>\n routes.stockMenu.stockMovements.stockAdjustment.viewStockAdjustment(\n result.objectId\n )\n );\n\n public static pallet = new SearchResultItemType(\n \"Pallet\",\n translate(keys.pallet_noun).toString(),\n (result) => routes.distributionMenu.pallets.viewLocation(result.objectId)\n );\n\n public static tenantGroup = new SearchResultItemType(\n \"TenantGroup\",\n messages.enum_noun_tenant_group,\n (result) =>\n signInWithQuery({\n support: result.description,\n })\n );\n\n public key: string;\n public displayText: string;\n public routerLocationResolver: (result: TypedSearchResult) => RawLocation;\n\n private constructor(\n key: string,\n displayText: string,\n routerLocationResolver: (result: TypedSearchResult) => RawLocation\n ) {\n this.key = key;\n this.displayText = displayText;\n this.routerLocationResolver = routerLocationResolver;\n SearchResultItemType.allValues.push(this);\n }\n\n public static getValues(): SearchResultItemType[] {\n return SearchResultItemType.allValues;\n }\n\n public static getByKey(key: string): SearchResultItemType {\n const found = SearchResultItemType.allValues.find((e) => e.key === key);\n if (found === undefined) {\n throw new Error(`SearchResultItemType - Key not found: ${key}`);\n }\n\n return found;\n }\n}\n\nexport class TypedSearchResult {\n result: SearchResultItem;\n\n constructor(result: SearchResultItem) {\n this.result = result;\n }\n\n // The router location object to navigate tothis search result item.\n get navigationRoute(): RawLocation {\n return this.type.routerLocationResolver(this);\n }\n\n get type(): SearchResultItemType {\n return SearchResultItemType.getByKey(this.result.type);\n }\n\n get description(): string {\n return this.result.description;\n }\n\n get objectId(): Guid {\n return this.result.objectId;\n }\n\n get isHidden(): boolean {\n return this.result.isHidden;\n }\n}\n\nexport default class SearchServiceExtended extends SearchService {\n public async typedSearch(\n tenantId: Guid,\n searchQuery: string\n ): Promise {\n const query = new SearchQuery();\n query.query = searchQuery;\n\n return super.search(tenantId, query).then((value) =>\n value.searchResultItems\n .map((v) => new TypedSearchResult(v))\n .sort((a, b) => {\n if (a.result.isHidden === b.result.isHidden) {\n return 0;\n }\n if (a.result.isHidden) {\n return 1;\n }\n return -1;\n })\n );\n }\n}\n\nexport const searchService = new SearchServiceExtended();\n"],"names":[],"mappings":"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"}