{"version":3,"sources":["Themes/Default/Content/ts/Shared/ClubSelector/ClubSelectionBase.ts"],"names":[],"mappings":"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","file":"ClubSelectionBase.js","sourcesContent":["import * as Q from 'q';\r\nimport * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as localisationHelper from \"localisationHelper\";\r\n\r\nimport \"knockoutValidation\";\r\n\r\n// Models\r\nimport { SelectTwoWithChildren } from \"Content/ts/Models/Shared/SelectTwo/selectTwoModels\";\r\nimport { IClubSelectionParams } from \"Content/ts/Models/Shared/ClubSelector/IClubSelectionParams\";\r\nimport { HomeClubConfigurationResponse } from \"Content/ts/Models/Shared/ClubSelector/clubConfiguration\";\r\nimport { ClubLocationSelectorResponse } from \"Content/ts/Models/Shared/ClubSelector/multipleClubSelector\";\r\n\r\n// Configuration\r\nimport { ClubSelectionConfiguration } from \"Content/ts/Shared/ClubSelector/Configuration/clubSelectionConfiguration\";\r\n\r\n// Services\r\nimport { ConfigurableTextService } from \"Scripts/ts/Localisation/ConfigurableTextService\";\r\nimport { ValidationService } from \"Content/ts/Shared/Services/Validation/validationService\";\r\nimport { ClubSelectionService } from \"Content/ts/Shared/ClubSelector/Services/clubSelectionServices\";\r\nimport { IClubSelectionCustomMessages } from 'Content/ts/Models/Shared/ClubSelector/ClubSelectionCustomMessages';\r\n\r\nexport const Deps = {\r\n LocalisationHelper: localisationHelper\r\n}\r\n\r\nexport class ClubSelectionBase {\r\n customMessages: {\r\n ClubLabel: string;\r\n ClubHelpText: string;\r\n LoadingClubs: string;\r\n ClubRequiredValidationMessage: string;\r\n };\r\n\r\n clubSearchUrl: string;\r\n clubSearchParams: any;\r\n closeOnSelect: boolean;\r\n allowClubClear: boolean;\r\n\r\n clubSelectionConfiguration: ClubSelectionConfiguration;\r\n\r\n clubCustomMessages: IClubSelectionCustomMessages;\r\n validationFields: KnockoutObservable[];\r\n hasSearchError: KnockoutObservable;\r\n isLoadingClubs: KnockoutObservable;\r\n showClubLabel: KnockoutObservable;\r\n hasLoadedAccountDetails: KnockoutObservable;\r\n\r\n selectedClub: KnockoutObservable;\r\n selectedClubs: KnockoutObservableArray;\r\n\r\n availableClubs: KnockoutObservableArray;\r\n\r\n isSelectionDisabled: KnockoutComputed;\r\n externalIsPropertyRequired: KnockoutComputed;\r\n externalIsSelectionDisabled: KnockoutComputed;\r\n\r\n constructor(params: IClubSelectionParams) {\r\n // Provided Property Configuration\r\n this.selectedClub = params.SelectedClub; // Important: Should always be left as the default value provided\r\n\r\n this.selectedClubs = params.SelectedClubs; // Important: Should always be left as the default value provided\r\n this.clubSearchUrl = params.ClubSearchUrl;\r\n this.clubSearchParams = params.ClubSearchParams;\r\n this.validationFields = params.ValidationFields || [];\r\n this.clubSelectionConfiguration = params.ClubSelectionConfiguration;\r\n this.isLoadingClubs = params.IsLoadingClubs || ko.observable(false);\r\n this.allowClubClear = params.AllowClubClear != null ? params.AllowClubClear : true;\r\n this.externalIsPropertyRequired = params.ExternalIsPropertyRequired || ko.pureComputed(() => false);\r\n this.externalIsSelectionDisabled = params.ExternalIsSelectionDisabled || ko.pureComputed(() => false);\r\n this.showClubLabel = params.ShowClubLabel != null ? ko.observable(params.ShowClubLabel) : ko.observable(true);\r\n this.clubCustomMessages = params.ClubCustomMessages;\r\n\r\n // Standard Property Configuration\r\n this.hasSearchError = ko.observable(false);\r\n this.hasLoadedAccountDetails = ko.observable(false);\r\n\r\n this.availableClubs = ko.observableArray([]);\r\n\r\n this.closeOnSelect = true;\r\n\r\n // Initialisation Methods\r\n this.retrieveCustomMessages();\r\n\r\n this.setupValidation();\r\n this.computedMethods();\r\n\r\n // Note: If the configuration hasn't been provided then it doesn't need a deferred load (e.g. waiting on a\r\n // subscription to fire off the data load) so configure the hierarchy at component load.\r\n if (this.clubSelectionConfiguration) {\r\n this.initialiseSignals();\r\n } else {\r\n this.configureClubHierarchy();\r\n }\r\n }\r\n\r\n public resetValue(): void {\r\n if (this.selectedClubs) {\r\n this.selectedClubs([]);\r\n }\r\n\r\n if (this.selectedClub) {\r\n this.selectedClub(null);\r\n }\r\n }\r\n\r\n private computedMethods() {\r\n this.isSelectionDisabled = ko.pureComputed(() => {\r\n return this.externalIsSelectionDisabled() || this.isLoadingClubs();\r\n });\r\n };\r\n\r\n private retrieveCustomMessages() {\r\n const capitalisedClubTitle = ConfigurableTextService.RetrieveTextSync(\"DefaultFacilityTitle\");\r\n\r\n this.customMessages = {\r\n ClubLabel: this.clubCustomMessages != null\r\n ? this.clubCustomMessages.ClubLabel\r\n : capitalisedClubTitle,\r\n LoadingClubs: this.clubCustomMessages != null\r\n ? this.clubCustomMessages.LoadingClubs\r\n : Deps.LocalisationHelper.build(\"GenericResources\", \"LoadingClubs\").replace(\"{0}\", ConfigurableTextService.RetrieveTextSync(\"DefaultFacilitiesTitle\")).getString(),\r\n ClubHelpText: this.clubCustomMessages != null\r\n ? this.clubCustomMessages.ClubHelpText\r\n : Deps.LocalisationHelper.build(\"GenericResources\", \"ClickToSearchForClub\").replace(\"{0}\", ConfigurableTextService.RetrieveTextSync(\"facilitiesTitle\")).getString(),\r\n ClubRequiredValidationMessage: this.clubCustomMessages != null\r\n ? this.clubCustomMessages.ClubRequiredValidationMessage\r\n : Deps.LocalisationHelper.build(\"ValidationMessageResources\", \"FieldIsRequired\").replace(\"{name}\", capitalisedClubTitle).getString()\r\n };\r\n };\r\n\r\n private configureClubHierarchy() {\r\n this.isLoadingClubs(true);\r\n\r\n Q.all([this.retrieveClubHierarchy(), this.retrieveDefaultClub()])\r\n .then((response: Array) => {\r\n const availableClubs = response[0] as Array;\r\n const homeClubConfiguration = response[1] as HomeClubConfigurationResponse;\r\n\r\n let clubId: number = null;\r\n if (this.selectedClub) {\r\n clubId = this.selectedClub() !== null ? this.selectedClub() : null;\r\n }\r\n\r\n if (clubId === null) {\r\n clubId = homeClubConfiguration !== null && homeClubConfiguration.ClubId !== null\r\n ? homeClubConfiguration.ClubId : null;\r\n }\r\n\r\n const clubHierarchy = this.buildClubHierarchy(availableClubs, clubId);\r\n this.availableClubs(clubHierarchy);\r\n this.isLoadingClubs(false);\r\n });\r\n };\r\n\r\n private retrieveClubHierarchy(): Q.Promise> {\r\n this.availableClubs([]);\r\n\r\n this.hasSearchError(true);\r\n\r\n return ClubSelectionService.RetrieveClubHierarchy(this.clubSearchUrl, this.clubSearchParams)\r\n .then((response: ClubLocationSelectorResponse[]) => {\r\n return response;\r\n });\r\n };\r\n\r\n private retrieveDefaultClub(): Q.Promise {\r\n return ClubSelectionService.RetrieveDefaultClub()\r\n .then((response: HomeClubConfigurationResponse) => {\r\n return response;\r\n });\r\n }\r\n\r\n private buildClubHierarchy(clubs: Array, assignedClubId: number): SelectTwoWithChildren[] {\r\n let clubHierarchy = _.chain(clubs)\r\n .sortBy(\"DisplayName\")\r\n .map((clubDetails: ClubLocationSelectorResponse) => {\r\n let options = {\r\n text: clubDetails.DisplayName ? clubDetails.DisplayName : clubDetails.Name,\r\n id: clubDetails.FacilityId.toString()\r\n };\r\n\r\n if (clubDetails.Children && clubDetails.Children.length > 0) {\r\n options.children = this.buildClubHierarchy(clubDetails.Children, assignedClubId);\r\n } else if (clubDetails.FacilityId == assignedClubId) {\r\n options.selected = true;\r\n if (this.selectedClub) {\r\n this.selectedClub(assignedClubId);\r\n } else if (this.selectedClubs) {\r\n this.selectedClubs.push(assignedClubId);\r\n }\r\n }\r\n\r\n return options;\r\n })\r\n .value();\r\n\r\n return clubHierarchy;\r\n };\r\n\r\n private setupValidation() {\r\n if (this.selectedClubs) {\r\n ValidationService.AddValidationRule(this.selectedClubs, this.validationFields, {\r\n validation: {\r\n validator: () => {\r\n return this.selectedClubs().length > 0;\r\n },\r\n message: this.customMessages.ClubRequiredValidationMessage,\r\n onlyIf: () => {\r\n return this.externalIsPropertyRequired();\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (this.selectedClub) {\r\n ValidationService.AddValidationRule(this.selectedClub, this.validationFields, {\r\n required: true,\r\n message: this.customMessages.ClubRequiredValidationMessage,\r\n onlyIf: () => {\r\n return this.externalIsPropertyRequired();\r\n }\r\n });\r\n };\r\n };\r\n\r\n private initialiseSignals() {\r\n this.clubSelectionConfiguration.configureClubHierarchy.add(this.configureClubHierarchy.bind(this));\r\n };\r\n}"]}