{"version":3,"file":"js/business.js","mappings":"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","sources":["webpack://localhost:5001/./src/ts/business.ts","webpack://localhost:5001/./src/ts/business/Backups.ts","webpack://localhost:5001/./src/ts/business/CallbackPanelSicCode.ts","webpack://localhost:5001/./src/ts/business/FakeDrawer.ts","webpack://localhost:5001/./src/ts/business/Filters.ts","webpack://localhost:5001/./src/ts/business/GMap.ts","webpack://localhost:5001/./src/ts/business/MapLabel.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable no-constant-condition */\r\n/**\r\n * window['SeachedKeys'] \r\n */\r\n\r\nimport { GMap } from './business/GMap';\r\nimport { CallbackPanelSicCode } from './business/CallbackPanelSicCode';\r\nimport { Filters } from './business/Filters';\r\n//import * as bc from './businessConsumer';\r\n\r\n\r\nconst app: any = window;\r\nconst Base = require('./base')\r\nconst PanelSicCode = require('./business/CallbackPanelSicCode');\r\nconst Map = require('./business/GMap');\r\nconst Filter = require('./business/Filters');\r\n\r\n//Element.prototype.remove = function () {\r\n// this.parentElement.removeChild(this);\r\n//}\r\nfunction remove() {\r\n for (let i = this.length - 1; i >= 0; i--)\r\n if (this[i] && this[i].parentElement) {\r\n this[i].parentElement.removeChild(this[i]);\r\n }\r\n}\r\n(NodeList.prototype as any).remove = remove;\r\n(HTMLCollection.prototype as any).remove = remove;\r\n\r\n\r\nexport class Business extends Base {\r\n ASPx: any;\r\n CallbackPanelSicCode: CallbackPanelSicCode;\r\n CRM: any;\r\n DataCities = [];\r\n dataCitySearched: any = [];\r\n DataStates = [];\r\n Filter: Filters;\r\n GMap: GMap;\r\n ListNames: [{ Name: string, Value: string }];\r\n loadSIC: boolean;\r\n LastSelect = 0;\r\n LoggerProxy: any;\r\n selectedArea = {\r\n data: {},\r\n currentSid: undefined\r\n } as any;\r\n selectedZips = {\r\n data: {},\r\n currentCid: undefined\r\n } as any;\r\n TempSelected = undefined;\r\n Twilio: any;\r\n User: { Name: string, Email: string }\r\n\r\n getFilters(Name: string) {\r\n return this.Filter.Criterias?.map(x => x.Name == Name)\r\n }\r\n\r\n get LeadId() {\r\n if (this.CRM)\r\n return this.CRM.LeadId;\r\n return undefined;\r\n }\r\n\r\n get Proxy() {\r\n return {\r\n Logger: this.LoggerProxy,\r\n LoadSic: this.loadSic,\r\n }\r\n }\r\n\r\n constructor(debug?: boolean) {\r\n super('Business', debug);\r\n this.Filter = new Filter(this);\r\n this.CallbackPanelSicCode = new PanelSicCode(this);\r\n this.LoggerProxy = this.createLogger('Proxy', true);\r\n\r\n this.User = window['User'] as any;\r\n\r\n }\r\n\r\n onReady() {\r\n this.ASPx = this.window.ASPx;\r\n this.$('[data-bs-toggle=\"tooltip\"]').tooltip();\r\n this.ASPx.AddHoverItems('LeftPane', [[['dxpnl-btnHover'], [''], ['EBB']]]);\r\n this.ASPx.AddPressedItems('LeftPane', [[['dxpnl-btnPressed'], [''], ['EBB']]]);\r\n this.ASPx.AddSelectedItems('LeftPane', [[['panel dxpnl-expanded'], [''], ['']], [['dxpnl-expanded'], [''], ['EB']], [['dxpnl-btnSelected'], [''], ['EBB']]]);\r\n this.ASPx.createControl(this.window.ASPxClientPanel, 'LeftPane', '', {\r\n 'collapseWindowWidth': 1023,\r\n 'animationType': 'slide'\r\n });\r\n this.ASPx.AddHoverItems('RightPane', [[['dxpnl-btnHover'], [''], ['EBB']]]);\r\n this.ASPx.AddPressedItems('RightPane', [[['dxpnl-btnPressed'], [''], ['EBB']]]);\r\n this.ASPx.AddSelectedItems('RightPane', [[['panel dxpnl-expanded'], [''], ['']], [['dxpnl-expanded'], [''], ['EB']], [['dxpnl-btnSelected'], [''], ['EBB']]]);\r\n this.ASPx.createControl(this.window.ASPxClientPanel, 'RightPane', '', {\r\n 'collapseWindowWidth': 1023,\r\n 'animationType': 'slide'\r\n });\r\n const self = this;\r\n\r\n $('.custom-checkbox').each(function (index, element) {\r\n const $element = $(element);\r\n $element.on('change', () => {\r\n self.expandCustomCheck($element);\r\n });\r\n });\r\n $('#refCount').on('click', () => {\r\n self.Filter.Updates();\r\n })\r\n this.actions();\r\n this.settings();\r\n this.sendSearchCriteria();\r\n this.blackList();\r\n super.onReady();\r\n }\r\n\r\n actions() {\r\n const self = this;\r\n const params = (new URL((document.location) as any)).searchParams;\r\n\r\n window['IsSearchIdExist'] = params.get('searchId') != undefined;\r\n\r\n window['SearchId'] = params.get('searchId');\r\n // if (window['User'] && window['User'].RAI) { $('#includeBlack-input').prop('checked', true); }\r\n\r\n if (window['IsSearchIdExist'])\r\n $('.root-preloader').show();\r\n window['IsSearchIdExistFirstTime'] = true;\r\n\r\n // $('#includeBlack-input').on('change', (e) => {\r\n // $('.root-preloader').show();\r\n // self.Filter.IsVisibleRefreshGrid();\r\n // const b = $(e.target).is(':checked');\r\n // $.get('/Business/SetBlackList', { b: b }, (data: any, _, ctx) => {\r\n // self.Filter.UpdateFilters(data, ctx);\r\n // })\r\n // })\r\n\r\n if (this.Filter.Backups.LastBackup.Level >= 1) {\r\n if (this.Filter.Backups.LastBackup.Level > 2) {\r\n this.Filter.Updates((data, _, ctx) => {\r\n $('.user-instruct').hide();\r\n $('#first-step').show();\r\n $('#first-disable').hide();\r\n // $('.lblInfoWrap').css('visibility', 'visible');\r\n self.Filter.UpdateCount(data);\r\n self.createMainGrid(self.Filter.Backups.LastBackup.Selected);\r\n\r\n });\r\n if (this.Filter.Backups.LastBackup.Zips) this.selectedZips = this.Filter.Backups.LastBackup.Zips;\r\n if (this.Filter.Backups.LastBackup.Area) this.selectedArea = this.Filter.Backups.LastBackup.Area;\r\n this.Filter.AddFilters(this.Filter.Backups.LastBackup.Criterias, true, () => {\r\n\r\n this.Filter.Updates((data, _, ctx) => {\r\n $('.user-instruct').hide();\r\n $('#first-step').show();\r\n $('#first-disable').hide();\r\n // $('.lblInfoWrap').css('visibility', 'visible');\r\n self.Filter.UpdateCount(data);\r\n self.createMainGrid(self.Filter.Backups.LastBackup.Selected);\r\n\r\n });\r\n });\r\n }\r\n else {\r\n if (this.Filter.Backups.LastBackup.Level == 2) {\r\n if (this.Filter.Backups.LastBackup.Zips) this.selectedZips = this.Filter.Backups.LastBackup.Zips;\r\n if (this.Filter.Backups.LastBackup.Area) this.selectedArea = this.Filter.Backups.LastBackup.Area;\r\n this.Filter.AddFilters(this.Filter.Backups.LastBackup.Criterias, true, () => {\r\n this.Filter.Updates((data, _, ctx) => {\r\n this.Filter.UpdateFilters(data, ctx);\r\n });\r\n });\r\n }\r\n else {\r\n if (this.Filter.Backups.LastBackup.Zips) this.selectedZips = this.Filter.Backups.LastBackup.Zips;\r\n if (this.Filter.Backups.LastBackup.Area) this.selectedArea = this.Filter.Backups.LastBackup.Area;\r\n this.Filter.AddFilters(this.Filter.Backups.LastBackup?.Criterias, true);\r\n }\r\n }\r\n }\r\n else if (window['User'] && window['claims']) {\r\n const list = window['claims'].map(e => {\r\n const data = {\r\n Name: '',\r\n Value: '1'\r\n };\r\n switch (e.Type) {\r\n case 'Permission/FL_PN':\r\n data.Name = 'Phoneable';\r\n break;\r\n case 'Permission/FL_WEB':\r\n data.Name = 'Presence_Of_URL';\r\n break;\r\n case 'Permission/FL_EM':\r\n data.Name = 'Presence_Of_Email';\r\n break;\r\n case 'Permission/FL_NB':\r\n data.Name = 'New_Business_Date_Filter';\r\n data.Value = '365';\r\n break;\r\n case 'Permission/FL_W':\r\n data.Name = 'Women_Owned';\r\n\r\n break;\r\n }\r\n return data;\r\n }).filter(e => e.Name != '');\r\n $.ajax({\r\n url: '/Business/AddFilters',\r\n method: 'POST',\r\n dataType: 'json',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify({ criterias: list }),\r\n success(data, status, ctx) {\r\n self.Filter.UpdateFilters(data as any, ctx);\r\n }\r\n });\r\n }\r\n else\r\n $.get('/Business/GetCountsFilters', (data, _, ctx) => {\r\n if (ctx.getResponseHeader('NewToken'))\r\n window.location = window.location;\r\n self.log('GetCountsFilters', data);\r\n self.Filter.GetCountFilters(data);\r\n });\r\n\r\n $('#search-pills-tab .nav-link').on('shown.bs.tab', (e) => {\r\n const id = $(e.target).attr('href');\r\n // self.setHeightOnGridsFilters(e.target, '#callbackPanelCity');\r\n const heightSearchContent = $('#nav-tabs-search').height();\r\n const heightTabs = $('#search-pills-tab').height() + 17;\r\n const heightHeader = $(id).find('.tab-content-header').height() + 8;\r\n const heightItemHeader = $(id).find('.tab-content-item-header').height() + 8;\r\n const heightGrid = heightSearchContent - heightTabs - heightHeader - heightItemHeader - 5;\r\n // let heightGrid = $('.filter-grid-wrap').height();\r\n try {\r\n if (id == '#search-pills-state') {\r\n // setTimeout (() => {\r\n // $('#callbackPanelCity').dxDataGrid('option', 'height', heightGrid);\r\n ($('#callbackPanelState') as any).dxList('option', 'height', heightGrid);\r\n // }, 500)\r\n } else if (id == '#search-pills-zip') {\r\n setTimeout(() => {\r\n $('#callbackPanelZipPart1').dxDataGrid('option', 'height', heightGrid);\r\n $('#callbackPanelZipPart2').dxDataGrid('option', 'height', heightGrid);\r\n }, 500)\r\n } else if (id == '#search-pills-area') {\r\n setTimeout(() => {\r\n $('#callbackPanelAreaPart1').dxDataGrid('option', 'height', heightGrid);\r\n $('#callbackPanelAreaPart2').dxDataGrid('option', 'height', heightGrid);\r\n }, 500)\r\n }\r\n } catch (ex) { };\r\n });\r\n\r\n $(window).on('resize', function () {\r\n const heightSearchContent = $('#nav-tabs-search').height();\r\n const heightTabs = $('#search-pills-tab').height() + 17;\r\n let heightHeader;\r\n let heightItemHeader;\r\n let heightGrid;\r\n\r\n // let heightGrid = $('.filter-grid-wrap').height();\r\n if ($('#search-pills-state').hasClass('active')) {\r\n heightHeader = $('#search-pills-state').find('.tab-content-header').height() + 8;\r\n heightItemHeader = $('#search-pills-state').find('.tab-content-item-header').height() + 8;\r\n heightGrid = heightSearchContent - heightTabs - heightHeader - heightItemHeader - 5;\r\n // $('#callbackPanelState').dxDataGrid('option', 'height', heightGrid);\r\n // $('#callbackPanelCity').dxDataGrid('option', 'height', heightGrid);\r\n setTimeout(() => {\r\n // $('#callbackPanelCity').dxDataGrid('option', 'height', heightGrid);\r\n ($('#callbackPanelState') as any).dxList('option', 'height', heightGrid);\r\n }, 500)\r\n }\r\n else if ($('#search-pills-zip').hasClass('active')) {\r\n heightHeader = $('#search-pills-zip').find('.tab-content-header').height() + 8;\r\n heightItemHeader = $('#search-pills-zip').find('.tab-content-item-header').height() + 8;\r\n heightGrid = heightSearchContent - heightTabs - heightHeader - heightItemHeader - 5;\r\n setTimeout(() => {\r\n\r\n $('#callbackPanelZipPart1').dxDataGrid('option', 'height', heightGrid);\r\n $('#callbackPanelZipPart2').dxDataGrid('option', 'height', heightGrid);\r\n }, 500)\r\n\r\n }\r\n else if ($('#search-pills-area').hasClass('active')) {\r\n heightHeader = $('#search-pills-area').find('.tab-content-header').height() + 8;\r\n heightItemHeader = $('#search-pills-area').find('.tab-content-item-header').height() + 8;\r\n heightGrid = heightSearchContent - heightTabs - heightHeader - heightItemHeader - 5;\r\n $('.filter-grid-wrap').height('100%')\r\n setTimeout(() => {\r\n $('#callbackPanelAreaPart1').dxDataGrid('option', 'height', heightGrid);\r\n $('#callbackPanelAreaPart2').dxDataGrid('option', 'height', heightGrid);\r\n }, 500)\r\n\r\n }\r\n // heightHeader = $('#search-pills-state').find('.tab-content-header').height() + 8;\r\n // heightItemHeader = $('#search-pills-state').find('.tab-content-item-header').height() + 8;\r\n // heightGrid = heightSearchContent - heightTabs - heightHeader - heightItemHeader - 5;\r\n })\r\n\r\n $('.go-search-siccode').on('click', e => {\r\n if ($('#search-siccode').val())\r\n self.CallbackPanelSicCode.Instance.filter([['Name', 'contains', $('#search-siccode').val()], 'or', ['Value', 'contains', $('#search-siccode').val()]])\r\n else {\r\n self.loadSic();\r\n // self.CallbackPanelSicCode.Instance.clearFilter();\r\n // self.CallbackPanelSicCode.Instance.clearSelection();\r\n }\r\n });\r\n\r\n $('.go-reset-siccode').on('click', e => {\r\n try {\r\n const instance = self.CallbackPanelSicCode.Instance;\r\n instance.clearSelection();\r\n instance.clearFilter();\r\n instance.forEachNode(el => instance.collapseRow(el.key));\r\n }\r\n catch (ex) {\r\n self.log(ex);\r\n }\r\n $('#search-siccode').val('').focus();\r\n });\r\n\r\n $('#search-siccode').on('keypress', e => {\r\n if (e.keyCode == 13)\r\n $('.go-search-siccode').trigger('click');\r\n })\r\n\r\n $('[data-criteria]').on('change', e => {\r\n const criteria = $(e.target).data('criteria');\r\n const value = $(e.target).data('value');\r\n self.log('Change Criteria', { Name: criteria, Value: value });\r\n if ($(e.target).is(':checked')) {\r\n self.Filter.AddFilter(criteria, value);\r\n } else {\r\n self.Filter.RemoveFilter(criteria, value);\r\n }\r\n if ($(e.target).attr('data-criteria') == 'Franchise_Code_Type') {\r\n const dataCriteria = $('[data-criteria=\"Omit_Franchise_Code_Type\"]');\r\n dataCriteria.prop('checked', false);\r\n self.Filter.RemoveFilter(dataCriteria.data('criteria'), dataCriteria.data('value'));\r\n }\r\n if ($(e.target).attr('data-criteria') == 'Omit_Franchise_Code_Type') {\r\n const dataCriteria = $('[data-criteria=\"Franchise_Code_Type\"]');\r\n dataCriteria.prop('checked', false);\r\n self.Filter.RemoveFilter(dataCriteria.data('criteria'), dataCriteria.data('value'));\r\n }\r\n });\r\n\r\n $('#i-zip-code-manual').on('keypress', e => {\r\n if (e.keyCode == 13) {\r\n const zip = $('#i-zip-code-manual').val();\r\n $.post('/Business/FindZip', { zips: [zip] }, (data) => {\r\n if (data.length) {\r\n data.forEach(x => {\r\n if (self.selectedZips.data[x.CID])\r\n self.selectedZips.data[x.CID].push(x);\r\n else\r\n self.selectedZips.data[x.CID] = [x];\r\n })\r\n }\r\n else\r\n if (self.selectedZips.data[-1])\r\n self.selectedZips.data[-1].push({ Id: -1, ZipCode1: zip });\r\n else\r\n self.selectedZips.data[-1] = [{ Id: -1, ZipCode1: zip }];\r\n self.resetZip();\r\n });\r\n //self.selectedZips.data[self.selectedZips.currentCid] = selectedRowsData;\r\n }\r\n });\r\n\r\n $('#i-area-code-manual').on('keypress', e => {\r\n if (e.keyCode == 13) {\r\n const area = $('#i-area-code-manual').val();\r\n $.post('/Business/FindArea', { areas: [area] }, (data) => {\r\n if (data.length) {\r\n data.forEach(x => {\r\n if (self.selectedArea.data[x.SID])\r\n self.selectedArea.data[x.SID].push(x);\r\n else\r\n self.selectedArea.data[x.SID] = [x];\r\n })\r\n }\r\n else\r\n if (self.selectedArea.data[-1])\r\n self.selectedArea.data[-1].push({ Id: -1, Code: area });\r\n else\r\n self.selectedArea.data[-1] = [{ Id: -1, Code: area }];\r\n self.resetArea();\r\n });\r\n }\r\n });\r\n\r\n $('.search-btn-clear').off('click').on('click', () => {\r\n $('.clear-button').trigger('click');\r\n });\r\n\r\n $('.clear-button').on('click', e => {\r\n $('.go-reset-siccode').trigger('click');\r\n\r\n self.Filter.RemoveAllFilters();\r\n self.Filter.Updates();\r\n try {\r\n const m = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n\r\n m.option('value', undefined);\r\n } catch (ex) {\r\n self.log(ex);\r\n }\r\n\r\n $('.btn-sendSearchCriteria').hide();\r\n $('#searchCriteria-save-btn').prop('disabled', true)\r\n try {\r\n $('#callbackPanelSicCode').dxTreeList('instance').clearSelection();\r\n\r\n }\r\n catch (ex) {\r\n self.log(ex);\r\n }\r\n try {\r\n $('.mainGrid').dxDataGrid('instance').deselectAll();\r\n } catch (ex) {\r\n self.log(ex);\r\n }\r\n $('#a_search_tabs').trigger('click');\r\n });\r\n\r\n $('#quickSearch').on('input', e => {\r\n const value = $('#quickSearch').val() as string;\r\n let length;\r\n value[0] == '1' ? length = 10 : length = 9;\r\n if (value.length > length) {\r\n if (RegExp('^[0-9]{9,10}').test(value)) {\r\n $('#toggleCheckbox2-input').prop('checked', 'true');\r\n isPhoneQuickSearch();\r\n // $('#quickSearch').val(value);\r\n }\r\n }\r\n });\r\n\r\n $('#quickSearch').on('keydown', (e) => {\r\n if (e.keyCode === 13) {\r\n $('#search-button-btn').trigger('click');\r\n }\r\n });\r\n\r\n // $('#quickSearch').on('focus', () => {\r\n // $('.search-legend').hide();\r\n // });\r\n\r\n // $('.search-legend').on('click', () => {\r\n // $('.search-legend').hide();\r\n // $('#quickSearch').focus();\r\n // });\r\n\r\n // $('#quickSearch').on('blur', () => {\r\n // let value = $('#quickSearch').val();\r\n // value && value != '+1 (___) ___-____' ? $('.search-legend').hide() : $('.search-legend').show();\r\n // });\r\n\r\n $('#toggleCheckbox2-input').on('input', e => {\r\n isPhoneQuickSearch();\r\n // if ($('#toggleCheckbox2-input').is(':checked') && !$('#businessWithPhone input.toggleCheckbox-input').is(':checked')) {\r\n // $('#businessWithPhone input.toggleCheckbox-input').trigger('click');\r\n // }\r\n // if (!$('#toggleCheckbox2-input').is(':checked') && $('#businessWithPhone input.toggleCheckbox-input').is(':checked')) {\r\n // $('#businessWithPhone input.toggleCheckbox-input').trigger('click');\r\n // }\r\n });\r\n\r\n $('#search-button-btn').on('click', e => {\r\n let value = $('#quickSearch').val() as string;\r\n const b = $('#toggleCheckbox2-input').is(':checked');\r\n // if (!value.length) $('.search-legend').show();\r\n $('#lblInfo').text('0');\r\n if (value.length < 3)\r\n return;\r\n if (b) {\r\n value = value.split('').filter(e => { return e.charCodeAt(0) > 47 && e.charCodeAt(0) < 58 }).join('');\r\n if (value.charAt(0) == '1') value = value.substr(1);\r\n self.Filter.AddFilter('Phone', value, () => {\r\n $('button.search-button').click();\r\n }, true);\r\n } else {\r\n self.Filter.AddFilter('Primary_Company_Exact', value, () => {\r\n $('button.search-button').click();\r\n }, true);\r\n\r\n //let len = value.length;\r\n //if (value[0] == '\"' && value[value.length - 1] == '\"') {\r\n // value = value.substr(1, len - 2);\r\n // self.Filter.AddFilter('Primary_Company_Exact', value, () => {\r\n // $('button.search-button').click();\r\n // }, true);\r\n\r\n //} else {\r\n // self.Filter.AddFilter('Primary_Company_Wildcard', value, () => {\r\n // $('button.search-button').click();\r\n // }, true);\r\n //}\r\n }\r\n ($('#searchCriteria-list') as any).dxDropDownBox('instance').option('value', '');\r\n });\r\n\r\n $('#searchCriteria-save-btn').on('click', () => {\r\n const devExDropdownBox = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n const selectSearchCriteria = devExDropdownBox.option('value');\r\n if (selectSearchCriteria)\r\n $('#dxPopup').dxPopup({\r\n closeOnOutsideClick: true,\r\n contentTemplate: () => {\r\n const container = $('
');\r\n const colText = $('
Do you want to update?
');\r\n const yesBtn = $('
');\r\n const noBtn = $('
');\r\n container.append(colText);\r\n container.append(noBtn);\r\n container.append(yesBtn);\r\n\r\n const textRow = $('
');\r\n textRow.append('');\r\n const colTextInput = $('
');\r\n const input = $('');\r\n input.val(devExDropdownBox.option('text'));\r\n colTextInput.append(input);\r\n const colTextBtn = $('
');\r\n const textBtn = $('');\r\n colTextBtn.append(textBtn);\r\n textRow.append(colTextInput);\r\n textRow.append(colTextBtn);\r\n const popup = $('#dxPopup').dxPopup('instance');\r\n yesBtn.on('click', (e) => {\r\n e.preventDefault();\r\n colText.hide();\r\n textBtn.html('Update');\r\n textBtn.on('click', () => {\r\n const name = input.val() as string;\r\n self.updateSaveSearchCriteria(selectSearchCriteria, name);\r\n popup.hide();\r\n })\r\n container.empty();\r\n container.append(textRow);\r\n input.focus();\r\n });\r\n\r\n noBtn.on('click', (e) => {\r\n e.preventDefault();\r\n\r\n popup.option('title', 'Add Search');\r\n colText.hide();\r\n textBtn.on('click', () => {\r\n const name = input.val() as string;\r\n self.addSaveSearchCriteria(name);\r\n popup.hide();\r\n })\r\n container.empty();\r\n container.append(textRow);\r\n })\r\n\r\n return container;\r\n },\r\n onShown: () => {\r\n $('#sc-name').focus();\r\n },\r\n position: {\r\n at: 'right',\r\n my: 'right',\r\n of: '#searchCriteria-save-btn'\r\n },\r\n showTitle: false,\r\n // title:'Update Search',\r\n height: 60,\r\n width: 400,\r\n }).dxPopup('instance').show()\r\n else\r\n $('#dxPopup').dxPopup({\r\n closeOnOutsideClick: true,\r\n contentTemplate: () => {\r\n //let row = \r\n const container = $('
');\r\n container.append('');\r\n const colInput = $('
');\r\n const input = $('');\r\n colInput.append(input);\r\n const colBtn = $('
');\r\n const addBtn = $('');\r\n colBtn.append(addBtn);\r\n const popup = $('#dxPopup').dxPopup('instance');\r\n addBtn.on('click', () => {\r\n const name = input.val() as string;\r\n self.addSaveSearchCriteria(name);\r\n popup.hide();\r\n $('.btn-sendSearchCriteria').show();\r\n })\r\n container.append(colInput);\r\n container.append(colBtn);\r\n\r\n return container;\r\n },\r\n position: {\r\n at: 'right',\r\n my: 'right',\r\n of: '#searchCriteria-save-btn'\r\n },\r\n showTitle: false,\r\n //title:'Add Search',\r\n height: 60,\r\n width: 400,\r\n }).dxPopup('instance').show()\r\n\r\n if ('#sc-nameN') setTimeout(function () { $('#sc-nameN').focus() }, 500);\r\n });\r\n\r\n $('#hidePurchasedLeads').on('input', () => {\r\n try {\r\n // $('.mainGrid').dxDataGrid('refresh');\r\n // $('.mainGrid').dxDataGrid('deselectAll');\r\n self.Filter.IsVisibleRefreshGrid();\r\n $('.d-refresh-business-grid-btn').prop('disabled', false);\r\n } catch (ex) { self.log(ex); }\r\n });\r\n\r\n $('#mainGridResultModal').off('hidden.bs.modal').on('hidden.bs.modal', (e) => {\r\n window['IsMainGridResult'] = false;\r\n })\r\n\r\n $('.googleMap-btn').off('click').on('click', () => {\r\n if ($('#google_map').length) {\r\n ($('#google_map') as any).modal('show');\r\n } else {\r\n $('.root-preloader').show();\r\n $.post('/Popups/GoogleMapModal', data => {\r\n $('body').append(data);\r\n self.GMap = new Map(self, true);\r\n ($('#google_map') as any).modal('show');\r\n });\r\n }\r\n })\r\n\r\n $('#consumerLeadsLink, #myCrmLink').on('click', function () {\r\n if (!self.User) {\r\n ($('#login-modal') as any).modal('show');\r\n }\r\n });\r\n\r\n //#region open pop up Add to CRM\r\n $(document).on('click', '.addToCrm, .crmCard-addToCrm', () => {\r\n if (window['User']) {\r\n if ($('.mainGrid').dxDataGrid('instance').getSelectedRowsData().length == 0 && self.Filter.Count > 10000) {\r\n $('.root-preloader').show();\r\n ($('#limitSelectionLeadsModal') as any).modal('show');\r\n try { $('.mainGrid').dxDataGrid('deselectAll'); } catch (ex) { self.log(ex); }\r\n $('.root-preloader').hide();\r\n } else {\r\n self.needToBuyPacks(false);\r\n }\r\n } else {\r\n $('.header-links a[data-bs-target=\"#login-modal\"]').trigger('click');\r\n }\r\n })\r\n\r\n $(document).on('click', '.addToCrmFromleadPopUp', () => {\r\n self.needToBuyPacks(true);\r\n });\r\n //#endregion\r\n\r\n self.searchTabs();\r\n self.runSearch();\r\n\r\n self.bussinesSearch();\r\n\r\n if (window['SearchId'] != null) {\r\n $.post('/Business/GetSendedSearchCriteria', { searchId: window['SearchId'] }, data => {\r\n if (data.length > 0) {\r\n const result = data.filter(el => {\r\n if (data[0].InDB == false)\r\n return el;\r\n });\r\n if (window['IsSearchIdExist'] && result.length > 0) {\r\n $('#searchCriteria-save-btn').prop('disabled', false)\r\n const maps = result[0].SearchHistory.SearchHistoryBusinessRow.map(el => {\r\n return { Name: el.SearchCriteriaName, Value: el.SearchCriteriaValue };\r\n });\r\n\r\n self.Filter.RemoveAllFilters(() => {\r\n self.Filter.AddFilters(maps);\r\n });\r\n }\r\n } else {\r\n $('.root-preloader').hide();\r\n }\r\n });\r\n }\r\n\r\n //#region Pop up loaded if User have UnregisterCreateSearchCriteria in cookie\r\n if (self.getCookie('UnregisterCreateSearchCriteria') != ''\r\n && JSON.parse(self.getCookie('UnregisterCreateSearchCriteria')).length > 0\r\n && this.User) {\r\n self.generatePendingSearchCriteriasGrid(JSON.parse(self.getCookie('UnregisterCreateSearchCriteria')));\r\n ($('#pendingSearchCriteriasModal') as any).modal('show');\r\n }\r\n //#endregion\r\n\r\n function isPhoneQuickSearch() {\r\n const b = $('#toggleCheckbox2-input').is(':checked');\r\n\r\n if (b) {\r\n $('#quickSearch').prop('type', 'tel').prop('title', 'Search by Phone Number');\r\n ($('#quickSearch') as any).tooltip('dispose').tooltip('enable');\r\n ($('#quickSearch') as any).mask('+1 (999) 999-9999');\r\n $('#quickSearch').focus();\r\n }\r\n else {\r\n ($('#quickSearch') as any).unmask();\r\n $('#quickSearch').prop('type', 'search').prop('title', 'For Exact Match use quotation marks').val('');\r\n ($('#quickSearch') as any).tooltip('dispose').tooltip('enable');\r\n // $('.search-legend').hide();\r\n $('#quickSearch').focus();\r\n }\r\n toggleCheckboxSearchIsChecked();\r\n }\r\n\r\n function toggleCheckboxSearchIsChecked() {\r\n if ($('#toggleCheckbox2-input').is(':checked')) {\r\n $('.search-legend__item.busName').removeClass('active');\r\n $('.search-legend__item.phoNumb').addClass('active');\r\n } else {\r\n $('.search-legend__item.busName').addClass('active');\r\n $('.search-legend__item.phoNumb').removeClass('active');\r\n }\r\n }\r\n }\r\n\r\n addSaveSearchCriteria(name: string) {\r\n const self = this;\r\n if (this.User) {\r\n const criterias = self.Filter.Criterias.map(x => {\r\n return { Name: x.Name.toString(), Value: x.Value.toString() }\r\n });\r\n $.ajax({\r\n url: '/Business/AddListSearchCriteria',\r\n method: 'POST',\r\n dataType: 'json',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify({ name: name, criterias: criterias }),\r\n success(data) {\r\n const m = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n m._refresh();\r\n m.option('value', data.Id);\r\n // $('#a_search_tabs').trigger('click');\r\n }\r\n });\r\n\r\n } else {\r\n ($('#login-modal') as any).modal('show');\r\n let rows = [];\r\n if (self.getCookie('UnregisterCreateSearchCriteria') != '')\r\n rows = (JSON.parse(self.getCookie('UnregisterCreateSearchCriteria')))\r\n\r\n rows.push({ name: name, criterias: self.Filter.Criterias });\r\n self.createCookie('UnregisterCreateSearchCriteria', JSON.stringify(rows), new Date);\r\n }\r\n }\r\n\r\n addtoCrmForRai() {\r\n const self = this;\r\n // if (+$('#businessStatusView .leadsCount span').text().replace(/[^0-9]/g,'') > 1) {\r\n // if (window['User'] && window['User'].RAI) {\r\n let selected: any = {};\r\n try {\r\n selected = $('.mainGrid').dxDataGrid('instance').getSelectedRowsData();\r\n }\r\n catch (ex) {\r\n self.log(ex);\r\n }\r\n if (selected.length) {\r\n const data = $('.mainGrid').dxDataGrid('instance').getSelectedRowsData().map(e => { return { Phone: e.Phone, Bid: e.Id } });\r\n $('.root-preloader').show();\r\n $.get('/Business/GetBusinessStatus/', data[0], (flags) => {\r\n if (flags.Error) {\r\n alert('Leads equals = 0');\r\n $('.root-preloader').hide();\r\n } else {\r\n self.gvLeadsGroups('#addToCrmForRaiUsersModal');\r\n $('.addToCRMGroups-form').show();\r\n ($('#addToCrmForRaiUsersModal') as any).modal('show');\r\n const criteria = [flags.Check0, flags.Check1, flags.Check2];\r\n const criteriaList = $('#addToCrmForRaiUsersModal .criterias').find('.criteriasItem');\r\n let criteriaListFalse = false;\r\n for (let index = 0; index < criteria.length; index++) {\r\n\r\n $(criteriaList[index]).find('.criteriasItem-text').removeClass('check');\r\n $(criteriaList[index]).find('.fa-times').removeClass('check');\r\n $(criteriaList[index]).find('.fa-check').removeClass('check');\r\n }\r\n for (let index = 0; index < criteria.length; index++) {\r\n\r\n if (criteria[index] === false) {\r\n $(criteriaList[index]).find('.fa-times').addClass('check');\r\n $(criteriaList[index]).find('.criteriasItem-text').addClass('check');\r\n criteriaListFalse = true;\r\n break;\r\n } else {\r\n $(criteriaList[index]).find('.fa-check').addClass('check');\r\n }\r\n\r\n }\r\n criteriaListFalse ? $('#addToCrmForRaiUsersModal .addToCRMGroups-form').fadeOut('fast') : $('#addToCrmForRaiUsersModal .addToCRMGroups-form').fadeIn();\r\n $('.root-preloader').hide();\r\n }\r\n });\r\n }\r\n // }\r\n // } else {\r\n // alert('Your Leads Credit has updated');\r\n // }\r\n // ($('#addToCrmForRaiUsersModal .gvLeadsGroups') as any).dxDropDownBox('instance').option('onSelectionChanged', () => {\r\n // ($('.gvLeadsGroups') as any).dxDropDownBox('instance').close();\r\n // });\r\n\r\n }\r\n\r\n assignAvalibleSearchHistoryBusinessToUser(searchId) {\r\n let user;\r\n $.ajax({\r\n type: 'POST',\r\n url: '/MultipleNodeSelection/AssignAvalibleSearchHistoryBusinessToUser',\r\n data: { searchId: searchId },\r\n async: false,\r\n dataType: 'json',\r\n crossDomain: true,\r\n success: function (result) {\r\n ($('#approveSearchCtriteriaAssign') as any).modal('hide');\r\n alert('Search Criteria Successfully added to the user');\r\n },\r\n error: function () {\r\n alert('Somthing gono wrong with AssignAvalibleSearchHistoryBusinessToUser response');\r\n }\r\n });\r\n return user;\r\n }\r\n\r\n // #region === Black List ===\r\n blackList() {\r\n const self = this;\r\n if (self.User) self.blackListGetCountOfAllValues();\r\n\r\n // === show blacklist dropdown\r\n $('.blackList-dropdown').off('show.bs.dropdown').on('show.bs.dropdown', (e) => {\r\n if (self.User) {\r\n ($('.blackList-companyName-tab') as any).tab('show');\r\n }\r\n else {\r\n e.preventDefault();\r\n ($('#login-modal') as any).modal('show');\r\n }\r\n })\r\n\r\n // === hide blacklist dropdown\r\n $('.blackList-dropdown').off('hidden.bs.dropdown').on('hidden.bs.dropdown', (e) => {\r\n if (self.User) {\r\n ($('.blackList-nav-link') as any).removeClass('active');\r\n $('.blackList-companyName-add-btn').prop('disabled', true);\r\n\r\n try {\r\n $('.blackList-companyName-add').dxTextBox('instance').dispose();\r\n $('.gvBlackListCompanyName').dxDataGrid('instance').dispose();\r\n ($('.blackList-companyName-search') as any).dxRadioGroup('instance').dispose();\r\n $('.blackList-sicCode-add').dxTextBox('instance').dispose();\r\n $('.gvBlackListSicCode').dxDataGrid('instance').dispose();\r\n }\r\n catch (ex) { }\r\n }\r\n })\r\n\r\n // === in dropdown - show Company Name tab\r\n $('.blackList-companyName-tab').off('shown.bs.tab').on('shown.bs.tab', () => {\r\n self.blackListCompanyNameAdd();\r\n self.blackListCompanyNameRadio();\r\n self.blackListCompanyNameGrid();\r\n\r\n $('.blackList-companyName-clear-btn').off('click').on('click', () => {\r\n self.blackListClear();\r\n })\r\n })\r\n\r\n // === in dropdown - show Sic Code tab\r\n $('.blackList-sicCode-tab').off('shown.bs.tab').on('shown.bs.tab', () => {\r\n self.blackListSicCodeAdd();\r\n self.blackListSicCodeGrid();\r\n\r\n $('.blackList-sicCode-clear-btn').off('click').on('click', () => {\r\n self.blackListClear();\r\n })\r\n })\r\n\r\n // === close dropdown\r\n $('.blackList-close').off('click').on('click', () => {\r\n $('.blackList-btn').click();\r\n })\r\n }\r\n\r\n blackListAddValue(name: string, type = null, searchTextPosition) {\r\n const self = this;\r\n $('.root-preloader').show();\r\n $.post('/Business/AddValueInBlackList', { name: name, type: type, searchTextPosition: searchTextPosition }, (data, _, ctx) => {\r\n self.blackListGetCountOfAllValues();\r\n if (!type) {\r\n ($('.blackList-companyName-add') as any).dxTextBox('instance').reset();\r\n $('.gvBlackListCompanyName').dxDataGrid('refresh');\r\n }\r\n else {\r\n ($('.blackList-sicCode-add') as any).dxTextBox('instance').reset();\r\n $('.gvBlackListSicCode').dxDataGrid('refresh');\r\n }\r\n //$('.blackList-companyName-add, .blackList-sicCode-add').val('');\r\n\r\n //$('.gvBlackListCompanyName').dxDataGrid('refresh');\r\n //$('.gvBlackListSicCode').dxDataGrid('refresh');\r\n\r\n self.Filter.UpdateFilters(data, ctx);\r\n try {\r\n $('.mainGrid').dxDataGrid('refresh');\r\n $('.mainGrid').dxDataGrid('deselectAll');\r\n }\r\n catch (ex) {\r\n $('.root-preloader').hide();\r\n self.log(ex);\r\n }\r\n })\r\n }\r\n\r\n blackListClear() {\r\n const self = this;\r\n\r\n const obj = {\r\n callback: blackListClearCallback,\r\n classYesBtn: 'blackListClearAll',\r\n hideCancelIcon: false,\r\n textModal: 'Are you sure to delete all items from the Black list?',\r\n textNoBtn: 'Cancel',\r\n textYesBtn: 'Yes',\r\n titleModal: 'Clear Black List',\r\n }\r\n window['InstanceBase'].onePropositionModalLoad(obj);\r\n\r\n function blackListClearCallback() {\r\n //e.preventDefault();\r\n //e.stopPropagation();\r\n let type = null;\r\n if ($('.blackList-nav-link.active').hasClass('blackList-sicCode-tab')) type = 'siccode';\r\n\r\n $('.root-preloader').show();\r\n $.get('/Business/CleareAllValuesFromBlackListByType', { type: type }, (data, _, ctx) => {\r\n self.blackListGetCountOfAllValues();\r\n self.Filter.UpdateFilters(data, ctx);\r\n\r\n type == 'siccode' ? $('.gvBlackListSicCode').dxDataGrid('refresh') : $('.gvBlackListCompanyName').dxDataGrid('refresh');\r\n\r\n try {\r\n $('.mainGrid').dxDataGrid('refresh');\r\n $('.mainGrid').dxDataGrid('deselectAll');\r\n }\r\n catch (ex) {\r\n $('.root-preloader').hide();\r\n self.log(ex);\r\n }\r\n })\r\n }\r\n }\r\n\r\n blackListCompanyNameAdd() {\r\n const self = this;\r\n\r\n ($('.blackList-companyName-add') as any).dxTextBox({\r\n inputAttr: { 'aria-label': 'Black List Company Name' },\r\n label: 'Enter Company Name',\r\n maxLength: 100,\r\n onFocusOut: (e) => {\r\n ($('.blackList-companyName-add') as any).dxValidator('instance').validate();\r\n },\r\n onInput: (e) => {\r\n e.component.option('validationStatus', 'valid');\r\n $('.blackList-companyName-add-btn').prop('disabled', e.component.option('text').trim().length ? false : true);\r\n },\r\n onKeyDown: (e) => {\r\n if ((e as any).event.originalEvent.keyCode === 13) {\r\n setTimeout(() => {\r\n $('.blackList-companyName-add-btn').trigger('click');\r\n }, 200);\r\n }\r\n },\r\n onValueChanged: (e) => {\r\n $('.blackList-companyName-add-btn').prop('disabled', e.value.trim().length ? false : true);\r\n },\r\n //placeholder: 'Enter Company Name',\r\n value: '',\r\n }).dxValidator({\r\n validationRules: [{\r\n message: 'Already exists',\r\n type: 'custom',\r\n validationCallback: ({ value }) => {\r\n const name = value.trim();\r\n\r\n const grid: any = $('.gvBlackListCompanyName').dxDataGrid('instance');\r\n const gridItems = grid.getDataSource()._items;\r\n const radioValue = ($('.blackList-companyName-search') as any).dxRadioGroup('instance').option('value');\r\n const isName = gridItems.find(item => item.Name == name && item.SearchTextPosition == radioValue);\r\n if (isName) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n }],\r\n });\r\n\r\n $('.blackList-companyName-add-btn').off('click').on('click', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const name = ($('.blackList-companyName-add') as any).dxTextBox('instance').option('value').trim();\r\n\r\n const radioValue = ($('.blackList-companyName-search') as any).dxRadioGroup('instance').option('value');\r\n if ($('.blackList-companyName-add').dxTextBox('instance').option('validationStatus') == 'valid') {\r\n self.blackListAddValue(name, null, radioValue);\r\n //$('.blackList-companyName-add-btn').prop('disabled', true);\r\n //self.blackListCompanyNameRadio();\r\n }\r\n });\r\n }\r\n\r\n blackListCompanyNameGrid() {\r\n const self = this;\r\n const columns: any = [\r\n {\r\n dataField: 'Name',\r\n filterOperations: ['startsWith'],\r\n },\r\n {\r\n allowResizing: false,\r\n caption: 'Search By',\r\n dataField: 'SearchTextPosition',\r\n width: 70\r\n },\r\n {\r\n allowResizing: false,\r\n //caption: '#',\r\n cellTemplate: (cell, e) => {\r\n let del;\r\n if (e.rowType == 'data' && e.data && (window['User'].Id == e.data.UserId)) {\r\n del = $('Delete');\r\n del.on('click', c => {\r\n $('.root-preloader').show();\r\n c.preventDefault();\r\n c.stopPropagation();\r\n self.blackListGridRemoveRow(e.data.Id, 'name');\r\n // self.blackListCompanyNameGrid();\r\n $('.gvBlackListCompanyName').dxDataGrid('refresh');\r\n try {\r\n $('.mainGrid').dxDataGrid('refresh');\r\n $('.mainGrid').dxDataGrid('deselectAll');\r\n }\r\n catch (ex) {\r\n $('.root-preloader').hide();\r\n self.log(ex);\r\n }\r\n\r\n });\r\n } else del = $('
Manager
');\r\n cell.append(del);\r\n },\r\n width: 80,\r\n }\r\n ];\r\n if (window['User'].Manager)\r\n columns.unshift({\r\n allowResizing: false,\r\n caption: 'For All',\r\n cellTemplate(cell, data) {\r\n const inp: any = $('
');\r\n inp.dxCheckBox({\r\n value: data.value,\r\n readOnly: data.data.UserId != window['User']['Id'],\r\n onValueChanged: (e) => {\r\n $.get('/Business/SetBlackListForAll', { id: data.key, b: e.value });\r\n }\r\n });\r\n cell.append(inp);\r\n },\r\n dataField: 'ForAll',\r\n width: 60\r\n });\r\n $('.gvBlackListCompanyName').dxDataGrid({\r\n dataSource: window['DevExpress'].data.AspNet.createStore({\r\n key: 'Id',\r\n loadUrl: '/Business/GetBlackList',\r\n onLoading: (loadOptions) => {\r\n self.log('StateLoad', loadOptions);\r\n },\r\n onLoaded: (result) => {\r\n self.log('StateData', result)\r\n $('.blackList-companyName-total-count').text(result.length);\r\n }\r\n }),\r\n allowColumnReordering: true,\r\n allowColumnResizing: true,\r\n columnResizingMode: 'widget',\r\n columns: columns,\r\n onContentReady: (e) => {\r\n setTimeout(() => {\r\n $('[data-bs-toggle=\"tooltip\"]').tooltip('enable');\r\n }, 500)\r\n //window['fixShowLinesDevExGrid']('.gvBlackListCompanyName', true);\r\n self.selectAlphabeticalOrder('.gvBlackListCompanyName');\r\n },\r\n onEditorPreparing: (ev) => {\r\n window['InstanceBase'].applyFilterOnDevExGrid(ev);\r\n },\r\n pager: {\r\n allowedPageSizes: [10, 25, 50, 100],\r\n displayMode: 'compact',\r\n showNavigationButtons: true,\r\n showPageSizeSelector: true\r\n },\r\n paging: {\r\n enabled: true,\r\n pageSize: 10\r\n },\r\n rowAlternationEnabled: true,\r\n searchPanel: {\r\n visible: true\r\n },\r\n showBorders: true,\r\n showColumnLines: true,\r\n height: 410,\r\n //width: 304\r\n });\r\n }\r\n\r\n blackListCompanyNameRadio() {\r\n //$('.blackList-companyName-add-btn').prop('disabled', true);\r\n const defaultBlackListRadio = ['Start with', 'Exact'];\r\n\r\n ($('.blackList-companyName-search') as any).dxRadioGroup({\r\n items: defaultBlackListRadio,\r\n layout: 'horizontal',\r\n //onValueChanged: () => {\r\n // $('.pleaseSelect').hide();\r\n // if (($('.blackList-companyName-add') as any).val().trim().length > 0) $('.blackList-companyName-add-btn').prop('disabled', false);\r\n //},\r\n value: defaultBlackListRadio[0],\r\n });\r\n }\r\n\r\n blackListGetCountOfAllValues() {\r\n $.post('/Business/GetCountOfAllBlackListValues', (data) => {\r\n $('.blackList-btn-count').text(data.count);\r\n })\r\n }\r\n\r\n blackListGridRemoveRow(id: number, name) {\r\n const self = this;\r\n $('.root-preloader').show();\r\n $('[data-bs-toggle=\"tooltip\"]').tooltip('hide');\r\n $.post('/Business/RemoveCompNameFromBlackList', { id: id }, (data, _, ctx) => {\r\n self.Filter.UpdateFilters(data, ctx);\r\n name == 'name' ? $('.gvBlackListCompanyName').dxDataGrid('refresh') : $('.gvBlackListSicCode').dxDataGrid('refresh');\r\n self.blackListGetCountOfAllValues();\r\n if (!$('.mainGrid').is(':visible')) $('.root-preloader').hide();\r\n try {\r\n $('.mainGrid').dxDataGrid('refresh');\r\n $('.mainGrid').dxDataGrid('deselectAll');\r\n }\r\n catch (ex) {\r\n $('.root-preloader').hide();\r\n self.log(ex);\r\n }\r\n })\r\n }\r\n\r\n blackListSicCodeAdd() {\r\n const self = this;\r\n\r\n ($('.blackList-sicCode-add') as any).dxTextBox({\r\n inputAttr: { 'aria-label': 'Black List Sic Code' },\r\n label: 'Enter SIC Code',\r\n mask: '0000000',\r\n maskInvalidMessage: '7 numbers',\r\n onFocusOut: (e) => {\r\n ($('.blackList-sicCode-add') as any).dxValidator('instance').validate();\r\n },\r\n onInput: (e) => {\r\n e.component.option('validationStatus', 'valid');\r\n $('.blackList-sicCode-add-btn').prop('disabled', e.component.option('text').replace(/\\D/g, '').split('_').join('').length === 7 ? false : true);\r\n },\r\n onKeyDown: (e) => {\r\n if ((e as any).event.originalEvent.keyCode === 13) {\r\n setTimeout(() => {\r\n $('.blackList-sicCode-add-btn').trigger('click');\r\n }, 200);\r\n }\r\n },\r\n onValueChanged: (e) => {\r\n $('.blackList-sicCode-add-btn').prop('disabled', e.component.option('text').replace(/\\D/g, '').split('_').join('').length === 7 ? false : true);\r\n },\r\n placeholder: 'Enter SIC Code',\r\n value: '',\r\n }).dxValidator({\r\n validationRules: [{\r\n message: 'Already exists',\r\n type: 'custom',\r\n validationCallback: ({ value }) => {\r\n const name = value.replace(/\\D/g, '');\r\n\r\n const grid: any = $('.gvBlackListSicCode').dxDataGrid('instance');\r\n const gridItems = grid.getDataSource()._items;\r\n const isName = gridItems.find(item => item.Name == name);\r\n if (isName) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n }],\r\n });\r\n\r\n $('.blackList-sicCode-add-btn').off('click').on('click', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const name = ($('.blackList-sicCode-add') as any).dxTextBox('instance').option('value');\r\n\r\n if ($('.blackList-sicCode-add').dxTextBox('instance').option('validationStatus') == 'valid') {\r\n self.blackListAddValue(name, 'siccode', 'Contain');\r\n }\r\n });\r\n }\r\n\r\n blackListSicCodeGrid() {\r\n const self = this;\r\n const columns: any = [\r\n {\r\n allowResizing: false,\r\n dataField: 'Name',\r\n width: 73\r\n },\r\n {\r\n caption: 'Category',\r\n dataField: 'Display'\r\n },\r\n {\r\n allowResizing: false,\r\n //caption: '',\r\n cellTemplate: (cell, e) => {\r\n let del;\r\n if (e.rowType == 'data' && e.data && (window['User'].Id == e.data.UserId)) {\r\n del = $('Delete');\r\n del.on('click', c => {\r\n c.preventDefault();\r\n c.stopPropagation();\r\n self.blackListGridRemoveRow(e.data.Id, 'siccode');\r\n //self.generateSICDescriptionBlackListGrid();\r\n });\r\n } else del = $('
Manager
');\r\n cell.append(del);\r\n },\r\n width: 80,\r\n }\r\n ];\r\n if (window['User'].Manager)\r\n columns.unshift({\r\n allowResizing: false,\r\n caption: 'For All',\r\n cellTemplate(cell, data) {\r\n const inp: any = $('
');\r\n inp.dxCheckBox({\r\n value: data.value,\r\n readOnly: data.data.UserId != window['User']['Id'],\r\n onValueChanged: (e) => {\r\n $.get('/Business/SetBlackListForAll', { id: data.key, b: e.value });\r\n }\r\n });\r\n cell.append(inp);\r\n },\r\n dataField: 'ForAll',\r\n width: 60\r\n });\r\n\r\n $('.gvBlackListSicCode').dxDataGrid({\r\n dataSource: window['DevExpress'].data.AspNet.createStore({\r\n key: 'Id',\r\n loadUrl: '/Business/GetBlackList',\r\n loadParams: {\r\n type: 'siccode'\r\n },\r\n onLoading: (loadOptions) => {\r\n self.log('StateLoad', loadOptions);\r\n },\r\n onLoaded: (result) => {\r\n self.log('StateData', result)\r\n $('.blackList-sicCode-total-count').text(result.length);\r\n }\r\n }),\r\n allowColumnReordering: true,\r\n allowColumnResizing: true,\r\n columnResizingMode: 'widget',\r\n columns: columns,\r\n height: 410,\r\n onContentReady: () => {\r\n setTimeout(() => {\r\n $('[data-bs-toggle=\"tooltip\"]').tooltip('enable'); }, 500)\r\n },\r\n onEditorPreparing: (ev) => {\r\n window['InstanceBase'].applyFilterOnDevExGrid(ev);\r\n },\r\n pager: {\r\n allowedPageSizes: [10, 25, 50],\r\n displayMode: 'compact',\r\n showNavigationButtons: true,\r\n showPageSizeSelector: true\r\n },\r\n paging: {\r\n enabled: true,\r\n pageIndex: 0,\r\n pageSize: 10\r\n },\r\n rowAlternationEnabled: true,\r\n searchPanel: {\r\n visible: true\r\n },\r\n showBorders: true,\r\n });\r\n }\r\n\r\n selectAlphabeticalOrder(gridId) {\r\n const grid = $(gridId).dxDataGrid('instance');\r\n const letters = $('.blackList-alphabeticalOrder').find('.alphabeticalOrder__item');\r\n\r\n const setActiveLetter = n => {\r\n for (let i = 0; i < letters.length; i++) {\r\n $(letters[i]).removeClass('active');\r\n }\r\n if ($(n).data('value') != '-1')\r\n $(n).addClass('active');\r\n }\r\n\r\n const setFilterOnGrid = n => {\r\n const letter = $(n).data('value');\r\n if (letter == '0') {\r\n grid.clearFilter();\r\n grid.clearSorting();\r\n grid.filter([['Name', 'startswith', '0'], 'or', ['Name', 'startswith', '1'], 'or', ['Name', 'startswith', '2'], 'or', ['Name', 'startswith', '3'], 'or', ['Name', 'startswith', '4'], 'or', ['Name', 'startswith', '5'], 'or', ['Name', 'startswith', '6'], 'or', ['Name', 'startswith', '7'], 'or', ['Name', 'startswith', '8'], 'or', ['Name', 'startswith', '9']])\r\n grid.columnOption('Name', 'sortOrder', 'asc');\r\n } else if (letter == '-1') {\r\n grid.clearFilter();\r\n } else {\r\n grid.clearFilter();\r\n grid.clearSorting();\r\n grid.columnOption('Name', 'filterValue', letter);\r\n grid.columnOption('Name', 'sortOrder', 'asc');\r\n }\r\n }\r\n\r\n letters.off('click').on('click', (e) => {\r\n setActiveLetter(e.target);\r\n setFilterOnGrid(e.target);\r\n })\r\n }\r\n // #endregion\r\n\r\n bussinesSearch() {\r\n const self = this;\r\n if (this.User) {\r\n self.devExSearchCriteria();\r\n }\r\n else {\r\n ($('#searchCriteria-list') as any).dxDropDownBox({\r\n disabled: true,\r\n height: 36,\r\n placeholder: 'Search History',\r\n });\r\n }\r\n }\r\n\r\n createCookie(name, value, days) {\r\n let expires;\r\n if (days) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = '; expires=' + (date as any).toGMTString();\r\n }\r\n else {\r\n expires = '';\r\n }\r\n document.cookie = name + '=' + value + expires + '; path=/';\r\n }\r\n\r\n createMainGrid(selected?: any) {\r\n const self = this;\r\n\r\n $('#lblInfo').text('0');\r\n let offset = 0;\r\n const store = new (window['DevExpress'] as any).data.CustomStore({\r\n key: 'Lid',\r\n load: function (loadOptions) {\r\n console.log(loadOptions);\r\n if (!($('#waitOrShowQuestionModal').length > 0)) $('.root-preloader').show();\r\n window['waitMainGrid'] = false;\r\n\r\n const deferred = $.Deferred(),\r\n args: any = { offset: offset };\r\n\r\n [\r\n 'sort',\r\n 'skip',\r\n 'take',\r\n 'requireTotalCount',\r\n 'requireGroupCount',\r\n 'totalSummary',\r\n 'group',\r\n 'groupSummary'\r\n ].forEach(function (i) {\r\n if (i in loadOptions && isNotEmpty(loadOptions[i]))\r\n args[i] = JSON.stringify(loadOptions[i]);\r\n });\r\n\r\n if (args.skip == 0) {\r\n offset = 0;\r\n }\r\n if (!loadOptions.take) {\r\n if (self.Filter.Count > 10000) {\r\n ($('#limitSelectionLeadsModal') as any).modal('show');\r\n try { $('.mainGrid').dxDataGrid('deselectAll'); } catch (ex) { self.log(ex); }\r\n $('.root-preloader').hide();\r\n return;\r\n }\r\n\r\n args['selectAll'] = true;\r\n // console.log(args, '1.0.0');\r\n }\r\n\r\n if ($('#hidePurchasedLeads').is(':checked')) {\r\n args['removePurchased'] = true;\r\n }\r\n args['skip'] = args['skip'];\r\n args['cid'] = self.UpdateHub.connection.connectionId;\r\n function load(args, callback) {\r\n $('.root-preloader').show();\r\n $.ajax({\r\n url: '/Business/GetBusiness',\r\n dataType: 'json',\r\n data: args,\r\n success: callback,\r\n error() {\r\n deferred.reject('Data Loading Error');\r\n if (window['IsSearchIdExist'] && window['IsSearchIdExistFirstTime']) {\r\n window['IsSearchIdExistFirstTime'] = false;\r\n $('.root-preloader').hide();\r\n }\r\n },\r\n // timeout: 5000\r\n });\r\n }\r\n if (loadOptions.filter && loadOptions.filter.length) {\r\n const filters = [];\r\n if (loadOptions.filter.columnIndex !== undefined) {\r\n const x = loadOptions.filter;\r\n if (x[0] == 'Company_Name') x[0] = 'Primary_Company_Wildcard';\r\n self.Filter.RemoveAllFilter(x[0], undefined, false);\r\n self.Filter.AddFilter(x[0], x[2]);\r\n }\r\n else {\r\n loadOptions.filter.forEach(x => {\r\n\r\n if (x.columnIndex !== undefined) {\r\n\r\n if (x[0] == 'Company_Name') x[0] = 'Primary_Company_Wildcard';\r\n self.Filter.RemoveAllFilter(x[0], undefined, false);\r\n self.Filter.AddFilter(x[0], x[2]);\r\n // filters.push({Name: x[0], Value: x[2]})\r\n\r\n }\r\n });\r\n }\r\n\r\n load(args, firstRun)\r\n } else load(args, firstRun);\r\n\r\n function firstRun(result, _, ctx) {\r\n const last = self.Filter.Backups.LastBackup;\r\n\r\n if (last.Level >= 3) {\r\n if (loadOptions.skip) {\r\n if (last.Result.push)\r\n result.data.forEach(el => last.Result.push(el));\r\n else\r\n last.Result = result.data;\r\n }\r\n else\r\n last.Result = result.data;\r\n\r\n }\r\n else\r\n last.Result = result.data;\r\n last.Level = 3;\r\n self.Filter.Backups.saveBackups(self.Filter.Backups.Backups);\r\n if (window['IsSearchIdExist'] && window['IsSearchIdExistFirstTime']) {\r\n window['IsSearchIdExistFirstTime'] = false;\r\n $('.root-preloader').hide();\r\n }\r\n //if (args['requireTotalCount'] == 'true')\r\n //$.post('/Business/UpdateFilters', (result, _, ctx) => {\r\n // self.Filter.UpdateFilters({\r\n // Count: result.Count,\r\n // Criterias: result.Criterias,\r\n // BlackList: result.BlackList\r\n // }, ctx);\r\n //});\r\n\r\n if (args['removePurchased']) {\r\n\r\n var size = result.length;\r\n var filtered = result.data.filter(el => !el.Remove);\r\n }\r\n\r\n // if (args['selectAll']) {\r\n // result.data = result.data.filter(el => !el.Remove);\r\n // if (args['removePurchased'])\r\n // result.data = result.data.filter(el => !el.IsInDB)\r\n // self.UpdateFilters({\r\n // Count: result.totalCount,\r\n // Criterias: result.filters\r\n // }, ctx);\r\n // }\r\n\r\n window['lastData'] = result.data;\r\n deferred.resolve(result.data, {\r\n totalCount: result.totalCount\r\n });\r\n\r\n $('#GridViewBusiness_DXTitle').show();\r\n $('.root-preloader').hide();\r\n }\r\n return deferred.promise();\r\n }\r\n });\r\n self.mainGrid(store);\r\n\r\n if (selected) {\r\n $('.mainGrid').dxDataGrid('instance').option('selectedRowKeys');\r\n\r\n }\r\n function isNotEmpty(value) {\r\n return value !== undefined && value !== null && value !== '';\r\n }\r\n }\r\n\r\n //defaultOnLogin() { // ???\r\n // const self = this;\r\n // window.location.reload(); //TODO Remove With won't Reload Page\r\n // super.defaultOnLogin(data => {\r\n // self.User = { Name: data.Name, Email: data.Email };\r\n // $('.header2').replaceWith(data.Header.Result);\r\n // // $('#includeBlack-input').removeAttr('disabled');\r\n\r\n // self.devExSearchCriteria(false);\r\n\r\n // ($('#searchCriteria-list') as any).dxDropDownBox('option', 'disabled', false);\r\n // $('.blackList-dropdown-menu').css('display', '');\r\n // self.blackListCompanyNameGrid();\r\n // self.generateSICDescriptionBlackListGrid();\r\n // self.blackListSicCodeGrid();\r\n // });\r\n\r\n // //window.location.href = '/Business';\r\n //}\r\n\r\n devExSearchCriteria(isSearch = true) {\r\n const self = this;\r\n\r\n const src = (window['DevExpress'] as any).data.AspNet.createStore({\r\n key: 'SearchHistory.Id',\r\n loadUrl: '/Business/GetListSearchCriteria',\r\n onLoading: (loadOptions) => {\r\n self.log('SrcTabs.OnLoading', loadOptions)\r\n },\r\n onLoaded: (result) => {\r\n self.ListTabs = result;\r\n self.log('SrcTabs.OnLoaded', result)\r\n }\r\n });\r\n\r\n ($('#searchCriteria-list') as any).dxDropDownBox({\r\n dataSource: src,\r\n contentTemplate: (e) => {\r\n const $dataGrid = $('
').dxDataGrid({\r\n dataSource: e.component.getDataSource(),\r\n columns: [\r\n {\r\n dataField: 'SearchHistory.Name'\r\n },\r\n {\r\n cellTemplate: (container, options) => {\r\n const date = options.data.SearchHistory.SearchDate;\r\n container.html(window['moment'](date + 'Z').utcOffset(window['userTimezone'].Offset).format('L, LT'));\r\n },\r\n dataField: 'SearchHistory.SearchDate',\r\n dataType: 'datetime',\r\n sortOrder: 'desc'\r\n },\r\n {\r\n cellTemplate: (cell, e) => {\r\n if (e.data.InDB) {\r\n if (e.rowType == 'data' && e.data) {\r\n const delRow = e.data;\r\n const delBtn: JQuery = $('Delete')\r\n delBtn.on('click', c => {\r\n c.preventDefault();\r\n $('#dxPopup').dxPopup({\r\n closeOnOutsideClick: true,\r\n contentTemplate: () => {\r\n const container = $('
');\r\n const colText = $('
Do you want to remove?
');\r\n const colYesBtn = $('
');\r\n const colNoBtn = $('
');\r\n const yesBtn = $('');\r\n const noBtn = $('');\r\n container.append(colText);\r\n container.append(colNoBtn);\r\n container.append(colYesBtn);\r\n colNoBtn.append(noBtn);\r\n colYesBtn.append(yesBtn);\r\n\r\n const popup = $('#dxPopup').dxPopup('instance');\r\n\r\n yesBtn.on('click', (e) => {\r\n e.preventDefault();\r\n self.removeSaveSearchCriteria(delRow.SearchHistory.Id);\r\n popup.hide();\r\n });\r\n\r\n noBtn.on('click', (e) => {\r\n e.preventDefault();\r\n popup.hide();\r\n })\r\n return container;\r\n },\r\n position: {\r\n at: 'right top',\r\n my: 'right',\r\n of: '#gvSearchCriteria'\r\n },\r\n showTitle: false,\r\n // title:'Update Search',\r\n height: 60,\r\n width: 400,\r\n }).dxPopup('instance').show()\r\n\r\n })\r\n cell.append(delBtn);\r\n }\r\n }\r\n },\r\n width: 60,\r\n }\r\n ],\r\n filterRow: {\r\n applyFilter: 'onClick',\r\n visible: true\r\n },\r\n height: '100%',\r\n hoverStateEnabled: true,\r\n onContentReady: (ev) => {\r\n window['InstanceBase'].hideFilterIconOnDevExGrid(ev);\r\n },\r\n onEditorPreparing: (ev) => {\r\n window['InstanceBase'].applyFilterOnDevExGrid(ev);\r\n },\r\n onSelectionChanged: (selectedItems) => {\r\n try {\r\n $('.mainGrid').dxDataGrid('instance').deselectAll();\r\n }\r\n catch (ex) {\r\n self.log(ex);\r\n }\r\n const keys = selectedItems.selectedRowKeys,\r\n hasSelection = keys.length;\r\n\r\n if (hasSelection) {\r\n const data = selectedItems.selectedRowsData[0];\r\n const maps = data.SearchHistory.SearchHistoryBusinessRow.map(el => {\r\n return { Name: el.SearchCriteriaName, Value: el.SearchCriteriaValue };\r\n });\r\n self.Filter.UpdateFilters({ Count: '...', Criterias: maps, BlackList: undefined, TokenError: false }, null);\r\n\r\n if (isSearch) {\r\n self.Filter.AddFilters(maps, true);\r\n } else {\r\n self.RemoveAllFilters(() => {\r\n self.Filter.AddFilters(maps, true);\r\n }, true);\r\n }\r\n }\r\n\r\n e.component.option('value', hasSelection ? keys[0] : null);\r\n $('.btn-sendSearchCriteria').show();\r\n $('#searchCriteria-save-btn').prop('disabled', false);\r\n },\r\n paging: { enabled: true, pageSize: 10 },\r\n scrolling: { mode: 'virtual' },\r\n selectedRowKeys: [],\r\n selection: { mode: 'single' },\r\n showBorders: true,\r\n showColumnHeaders: false,\r\n });\r\n const dataGrid = $dataGrid.dxDataGrid('instance');\r\n\r\n e.component.on('valueChanged', (args) => {\r\n dataGrid.selectRows(args.value, false);\r\n e.component.close();\r\n });\r\n\r\n return $dataGrid;\r\n },\r\n displayExpr: 'SearchHistory.Name',\r\n dropDownOptions: {\r\n maxHeight: 500,\r\n width: 375,\r\n },\r\n placeholder: 'Search History',\r\n searchEnable: true,\r\n showDataBeforeSearch: true,\r\n valueExpr: 'SearchHistory.Id',\r\n });\r\n }\r\n\r\n expandCustomCheck(el: JQuery) {\r\n const expander = el.parents('form').find('.checkboxes-expand');\r\n if (el.prop('checked') == true) {\r\n expander.slideToggle('fast');\r\n $('.search-fields').animate({\r\n scrollTop: el.parents('form').offset().top,\r\n }, { duration: 'fast', easing: 'swing' })\r\n } else {\r\n expander.slideUp('fast');\r\n }\r\n }\r\n\r\n generateInvisibleSearchCriteriaRow(email) {\r\n const self = this;\r\n $.post('/Business/GenerateInvisibleSearchCriteriaRow', { criterias: self.Filter.Criterias }, (data) => {\r\n const addAccessTo = {\r\n Email: email,\r\n SearchCriterias: data.Id\r\n };\r\n self.sendSearchCriteriaEmail(addAccessTo)\r\n })\r\n }\r\n\r\n generatePendingSearchCriteriasGrid(array) {\r\n const self = this;\r\n\r\n //window['isPendingSearchCriteriaDeleted'] = false;\r\n //($('#isPendingSearchCriteriaDeleted') as any).dxCheckBox({\r\n // value: false,\r\n // text: 'Don't show these searches again',\r\n // onValueChanged: function (e) {\r\n // window['isPendingSearchCriteriaDeleted'] = e.value;\r\n // }\r\n //});\r\n\r\n\r\n window['ListOfPendingSearchCriterias'] = array\r\n\r\n $('#listOfPendingSearchCriterias').dxDataGrid({\r\n dataSource: array,\r\n columns: [\r\n {\r\n dataField: 'name',\r\n },\r\n {\r\n dataField: 'criterias',\r\n },\r\n {\r\n caption: '#',\r\n cellTemplate: (cell, e) => {\r\n if (e.rowType == 'data' && e.data) {\r\n const del: JQuery = $('Delete')\r\n del.on('click', c => {\r\n c.preventDefault();\r\n c.stopPropagation();\r\n self.removePendingSearchCriteriaFromList(e.data.name);\r\n })\r\n cell.append(del);\r\n }\r\n },\r\n width: 60,\r\n }\r\n ],\r\n onCellPrepared: (e) => {\r\n if (e.rowType == 'data' && e.columnIndex == 2) {\r\n if (window['ListOfPendingSearchCriterias'][e.rowIndex]) {\r\n let result = ''\r\n $.each(window['ListOfPendingSearchCriterias'][e.rowIndex].criterias, function (_, v) {\r\n result += ' ' + v.Name + ';';\r\n const filterTranslation = $(`[data-criteria=\"${v.Name}\"]`).data('display');\r\n if (filterTranslation)\r\n result += ' ' + filterTranslation + ';';\r\n else\r\n result += ' ' + v.Name + ';';\r\n });\r\n $(e.cellElement).text(result);\r\n }\r\n }\r\n },\r\n onEditorPreparing: (e) => {\r\n window['InstanceBase'].devExSearchFilterDelay(e);\r\n window['InstanceBase'].devExSearchFilterMin(e);\r\n },\r\n onSelectionChanged: (e) => {\r\n window['SelectedPendingSearchCriterias'] = e.selectedRowKeys;\r\n window['SelectedPendingSearchCriterias'].length > 0 ? $('#addPendingSearchCriterias').prop('disabled', false) : $('#addPendingSearchCriterias').prop('disabled', true);\r\n },\r\n selection: {\r\n allowSelectAll: true,\r\n deferred: false,\r\n mode: 'multiple',\r\n selectAllMode: 'allPages',\r\n showCheckBoxesMode: 'onClick'\r\n },\r\n });\r\n }\r\n\r\n getCookie(c_name) {\r\n if (document.cookie.length > 0) {\r\n let c_start = document.cookie.indexOf(c_name + '=');\r\n if (c_start != -1) {\r\n c_start = c_start + c_name.length + 1;\r\n let c_end = document.cookie.indexOf(';', c_start);\r\n if (c_end == -1) {\r\n c_end = document.cookie.length;\r\n }\r\n return unescape(document.cookie.substring(c_start, c_end));\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n getPacksList() {\r\n const self = this;\r\n $.post('/Business/GetPacksList', data => {\r\n $('.mailPriceRecords').append(self.priceConverter(data, 'Mail'));\r\n $('.callPriceRecords').append(self.priceConverter(data, 'Call'));\r\n $('.fullPriceRecords').append(self.priceConverter(data, 'Full'));\r\n });\r\n }\r\n\r\n getPryceBySourceActionAndCount(quantity) {\r\n switch (true) {\r\n case 0 < quantity && quantity < 501: return 0;\r\n case 500 < quantity && quantity < 2501: return 1;\r\n case 2500 < quantity && quantity < 10001: return 2;\r\n case 10000 < quantity && quantity < 25000: return 3;\r\n }\r\n }\r\n\r\n loadArea() {\r\n const self = this;\r\n\r\n self.loadDateStates(() => {\r\n function UpdateArea(sid, init?: true) {\r\n self.selectedArea.currentSid = sid;\r\n const AreaSrc = window['DevExpress'].data.AspNet.createStore({\r\n key: 'Id',\r\n loadUrl: '/Business/StateCityArea',\r\n loadMethod: 'POST',\r\n loadParams: {\r\n SID: sid\r\n },\r\n onLoading: (loadOptions) => {\r\n // console.log('CityLoad', loadOptions);\r\n },\r\n onLoaded: (result) => {\r\n // console.log('CityData', result);\r\n },\r\n });\r\n if (init) $('#callbackPanelAreaPart2').dxDataGrid({\r\n dataSource: AreaSrc,\r\n columns: [\r\n {\r\n dataField: 'Code',\r\n caption: 'Code'\r\n },\r\n {\r\n // dataField: 'ResultCountBusinessString',\r\n caption: 'Info',\r\n cellTemplate(_, e) {\r\n\r\n const $a = $('More Info');\r\n $a.attr('href', 'https://www.allareacodes.com/' + e.data.Code)\r\n return $a;\r\n }\r\n }\r\n ],\r\n height: '100%',\r\n onCellPrepared: (e) => {\r\n if (e.columnIndex == 0 && e.rowType == 'header') {\r\n e.cellElement.html('');\r\n }\r\n },\r\n onEditorPreparing: (e) => {\r\n window['InstanceBase'].devExSearchFilterDelay(e);\r\n window['InstanceBase'].devExSearchFilterMin(e);\r\n },\r\n onSelectionChanged: ({ selectedRowsData }) => {\r\n self.selectedArea.data[self.selectedArea.currentSid] = selectedRowsData;\r\n self.resetArea();\r\n },\r\n remoteOperations: {\r\n filtering: true,\r\n paging: true,\r\n sorting: true,\r\n groupPaging: true,\r\n grouping: true,\r\n summary: true\r\n },\r\n rowAlternationEnabled: true,\r\n scrolling: {\r\n mode: 'virtual',\r\n scrollByContent: true,\r\n },\r\n searchPanel: {\r\n visible: true\r\n },\r\n selection: {\r\n mode: 'multiple'\r\n },\r\n showBorders: true,\r\n selectedRowKeys: self.Filter.Areas.map(x => x.Id)\r\n });\r\n else {\r\n $('#callbackPanelAreaPart2').dxDataGrid('option', 'dataSource', AreaSrc)\r\n $('#callbackPanelAreaPart2').dxDataGrid('option', 'selectedRowKeys', self.Filter.Areas?.map(x => x?.Id));\r\n }\r\n }\r\n if ($('#callbackPanelAreaPart1').html() == 'Loading ...') {\r\n $('#callbackPanelAreaPart1').dxDataGrid({\r\n dataSource: self.DataStates,\r\n columns: [\r\n {\r\n dataField: 'StateShort',\r\n caption: 'Name'\r\n },\r\n {\r\n dataField: 'StateLong',\r\n caption: 'Full Name',\r\n }\r\n ],\r\n height: '100%',\r\n onEditorPreparing: (e) => {\r\n window['InstanceBase'].devExSearchFilterDelay(e);\r\n window['InstanceBase'].devExSearchFilterMin(e);\r\n },\r\n onSelectionChanged: ({ selectedRowsData }) => {\r\n if (selectedRowsData.length) {\r\n UpdateArea(selectedRowsData[0].Id);\r\n } else {\r\n UpdateArea(0);\r\n }\r\n },\r\n remoteOperations: {\r\n filtering: true,\r\n paging: true,\r\n sorting: true,\r\n groupPaging: true,\r\n grouping: true,\r\n summary: true\r\n },\r\n rowAlternationEnabled: true,\r\n scrolling: {\r\n mode: 'virtual',\r\n scrollByContent: true,\r\n },\r\n searchPanel: {\r\n visible: true\r\n },\r\n selection: {\r\n mode: 'single'\r\n },\r\n showBorders: true,\r\n })\r\n UpdateArea(0, true);\r\n }\r\n });\r\n }\r\n\r\n loadCity() {\r\n const self = this;\r\n\r\n this.loadDataCities(() => {\r\n if ($('.selected-criteria-item[name=\"Physical_State_Physical_City\"]').length) {\r\n self.dataCitySearched = self.Filter.SCities;\r\n }\r\n const selectedState = ($('#callbackPanelState') as any).dxList('option', 'selectedItems').map(x => x.StateShort);\r\n\r\n const listCity = ($('.dx-searchCity') as any).dxList({\r\n dataSource: selectedState.length ? self.DataCities.filter(x => selectedState.find(t => t == x.StateShort)) : self.DataCities,\r\n // dataSource: self.DataCities,\r\n itemTemplate: (data) => {\r\n return $('
').text(`${data.Name} (${data.StateLong})`);\r\n },\r\n onItemClick: (selectedItem) => {\r\n const ifIsIdCity = self.dataCitySearched.find(item => item.Id === selectedItem.itemData.Id);\r\n if (ifIsIdCity === undefined) {\r\n self.Filter.AddFilter('Physical_State_Physical_City', `(${selectedItem.itemData.StateShort})${selectedItem.itemData.Name}`);\r\n self.dataCitySearched = self.Filter.SCities;\r\n callbackPanelCity.refresh();\r\n }\r\n },\r\n pageLoadMode: 'scrollBottom',\r\n searchEditorOptions: {\r\n onFocusIn: (e) => {\r\n setTimeout(() => { $('.dx-searchCity').css('z-index', '1') }, 300);\r\n // $('.dx-searchCity').css('z-index', '1');\r\n $('.dx-searchCity .dx-scrollable-wrapper').fadeIn();\r\n // $('.dx-searchCity').css('height', '400px');\r\n },\r\n onFocusOut: () => {\r\n $('.dx-searchCity .dx-scrollable-wrapper').fadeOut();\r\n // $('.dx-searchCity').css('height', '25px');\r\n setTimeout(() => { $('.dx-searchCity').css('z-index', '0') }, 300);\r\n },\r\n placeholder: 'Search by City'\r\n },\r\n searchEnabled: true,\r\n searchExpr: 'Name',\r\n height: 400,\r\n width: '100%'\r\n }).dxList('instance');\r\n\r\n const callbackPanelCity = $('#callbackPanelCity').dxDataGrid({\r\n dataSource: self.dataCitySearched,\r\n columns: [{\r\n caption: 'City',\r\n dataField: 'City'\r\n },\r\n {\r\n caption: 'State',\r\n dataField: 'State',\r\n dataType: 'string'\r\n },\r\n {\r\n dataField: 'Id',\r\n visible: false\r\n }],\r\n editing: {\r\n mode: 'row',\r\n allowDeleting: true,\r\n confirmDelete: false\r\n },\r\n height: '100%',\r\n onEditorPreparing: (e) => {\r\n window['InstanceBase'].devExSearchFilterDelay(e);\r\n window['InstanceBase'].devExSearchFilterMin(e);\r\n },\r\n onRowRemoved: (e) => {\r\n self.Filter.RemoveFilter('Physical_State_Physical_City', `(${e.data.State})${e.data.City}`);\r\n },\r\n remoteOperations: {\r\n filtering: true,\r\n grouping: true,\r\n groupPaging: true,\r\n paging: true,\r\n sorting: true,\r\n summary: true\r\n },\r\n rowAlternationEnabled: true,\r\n scrolling: {\r\n mode: 'infinite',\r\n scrollByContent: true,\r\n },\r\n showBorders: true,\r\n }).dxDataGrid('instance');\r\n\r\n callbackPanelCity.option('dataSource', self.dataCitySearched);\r\n })\r\n }\r\n\r\n loadDataCities(cb: Function) {\r\n const self = this;\r\n if (this.DataCities.length == 0)\r\n $.post('/Business/CitiesData', data => {\r\n self.DataCities = data.data;\r\n cb();\r\n });\r\n else\r\n cb();\r\n }\r\n\r\n loadDateStates(cb: Function) {\r\n const self = this;\r\n if (this.DataStates.length == 0)\r\n $.post('/Business/StatesData', data => {\r\n self.DataStates = data.data;\r\n cb();\r\n });\r\n else\r\n cb();\r\n }\r\n\r\n loadSic() {\r\n this.CallbackPanelSicCode.init();\r\n }\r\n\r\n loadState() {\r\n const self = this;\r\n window['selectedStateDataCities'] = [];\r\n\r\n this.loadDateStates(() => {\r\n if ($('#callbackPanelState').html() == 'Loading ...') {\r\n ($('#callbackPanelState') as any).dxList({\r\n dataSource: self.DataStates,\r\n heigth: '100%',\r\n itemTemplate: (data) => {\r\n const result = $(`
${data.StateLong} (${data.StateShort})
`);\r\n return result;\r\n },\r\n onContentReady: () => {\r\n if ($('.selected-criteria-item[name=\"Physical_State\"]').length) {\r\n\r\n const stateFiltersOnSearchCriteria = $('.selected-criteria-item[name=\"Physical_State\"] .btn-remove-criteria');\r\n const listStates = ($('#callbackPanelState') as any).dxList('instance');\r\n const listItemsStates = listStates.option('items');\r\n (stateFiltersOnSearchCriteria as any).each((i, el) => {\r\n listStates.selectItem(listItemsStates.find(element => element.StateShort === $(el).attr('value')));\r\n });\r\n }\r\n },\r\n onSelectionChanged: (e) => {\r\n // selectedStateDataCities = [];\r\n if (e.addedItems.length) {\r\n const state = e.addedItems[0].StateShort;\r\n self.Filter.AddFilter('Physical_State', state);\r\n for (let i = 0; i < self.DataCities.length; i++) {\r\n if (self.DataCities[i].StateShort == state) window['selectedStateDataCities'].push(self.DataCities[i]);\r\n }\r\n // (self.DataCities as any).each((i, el) => {\r\n // if (el.StateShort == state) selectedStateDataCities.push(el);\r\n // });\r\n // selectedStateDataCities[state] = cities;\r\n }\r\n if (e.removedItems.length) {\r\n const state = e.removedItems[0].StateShort;\r\n self.Filter.RemoveFilter('Physical_State', e.removedItems[0].StateShort);\r\n const tempCity = window['selectedStateDataCities'].filter(el => el.StateShort != state)\r\n window['selectedStateDataCities'] = tempCity;\r\n // selectedStateDataCities.each((i, el) => {\r\n // if (el.StateShort == state) delete selectedStateDataCities.el\r\n // })\r\n // delete selectedStateDataCities[state];\r\n // selectedStateDataCities = tempCities;\r\n }\r\n // let selectedStates = ($('#callbackPanelState') as any).dxList('instance').option('selectedItems');\r\n // if (selectedStates.length > 0) {\r\n // for (let i = 0; i < selectedStates.length; i++) {\r\n // (self.DataCities as any).each((i, el) => {\r\n // selectedStateDataCities.push(el == el.selectedStates[i].StateShort);\r\n // })\r\n // }\r\n // try {\r\n // ($('.dx-searchCity') as any).dxList('refresh');\r\n // } catch (ex) {}\r\n // } else selectedStateDataCities = [];\r\n self.loadCity();\r\n\r\n },\r\n pageLoadMode: 'scrollBottom',\r\n showSelectionControls: true,\r\n selectionMode: 'multiple'\r\n });\r\n }\r\n })\r\n self.loadCity();\r\n }\r\n\r\n loadZip() {\r\n const self = this;\r\n\r\n if ($('#callbackPanelZipPart1').html() == 'Loading ...') {\r\n $('#callbackPanelZipPart1').dxDataGrid({\r\n dataSource: window['DevExpress'].data.AspNet.createStore({\r\n key: 'CID',\r\n loadUrl: '/Business/StateCity',\r\n loadMethod: 'POST',\r\n onLoading: (loadOptions) => {\r\n self.log('StateCityLoad', loadOptions);\r\n },\r\n onLoaded: (result) => {\r\n self.log('StateCityData', result);\r\n },\r\n }),\r\n columns: [{\r\n dataField: 'State'\r\n }, 'City'],\r\n grouping: {\r\n autoExpandAll: false,\r\n },\r\n height: '100%',\r\n keyExpr: 'CID',\r\n loadPanel: {\r\n enabled: false\r\n },\r\n onEditorPreparing: (e) => {\r\n window['InstanceBase'].devExSearchFilterDelay(e);\r\n window['InstanceBase'].devExSearchFilterMin(e);\r\n },\r\n onSelectionChanged: ({ selectedRowsData }) => {\r\n if (selectedRowsData.length) {\r\n loadZip2(selectedRowsData[0].CID);\r\n } else {\r\n loadZip2(0);\r\n }\r\n },\r\n remoteOperations: {},\r\n rowAlternationEnabled: true,\r\n scrolling: {\r\n mode: 'infinite',\r\n\r\n },\r\n searchPanel: {\r\n visible: true\r\n },\r\n selection: {\r\n mode: 'single'\r\n },\r\n showBorders: true,\r\n });\r\n loadZip2(0, true);\r\n }\r\n\r\n function loadZip2(cid?: number, init?: boolean) {\r\n self.selectedZips.currentCid = cid;\r\n const ZipSrc = window['DevExpress'].data.AspNet.createStore({\r\n key: 'Id',\r\n loadUrl: '/Business/StateCityZip',\r\n loadMethod: 'POST',\r\n loadParams: {\r\n CID: cid\r\n },\r\n onLoading: (loadOptions) => {\r\n // console.log('StateCityZipLoad', loadOptions);\r\n },\r\n onLoaded: (result) => {\r\n // console.log('StateCityZipData', result);\r\n },\r\n });\r\n\r\n if (init)\r\n $('#callbackPanelZipPart2').dxDataGrid({\r\n dataSource: ZipSrc,\r\n columns: ['ZipCode1'],\r\n grouping: {\r\n autoExpandAll: false,\r\n },\r\n height: '100%',\r\n onEditorPreparing: (e) => {\r\n window['InstanceBase'].devExSearchFilterDelay(e);\r\n window['InstanceBase'].devExSearchFilterMin(e);\r\n },\r\n onSelectionChanged: ({ selectedRowsData }) => {\r\n self.selectedZips.data[self.selectedZips.currentCid] = selectedRowsData;\r\n self.resetZip();\r\n },\r\n remoteOperations: {\r\n filtering: true,\r\n grouping: true,\r\n groupPaging: true,\r\n paging: true,\r\n sorting: true,\r\n summary: true\r\n },\r\n rowAlternationEnabled: true,\r\n scrolling: {\r\n mode: 'virtual',\r\n scrollByContent: true,\r\n },\r\n searchPanel: {\r\n visible: true\r\n },\r\n selection: {\r\n mode: 'multiple'\r\n },\r\n showBorders: true,\r\n selectedRowKeys: self.Filter.Zips.map(x => x.Id)\r\n });\r\n else {\r\n $('#callbackPanelZipPart2').dxDataGrid('option', 'dataSource', ZipSrc);\r\n $('#callbackPanelZipPart2').dxDataGrid('option', 'selectedRowKeys', self.Filter.Zips?.map(x => x?.Id));\r\n }\r\n }\r\n }\r\n\r\n mainGrid(dataSource, isMainGridResult = false) {\r\n const self = this;\r\n let rows = 0;\r\n let totals = 0;\r\n let select = window['User'] ? (window['User'].RAI ? (window['User'].Manager ? 'multiple' : 'single') : 'multiple') : 'multiple';\r\n const showColumnBuyLeads = !isMainGridResult ? true : $('#hidePurchasedLeads').is(':checked') ? false : true;\r\n if (window['multiple'] != null) {\r\n select = window['multiple'] ? 'multiple' : 'single';\r\n }\r\n let iids = [];\r\n const grid = $('.mainGrid').show().dxDataGrid({\r\n dataSource: dataSource,\r\n columns: [\r\n {\r\n allowFiltering: false,\r\n allowSorting: false,\r\n caption: '$',\r\n cellTemplate: (td, data) => {\r\n td.addClass('dx-ellipsis');\r\n td.addClass('alreadyBuiedByThisUser');\r\n td.addClass('tid_' + data.data.Id);\r\n td.html('...');\r\n let b = 0;\r\n const iid = setInterval(() => {\r\n switch (b) {\r\n case 0:\r\n td.html('...');\r\n break;\r\n case 1:\r\n td.html('|..');\r\n break;\r\n case 2:\r\n td.html('.|.');\r\n break;\r\n case 3:\r\n td.html('..|');\r\n break;\r\n case 4:\r\n td.html('.|.');\r\n break;\r\n case 5:\r\n td.html('|..');\r\n break;\r\n }\r\n b++;\r\n if (b > 5) b = 0;\r\n }, 1000);\r\n iids.push({ id: iid, bid: data.data.Id });\r\n\r\n return '...';\r\n },\r\n cssClass: 'IsInDB',\r\n dataField: 'IsInDB',\r\n visible: showColumnBuyLeads,\r\n width: 20,\r\n },\r\n 'Company_Name',\r\n {\r\n caption: 'Physical City',\r\n dataField: 'Physical_City',\r\n width: 100\r\n },\r\n {\r\n caption: 'State',\r\n dataField: 'Physical_State',\r\n width: 60\r\n },\r\n {\r\n allowSorting: false,\r\n caption: 'SIC Code',\r\n dataField: 'SIC_Description',\r\n },\r\n {\r\n caption: 'SIC Description',\r\n dataField: 'SIC01_Description',\r\n },\r\n {\r\n allowFiltering: false,\r\n allowSorting: false,\r\n cellTemplate: (td) => {\r\n const link = $('More Info ...');\r\n td.append(link);\r\n link.on('click', (el) => {\r\n $(el.target).parent('td').trigger('dxdblclick');\r\n });\r\n },\r\n name: 'Link',\r\n visible: !isMainGridResult,\r\n width: 90,\r\n }],\r\n filterRow: {\r\n applyFilter: 'onClick',\r\n showOperationChooser: false,\r\n visible: true\r\n },\r\n height: 'calc(100% - 30px)',\r\n hoverStateEnabled: true,\r\n keyExpr: 'Lid',\r\n loadPanel: {\r\n enabled: false\r\n },\r\n onCellPrepared: (data) => {\r\n if (data.rowType == 'filter' && data.column.allowFiltering) {\r\n const div = $('
');\r\n const container = $('
');\r\n\r\n div.append(container);\r\n\r\n const textEditor = $('
');\r\n let key = data.column.dataField;\r\n if (key == 'Company_Name') key = 'Primary_Company_Wildcard';\r\n textEditor.dxTextBox({\r\n width: '100%',\r\n height: '24px',\r\n text: self.Filter?.Criterias?.filter(x => x.Name == key)?.map(x => x.Value)?.join(',') ?? '',\r\n onKeyPress: (e) => {\r\n\r\n if ((e as any).event.originalEvent.keyCode == 13) {\r\n const value = e.component.option('text');\r\n if (key == 'Primary_Company_Wildcard') {\r\n self.Filter.RemoveAllFilter('Primary_Company_Exact', undefined, false);\r\n }\r\n if (value && value.length) {\r\n\r\n self.Filter.RemoveAllFilter(key, undefined, false);\r\n self.Filter.AddFilter(key, value, () => {\r\n $('#first-step').trigger('click');\r\n });\r\n }\r\n else {\r\n self.Filter.RemoveAllFilter(key, () => {\r\n $('#first-step').trigger('click');\r\n })\r\n }\r\n }\r\n\r\n }\r\n });\r\n container.append(textEditor);\r\n data.cellElement.empty();\r\n data.cellElement.append(div)\r\n }\r\n },\r\n onContentReady: (ev) => {\r\n window['InstanceBase'].hideFilterIconOnDevExGrid(ev);\r\n\r\n if (iids.length) {\r\n const oids = iids.map(x => { return { id: x.id, bid: x.bid } });\r\n setTimeout(function () {\r\n $.ajax({\r\n url: '/Business/BusinesesInDB',\r\n method: 'POST',\r\n dataType: 'json',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify(oids.map(x => x.bid)),\r\n success(data) {\r\n oids.forEach(x => {\r\n const dt =\r\n {\r\n id: x.id,\r\n td: $('.tid_' + x.bid),\r\n bid: x.bid,\r\n Ok: !!data.find(z => z == x.bid)\r\n };\r\n clearTimeout(dt.id);\r\n dt.td.html(dt.Ok ? '$' : '');\r\n });\r\n }\r\n });\r\n\r\n }, 1500)\r\n\r\n }\r\n iids = [];\r\n const filters = $('.mainGrid')\r\n .find('.dx-datagrid-filter-row .dx-textbox');\r\n const cname = $(filters[0])\r\n .dxTextBox('instance');\r\n const ccity = $(filters[1])\r\n .dxTextBox('instance');\r\n\r\n const cstate = $(filters[2])\r\n .dxTextBox('instance');\r\n\r\n const csic = $(filters[3])\r\n .dxTextBox('instance');\r\n\r\n const csdesc = $(filters[4])\r\n .dxTextBox('instance');\r\n if (self.TempSelected) {\r\n $('#lblInfo').text(self.TempSelected.length);\r\n }\r\n self.TempSelected = undefined;\r\n if (!isMainGridResult) {\r\n $(filters[0]).find('.dx-texteditor-input').val(self.Filter.WildCard);\r\n $(filters[1]).find('.dx-texteditor-input').val(self.Filter.City);\r\n $(filters[2]).find('.dx-texteditor-input').val(self.Filter.State);\r\n $(filters[3]).find('.dx-texteditor-input').val(self.Filter.SIC);\r\n $(filters[4]).find('.dx-texteditor-input').val(self.Filter.SICDesc);\r\n cname.option('value', self.Filter.WildCard);\r\n ccity.option('value', self.Filter.City);\r\n cstate.option('value', self.Filter.State);\r\n csic.option('value', self.Filter.SIC);\r\n csdesc.option('value', self.Filter.SICDesc);\r\n }\r\n // cname.option('onKeyDown', e => {\r\n // e.event.stopPropagation();\r\n // \r\n // if(e.event.originalEvent.keyCode == 13){\r\n // let lastValue = cname.option('value');\r\n // if(lastValue)\r\n // self.Filter.AddFilter('Primary_Company_Wildcard', lastValue, () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n //\r\n // });\r\n // else\r\n // self.Filter.RemoveAllFilter('Primary_Company_Wildcard', () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n // });\r\n // }\r\n // });\r\n // ccity.option('onKeyDown', e => {\r\n // e.event.stopPropagation();\r\n // if(e.event.originalEvent.keyCode == 13){\r\n // let lastValue = ccity.option('value');\r\n // self.TempSelected = grid.getSelectedRowKeys();\r\n // if(lastValue)\r\n // self.Filter.AddFilter('Physical_City', lastValue, () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n // },false, true);\r\n // else\r\n // self.Filter.RemoveAllFilter('Physical_City', () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n // });\r\n // }\r\n // });\r\n // cstate.option('onKeyDown', e => {\r\n // e.event.stopPropagation();\r\n // if(e.event.originalEvent.keyCode == 13){\r\n // let lastValue = cstate.option('value');\r\n // self.TempSelected = grid.getSelectedRowKeys();\r\n // if(lastValue)\r\n // self.Filter.AddFilter('Physical_State', lastValue, () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n //\r\n // }, false, true);\r\n // else\r\n // self.Filter.RemoveAllFilter('Physical_State', () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n // });\r\n // }\r\n // });\r\n // csic.option('onKeyDown', e => {\r\n // e.event.stopPropagation();\r\n // self.TempSelected = grid.getSelectedRowKeys();\r\n // if(e.event.originalEvent.keyCode == 13){\r\n // let lastValue = csic.option('value');\r\n // if(lastValue)\r\n // self.Filter.AddFilter('SIC01', lastValue, () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n //\r\n // }, false, true);\r\n // else\r\n // self.Filter.RemoveAllFilter('SIC01', () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n // });\r\n // }\r\n // });\r\n // csdesc.option('onKeyDown', e => {\r\n // e.event.stopPropagation();\r\n // self.TempSelected = grid.getSelectedRowKeys();\r\n // if(e.event.originalEvent.keyCode == 13){\r\n // let lastValue = csdesc.option('value');\r\n // if(lastValue)\r\n // self.Filter.AddFilter('SIC01_Description', lastValue, () => {\r\n // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n //\r\n // }, false, true);\r\n // // else\r\n // // self.Filter.RemoveAllFilter('SIC01', () => {\r\n // // $('button.btn-success-custom.d-refresh-business-grid-btn').trigger('click');\r\n // // });\r\n // }\r\n // });\r\n $('#quickSearch').on('input', () => {\r\n cname.option('value', '');\r\n })\r\n if (!$('#toggleCheckbox2-input').is(':checked')) {\r\n if ($('#quickSearch').val())\r\n $('.mainGrid .dx-texteditor-input:first').val($('#quickSearch').val());\r\n else {\r\n //if ($('.mainGrid .dx-texteditor-input:first').val())\r\n // $('#quickSearch').val($('.mainGrid .dx-texteditor-input:first').val());\r\n }\r\n }\r\n\r\n $(document).on('keydown', '.mainGrid .dx-texteditor-input-container.dx-texteditor-input-container input', e => {\r\n if (e.keyCode == 13) {\r\n // $('.root-preloader').show();\r\n $('.mainGrid .dx-apply-button').trigger('dxclick');\r\n }\r\n });\r\n\r\n // Add tooltip on SIC Code & SIC Description\r\n const sic = $('[aria-label=\"Column SIC Description\"]');\r\n const sic01 = $('[aria-label=\"Column SIC01 Description\"]');\r\n sic.attr('data-original-title', 'Start with');\r\n sic.attr('data-bs-toggle', 'tooltip');\r\n (sic as any).attr('data-bs-placement', 'top').tooltip('enable');\r\n sic.attr('title', '');\r\n sic01.attr('data-original-title', 'Start with');\r\n sic01.attr('data-bs-toggle', 'tooltip');\r\n (sic01 as any).attr('data-bs-placement', 'top').tooltip('enable');\r\n sic01.attr('title', '');\r\n\r\n // Add tooltip on Physical City\r\n const cityColumn = $('[aria-label=\"Column Physical City\"]');\r\n cityColumn.attr('data-original-title', 'Enter Exact Name');\r\n cityColumn.attr('data-bs-toggle', 'tooltip');\r\n (cityColumn as any).attr('data-bs-placement', 'top').tooltip('enable');\r\n cityColumn.attr('title', '');\r\n\r\n // Add tooltip on Physical State\r\n const stateColumn = $('[aria-label=\"Column State\"]');\r\n stateColumn.attr('data-original-title', 'Physical State');\r\n stateColumn.attr('data-bs-toggle', 'tooltip');\r\n (stateColumn as any).attr('data-bs-placement', 'top').tooltip('enable');\r\n stateColumn.attr('title', '');\r\n\r\n $('.root-preloader').hide();\r\n\r\n if (!isMainGridResult) {\r\n //CHeck If LoadedNext Page Ok\r\n if (!$('.mainGrid .dx-row:visible').length) {\r\n const c = +$('#tooMany').html().replace(/[',.]/g, '');\r\n if (c > 0) {\r\n const grid = $('.mainGrid').dxDataGrid('instance');\r\n const ds = grid.getDataSource();\r\n ds.pageIndex(ds.pageIndex() + 1);\r\n ds.load();\r\n }\r\n }\r\n\r\n // Select All\r\n const checkBox = $('.mainGrid .dx-header-row .dx-checkbox').first();\r\n checkBox.off('dxclick.MyNamespace').on('dxclick.MyNamespace', (e) => {\r\n if (!checkBox.hasClass('dx-checkbox-indeterminate') || !checkBox.hasClass('dx-checkbox-checked')) {\r\n if (self.Filter.Count > 10000) {\r\n ($('#limitSelectionLeadsModal') as any).modal('show');\r\n try { $('.mainGrid').dxDataGrid('deselectAll'); } catch (ex) { self.log(ex); }\r\n $('.root-preloader').hide();\r\n } else if (self.Filter.Count < 100) {\r\n $('.mainGrid').dxDataGrid('instance').option('selection.selectAllMode', 'page');\r\n $('.mainGrid').dxDataGrid('instance').selectAll();\r\n const totalLeads = $('.mainGrid').dxDataGrid('instance').getSelectedRowsData();\r\n $('#userLeadsGroupsModal .btnSaveLeads').text('Buy all');\r\n window['SeachedKeys'] = totalLeads.map(e => e.Id);\r\n self.initNewBlackList();\r\n ($('#userLeadsGroupsModal') as any).modal('show');\r\n self.gvLeadsGroups('#userLeadsGroupsModal');\r\n\r\n $('#userLeadsCountOfTotalRecorsdPopUp').text(totalLeads.length);\r\n $('.addToCRM-text-item.text-item2').show();\r\n\r\n $('.root-preloader').hide();\r\n } else {\r\n checkBox.removeClass('dx-checkbox-checked');\r\n $('#hidePurchasedLeads').is(':checked') ? self.waitOrNotificationOnMainGrid(true, true) : self.waitOrNotificationOnMainGrid(false, true);\r\n }\r\n }\r\n });\r\n\r\n const isLeadsOnGrid = $('.mainGrid').dxDataGrid('instance').getVisibleRows();\r\n if ($('#hidePurchasedLeads').is(':checked')) {\r\n const isLeadsOnGridAfterPurchase = isLeadsOnGrid.filter(item => item.data.IsInDB == false);\r\n if (isLeadsOnGridAfterPurchase.length == 0) {\r\n $('.lblInfoWrap').css('visibility', 'hidden');\r\n checkBox.remove()\r\n } else {\r\n $('.lblInfoWrap').css('visibility', 'visible')\r\n }\r\n } else {\r\n if (isLeadsOnGrid.length == 0) {\r\n $('.lblInfoWrap').css('visibility', 'hidden');\r\n checkBox.remove()\r\n } else {\r\n $('.lblInfoWrap').css('visibility', 'visible')\r\n }\r\n }\r\n }\r\n },\r\n onEditorPreparing: (e) => {\r\n window['InstanceBase'].applyFilterOnDevExGrid(e);\r\n },\r\n onInitialized: ({ component }) => {\r\n if (!isMainGridResult) component.option('filterRow.applyFilter', 'onClick');\r\n },\r\n onRowDblClick: ({ data: {\r\n Id,\r\n Company_Name,\r\n Executive_Email,\r\n Phone,\r\n Physical_City,\r\n Physical_State,\r\n Latitude,\r\n Longitude,\r\n SIC01_Description,\r\n SIC_Description,\r\n IsInDB,\r\n Lid\r\n } }) => {\r\n function LoadInfoForCRM() {\r\n /** function LoadInfoForCRM() */\r\n\r\n const data = $('.mainGrid').dxDataGrid('instance');\r\n data.deselectAll();\r\n data.option('selectedRowKeys', [Lid]);\r\n\r\n window['SeachedKeys'] = [];\r\n window['SeachedKeys'].push(Id);\r\n window['IsInDB'] = IsInDB;\r\n }\r\n if (window['User'] && window['User'].RAI) {\r\n self.addtoCrmForRai();\r\n\r\n $('.btn-addToCrmForRaiUsers').off('click').on('click', (e: any) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $('.root-preloader').show();\r\n ($('#addToCrmForRaiUsersModal') as any).modal('hide');\r\n // ($('#newInfo') as any).modal('show');\r\n LoadInfoForCRM();\r\n\r\n self.insertRows('#addToCrmForRaiUsersModal');\r\n });\r\n\r\n } else {\r\n LoadInfoForCRM();\r\n\r\n self.crmCard(Company_Name, 'Image');\r\n }\r\n },\r\n onRowPrepared: (data) => {\r\n if (!isMainGridResult) {\r\n if (data.data && data.rowType == 'data') {\r\n let removed = false;\r\n if (data.data.Removed) {\r\n\r\n if (data.rowIndex == 0) {\r\n //data.rowElement.hide();\r\n data.rowElement.css('visibility', 'hidden')\r\n data.rowElement.addClass('HRemove');\r\n }\r\n else {\r\n data.rowElement.hide();\r\n data.rowElement.addClass('Remove');\r\n }\r\n\r\n removed = true;\r\n }\r\n if (data.data.IsInDB && $('#hidePurchasedLeads').is(':checked')) {\r\n\r\n if (data.rowIndex == 0) {\r\n //data.rowElement.hide();\r\n data.rowElement.css('visibility', 'hidden')\r\n data.rowElement.addClass('HRemove');\r\n }\r\n else {\r\n data.rowElement.hide();\r\n data.rowElement.addClass('Remove');\r\n }\r\n removed = true;\r\n }\r\n if (!removed) {\r\n rows++;\r\n data.rowElement.addClass('show').addClass('row_' + rows).addClass('row_' + (rows % 2 == 0 ? 'even' : 'odd'));\r\n }\r\n else {\r\n // let c = +$('#tooMany').html().replace(/[',.]/g, '');\r\n //\r\n // let count = window['DevExpress'].localization.formatNumber(c);\r\n // $('#tooMany').html(count);\r\n // $('#h4-total-results-map span').html(count);\r\n }\r\n }\r\n }\r\n else {\r\n rows++;\r\n }\r\n totals++;\r\n if (rows > 0) {\r\n $('.HRemove').hide();\r\n $('.root-preloader').hide();\r\n }\r\n },\r\n onSelectionChanged: (e) => {\r\n const allSelectedRowKeys = e.selectedRowKeys;\r\n self.Filter.Backups.LastBackup.Selected = e.selectedRowKeys;\r\n self.Filter.Backups.saveBackups(self.Filter.Backups.Backups);\r\n $('#lblInfo').text(allSelectedRowKeys.length);\r\n // $('.mainGrid').dxDataGrid('instance').option('summary.totalItems.displayFormat', `Total selected allSelectedRowKeys leads`);\r\n const buiedLeads = e.selectedRowsData.find(x => x.IsInDB)\r\n if ($('#hidePurchasedLeads').is(':checked')) {\r\n const list = e.selectedRowsData.filter(e => e.IsInDB).map(e => e.Lid);\r\n if (list.length) {\r\n if (this.LastSelect == list.length) {\r\n $('.mainGrid').dxDataGrid('instance').deselectAll();\r\n this.LastSelect = 0;\r\n }\r\n else {\r\n $('.mainGrid').dxDataGrid('instance').deselectRows(list);\r\n this.LastSelect = list.length;\r\n }\r\n }\r\n else {\r\n this.LastSelect = 0;\r\n }\r\n }\r\n window['BuiedCount'] = $(buiedLeads).length;\r\n },\r\n paging: {\r\n pageSize: 50\r\n },\r\n remoteOperations: {\r\n filtering: true,\r\n grouping: true,\r\n groupPaging: true,\r\n paging: true,\r\n sorting: true,\r\n summary: true\r\n },\r\n rowAlternationEnabled: true,\r\n scrolling: {\r\n mode: 'infinite'\r\n },\r\n selectedRowKeys: self.TempSelected,\r\n selection: {\r\n allowSelectAll: true,\r\n mode: select as any,\r\n selectAllMode: 'allPages'\r\n },\r\n showBorders: true,\r\n sorting: {\r\n mode: 'single'\r\n },\r\n }).dxDataGrid('instance');\r\n }\r\n\r\n multipleSplit(string) {\r\n let emails = string.split(/\\s*(;|,|:)\\s*|\\s*$/);\r\n emails = jQuery.grep(emails, function (value) {\r\n return value !== ';' && value !== ',' && value !== ':';\r\n });\r\n return emails;\r\n }\r\n\r\n /**\r\n * needToBuyPacks(isPopUp = false): Function\r\n * @param isPopUp\r\n */\r\n needToBuyPacks(isPopUp = false) {\r\n const self = this;\r\n let totalLeads = +$('#tooMany').text().replace(/\\D/g, ''); /** Get count leads */\r\n const selected = $('.mainGrid').dxDataGrid('instance').getSelectedRowsData(); /** Get selected rows data of .mainGrid */\r\n const leadsCount = isPopUp ? 1 : selected.length; // ???\r\n if (leadsCount > 0) totalLeads = leadsCount;\r\n\r\n\r\n if (totalLeads > window['User'].Leads) { /** If count buy leads > user leads credits - show #tooManyLeadsModal */\r\n ($('#tooManyLeadsModal') as any).modal('show');\r\n }\r\n else {\r\n $('.root-preloader').show();\r\n $('.addToCRMGroups-form .tabNewWrapper').css('visibility', 'hidden'); /** hide add new tab section on #userLeadsGroupsModal */\r\n\r\n //$.post('/Business/IsNeedToBuyPacks', { leadsCount: leadsCount }, data => {\r\n //old version check if need to buy more leads and pack\r\n // if (data.isLeadPricing) {\r\n // return self.getPrices();\r\n // }\r\n //{\r\n\r\n if (!isPopUp) {\r\n if (selected.length) { /** If is selected rows data - load function showUserLeadsGroupsModal() */\r\n //let data = ($('.mainGrid') as any).dxDataGrid('instance').getSelectedRowsData().map(e => { return { Phone: e.Phone, Ids: e.Id } });\r\n\r\n self.showUserLeadsGroupsModal(selected);\r\n } else {\r\n if (!$('#hidePurchasedLeads').is(':checked')) {\r\n if (totalLeads > window['User'].Leads) {\r\n ($('#tooManyLeadsModal') as any).modal('show');\r\n } else {\r\n $('#userLeadsGroupsModal .btnSaveLeads').text('Buy all');\r\n self.initNewBlackList();\r\n ($('#userLeadsGroupsModal') as any).modal('show');\r\n self.gvLeadsGroups('#userLeadsGroupsModal');\r\n\r\n $('#userLeadsCountOfTotalRecorsdPopUp').text($('#tooMany').text());\r\n $('.addToCRM-text-item.text-item2').show();\r\n }\r\n $('.root-preloader').hide();\r\n // self.waitOrNotificationOnMainGrid(false, false);\r\n } else {\r\n if (totalLeads < 100) {\r\n $('.mainGrid').dxDataGrid('instance').option('selection.selectAllMode', 'page');\r\n $('.mainGrid').dxDataGrid('instance').selectAll();\r\n const selected = $('.mainGrid').dxDataGrid('instance').getSelectedRowsData();\r\n $('#userLeadsGroupsModal .btnSaveLeads').text('Buy all');\r\n window['SeachedKeys'] = selected.map(e => e.Id);\r\n $('#tooMany').text(selected.length);\r\n self.initNewBlackList();\r\n ($('#userLeadsGroupsModal') as any).modal('show');\r\n self.gvLeadsGroups('#userLeadsGroupsModal');\r\n\r\n $('#userLeadsCountOfTotalRecorsdPopUp').text(selected.length);\r\n $('.addToCRM-text-item.text-item2').show();\r\n } else self.waitOrNotificationOnMainGrid(true, false);\r\n }\r\n }\r\n\r\n //} else {\r\n // let data = $('.mainGrid').dxDataGrid('instance').getSelectedRowsData();\r\n // let ids = [];\r\n // data.forEach(el => {\r\n // ids.push(el.Id);\r\n // })\r\n\r\n // window['SeachedKeys'] = ids;\r\n // ($('#userLeadsGroupsModal') as any).modal('show');\r\n // self.gvLeadsGroups('#userLeadsGroupsModal');\r\n // $('.addToCRM-text-item.text-item2').show();\r\n // let countOfLeads = $('#lblInfo').text();\r\n // $('#userLeadsCountOfTotalRecorsdPopUp').text(countOfLeads);\r\n\r\n // let buiedCount = data.filter(el => { if (el.IsInDB == true) return el; }).length;\r\n // if (buiedCount > 0) {\r\n // // let message = window['BuiedCount'] + ' from ' + window['SeachedKeys'].length + ' have been purchased!';\r\n // let message = `Previously Purchased: ${buiedCount}`;\r\n // $('.addToCRM-text-item.text-item1').show().text('').text(message);\r\n // }\r\n //}\r\n } else {\r\n self.initNewBlackList();\r\n ($('#userLeadsGroupsModal') as any).modal('show');\r\n self.gvLeadsGroups('#userLeadsGroupsModal');\r\n $('.addToCRM-text-item.text-item2').show();\r\n $('#userLeadsCountOfTotalRecorsdPopUp').text(window['SeachedKeys'].length);\r\n if (window['IsInDB']) {\r\n const message = 'This Lead has been purchased already!';\r\n $('.addToCRM-text-item.text-item1').show().text('').text(message);\r\n }\r\n }\r\n //}\r\n }\r\n }\r\n\r\n priceConverter(data, name) {\r\n let result = '';\r\n let strtVal = 1;\r\n const array = data.packsList.filter(el => {\r\n if (el.PackName == name)\r\n return el;\r\n });\r\n $.each(array, function (_, v) {\r\n result += '
' +\r\n '
' + strtVal + ' - ' + v.Quantity + '
' +\r\n '
$' + v.Price + ' per record
' +\r\n '
';\r\n strtVal = v.Quantity + 1;\r\n });\r\n return result += '
' +\r\n '
+25,000
' +\r\n '' +\r\n '
';\r\n }\r\n\r\n removePendingSearchCriteriaFromList(name: string) {\r\n const self = this;\r\n let rows = JSON.parse(self.getCookie('UnregisterCreateSearchCriteria'));\r\n rows = rows.filter(el => { if (el.name != name) { return rows } });\r\n self.createCookie('UnregisterCreateSearchCriteria', JSON.stringify(rows), new Date);\r\n if (rows.length == 0) {\r\n ($('#pendingSearchCriteriasModal') as any).modal('hide');\r\n } else {\r\n self.generatePendingSearchCriteriasGrid(JSON.parse(self.getCookie('UnregisterCreateSearchCriteria')));\r\n ($('#listOfPendingSearchCriterias') as any).dxDataGrid('instance').refresh();\r\n try {\r\n $('.mainGrid').dxDataGrid('instance').repaint();\r\n } catch (ex) { }\r\n }\r\n\r\n }\r\n\r\n removeSaveSearchCriteria(id: number) {\r\n const self = this;\r\n const m = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n m.option('value', undefined);\r\n\r\n $.post('/Business/RemoveListSearchCriteria', { id: id }, () => {\r\n self.Filter.RemoveAllFilters();\r\n m._refresh();\r\n m.option('value', undefined);\r\n })\r\n }\r\n\r\n resetArea() {\r\n this.Filter.Criterias = this.Filter.Criterias?.filter(x => x.Name != 'Area_Code') as any;\r\n const areas = [];\r\n for (const k in this.selectedArea.data)\r\n this.selectedArea.data[k].forEach(el => areas.push(el));\r\n const selected = areas.map<{ Name: string, Value: string, Id: number }>(el => {\r\n return {\r\n Id: el.Id,\r\n Name: 'Area_Code',\r\n Value: el.Code\r\n }\r\n });\r\n this.Filter.AddFilters(selected);\r\n $('#callbackPanelAreaPart2').dxDataGrid('option', 'selectedRowKeys', this.Filter.Areas?.map(x => x?.Id));\r\n }\r\n\r\n resetZip() {\r\n this.Filter.Criterias = this.Filter.Criterias?.filter(x => x.Name != 'Physical_Zip') as any;\r\n const zips = [];\r\n for (const k in this.selectedZips.data)\r\n this.selectedZips.data[k].forEach(el => zips.push(el));\r\n\r\n const selected = zips.map<{ Name: string, Value: string, Id: number }>(el => {\r\n return {\r\n Id: el.Id,\r\n Name: 'Physical_Zip',\r\n Value: el.ZipCode1\r\n }\r\n });\r\n this.Filter.AddFilters(selected);\r\n $('#callbackPanelZipPart2').dxDataGrid('option', 'selectedRowKeys', this.Filter.Zips?.map(x => x?.Id));\r\n\r\n }\r\n\r\n runSearch() {\r\n const self = this;\r\n\r\n $('button.search-button').on('click', () => {\r\n $('.root-preloader').show();\r\n $('.d-refresh-business-grid').hide();\r\n $('.user-instruct').hide();\r\n $('#nav-tabs-search').hide();\r\n\r\n // (window['User'] && window['User'].RAI && !window['User'].Manager) ? $('.lblInfoWrap').css('visibility', 'hidden') : $('.lblInfoWrap').css('visibility', 'visible');\r\n self.Filter.Updates(x => {\r\n $('.d-refresh-business-grid').hide();\r\n self.createMainGrid();\r\n });\r\n\r\n // if (window['User'] && window['User'].RAI && window['multiple'] != null) {\r\n // $('.lblInfoWrap').css('visibility', 'visible');\r\n // }\r\n });\r\n $('.d-refresh-business-grid-btn').on('click', () => {\r\n $('button.search-button').trigger('click');\r\n })\r\n }\r\n\r\n searchTabs() {\r\n const self = this;\r\n self.log('Search Tabs');\r\n $('#search-pills-state-tab').on('shown.bs.tab', e => {\r\n self.loadState();\r\n });\r\n $('#search-pills-zip-tab').on('shown.bs.tab', e => {\r\n self.loadZip();\r\n });\r\n $('#search-pills-area-tab').on('shown.bs.tab', e => {\r\n self.loadArea();\r\n });\r\n $('#target-searchTabs, #a_search_tabs, .leftPanel-sicCode-btn').on('click', e => {\r\n $('.root-preloader').show();\r\n self.log('Search Tabs On Click', e);\r\n self.loadSic();\r\n // self.loadState();\r\n // self.loadZip();\r\n //self.loadArea();\r\n $('#GridViewBusiness').hide();\r\n $('.user-instruct').hide();\r\n $('.d-refresh-business-grid').hide();\r\n $('.content-bottom-buttons').hide();\r\n $('#nav-tabs-search').fadeIn('slow');\r\n $('.mainGrid').hide();\r\n self.Filter.Backups.LastBackup.Level = 2;\r\n self.Filter.Backups.saveBackups(self.Filter.Backups.Backups);\r\n try {\r\n $('.mainGrid').dxDataGrid('dispose');\r\n }\r\n catch (ex) { }\r\n // $('.lblInfoWrap').hide();\r\n\r\n //self.RemoveAllFilters();\r\n //$('#searchCriteria-save-btn').prop('disabled', true);\r\n // $('#callbackPanelSicCode').dxTreeList('instance').clearSelection();\r\n // ($('#searchCriteria-list') as any).dxDropDownBox('instance').option('value', null);\r\n });\r\n }\r\n\r\n sendSearchCriteria() {\r\n const self = this;\r\n const emailReg = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n //#region open Send business search modal\r\n $('.btn-sendSearchCriteria').on('click', function () {\r\n const valText = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n if (valText.option('value') != null) {\r\n\r\n $('#sendSearchCriteriaModal .sendSearchCriteria-link').text(valText.option('text'));\r\n } else {\r\n $('#sendSearchCriteriaModal .sendSearchCriteria-link').text('Send Search Criteria');\r\n }\r\n ($('#sendSearchCriteriaModal') as any).modal('show');\r\n })\r\n //#endregion\r\n\r\n\r\n //#region Send business search on email\r\n\r\n $(document).on('keyup', '#searchCriteriaEmail', function () {\r\n const emailsText = $('#searchCriteriaEmail').val();\r\n let emailsCount = 1;\r\n let isValid = true;\r\n if (emailsText) {\r\n const emailList = self.multipleSplit(emailsText);\r\n emailsCount = emailList.length;\r\n $.each(emailList, function (_, v) {\r\n if (emailReg.test(v) && isValid) {\r\n $('#searchCriteriaEmail').removeClass('is-invalid');\r\n $('#validEmail').hide();\r\n\r\n //if (emailsCount == 1)\r\n // self.isEmailExist($('#searchCriteriaEmail').val());\r\n\r\n $('#sendSearchBusinesRequestToClient').prop('disabled', false);\r\n return isValid = true;\r\n } else {\r\n return isValid = false;\r\n }\r\n });\r\n if (!isValid) {\r\n $('#searchCriteriaEmail').addClass('is-invalid');\r\n $('#validEmail').show();\r\n $('#sendSearchBusinesRequestToClient').prop('disabled', true);\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n $(document).off('click', '#sendSearchBusinesRequestToClient').on('click', '#sendSearchBusinesRequestToClient', () => {\r\n const searchBusiness = ($('#searchCriteria-list') as any).dxDropDownBox('instance').option('value');\r\n const emailsText = $('#searchCriteriaEmail').val();\r\n\r\n const emails = self.multipleSplit(emailsText);\r\n\r\n //self.sendSearchCriteriaEmail(addAccessTo);\r\n self.generateInvisibleSearchCriteriaRow(emails.toString());\r\n });\r\n //#endregion \r\n\r\n $(document).on('click', '#assignSearchCriteriaToUser', function () {\r\n const searchid = $('#assignSearchCriteriaToUser').data('searchid');\r\n self.assignAvalibleSearchHistoryBusinessToUser(searchid);\r\n });\r\n\r\n $(document).on('click', '#addPendingSearchCriterias', function () {\r\n let rows = JSON.parse(self.getCookie('UnregisterCreateSearchCriteria'));\r\n $.each(window['SelectedPendingSearchCriterias'], function (i, v) {\r\n window['IndexPend'] = i;\r\n $.ajax({\r\n url: '/Business/AddListSearchCriteria',\r\n method: 'POST',\r\n dataType: 'json',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify(v),\r\n success() {\r\n if (window['SelectedPendingSearchCriterias'].length == (window['IndexPend'] + 1)) {\r\n const m = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n m._refresh();\r\n /*m.option('value', data.Id);*/\r\n\r\n //if (window['isPendingSearchCriteriaDeleted']) {\r\n // self.createCookie('UnregisterCreateSearchCriteria', JSON.stringify([]), new Date);\r\n //}\r\n //$('#first-step').trigger('click');\r\n ($('#pendingSearchCriteriasModal') as any).modal('hide');\r\n }\r\n }\r\n });\r\n\r\n\r\n rows = rows.filter(el => { if (el.name != v.name) { return rows } }); rows = rows = rows.filter(el => { if (el.name != v.name) { return rows } });\r\n self.createCookie('UnregisterCreateSearchCriteria', JSON.stringify(rows), new Date);\r\n });\r\n });\r\n\r\n $(document).on('click', '#deleteAll', function () {\r\n self.createCookie('UnregisterCreateSearchCriteria', JSON.stringify([]), new Date);\r\n ($('#pendingSearchCriteriasModal') as any).modal('hide');\r\n });\r\n\r\n $(document).on('shown.bs.modal', '#sendSearchCriteriaModal', function () {\r\n $('#searchCriteriaEmail').val('').focus();\r\n });\r\n\r\n $(document).on('hidden.bs.modal', '#sendSearchCriteriaModal', function () {\r\n $('#searchCriteriaEmail').removeClass('is-invalid');\r\n $('#validEmail').hide();\r\n $('#searchCriteriaEmail').val('');\r\n $('#sendSearchBusinesRequestToClient').prop('disabled', true);\r\n });\r\n\r\n $('#sendSearchCriteriaModal').on('keypress', e => {\r\n if (e.keyCode == 13 && !$('#sendSearchBusinesRequestToClient').is(':disabled'))\r\n $('#sendSearchBusinesRequestToClient').trigger('click');\r\n })\r\n\r\n $('#pricingOptions .pricingOptions-btn').on('click', e => {\r\n //let carRows = [];\r\n\r\n //if (window['Business'].getCookie('ShoppingCartUnPaedBiils') != '')\r\n // carRows = (JSON.parse(window['Business'].getCookie('ShoppingCartUnPaedBiils')))\r\n\r\n //let id = carRows[carRows.length - 1] ? carRows[carRows.length - 1].ID + 1 : 1;\r\n\r\n const leadsArrayToBuy = $('.mainGrid').dxDataGrid('instance').getSelectedRowKeys()\r\n const sourceAction = $(e.currentTarget).attr('data-packname');\r\n const quantity = leadsArrayToBuy.length;\r\n const unitPriceId = self.getPryceBySourceActionAndCount(quantity);\r\n\r\n const price = $(e.currentTarget).closest('.col-wrap').find('div.row.mb-1')[unitPriceId];\r\n const unitPrice = $(price).find('span').text();\r\n\r\n const carRows = {\r\n //Id: id != null ? id : 1,\r\n Source: 'Business Leads',\r\n Name: 'Item Name',\r\n SourceAction: sourceAction,\r\n PriceTotal: parseFloat($(e.currentTarget).closest('.col-wrap').find('.price-total').text().replace('$', '')),\r\n UnitPrice: parseFloat(unitPrice.replace('$', '')),\r\n Quantity: quantity,\r\n LeadsToBuy: JSON.stringify($('.mainGrid').dxDataGrid('instance').getSelectedRowKeys()),\r\n SearchCriterias: JSON.stringify(self.Filter.Criterias)\r\n };\r\n\r\n //self.createCookie('ShoppingCartUnPaedBiils', JSON.stringify(carRows), new Date);\r\n\r\n $.post('/ProfileAndSettings/AddNewShopingCartLead', carRows, (data) => {\r\n ($('#leadPricingModal') as any).modal('hide');\r\n ($('#shoppingCartModal') as any).modal('show');\r\n });\r\n })\r\n }\r\n\r\n sendSearchCriteriaEmail(addAccessTo) {\r\n $.ajax({\r\n type: 'POST',\r\n url: '/MultipleNodeSelection/AddAccessOnSearcHistoryBusines',\r\n data: { addAccessTo: addAccessTo },\r\n dataType: 'json',\r\n crossDomain: true,\r\n success: function (result) {\r\n if (result) {\r\n alert('Email(s) send Successfully');\r\n ($('#sendSearchCriteriaModal') as any).modal('hide');\r\n } else {\r\n alert('Email FAILED to Send');\r\n }\r\n },\r\n error: function () {\r\n alert('Have some error on sending Email');\r\n }\r\n });\r\n }\r\n\r\n settings() {\r\n const self = this;\r\n $('form').on('submit', e => e.preventDefault());\r\n self.getPacksList();\r\n }\r\n\r\n waitOrNotificationOnMainGrid(isHidePurchasedLeads = false, showWait = false) {\r\n // window['User'].Leads\r\n const self = this;\r\n let totalLeads = +$('#tooMany').text().replace(/\\D/g, '');\r\n const waitButton = $('#waitOrShowQuestionModal .waitOrShowQuestion-form .wait');\r\n const notificationButton = $('#waitOrShowQuestionModal #waitOrShowQuestionRadios2');\r\n if (totalLeads > (window['User'].Leads ?? 0)) {\r\n ($('#tooManyLeadsModal') as any).modal('show');\r\n } else {\r\n if (showWait) {\r\n waitButton.show();\r\n } else {\r\n waitButton.hide();\r\n notificationButton.click();\r\n ($('#waitOrShowQuestionModal .waitOrShowQuestion-btn') as any).prop('disabled', false);\r\n }\r\n ($('#waitOrShowQuestionModal') as any).modal('show');\r\n const time = totalLeads * .016;\r\n const minutes = Math.floor(time / 60);\r\n const sec = Math.floor(time % 60);\r\n minutes < 1 ? $('#waitOrShowQuestionModal .loadingTime').text(`${sec} sec.`) : $('#waitOrShowQuestionModal .loadingTime').text(`${minutes} min. ${sec} sec.`)\r\n\r\n // === Change select Wait or Notification ===\r\n $('#waitOrShowQuestionModal .form-check-input').on('change', () => {\r\n ($('#waitOrShowQuestionModal .waitOrShowQuestion-btn') as any).prop('disabled', false);\r\n });\r\n\r\n $('.waitOrShowQuestion-btn').off('click').on('click', () => {\r\n $('.root-preloader').show();\r\n if ($('#waitOrShowQuestion-blackList').is(':checked')) {\r\n $.get('/Business/ActiveBlackList', (data) => {\r\n const sCount = data.Count;\r\n totalLeads = +sCount.replace(/\\D/, '');\r\n window['IsActiveBlackList'] = true;\r\n next(data.Count);\r\n });\r\n }\r\n else next();\r\n function next(count?) {\r\n if ($('#waitOrShowQuestionRadios1').is(':checked')) {\r\n ($('#waitOrShowQuestionModal') as any).modal('hide');\r\n window['waitMainGrid'] = true;\r\n if (count) {\r\n $('#tooMany').text(count);\r\n totalLeads = +count.replace(/\\D/, '');\r\n }\r\n const totalSelectedLead = [], raw = [];\r\n if (totalLeads <= 0) {\r\n $('.root-preloader').hide();\r\n const arr = [];\r\n window['SeachedKeys'] = [];\r\n // self.mainGridResultModalShow(filter);\r\n self.mainGrid(arr, true);\r\n }\r\n else for (let i = 0; i < +totalLeads; i += 50) {\r\n $.ajax({\r\n type: 'GET',\r\n url: '/Business/GetBusiness',\r\n data: { take: 50, skip: i, removePurchased: false },\r\n success(res) {\r\n res.data.forEach((data, index) => {\r\n totalSelectedLead[index + i] = data;\r\n raw.push({ data: data, index: i, pos: index });\r\n });\r\n self.log('TestLog', { skip: i, data: totalSelectedLead });\r\n if (raw.length >= totalLeads) {\r\n $('.root-preloader').hide();\r\n if (isHidePurchasedLeads) {\r\n $.ajax({\r\n url: '/Business/BusinesesInDB',\r\n method: 'POST',\r\n dataType: 'json',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify(totalSelectedLead.map(x => x.Id)),\r\n success(data) {\r\n totalSelectedLead.forEach(x => {\r\n x.Removed = !!data.find(m => m == x.Id);\r\n });\r\n const filter = isHidePurchasedLeads ? totalSelectedLead.filter(x => !x.Removed) : totalSelectedLead;\r\n window['SeachedKeys'] = filter.map(e => e.Id);\r\n // self.mainGridResultModalShow(filter);\r\n self.mainGrid(filter, true);\r\n $('.mainGrid').dxDataGrid('instance').selectAll();\r\n }\r\n });\r\n } else {\r\n const filter = isHidePurchasedLeads ? totalSelectedLead.filter(x => !x.Removed) : totalSelectedLead;\r\n window['SeachedKeys'] = filter.map(e => e.Id);\r\n // self.mainGridResultModalShow(filter);\r\n self.mainGrid(filter, true);\r\n $('.mainGrid').dxDataGrid('instance').selectAll();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n } else if ($('#waitOrShowQuestionRadios2').is(':checked')) {\r\n $.get('/Business/GetAllBusiness', { withBlackList: $('#waitOrShowQuestion-blackList').is(':checked'), hiddenPurchase: $('#hidePurchasedLeads').is(':checked') }, (id) => {\r\n $.get('/Business/RemoveBlackList', () => {\r\n $('.root-preloader').hide();\r\n ($('#waitOrShowQuestionModal') as any).modal('hide');\r\n self.log('GetAllBusiness', id);\r\n });\r\n\r\n });\r\n }\r\n else {\r\n $('.root-preloader').hide();\r\n }\r\n }\r\n });\r\n\r\n // === Clear fields ===\r\n $('#waitOrShowQuestionModal').off('hidden.bs.modal').on('hidden.bs.modal', () => {\r\n $('#waitOrShowQuestionModal .form-check-input').prop('checked', false);\r\n $('.waitOrShowQuestion-btn').prop('disabled', true);\r\n });\r\n\r\n }\r\n }\r\n\r\n updateSaveSearchCriteria(id: number, name: string) {\r\n const self = this;\r\n $.post('/Business/UpdateListSearchCriteria', { id: id, name: name, criterias: self.Filter.Criterias }, () => {\r\n const m = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n m._refresh();\r\n m.option('value', id)\r\n })\r\n }\r\n\r\n //getPrices() {\r\n // const numberCount = $('.mainGrid').dxDataGrid('instance').getSelectedRowKeys().length;\r\n // $.post('/Business/GetPrices', { numberCount: numberCount }, data => {\r\n // $('.countOfLeads').text($('.mainGrid').dxDataGrid('instance').getSelectedRowKeys().length);\r\n // $('p[data-packName=\"Mail\"]').text((data as any).sp.Mail);\r\n // $('p[data-packName=\"Call\"]').text((data as any).sp.Call);\r\n // $('p[data-packName=\"Full\"]').text((data as any).sp.Full);\r\n\r\n // ($('#leadPricingModal') as any).modal('show');\r\n // });\r\n //}\r\n\r\n //isAvalibleSearchHistoryBusinessParentAccess(searchId) {\r\n // let user;\r\n // $.ajax({\r\n // type: 'POST',\r\n // url: '/MultipleNodeSelection/IsAvalibleSearchHistoryBusinessParentAccess',\r\n // data: { searchId: searchId },\r\n // async: false,\r\n // dataType: 'json',\r\n // crossDomain: true,\r\n // success: (result) => {\r\n // window['SearchHistoryAccesParentResult'] = result;\r\n // },\r\n // error: () => {\r\n // alert('Somthing gono wrong with isAvalibleSearchHistoryBusinessParentAccess response');\r\n // }\r\n // });\r\n // return user;\r\n //}\r\n\r\n //setHeightOnGridsFilters(tabContentId, gridId) {\r\n // const heightSearchContent = $('#nav-tabs-search').height();\r\n // const heightTabs = $('#search-pills-tab').height() + 15;\r\n // const heightHeader = $(tabContentId).find('.tab-content-header').height();\r\n // const heightItemHeader = $(tabContentId).find('.tab-content-item-header').height();\r\n // const heightGrid = heightSearchContent - heightTabs - heightHeader - heightItemHeader;\r\n // $(gridId).height(heightGrid);\r\n //}\r\n}\r\nexport const App = new Business(true);\r\nwindow['Business'] = App;\r\nwindow['App'] = App.Proxy;\r\n","import { Business } from '../business';\r\n\r\n/**\r\n * Class For Saving Backups\r\n */\r\nexport class Backups {\r\n /**\r\n * Business App\r\n */\r\n private Business: Business\r\n\r\n /**\r\n * Init Saving Business\r\n * @param {Business} business Business App\r\n */\r\n constructor(business: Business) {\r\n this.Business = business;\r\n this.startBackups();\r\n }\r\n\r\n /**\r\n * Current All Backups\r\n */\r\n private CurrentBackups: any;\r\n\r\n /**\r\n * Get All Backups\r\n * @constructor\r\n */\r\n get Backups(): any {\r\n if (this.CurrentBackups)\r\n return this.CurrentBackups;\r\n const backups: any = localStorage.getItem('Backups');\r\n try {\r\n this.CurrentBackups = JSON.parse(backups);\r\n } catch (ex) {\r\n this.Business.log('Backups Exception', ex);\r\n\r\n }\r\n return this.CurrentBackups;\r\n }\r\n\r\n /**\r\n *\r\n * @param data List Of Backups\r\n * @constructor\r\n */\r\n set Backups(data: any) {\r\n this.CurrentBackups = data;\r\n }\r\n\r\n /**\r\n * Save All Changes\r\n * @constructor\r\n */\r\n saveBackups(backups) {\r\n this.Backups = backups;\r\n localStorage.setItem('Backups', JSON.stringify(backups));\r\n console.log('SaveBKUPS', backups);\r\n }\r\n\r\n /**\r\n * Generate Uniq ID\r\n * @private\r\n */\r\n private generateUUID() {\r\n // Public Domain/MIT\r\n let d = new Date().getTime();//Timestamp\r\n let d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0;//Time in microseconds since page-load or 0 if unsupported\r\n return 'xxxxxxxx-xxxx-0xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = Math.random() * 16;//random number between 0 and 16\r\n if (d > 0) {//Use timestamp until depleted\r\n r = (d + r) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n } else {//Use microseconds since page-load if supported\r\n r = (d2 + r) % 16 | 0;\r\n d2 = Math.floor(d2 / 16);\r\n }\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n }\r\n\r\n /**\r\n * Using Last Backup\r\n * @constructor\r\n */\r\n get LastBackup() {\r\n let b = this.Backups;\r\n if (!b) b = {};\r\n const next = new Date();\r\n next.setMinutes(next.getMinutes() + 30)\r\n if (b.Date)\r\n if (b.Date > next) b = {};\r\n if (b.last) return b[b.last];\r\n b.last = this.generateUUID();\r\n b[b.last] = {\r\n Level: 0,\r\n Id: b.last,\r\n Date: new Date()\r\n }\r\n return b[b.last];\r\n }\r\n\r\n sBackups(guid?: string) {\r\n if (this.Backups == null)\r\n this.Backups = {};\r\n\r\n const backups = this.Backups;\r\n if (guid) {\r\n const b = this.Backups[guid]\r\n if (b == null) {\r\n this.Backups[guid] = {\r\n Level: 0,\r\n Id: guid,\r\n Date: new Date()\r\n }\r\n }\r\n this.Backups.last = guid;\r\n //this.saveBackups(this.Backups);\r\n }\r\n\r\n const last = this.LastBackup;\r\n\r\n if (!backups.last) {\r\n backups.last = last.Id;\r\n backups[last.Id] = last;\r\n }\r\n this.saveBackups(this.Backups);\r\n if (!guid)\r\n window.location.href += '#' + last.Id;\r\n }\r\n\r\n startBackups() {\r\n if (($ as any).cookie('RemoveBackup') == 'true') {\r\n ($ as any).cookie('RemoveBackup', 'false', { expires: -1 });\r\n localStorage.setItem('Backups', JSON.stringify({}));\r\n }\r\n let guid: any = window.location.href.split('#');\r\n guid = guid[1];\r\n if (guid) guid = guid.split('?')[0];\r\n this.Business.log('Backups', guid);\r\n this.sBackups(guid);\r\n\r\n }\r\n}\r\n\r\nmodule.exports = Backups;","import dxTreeList from 'devextreme/ui/tree_list';\r\nimport { Business } from '../business';\r\n\r\nconst DxElement = require('../mylib.ts').DxElement;\r\n\r\nexport class CallbackPanelSicCode extends DxElement {\r\n public App: Business;\r\n public log;\r\n public db: string;\r\n public data: { Id: number, IdParent: number, Name: string, Value: string, HasItem: boolean }[] = []\r\n\r\n constructor(app: Business, target?: string, db?: string) {\r\n super(target ?? '#callbackPanelSicCode', 'dxTreeList');\r\n this.App = app;\r\n this.log = app.createLogger('CallbackPanelSicCode', true);\r\n this.db = db ?? '/Business/TreeViewSicCodeData';\r\n }\r\n\r\n init() {\r\n const self = this;\r\n\r\n if (self.data.length) {\r\n $('.root-preloader').hide();\r\n initTreeList();\r\n }\r\n else {\r\n $.post(this.db, data => {\r\n self.data = data.data;\r\n\r\n $('.root-preloader').hide();\r\n initTreeList();\r\n });\r\n }\r\n\r\n function initTreeList() {\r\n $(self.selector).dxTreeList({\r\n dataSource: self.data,\r\n columns: [\r\n {\r\n dataField: 'Name',\r\n sortOrder: 'asc',\r\n visible: false\r\n },\r\n {\r\n caption: 'Test',\r\n cellTemplate(ctx, data) {\r\n self.cellTemplate(ctx, data as any)\r\n }\r\n }\r\n ],\r\n expandNodesOnFiltering: false,\r\n hasItemsExpr: 'HasItem',\r\n keyExpr: 'Id',\r\n onCellPrepared: (e) => {\r\n self.onCellPrepared(e as any);\r\n },\r\n onRowDblClick: (e) => {\r\n self.onRowDblClick(e as any);\r\n },\r\n onRowPrepared: (e) => {\r\n self.onRowPrepared(e as any)\r\n },\r\n onSelectionChanged: (e) => {\r\n self.onSelectionChanged(e as any);\r\n },\r\n parentIdExpr: 'IdParent',\r\n renderAsync: false,\r\n repaintChangesOnly: true,\r\n rootValue: -1,\r\n scrolling: {\r\n mode: 'standard',\r\n scrollByContent: true\r\n },\r\n selection: {\r\n mode: 'multiple',\r\n recursive: true\r\n },\r\n showColumnHeaders: false,\r\n });\r\n }\r\n }\r\n\r\n cellTemplate(ctx, { data: { IdParent, Name, Value, ResultCountBusiness } }) {\r\n const self = this;\r\n const btn = $('Add to Black list');\r\n btn.on('click', () => {\r\n $.post('/Business/AddValueInBlackList', { name: Value, type: 'siccode', searchTextPosition: 'Contain' }, (data, _, ctx) => {\r\n self.onAddValueInBlackList(Name, Value, data);\r\n });\r\n });\r\n // IdParent == -1 ? ctx.html(`${Value} - ${Name}`)\r\n // : ctx.html(`${Value} - ${Name}`)\r\n //: ctx.html(`${Value} - ${Name} (${ResultCountBusiness})`)\r\n\r\n ctx.html(`${Value} - ${Name} `);\r\n if (Value && Value.length == 7)\r\n ctx.append(btn);\r\n }\r\n\r\n deselectRows(keys: Array) {\r\n return this.Instance.deselectRows(keys);\r\n }\r\n\r\n expandRow(key) {\r\n return this.Instance.expandRow(key);\r\n }\r\n\r\n isRowSelected(key): boolean {\r\n return this.Instance.isRowSelected(key)\r\n }\r\n\r\n onAddValueInBlackList(Name, Value, data) {\r\n this.App.blackListGetCountOfAllValues();\r\n if (data.success) {\r\n const msg = `${Value} - was successfully added`;\r\n $('.addToBlaskList-success span').empty().text(msg).css('background', '#28a745');\r\n $('.addToBlaskList-success').fadeIn();\r\n setTimeout(() => { $('.addToBlaskList-success').fadeOut() }, 2000);\r\n // alert(`Successfully Sic Code(${Value}):${Name}`);\r\n }\r\n else {\r\n const msg = `${Value} - already exists in Black List`;\r\n $('.addToBlaskList-success span').empty().text(msg).css('background', '#c71a00');\r\n $('.addToBlaskList-success').fadeIn();\r\n setTimeout(() => { $('.addToBlaskList-success').fadeOut() }, 2000);\r\n }\r\n }\r\n\r\n onCellPrepared({ data: { IdParent }, cellElement }) {\r\n if (IdParent === -1) {\r\n // cellElement.addClass('rootCell');\r\n }\r\n }\r\n\r\n onRowDblClick({ key, data: { Value } }) {\r\n if (Value.length == 7) {\r\n if (this.isRowSelected(key)) {\r\n this.deselectRows([key]);\r\n } else {\r\n this.selectedRows([key], true);\r\n }\r\n return;\r\n }\r\n this.expandRow(key);\r\n }\r\n\r\n onRowPrepared({ data: { IdParent }, rowElement }) {\r\n if (IdParent === -1) {\r\n //rowElement.addClass('rootRow');\r\n }\r\n }\r\n\r\n onSelectionChanged({ component, selectedRowsData }) {\r\n const self = this;\r\n const toLoad = selectedRowsData.map(element => {\r\n return {\r\n Name: 'SIC_Description',\r\n Value: element.Value.padEnd(7, '*'),\r\n Display: element.Name\r\n }\r\n });\r\n self.App.Filter.RemoveAllFilter('SIC_Description', undefined, toLoad.length <= 0);\r\n if (toLoad.length > 0) {\r\n self.App.Filter.AddFilters(toLoad, false);\r\n }\r\n return;\r\n //(selectedRowsData as [{ Id: number, Value: string }]).forEach(el => {\r\n\r\n // if (el && el.Value && el.Value.length < 7)\r\n // toLoad.push(el.Id);\r\n //});\r\n\r\n //this.App.log('toLoad', toLoad);\r\n //this.Instance.loadDescendants(toLoad).always(() => {\r\n // const selected = this.Instance.getSelectedRowsData('all');\r\n // select(selected);\r\n //});\r\n\r\n //function select(selected) {\r\n // if (!selected) selected = [];\r\n\r\n // let searchSIC = $('#search-siccode').val();\r\n // if (searchSIC == '')\r\n // selected = selected.filter(element => element && element.Value && element.Value.length == 7).map(element => {\r\n // return {\r\n // Name: 'SIC_Description',\r\n // Value: element.Value,\r\n // Display: element.Name\r\n // }\r\n // });\r\n // else {\r\n // searchSIC = (searchSIC as any).toLowerCase();\r\n // selected = selected.filter(element => element && element.Value && element.Value.length == 7 && (element.Name.toLowerCase().includes(searchSIC) || element.Value.includes(searchSIC))).map(element => {\r\n // return {\r\n // Name: 'SIC_Description',\r\n // Value: element.Value,\r\n // Display: element.Name\r\n // }\r\n // });\r\n // }\r\n\r\n // self.log('SELECT', selected);\r\n // // $.get('/Business/RemoveAllFilter', { name: 'SIC_Description' }, (data, _, ctx) => {\r\n // self.App.Filter.RemoveAllFilter('SIC_Description', undefined, selected.length <= 0);\r\n // if (selected.length > 0) {\r\n // self.App.Filter.AddFilters(selected, false);\r\n // }\r\n // // self.App.Filter.UpdateFilters(data, ctx);\r\n // //});\r\n\r\n //}\r\n }\r\n\r\n selectedRows(keys: Array, preserved: boolean) {\r\n return this.Instance.selectRows(keys, preserved);\r\n }\r\n}\r\nmodule.exports = CallbackPanelSicCode;","class FakeItem {\r\n private Drawer: FakeDrawer;\r\n\r\n _label: google.maps.OverlayView;\r\n colors = ['#1E90FF', '#FF1493', '#32CD32', '#FF8C00', '#4B0082'];\r\n controlDiv: HTMLElement;\r\n controls: {\r\n circle: HTMLElement,\r\n polygon: HTMLElement,\r\n stop: HTMLElement\r\n };\r\n drawDblclickListener: google.maps.MapsEventListener;\r\n drawListener: google.maps.MapsEventListener;\r\n drawRightClickListener: google.maps.MapsEventListener;\r\n id: string = FakeItem.generateUUID()\r\n isDispose = false;\r\n item: google.maps.Circle | google.maps.Polygon;\r\n pathsPolygon: google.maps.LatLng[];\r\n type: google.maps.drawing.OverlayType;\r\n\r\n static generateUUID() {\r\n let d = new Date().getTime();//Timestamp\r\n let d2 = (performance && performance.now && (performance.now() * 1000)) || 0;//Time in microseconds since page-load or 0 if unsupported\r\n return 'Dxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = Math.random() * 16;//random number between 0 and 16\r\n if (d > 0) {//Use timestamp until depleted\r\n r = (d + r) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n } else {//Use microseconds since page-load if supported\r\n r = (d2 + r) % 16 | 0;\r\n d2 = Math.floor(d2 / 16);\r\n }\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n }\r\n\r\n constructor(drawer: FakeDrawer, controlDiv: HTMLElement) {\r\n const self = this;\r\n this.Drawer = drawer;\r\n self.initControl(controlDiv);\r\n /* Setup the click event listener: drawingmode for the circle control */\r\n google.maps.event.addDomListener(self.controls.circle, 'click', function () {\r\n /* Ensure consistency */\r\n self.resetDrawerItem();\r\n\r\n /* Bind the drawing mode */\r\n self.Drawer._map.setOptions({\r\n draggableCursor: 'crosshair'\r\n });\r\n // noinspection JSDeprecatedSymbols\r\n self.drawListener = self.Drawer._map.addListener('mousedown', self.drawingMode(google.maps.drawing.OverlayType.CIRCLE));\r\n\r\n self.Drawer.InfoMap.style.display = 'block';\r\n self.Drawer.InfoMap.style.width = '183px';\r\n //document.getElementById('lInfoMap').style.height = '35px';\r\n self.Drawer.InfoMap.innerHTML = 'Locate your center point and drag
mouse to make a radius';\r\n self.Drawer.InfoMap.innerHTML = 'Click a center point and drag
mouse to make a radius';\r\n\r\n self.controls.circle.style.backgroundColor = '#eee';\r\n });\r\n /* Setup the click event listener: drawingmode for the polygon control */\r\n google.maps.event.addDomListener(self.controls.polygon, 'click', function () {\r\n self.pathsPolygon = [];\r\n\r\n /* Ensure consistency */\r\n self.resetDrawerItem();\r\n\r\n /* Bind the drawing mode */\r\n self.Drawer._map.setOptions({\r\n draggableCursor: 'crosshair'\r\n });\r\n self.drawingMode(google.maps.drawing.OverlayType.POLYGON)(null); //self.drawingMode(self, google.maps.drawing.OverlayType.POLYGON)\r\n\r\n self.Drawer.InfoMap.style.display = 'block';\r\n self.Drawer.InfoMap.style.width = '240px';\r\n //document.getElementById('lInfoMap').style.height = '35px';\r\n self.Drawer.InfoMap.innerHTML = 'Select starting point. Click to set
additional points. Double click to finish.';\r\n\r\n self.controls.polygon.style.backgroundColor = '#eee';\r\n });\r\n /* Just reset things for the stop controls */\r\n google.maps.event.addDomListener(self.controls.stop, 'click', function () {\r\n $(self.controls.stop).remove();\r\n $(self.controlDiv).find('.color-button').remove();\r\n self.resetDrawerItem();\r\n });\r\n }\r\n\r\n get label() {\r\n return this._label;\r\n }\r\n\r\n set label(label) {\r\n if (this.isDispose) {\r\n this._label?.setMap(null);\r\n label?.setMap(null);\r\n }\r\n this._label = label;\r\n }\r\n\r\n addListnerPolygon(polygon: google.maps.Polygon) {\r\n const self = this;\r\n\r\n google.maps.event.addListener(polygon.getPath(), 'set_at', function () {\r\n google.maps.event.trigger(self.Drawer, 'polygonchange', polygon);\r\n });\r\n google.maps.event.addListener(polygon.getPath(), 'insert_at', function () {\r\n google.maps.event.trigger(self.Drawer, 'polygonchange', polygon);\r\n });\r\n google.maps.event.addListener(polygon.getPath(), 'remove_at', function () {\r\n google.maps.event.trigger(self.Drawer, 'polygonchange', polygon);\r\n });\r\n }\r\n\r\n drawingMode(type: google.maps.drawing.OverlayType) {\r\n this.Drawer._map.setOptions({\r\n draggable: false\r\n });\r\n const self = this;\r\n self.type = type;\r\n switch (type) {\r\n case google.maps.drawing.OverlayType.CIRCLE:\r\n return (center) => {\r\n self.Drawer.DrawingManager.set('drawingMode', google.maps.drawing.OverlayType.CIRCLE);\r\n\r\n self.item = new window.google.maps.Circle({\r\n editable: true,\r\n center: center.latLng,\r\n clickable: false,\r\n draggable: true,\r\n fillOpacity: 0.4,\r\n fillColor: self.Drawer.Color,\r\n map: self.Drawer._map,\r\n radius: 1,\r\n strokeColor: self.Drawer.Color,\r\n strokeOpacity: 0.6,\r\n strokeWeight: 2,\r\n zIndex: -1\r\n });\r\n /// window.google.maps.event.addListener(self.circle, 'radius_changed', (e) => { google.maps.event.trigger(self, 'radius_changed', self.circle, e); });\r\n self.item.set('is_custom_edit', false);\r\n self.item.set('fakeId', self.id);\r\n self.item.set('item', self);\r\n self.item.setOptions({ zIndex: 0 });\r\n const onMouseMove = self.Drawer._map.addListener('mousemove', border => {\r\n const radius = 1000 * self.Drawer.distanceBetweenPoints(center.latLng, border.latLng);\r\n (self.item as google.maps.Circle).setRadius(radius);\r\n\r\n /** Here is the feature, know the radius while drawing */\r\n google.maps.event.trigger(self.Drawer, 'drawing_radius_changed', self.item);\r\n });\r\n /** The user has finished its drawing */\r\n google.maps.event.addListenerOnce(self.Drawer._map, 'mouseup', () => {\r\n /** Remove all listeners as they are no more required */\r\n google.maps.event.removeListener(onMouseMove);\r\n\r\n // Put the sizer at center, right on the circle.\r\n //function loadSizer() {\r\n // let circle: google.maps.Circle = self.item as google.maps.Circle;\r\n // let position1 = new google.maps.LatLng(circle.getCenter().lat(), circle.getBounds().getNorthEast().lng());\r\n // let position2 = new google.maps.LatLng(circle.getCenter().lat(), circle.getBounds().getSouthWest().lng());\r\n // let position3 = new google.maps.LatLng(circle.getBounds().getNorthEast().lat(), circle.getCenter().lng());\r\n // let position4 = new google.maps.LatLng(self.item.getBounds().getSouthWest().lat(), self.item.getCenter().lng());\r\n // let mover = new google.maps.LatLng(self.item.getCenter().lat(), self.item.getCenter().lng());\r\n // self.item.set('sizer_position', position1);\r\n // self.item.set('sizer_position2', position2);\r\n // self.item.set('sizer_position3', position3);\r\n // self.item.set('sizer_position4', position4);\r\n // self.item.set('mover_position', mover);\r\n //}\r\n //loadSizer();\r\n self.item.set('resized', false);\r\n // if (!!self.sizer) {\r\n // self.sizer.setMap(null);\r\n // self.sizer2.setMap(null);\r\n // self.sizer3.setMap(null);\r\n // self.sizer4.setMap(null);\r\n // self.mover.setMap(null);\r\n // }\r\n\r\n google.maps.event.addListener(self.item, 'bounds_changed', (e) => {\r\n\r\n google.maps.event.trigger(self.Drawer, 'bounds_changed', self.item, e);\r\n });\r\n // self.sizer = new google.maps.Marker({\r\n // draggable: true,\r\n // map: self._map,\r\n // icon: {\r\n // path: google.maps.SymbolPath.CIRCLE,\r\n // scale: 4,\r\n // strokeColor: '#fff'\r\n // },\r\n // title: 'Drag me!'\r\n // });\r\n // self.sizer2 = new google.maps.Marker({\r\n // draggable: true,\r\n // map: self._map,\r\n // icon: {\r\n // path: google.maps.SymbolPath.CIRCLE,\r\n // scale: 4,\r\n // strokeColor: '#fff'\r\n // },\r\n // title: 'Drag me!'\r\n // });\r\n // self.sizer3 = new google.maps.Marker({\r\n // draggable: true,\r\n // map: self._map,\r\n // icon: {\r\n // path: google.maps.SymbolPath.CIRCLE,\r\n // scale: 4,\r\n // strokeColor: '#fff'\r\n // },\r\n // title: 'Drag me!'\r\n // });\r\n // self.sizer4 = new google.maps.Marker({\r\n // draggable: true,\r\n // map: self._map,\r\n // icon: {\r\n // path: google.maps.SymbolPath.CIRCLE,\r\n // scale: 4,\r\n // strokeColor: '#fff'\r\n // },\r\n // title: 'Drag me!'\r\n // });\r\n // self.mover = new google.maps.Marker({\r\n // draggable: true,\r\n // map: self._map,\r\n // icon: {\r\n // path: google.maps.SymbolPath.CIRCLE,\r\n // scale: 4,\r\n // strokeColor: '#fff'\r\n // },\r\n // title: 'Drag me!'\r\n // });\r\n // self.sizer.bindTo('position', self.item, 'sizer_position');\r\n // self.sizer2.bindTo('position', self.item, 'sizer_position2');\r\n // self.sizer3.bindTo('position', self.item, 'sizer_position3');\r\n // self.sizer4.bindTo('position', self.item, 'sizer_position4');\r\n // self.mover.bindTo('position', self.item, 'mover_position');\r\n // google.maps.event.addListener(self.mover, 'drag', () => {\r\n // self.item.setCenter(self.mover.getPosition());\r\n // loadSizer();\r\n // document.getElementById('lInfoMap').style.display = 'block';\r\n //\r\n // /* Here is the feature, know the radius while drawing */\r\n // google.maps.event.trigger(self, 'drawing_center_changed', self.item);\r\n // })\r\n //\r\n // google.maps.event.addListener(self.mover, 'dragend', () => {\r\n // self.item.set('is_custom_edit', true);\r\n //\r\n // /* Restore some options to keep a consistent behavior */\r\n // self.resetDrawerItem();\r\n // self.item.set('resized', true);\r\n //\r\n // /* Notify listener with the final circle */\r\n // google.maps.event.trigger(self, 'center_changed', self.item);\r\n // loadSizer();\r\n // self._controls.circle.style.backgroundColor = '#fff';\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer, 'drag', () => {\r\n // let radius = 1000 * self.distanceBetweenPoints(center.latLng, self.sizer.getPosition());\r\n // self.item.setRadius(radius);\r\n // loadSizer();\r\n // document.getElementById('lInfoMap').style.display = 'block';\r\n //\r\n // /* Here is the feature, know the radius while drawing */\r\n // google.maps.event.trigger(self, 'drawing_radius_changed', self.item);\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer, 'dragend', () => {\r\n // self.item.set('is_custom_edit', true);\r\n //\r\n // /* Restore some options to keep a consistent behavior */\r\n // self.resetDrawerItem();\r\n // self.item.set('resized', true);\r\n //\r\n // /* Notify listener with the final circle */\r\n // google.maps.event.trigger(self, 'radius_changed', self.item);\r\n // loadSizer();\r\n // self._controls.circle.style.backgroundColor = '#fff';\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer2, 'drag', () => {\r\n // let radius = 1000 * self.distanceBetweenPoints(center.latLng, self.sizer2.getPosition());\r\n // self.item.setRadius(radius);\r\n // loadSizer();\r\n // document.getElementById('lInfoMap').style.display = 'block';\r\n //\r\n // /* Here is the feature, know the radius while drawing */\r\n // google.maps.event.trigger(self, 'drawing_radius_changed', self.item);\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer2, 'dragend', () => {\r\n // self.item.set('is_custom_edit', true);\r\n //\r\n // /* Restore some options to keep a consistent behavior */\r\n // self.resetDrawerItem();\r\n // self.item.set('resized', true);\r\n // loadSizer();\r\n // /* Notify listener with the final circle */\r\n // google.maps.event.trigger(self, 'radius_changed', self.item);\r\n //\r\n // self._controls.circle.style.backgroundColor = '#fff';\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer3, 'drag', () => {\r\n // let radius = 1000 * self.distanceBetweenPoints(center.latLng, self.sizer3.getPosition());\r\n // self.item.setRadius(radius);\r\n // loadSizer();\r\n // document.getElementById('lInfoMap').style.display = 'block';\r\n //\r\n // /* Here is the feature, know the radius while drawing */\r\n // google.maps.event.trigger(self, 'drawing_radius_changed', self.item);\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer3, 'dragend', () => {\r\n // self.item.set('is_custom_edit', true);\r\n //\r\n // /* Restore some options to keep a consistent behavior */\r\n // self.resetDrawerItem();\r\n // self.item.set('resized', true);\r\n //\r\n // /* Notify listener with the final circle */\r\n // google.maps.event.trigger(self, 'radius_changed', self.item);\r\n // loadSizer();\r\n // self._controls.circle.style.backgroundColor = '#fff';\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer4, 'drag', () => {\r\n // let radius = 1000 * self.distanceBetweenPoints(center.latLng, self.sizer4.getPosition());\r\n // self.item.setRadius(radius);\r\n // loadSizer();\r\n // document.getElementById('lInfoMap').style.display = 'block';\r\n //\r\n // /* Here is the feature, know the radius while drawing */\r\n // google.maps.event.trigger(self, 'drawing_radius_changed', self.item);\r\n // })\r\n //\r\n // google.maps.event.addListener(self.sizer4, 'dragend', () => {\r\n // self.item.set('is_custom_edit', true);\r\n //\r\n // /* Restore some options to keep a consistent behavior */\r\n // self.resetDrawerItem();\r\n // self.item.set('resized', true);\r\n // loadSizer();\r\n // /* Notify listener with the final circle */\r\n // google.maps.event.trigger(self, 'radius_changed', self.item);\r\n //\r\n // self._controls.circle.style.backgroundColor = '#fff';\r\n // })\r\n\r\n\r\n /* Restore some options to keep a consistent behavior */\r\n self.resetDrawerItem();\r\n\r\n /* Notify listener with the final circle */\r\n google.maps.event.trigger(self.Drawer, 'circlecomplete', self.item);\r\n $(this.controls.stop).remove();\r\n $(this.controlDiv).find('.color-button').remove();\r\n self.controls.circle.style.backgroundColor = '#fff';\r\n });\r\n }\r\n case google.maps.drawing.OverlayType.POLYGON:\r\n return () => {\r\n const polygonOptions = self.Drawer.DrawingManager.get('polygonOptions');\r\n polygonOptions.fillColor = self.Drawer.Color;\r\n polygonOptions.strokeColor = self.Drawer.Color;\r\n self.Drawer.DrawingManager.set('drawingMode', google.maps.drawing.OverlayType.POLYGON);\r\n\r\n let listner;\r\n const overlay = (e) => {\r\n e.overlay.set('fakeId', self.id);\r\n e.overlay.set('item', self)\r\n self.item = e.overlay;\r\n self.resetDrawerItem();\r\n $(this.controls.stop).remove();\r\n $(this.controlDiv).find('.color-button').remove();\r\n const polygon: (google.maps.Polygon) = self.item as google.maps.Polygon;\r\n if (polygon.getPath().getLength() > 2) {\r\n self.addListnerPolygon(e.overlay);\r\n google.maps.event.trigger(self.Drawer, 'polygoncomplete', e.overlay);\r\n }\r\n else\r\n self.item.setMap(null);\r\n google.maps.event.removeListener(listner);\r\n\r\n }\r\n listner = google.maps.event.addListener(self.Drawer.DrawingManager, 'overlaycomplete', overlay);\r\n }\r\n }\r\n }\r\n\r\n initControl(controlDiv: HTMLElement) {\r\n const self = this;\r\n $('.createControlUI').trigger('click');\r\n\r\n const createControlUI = (title: string, image: 'circle' | 'polygon' | 'openhand') => {\r\n const controlUI = document.createElement('div');\r\n controlUI.className = 'createControlUI';\r\n //controlUI.style.backgroundColor = '#fff';\r\n //controlUI.style.border = '1px solid rgba(0, 0, 0, .15)';\r\n //controlUI.style.boxShadow = '1 4px -1px rgba(0, 0, 0, .3)';\r\n //controlUI.style.marginTop = '10px';\r\n //controlUI.style.textAlign = 'center';\r\n //controlUI.style.width = '25px';\r\n //controlUI.style.height = '25px';\r\n //controlUI.style.display = 'inline-block';\r\n controlUI.title = title;\r\n //if (image == 'circle' || image == 'polygon') {\r\n // controlUI.style.borderLeft = 'none';\r\n //}\r\n\r\n //const controlImgWrapper = document.createElement('div');\r\n //controlImgWrapper.style.width = '16px';\r\n //controlImgWrapper.style.height = '16px';\r\n //controlImgWrapper.style.overflow = 'hidden';\r\n //controlImgWrapper.style.display = 'inline-block';\r\n //controlImgWrapper.style.marginTop = '4px';\r\n //controlUI.appendChild(controlImgWrapper);\r\n\r\n const imageOffset = {\r\n 'circle': -10 * 16,\r\n 'polygon': -4 * 16,\r\n 'openhand': -9 * 16\r\n }[image];\r\n\r\n //const controlImg = document.createElement('img');\r\n //controlImg.src = 'https://maps.gstatic.com/mapfiles/drawing.png';\r\n //controlImg.style.marginTop = imageOffset + 'px';\r\n //controlImgWrapper.appendChild(controlImg);\r\n controlUI.style.backgroundPosition = `0 ${imageOffset}px`;\r\n\r\n const focusBackground = () => {\r\n controlUI.style.backgroundColor = '#eee';\r\n }\r\n\r\n const unfocusBackground = () => {\r\n controlUI.style.backgroundColor = '#fff';\r\n }\r\n\r\n //controlImg.addEventListener('mouseenter', focusBackground);\r\n //controlImg.addEventListener('mouseout', unfocusBackground);\r\n //controlUI.addEventListener('mouseenter', focusBackground);\r\n //controlUI.addEventListener('mouseout', unfocusBackground);\r\n\r\n return controlUI;\r\n }\r\n\r\n const controlDivContainer = document.createElement('div');\r\n controlDivContainer.className = 'controlDiv-container';\r\n controlDiv.appendChild(controlDivContainer);\r\n\r\n this.controls = {\r\n circle: createControlUI('Draw a circle', 'circle'),\r\n polygon: createControlUI('Draw a shape', 'polygon'),\r\n stop: createControlUI('Stop drawing', 'openhand'),\r\n };\r\n this.controlDiv = controlDiv;\r\n const buttons = {};\r\n this.colors.forEach(color => {\r\n const button = document.createElement('div');\r\n button.className = 'color-button';\r\n button.style.backgroundColor = color;\r\n //button.style.display = 'inline-block';\r\n //button.style.width = '20px';\r\n //button.style.height = '20px';\r\n button.style.border = self.Drawer.Color == color ? '1px solid #000' : '1px solid #fff';\r\n\r\n google.maps.event.addDomListener(button, 'click', function () {\r\n self.Drawer.Color = color;\r\n (self.item as any)?.setFillColor(color);\r\n (self.item as any)?.setStrokeColor(color);\r\n const polygonOptions = self.Drawer.DrawingManager.get('polygonOptions');\r\n polygonOptions.fillColor = self.Drawer.Color;\r\n polygonOptions.strokeColor = self.Drawer.Color;\r\n for (const color in buttons) {\r\n buttons[color].style.border = self.Drawer.Color == color ? '1px solid #000' : '1px solid #fff';\r\n }\r\n });\r\n buttons[color] = button;\r\n controlDivContainer.appendChild(button);\r\n });\r\n controlDivContainer.appendChild(this.controls.stop);\r\n }\r\n\r\n resetDrawerItem() {\r\n this.Drawer._map.setOptions({\r\n draggableCursor: '',\r\n draggable: true\r\n });\r\n this.Drawer.DrawingManager.setDrawingMode(null);\r\n\r\n\r\n if (this.drawListener) {\r\n google.maps.event.removeListener(this.drawListener);\r\n }\r\n document.getElementById('lInfoMap').style.display = 'none';\r\n }\r\n\r\n setMapItem(map: google.maps.Map) {\r\n const self = this;\r\n self.item?.setMap(null);\r\n self.label?.setMap(null);\r\n $(self.controls.stop).remove();\r\n self.Drawer.DrawingManager.setDrawingMode(null);\r\n self.isDispose = true;\r\n // self.sizer?.setMap(null);\r\n // self.sizer2?.setMap(null);\r\n // self.sizer3?.setMap(null);\r\n // self.sizer4?.setMap(null);\r\n // self.mover?.setMap(null);\r\n }\r\n\r\n setDrawingMode(type: google.maps.drawing.OverlayType) {\r\n switch (type) {\r\n case google.maps.drawing.OverlayType.CIRCLE:\r\n this.controls.circle.click();\r\n break;\r\n case google.maps.drawing.OverlayType.POLYGON:\r\n this.controls.polygon.click();\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport class FakeDrawer {\r\n _map: google.maps.Map;\r\n Color = '#1E90FF';\r\n ControlDiv: HTMLElement;\r\n DrawingManager: google.maps.drawing.DrawingManager;\r\n Id: string;\r\n InfoMap: HTMLElement;\r\n Items: Map;\r\n // mover: google.maps.Marker;\r\n // sizer: google.maps.Marker;\r\n // sizer2: google.maps.Marker;\r\n // sizer3: google.maps.Marker;\r\n // sizer4: google.maps.Marker;\r\n\r\n constructor(controlDiv: HTMLElement, map: google.maps.Map) {\r\n /* Initialization, some styling ... */\r\n this._map = map;\r\n const polyOptions = {\r\n editable: true,\r\n fillColor: '#0ABA02',\r\n fillOpacity: 0.4,\r\n strokeColor: '#0ABA02',\r\n strokeOpacity: 0.6,\r\n strokeWeight: 2,\r\n };\r\n this.DrawingManager = new google.maps.drawing.DrawingManager({\r\n\r\n drawingControl: false,\r\n\r\n markerOptions: {\r\n draggable: true\r\n },\r\n polylineOptions: {\r\n editable: true\r\n },\r\n rectangleOptions: polyOptions,\r\n circleOptions: polyOptions,\r\n polygonOptions: polyOptions,\r\n map: map\r\n });\r\n this.Items = new Map();\r\n\r\n this.initControls(controlDiv);\r\n this.InfoMap = document.getElementById('lInfoMap');\r\n }\r\n\r\n get Item(): FakeItem {\r\n return this.Items[this.Id];\r\n }\r\n\r\n clearMapItems() {\r\n this.Items.forEach(el => {\r\n el.setMapItem(null);\r\n })\r\n this.Items = new Map();\r\n }\r\n\r\n distanceBetweenPoints(p1: google.maps.LatLng, p2: google.maps.LatLng): number {\r\n if (!p1 || !p2) {\r\n return 0;\r\n }\r\n const R = 6371;\r\n const dLat = (p2.lat() - p1.lat()) * Math.PI / 180;\r\n const dLon = (p2.lng() - p1.lng()) * Math.PI / 180;\r\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n return R * c;\r\n }\r\n\r\n initControls(controlDiv: HTMLElement) {\r\n this.ControlDiv = controlDiv;\r\n }\r\n\r\n setDrawingMode(type: google.maps.drawing.OverlayType) {\r\n const item = new FakeItem(this, this.ControlDiv);\r\n this.Items[item.id] = item;\r\n this.Id = item.id;\r\n\r\n item.setDrawingMode(type);\r\n }\r\n\r\n resetDrawer() {\r\n this.Items.forEach(el => {\r\n el.resetDrawerItem();\r\n });\r\n }\r\n\r\n setMap(map) {\r\n this.Items.forEach(el => {\r\n el.setMapItem(map);\r\n })\r\n }\r\n}\r\nmodule.exports = FakeDrawer;","import { Business } from '../business';\r\nimport jqXHR = JQuery.jqXHR;\r\nimport { Backups } from './Backups';\r\nimport SuccessTextStatus = JQuery.Ajax.SuccessTextStatus;\r\nimport CR = Mocha.reporters.Base.cursor.CR;\r\nconst Back = require('./Backups');\r\n\r\nexport type Criteria = { Name: string, Value: string, Display?: string, Id?: string | number };\r\nexport class Filters {\r\n private readonly Business: Business\r\n Count: number;\r\n public readonly Backups: Backups;\r\n public WildCard: string;\r\n public City: string;\r\n public State: string;\r\n public SIC: string;\r\n public SICDesc: string;\r\n\r\n public Criterias: Criteria[] = [] as any;\r\n\r\n get States() {\r\n if (this.Business.DataStates.length) {\r\n const filter = this.Criterias?.filter(x => x.Name == 'Physical_State');\r\n return this.Business.DataStates.filter(x => filter.find(f => f.Value == x.StateShort))\r\n }\r\n return [];\r\n }\r\n get SCities() {\r\n return this.Criterias?.filter(x => x.Name == 'Physical_State_Physical_City').map(x => {\r\n const str = x.Value;\r\n\r\n return { City: str.substr(4), State: str.substr(1, 2) }\r\n })\r\n }\r\n get Zips() {\r\n const findZips = [];\r\n const self = this;\r\n this.Criterias?.filter(x => x.Name == 'Physical_Zip').forEach(x => {\r\n if (x.Id == undefined) findZips.push(x.Value);\r\n \r\n return x;\r\n })\r\n if (findZips.length) {\r\n $.ajax({\r\n url: '/Business/FindZip',\r\n method: 'POST',\r\n async: false,\r\n data: { zips: findZips },\r\n success(data) {\r\n self.Criterias = self.Criterias.map(x => {\r\n if (x.Name == 'Physical_Zip') {\r\n const f = data.find(t => t.ZipCode1 == x.Value);\r\n x.Id = f?.Id ?? -1;\r\n \r\n }\r\n return x;\r\n });\r\n \r\n }\r\n });\r\n }\r\n return this.Criterias?.filter(x => x.Name == 'Physical_Zip');\r\n }\r\n get Areas() {\r\n return this.Criterias.filter(x => x.Name == 'Area_Code')\r\n }\r\n constructor(business: Business) {\r\n this.Business = business;\r\n this.Backups = new Back(this.Business);\r\n this.WildCard = '';\r\n this.City = '';\r\n this.State = '';\r\n this.SIC = '';\r\n this.SICDesc = '';\r\n (this.Criterias as any) = [];\r\n }\r\n GeoCountyData = null;\r\n\r\n AddButtonOnRightSearchCriteria(name: string, value: string, caption?: string, displayedName?: string, main?: boolean): boolean {\r\n const self = this;\r\n\r\n if (main == undefined) main = true;\r\n if (!caption) caption = name;\r\n if (!displayedName) displayedName = name == 'SIC_Description' ? value : name;\r\n \r\n this.Business.log('AddButtonOnRightSearchCriteria', { name: name, value: value, caption: caption, display: displayedName, main: main });\r\n const gr: string = this.GetGroup(name);\r\n\r\n const isLeft: boolean = gr == 'mainFilters';//|| gr == 'Employees' || gr == 'Years_In_Business_Codes' || gr == 'Standardized_Title';\r\n\r\n let label_value = value;\r\n \r\n \r\n if (isLeft) {\r\n const el = $(`[data-criteria=\"${name}\"]`);\r\n displayedName = '';\r\n label_value = name === 'Hide_Purchased_Leads' ? 'Hide Purchased List' : el.data('display') ?? 'Show only Primary Records';\r\n\r\n el.prop('checked', true);\r\n }\r\n else {\r\n const el = $(`[data-criteria=\"${name}\"][data-value=${JSON.stringify(value)}]`);\r\n if (name == 'SIC_Description') {\r\n\r\n label_value = displayedName;\r\n displayedName = `SIC (${value})`;\r\n\r\n //label_value = data.\r\n }\r\n else {\r\n displayedName = el.parents('form').find('.css-label').text();\r\n label_value = el.data('display');\r\n if (displayedName == undefined) {\r\n displayedName = name.split('_').join(' ');\r\n }\r\n if (label_value == undefined) {\r\n label_value = value;\r\n }\r\n el.prop('checked', true);\r\n }\r\n }\r\n if ($('.selected-criteria').find(`div[name=\"${gr}\"]`).length == 0) {\r\n this.Business.log('.selected-criteria .' + (isLeft ? 'leftFilters' : 'rightFilters'));\r\n $('.selected-criteria .' + (isLeft ? 'leftFilters' : 'rightFilters')).append(`
`);\r\n }\r\n // if ($('#hidePurchasedLeads').is(':checked')) {\r\n // $('.selected-criteria .leftFilters').append('
' +\r\n // '
');\r\n // }\r\n if (name == 'Vendor_State_County') {\r\n if (!this.GeoCountyData) {\r\n $.ajax('/Map/county.json', {\r\n async: false,\r\n success(data) {\r\n self.GeoCountyData = data.features;\r\n }\r\n })\r\n }\r\n const find = this.GeoCountyData.find(x => x.properties.GEOID == value);\r\n if (find) label_value = find.properties.NAME;\r\n }\r\n\r\n let label_value1;\r\n switch (name) {\r\n case 'Area_Code':\r\n label_value1 = 'Area Code';\r\n break;\r\n case 'Physical_State':\r\n label_value1 = 'State';\r\n break;\r\n case 'Physical_Zip':\r\n label_value1 = 'Zip';\r\n break;\r\n //case 'SIC_Description':\r\n // label_value1 = 'SIC Description';\r\n // break;\r\n case 'Vendor_State_County':\r\n label_value1 = 'County';\r\n break;\r\n default:\r\n label_value1 = label_value;\r\n break;\r\n }\r\n\r\n const tooltip = `${(displayedName == '' ? '' : displayedName + ' - ') + label_value1}`;\r\n const div = $('
');\r\n const button = $(`
`);\r\n (button as any).tooltip();\r\n const sicText = $('' + label_value + '');\r\n const sicDelete = $('×');\r\n\r\n sicDelete.off('click').on('click', () => {\r\n (button as any).tooltip('dispose');\r\n if (name == 'SIC_Description') {\r\n self.RemoveFilter(name, value);\r\n const sicInstance = $('#callbackPanelSicCode').dxTreeList('instance');\r\n const selected = sicInstance.getSelectedRowsData();\r\n const rvalue = value.replace('*', '');\r\n const data = selected.find(x => x.Value.toString() == rvalue.toString());\r\n sicInstance.deselectRows(data.Id)\r\n self.Business.log(data.Id);\r\n } else if (name == 'Physical_State') {\r\n self.RemoveFilter(name, value);\r\n if ($('#callbackPanelState').is(':visible')) {\r\n const stateInstance = ($('#callbackPanelState') as any).dxList('instance');\r\n const selected = stateInstance.option('selectedItems');\r\n const data = selected.find(x => x.StateShort == value);\r\n stateInstance.unselectItem(data);\r\n }\r\n } else if (name == 'Physical_State_Physical_City') {\r\n if ($('#callbackPanelCity').is(':visible')) {\r\n const cityInstance = ($('#callbackPanelCity') as any).dxDataGrid('instance');\r\n const rowData = cityInstance.getVisibleRows();\r\n if (rowData.length > 0) {\r\n const removeFilterValue = rowData.find(item => item.data.City == value.substr(4));\r\n const rowDataIndex = rowData.indexOf(removeFilterValue);\r\n cityInstance.deleteRow(rowDataIndex);\r\n } else self.RemoveFilter(name, value);\r\n // const selected = stateInstance.option('selectedItems');\r\n // const data = selected.find(x => x.StateShort == value);\r\n // stateInstance.unselectItem(data);\r\n } else self.RemoveFilter(name, value);\r\n\r\n }\r\n else {\r\n if (name == 'Physical_Zip') {\r\n for (const k in self.Business.selectedZips.data) {\r\n self.Business.selectedZips.data[k] = self.Business.selectedZips.data[k].filter(x => x.ZipCode1 != value);\r\n }\r\n self.Business.resetZip();\r\n }\r\n if (name == 'Area_Code') {\r\n for (const k in self.Business.selectedArea.data) {\r\n self.Business.selectedArea.data[k] = self.Business.selectedArea.data[k].filter(x => x.Code != value);\r\n }\r\n self.Business.resetArea();\r\n }\r\n self.RemoveFilter(name, value);\r\n $(`[data-criteria=\"${name}\"][data-value=${value}]`).prop('checked', false);\r\n }\r\n });\r\n button.append(sicText);\r\n button.append(sicDelete);\r\n div.append(button);\r\n this.Business.log($(`.selected-criteria div[name=\"${gr}\"] .selected-criteria-option`).append(div));\r\n return true;\r\n }\r\n\r\n AddFilter(name: string, value: string, callback?: (data: any, status: SuccessTextStatus, ctx: jqXHR) => void, reset?: boolean, clean?: boolean, update?: boolean, hidePreloader?: boolean) {\r\n this.ResetCount();\r\n console.log('Filters>AddFilter', arguments);\r\n if (reset)\r\n this.Criterias = [] as any;\r\n if(name == 'proximity')\r\n (this.Criterias as any) = this.Criterias?.filter(x => x.Name != name);\r\n const filter = this.Criterias?.find(x => x.Name == name && x.Value == value);\r\n if (!filter) {\r\n if (this.Criterias)\r\n this.Criterias.push({ Name: name, Value: value });\r\n else\r\n this.Criterias = [{ Name: name, Value: value }];\r\n }\r\n this.UpdateCriterias(this.Criterias, window['IsActiveBlackList'], hidePreloader);\r\n if (callback) {\r\n if (update) {\r\n this.Updates(callback, reset, clean);\r\n }\r\n else\r\n callback(this.Criterias, 'success', undefined);\r\n }\r\n return;\r\n if (!name) return;\r\n this.IsVisibleRefreshGrid();\r\n\r\n this.Business.log('AddFilter', name, value);\r\n const self = this;\r\n this.ResetCount();\r\n if (window['IsActiveBlackList']) {\r\n $.get('/Business/RemoveBlackList', next)\r\n }\r\n else next();\r\n function next() {\r\n window['IsActiveBlackList'] = false;\r\n $.get('/Business/AddFilter', {\r\n name: name,\r\n value: value,\r\n reset: reset,\r\n clean: clean\r\n }, (data, status, ctx) => {\r\n self.UpdateFilters(data, ctx);\r\n if (callback) callback(data, status, ctx);\r\n });\r\n }\r\n }\r\n\r\n AddFilters(filters: Array, reset?: boolean, callback?: (data: any, status: SuccessTextStatus, ctx: jqXHR) => void) {\r\n console.log('Filters>AddFilters', arguments);\r\n this.ResetCount();\r\n if (reset)\r\n this.Criterias = [] as any;\r\n if (filters && filters.length)\r\n filters.forEach(a => {\r\n if (!this.Criterias.find(x => x.Name == a.Name && x.Value == a.Value)) {\r\n this.Criterias.push({ Name: a.Name, Value: a.Value, Display: a.Display, Id: a.Id });\r\n }\r\n });\r\n\r\n this.UpdateCriterias(this.Criterias, window['IsActiveBlackList']);\r\n if (callback) callback(this.Criterias, 'success', undefined);\r\n return;\r\n\r\n this.IsVisibleRefreshGrid(true);\r\n window['selectedFilters'] = filters;\r\n if (!filters) {\r\n this.RemoveAllFilters();\r\n return;\r\n }\r\n const HidePurchased = filters.find(x => x.Name === 'Hide_Purchased_Leads' || x.Name === 'Hide_Purchased_Leads');\r\n this.Business.log('AddFilters', filters, reset, HidePurchased);\r\n\r\n const self = this;\r\n self.ResetCount();\r\n if (window['IsActiveBlackList']) {\r\n $.get('/Business/RemoveBlackList', next)\r\n }\r\n else next();\r\n function next() {\r\n window['IsActiveBlackList'] = false;\r\n $.ajax({\r\n url: '/Business/AddFilters',\r\n method: 'POST',\r\n dataType: 'json',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify({\r\n criterias: filters,\r\n reset: reset == undefined ? true : reset\r\n }),\r\n success(data, status, ctx) {\r\n if (HidePurchased && reset) {\r\n $('#hidePurchasedLeads').prop('checked', true);//.trigger('click');\r\n } else {\r\n $('#hidePurchasedLeads').prop('checked', false);\r\n }\r\n self.UpdateFilters(data, ctx);\r\n if (window['IsSearchIdExist'] && window['IsSearchIdExistFirstTime']) {\r\n $('#first-step').trigger('click');\r\n }\r\n if (callback)\r\n callback(data, status, ctx);\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n GetCountFilters(data) {\r\n const reg = /\\B(?=(\\d{3})+(?!\\d))/g;\r\n data.BooleanSearchCriteria.forEach(el => $(`#businessinform div[data-id=\"B${el.Id}\"] span span`).html('(' + ('' + el.ResultCountBusiness).replace(reg, ',') + ')'));\r\n $('#businessinform div[data-id=\"BC\"] span span').html('');\r\n data.EmployeesCategory.forEach(el => $(`#noemplform label[data-id=\"${el.Id}\"] span`).html('(' + ('' + el.ResultCountBusiness).replace(reg, ',') + ')'));\r\n data.YearsInBusiness.forEach(el => $(`#yearsinbusinessform label[data-id=\"${el.Id}\"] span`).html('(' + ('' + el.ResultCountBusiness).replace(reg, ',') + ')'));\r\n data.Standardized_Title.forEach(el => {\r\n $(`#jobtitleform label[data-id=\"${el.Id}\"] span`).html('(' + ('' + el.ResultCountBusiness).replace(reg, ',') + ')');\r\n if (el.ResultCountBusiness == 0) $(`#jobtitleform label[data-id=\"${el.Id}\"]`).hide();\r\n });\r\n\r\n this.ResetCount(data.Count);\r\n this.Count = +data.Count.replace(/[',.]/g, '');\r\n }\r\n\r\n GetGroup(name: string): string {\r\n switch (name) {\r\n case 'is_primaryExec':\r\n case 'Phoneable':\r\n case 'Presence_Of_URL':\r\n case 'Presence_Of_Email':\r\n case 'New_Business_Date_Filter':\r\n case 'Women_Owned':\r\n case 'Hide_Purchased_Leads':\r\n return 'mainFilters';\r\n default:\r\n return name;\r\n }\r\n }\r\n\r\n IsVisibleRefreshGrid(b?: boolean) {\r\n if ($('.mainGrid').is(':visible')) {\r\n $('.d-refresh-business-grid').fadeIn('fast');\r\n $('.d-refresh-business-grid-btn').prop('disabled', true);\r\n try {\r\n $('.mainGrid').dxDataGrid('dispose');\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n }\r\n\r\n RemoveAllFilter(name: string, callback?: (data: any, status: SuccessTextStatus, ctx: jqXHR) => void, UpdateCriteria?: boolean) {\r\n this.ResetCount();\r\n if (UpdateCriteria == undefined) UpdateCriteria = true;\r\n this.Criterias = this.Criterias?.filter(x => x.Name != name) as any;\r\n if (UpdateCriteria) this.UpdateCriterias(this.Criterias, window['IsActiveBlackList']);\r\n if (callback) callback(this.Criterias, 'success', undefined);\r\n if (name === 'Hide_Purchased_Leads' || name === 'Hide Purchased Leads') $('#hidePurchasedLeads').prop('checked', false);\r\n return;\r\n //this.Business.log('RemoveAllFilter', name);\r\n //this.IsVisibleRefreshGrid();\r\n //const self = this;\r\n //this.ResetCount();\r\n //if (window['IsActiveBlackList']) {\r\n // $.get('/Business/RemoveBlackList', next)\r\n //}\r\n //else next();\r\n //function next() {\r\n // window['IsActiveBlackList'] = false;\r\n // $.get('/Business/RemoveAllFilter', { name: name }, (data, status, ctx) => {\r\n // self.UpdateFilters(data, ctx);\r\n // if (callback)\r\n // callback(data, status, ctx);\r\n // });\r\n\r\n //}\r\n }\r\n\r\n RemoveAllFilters(callback?: (data: any, status: SuccessTextStatus, ctx: jqXHR) => void, dontShow?: boolean) {\r\n $('#hidePurchasedLeads').prop('checked', false);\r\n this.ResetCount();\r\n this.Criterias = [] as any;\r\n this.Business.selectedZips.data = {};\r\n this.Business.selectedArea.data = {};\r\n this.UpdateCriterias(this.Criterias, window['IsActiveBlackList']);\r\n if (callback) callback(this.Criterias, 'success', undefined);\r\n return;\r\n //this.Business.log('RemoveAllFilters');\r\n //this.IsVisibleRefreshGrid();\r\n //const toggle = $('#toggleCheckbox2-input');\r\n //if (toggle.is(':checked')) {\r\n // toggle.trigger('click');\r\n //} else {\r\n // $('#quickSearch').val('');\r\n // // $('.search-legend').show();\r\n //}\r\n\r\n //const self = this;\r\n //// if (!dontShow) {\r\n //// self.AddFilter('is_primaryExec', '1', (data, status, ctx) => {\r\n //// $('#hidePurchasedLeads').prop('checked', false);\r\n //// // window['isHide'] = false;\r\n //// self.UpdateFilters(data, ctx);\r\n //// if (callback)\r\n //// callback(data, status, ctx);\r\n //// }, true);\r\n //// }\r\n //// window['User'].RAI\r\n //if (window['IsActiveBlackList']) {\r\n // $.get('/Business/RemoveBlackList', next)\r\n //}\r\n //else next();\r\n //function next() {\r\n // window['IsActiveBlackList'] = false;\r\n // $.get('/Business/ResetFilters', (data, status, ctx) => {\r\n // $('#hidePurchasedLeads').prop('checked', false);\r\n // self.UpdateFilters(data, ctx);\r\n // if ($('#search-pills-state-tab').hasClass('active')) {\r\n // ($('#callbackPanelState') as any).dxList('instance').unselectAll();\r\n // const callbackPanelCity = $('#callbackPanelCity').dxDataGrid('instance');\r\n // const callbackPanelCityItems = callbackPanelCity.option().dataSource;\r\n // for (let i = 0; i < callbackPanelCityItems.length; i++) {\r\n // window['deleteSearchCriteria'] = true;\r\n // self.Business.loadState();\r\n // }\r\n // }\r\n // if (callback)\r\n // callback(data, status, ctx);\r\n // });\r\n //}\r\n }\r\n\r\n RemoveFilter(name: string, value: string, callback?: (data: any, status: SuccessTextStatus, ctx: jqXHR) => void) {\r\n this.ResetCount();\r\n console.log('Filters>RemoveFilter', arguments);\r\n this.Criterias = this.Criterias.filter(x => !(x.Name == name && x.Value == value)) as any;\r\n this.UpdateCriterias(this.Criterias, window['IsActiveBlackList']);\r\n if (callback) callback(this.Criterias, 'success', undefined);\r\n return;\r\n this.IsVisibleRefreshGrid();\r\n this.Business.log('RemoveFilter', name, value);\r\n const self = this;\r\n this.ResetCount();\r\n // if (name = 'Physical_City') {\r\n\r\n // }\r\n function next() {\r\n window['IsActiveBlackList'] = false;\r\n $.get('/Business/RemoveFilter', { name: name, value: value }, (data, status, ctx) => {\r\n if (name === 'Hide_Purchased_Leads') $('#hidePurchasedLeads').prop('checked', false);\r\n self.UpdateFilters(data, ctx);\r\n if (callback) callback(data, status, ctx);\r\n });\r\n }\r\n if (window['IsActiveBlackList']) {\r\n $.get('/Business/RemoveBlackList', next)\r\n }\r\n else next();\r\n }\r\n\r\n ResetCount(count?) {\r\n if (count) {\r\n $('#tooMany').removeClass('anim').html(count);\r\n $('#h4-total-results-map span').html(count);\r\n $('#refCount').removeClass('btn-anim');\r\n } else {\r\n $('#tooMany').html('.....').addClass('anim');\r\n $('#h4-total-results-map span').html('...');\r\n $('#refCount').addClass('btn-anim');\r\n }\r\n }\r\n\r\n Updates(callback?: (data: any, status: SuccessTextStatus, ctx: jqXHR) => void, reset?: boolean, clean?: boolean) {\r\n this.IsVisibleRefreshGrid(true);\r\n\r\n let filters;\r\n try {\r\n window['selectedFilters'] = filters = this.Criterias.map(x => {\r\n return {\r\n Name: x.Name.toString(), Value: x.Value.toString()\r\n }\r\n });\r\n }\r\n catch {\r\n filters = [];\r\n }\r\n if (!filters) {\r\n this.RemoveAllFilters();\r\n return;\r\n }\r\n const HidePurchased = filters.find(x => x.Name === 'Hide_Purchased_List' || x.Name === 'Hide Purchased Leads');\r\n filters = filters.filter(x => x.Name !== 'Hide_Purchased_Leads' && x.Name != 'Hide Purchased Leads');\r\n this.Business.log('AddFilters', filters, reset, HidePurchased);\r\n\r\n const self = this;\r\n self.ResetCount();\r\n next();\r\n\r\n function next() {\r\n window['IsActiveBlackList'] = false;\r\n $.ajax({\r\n url: '/Business/AddFilters',\r\n method: 'POST',\r\n dataType: 'text',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify({\r\n criterias: filters,\r\n reset: reset == undefined ? true : reset,\r\n withResult: 2\r\n }),\r\n success(data, status, ctx) {\r\n self.UpdateCount(data);\r\n if (window['IsSearchIdExist'] && window['IsSearchIdExistFirstTime']) {\r\n $('#first-step').trigger('click');\r\n }\r\n if (callback)\r\n callback(data, status, ctx);\r\n }\r\n });\r\n }\r\n }\r\n\r\n UpdateCount(Count: string) {\r\n this.Backups.LastBackup.Count = Count;\r\n this.Backups.LastBackup.Level = 2;\r\n this.Backups.LastBackup.Date = new Date();\r\n this.Backups.LastBackup.Result = undefined;\r\n this.Backups.LastBackup.Zips = this.Business.selectedZips;\r\n this.Backups.LastBackup.Area = this.Business.selectedArea;\r\n this.Backups.saveBackups(this.Backups.Backups);\r\n const count = +Count.replace(/[',.]/g, '');\r\n this.Count = count;\r\n this.ResetCount(Count);\r\n }\r\n\r\n UpdateCriterias(Criterias: Criteria[], BlackList, hidePreloader?:boolean) {\r\n const self = this;\r\n this.Backups.LastBackup.Criterias = Criterias;\r\n this.Backups.LastBackup.Zips = this.Business.selectedZips;\r\n this.Backups.LastBackup.Area = this.Business.selectedArea;\r\n this.Backups.LastBackup.Level = 1;\r\n this.Backups.LastBackup.Result = undefined;\r\n this.Backups.LastBackup.Date = new Date();\r\n this.Backups.LastBackup.Count = '...';\r\n this.Backups.saveBackups(this.Backups.Backups)\r\n if(hidePreloader == undefined) hidePreloader = true;\r\n let cname, ccity, cstate, csic, csdesc;\r\n try {\r\n const filters = $('.mainGrid')\r\n .find('.dx-datagrid-filter-row .dx-textbox');\r\n\r\n cname = $(filters[0])\r\n .dxTextBox('instance');\r\n ccity = $(filters[1])\r\n .dxTextBox('instance');\r\n\r\n cstate = $(filters[2])\r\n .dxTextBox('instance');\r\n\r\n csic = $(filters[3])\r\n .dxTextBox('instance');\r\n\r\n csdesc = $(filters[4])\r\n .dxTextBox('instance');\r\n\r\n }\r\n catch (ex) {\r\n cname = undefined;\r\n ccity = undefined;\r\n cstate = undefined;\r\n csic = undefined;\r\n csdesc = undefined;\r\n }\r\n $('.d-refresh-business-grid-btn').removeAttr('disabled');\r\n // if (BlackList !== undefined)\r\n // $('#includeBlack-input').prop('checked', BlackList);\r\n\r\n //let valText = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n //if (/*valText.option('value') == null &&*/ this.User) {\r\n // if (data.Criterias.length > 0) {\r\n // $('.btn-fdxsendSearchCriteria').show();\r\n // $('#searchCriteria-save-btn').prop('disabled', false)\r\n // } else {\r\n // $('.btn-sendSearchCriteria').hide();\r\n // $('#searchCriteria-save-btn').prop('disabled', true)\r\n //}\r\n // if (!Criterias.find((e: any) => e.Name == 'Hide_Purchased_Leads')) $('#hidePurchasedLeads').prop('checked', false);\r\n //if ($('#hidePurchasedLeads').is(':checked')) {\r\n // $('#hidePurchasedLeads').prop('checked', true);\r\n // const addPurchasedLeadsInCriterias = { 'Name': 'Hide_Purchased_Leads', 'Value': '1' };\r\n // data.Criterias[lengthCriterias].Name\r\n // Criterias.push(addPurchasedLeadsInCriterias as never);\r\n // window['isHide'] = false;\r\n //} else \r\n\r\n if (window['User'] && window['User'].RAI) {\r\n if (Criterias?.length > 1) {\r\n $('.btn-sendSearchCriteria').show();\r\n $('#searchCriteria-save-btn').prop('disabled', false)\r\n } else {\r\n $('.btn-sendSearchCriteria').hide();\r\n $('#searchCriteria-save-btn').prop('disabled', true)\r\n }\r\n } else {\r\n if (Criterias?.length > 0) {\r\n $('.btn-sendSearchCriteria').show();\r\n $('#searchCriteria-save-btn').prop('disabled', false)\r\n } else {\r\n $('.btn-sendSearchCriteria').hide();\r\n $('#searchCriteria-save-btn').prop('disabled', true)\r\n }\r\n }\r\n try {\r\n ($('#callbackPanelState') as any).dxList('option', 'selectedItems', this.States);\r\n }\r\n catch (ex) { }\r\n\r\n self.Business.dataCitySearched = this.SCities;\r\n try {\r\n $('#callbackPanelCity').dxDataGrid('option', 'dataSource', self.Business.dataCitySearched);\r\n }\r\n catch (ex) { }\r\n\r\n try {\r\n const grid = $('#callbackPanelZipPart2').dxDataGrid('instance');\r\n const sel2 = this.Zips.map(x => x.Value);\r\n const sel = grid.getSelectedRowsData().map(x => {\r\n return {\r\n Id: x.Id,\r\n Zip: x.ZipCode1,\r\n Active: !!sel2.find(z => x.ZipCode1 == z)\r\n }\r\n });\r\n if (sel.find(x => !x.Active)) {\r\n grid.option('selectedRowKeys', sel.filter(x => x.Active).map(x => x.Id));\r\n }\r\n }\r\n catch (ex) { }\r\n\r\n try {\r\n const grid = $('#callbackPanelAreaPart2').dxDataGrid('instance');\r\n const sel2 = this.Areas.map(x => x.Value);\r\n const sel = grid.getSelectedRowsData().map(x => {\r\n return {\r\n Id: x.Id,\r\n Code: x.Code,\r\n Active: !!sel2.find(z => x.Code == z)\r\n }\r\n });\r\n if (sel.find(x => !x.Active)) {\r\n grid.option('selectedRowKeys', sel.filter(x => x.Active).map(x => x.Id));\r\n }\r\n }\r\n catch (ex) {}\r\n //}\r\n\r\n // $('#hidePurchasedLeads').prop('checked', false);\r\n\r\n this.Business.log('UpdateCriterias', Criterias, BlackList);\r\n // if (count < 250000) {\r\n $('button.search-button').show();\r\n $('a.search-button').hide();\r\n $('.d-refresh-business-grid-btn').prop('disabled', false);\r\n // }\r\n // else {\r\n // $('button.search-button').hide();\r\n // $('a.search-button').show();\r\n // $('.d-refresh-business-grid-btn').prop('disabled', true);\r\n // }\r\n ($('.selected-criteria [data-bs-toggle]') as any).tooltip('dispose');\r\n $('.selected-criteria').html('
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
');\r\n let toLoad = false;\r\n // @ts-ignore\r\n this.ListNames = [];\r\n (this.Criterias as any) = Criterias;\r\n $('#LeftPane input[type=\"checkbox\"]:not(.custom-checkbox)').prop('checked', false);\r\n\r\n const sic = [];\r\n let instance = null;\r\n let last = null;\r\n try {\r\n instance = self.Business.CallbackPanelSicCode.Instance;\r\n last = instance.option('onSelectionChanged');\r\n instance.option('onSelectionChanged', null);\r\n }\r\n catch (ex) {\r\n console.warn(ex);\r\n }\r\n let resetCompanyName = true;\r\n self.WildCard = '';\r\n self.State = '';\r\n self.City = '';\r\n self.SIC = '';\r\n self.SICDesc = '';\r\n $('.mainGrid .dx-texteditor-input:first').val('');\r\n $('#quickSearch').val('');\r\n Criterias?.forEach((criteria: { Name: string, Value: string, Display: string }) => {\r\n if (criteria.Name == 'BlackList') return;\r\n const b = $('#toggleCheckbox2-input').is(':checked');\r\n\r\n\r\n if (criteria.Name == 'Physical_City') {\r\n if (self.City == '')\r\n self.City = criteria.Value;\r\n else\r\n self.City += ',' + criteria.Value;\r\n }\r\n if (criteria.Name == 'Physical_State') {\r\n if (self.State == '')\r\n self.State = criteria.Value;\r\n else\r\n self.State += ',' + criteria.Value;\r\n }\r\n if (criteria.Name == 'SIC_Description') {\r\n if (self.SIC == '')\r\n self.SIC = criteria.Value;\r\n else\r\n self.SIC += ',' + criteria.Value;\r\n }\r\n if (criteria.Name == 'SIC01') {\r\n if (self.SIC == '')\r\n self.SIC = criteria.Value;\r\n else\r\n self.SIC += ',' + criteria.Value;\r\n }\r\n if (criteria.Name == 'Primary_Company_Wildcard') {\r\n // $('#quickSearch').val(criteria.Value);\r\n self.WildCard = criteria.Value;\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Primary_Company_Exact') {\r\n // $('.mainGrid .dx-texteditor-input:first').val('\"' + criteria.Value + '\"');\r\n $('#quickSearch').val(criteria.Value);\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Company_Name') {\r\n $('.mainGrid .dx-texteditor-input:first').val(criteria.Value);\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Physical_State_Physical_City' || criteria.Name == 'Physical_State' || criteria.Name == 'SIC01') {\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Phone') {\r\n var phone = criteria.Value;\r\n\r\n // $('#quickSearch').val('+1 ('+phone.substr(0,3) + ') '+phone.substr(3, 3)+'-'+phone.substr(6));\r\n resetCompanyName = false;\r\n }\r\n if (window['User'] && window['User'].RAI && criteria.Name == 'is_primaryExec') return;\r\n if (criteria.Name == 'SIC_Description') {\r\n if (instance) instance.forEachNode(el => { if (el.data.Value == criteria.Value) sic.push(el.data.Id); })\r\n }\r\n toLoad = !self.AddButtonOnRightSearchCriteria(criteria.Name, criteria.Value, undefined, criteria.Display);\r\n\r\n });\r\n cname?.option('value', self.WildCard);\r\n ccity?.option('value', self.City);\r\n cstate?.option('value', self.State);\r\n csic?.option('value', self.SIC);\r\n csdesc?.option('value', self.SICDesc);\r\n if (resetCompanyName) {\r\n $('.mainGrid .dx-texteditor-input:first').val('');\r\n // $('#quickSearch').val('');\r\n }\r\n\r\n if (instance) {\r\n // instance.option('selectedRowKeys', sic);\r\n instance.option('onSelectionChanged', last);\r\n }\r\n if(hidePreloader) $('.root-preloader').hide();\r\n }\r\n\r\n UpdateFilters(data: { Count: string, Criterias: Criteria[], BlackList: boolean, TokenError: boolean }, ctx?: jqXHR) {\r\n\r\n const self = this;\r\n if (typeof data == 'string') {\r\n this.Backups.LastBackup.Count = data;\r\n this.Backups.LastBackup.Criterias = self.Criterias;\r\n this.Backups.LastBackup.Zips = this.Business.selectedZips;\r\n this.Backups.LastBackup.Area = this.Business.selectedArea;\r\n this.Backups.LastBackup.Date = new Date();\r\n this.Backups.saveBackups(this.Backups.Backups)\r\n return this.UpdateCount(data as any);\r\n \r\n }\r\n if (data.TokenError) {\r\n alert('Please refresh site !!');\r\n return;\r\n }\r\n this.Backups.LastBackup.Count = data.Count;\r\n this.Backups.LastBackup.Criterias = data.Criterias;\r\n this.Backups.LastBackup.Zips = this.Business.selectedZips\r\n this.Backups.LastBackup.Area = this.Business.selectedArea;\r\n this.Backups.LastBackup.Date = new Date();\r\n this.Backups.LastBackup.BlackList = data.BlackList;\r\n if (this.Backups.LastBackup.Level < 2) this.Backups.LastBackup.Level = 2;\r\n this.Backups.saveBackups(this.Backups.Backups)\r\n let cname, ccity, cstate, csic, csdesc;\r\n try {\r\n const filters = $('.mainGrid')\r\n .find('.dx-datagrid-filter-row .dx-textbox');\r\n\r\n cname = $(filters[0])\r\n .dxTextBox('instance');\r\n ccity = $(filters[1])\r\n .dxTextBox('instance');\r\n\r\n cstate = $(filters[2])\r\n .dxTextBox('instance');\r\n\r\n csic = $(filters[3])\r\n .dxTextBox('instance');\r\n\r\n csdesc = $(filters[4])\r\n .dxTextBox('instance');\r\n\r\n }\r\n catch (ex) {\r\n cname = undefined;\r\n ccity = undefined;\r\n cstate = undefined;\r\n csic = undefined;\r\n csdesc = undefined;\r\n }\r\n $('.d-refresh-business-grid-btn').removeAttr('disabled');\r\n // if (data.BlackList !== undefined)\r\n // $('#includeBlack-input').prop('checked', data.BlackList);\r\n\r\n //let valText = ($('#searchCriteria-list') as any).dxDropDownBox('instance');\r\n //if (/*valText.option('value') == null &&*/ this.User) {\r\n // if (data.Criterias.length > 0) {\r\n // $('.btn-fdxsendSearchCriteria').show();\r\n // $('#searchCriteria-save-btn').prop('disabled', false)\r\n // } else {\r\n // $('.btn-sendSearchCriteria').hide();\r\n // $('#searchCriteria-save-btn').prop('disabled', true)\r\n //}\r\n if (data.Criterias?.find((e: any) => e.Name == 'Hide_Purchased_Leads')) data.Criterias.splice(data.Criterias.length - 1);\r\n if ($('#hidePurchasedLeads').is(':checked')) {\r\n // $('#hidePurchasedLeads').prop('checked', true);\r\n const addPurchasedLeadsInCriterias = { 'Name': 'Hide_Purchased_Leads', 'Value': '1' };\r\n // data.Criterias[lengthCriterias].Name\r\n data.Criterias.push(addPurchasedLeadsInCriterias as never);\r\n // window['isHide'] = false;\r\n } else $('#hidePurchasedLeads').prop('checked', false);\r\n\r\n if (window['User'] && window['User'].RAI) {\r\n if (data.Criterias?.length > 1) {\r\n $('.btn-sendSearchCriteria').show();\r\n $('#searchCriteria-save-btn').prop('disabled', false)\r\n } else {\r\n $('.btn-sendSearchCriteria').hide();\r\n $('#searchCriteria-save-btn').prop('disabled', true)\r\n }\r\n } else {\r\n if (data.Criterias?.length > 0) {\r\n $('.btn-sendSearchCriteria').show();\r\n $('#searchCriteria-save-btn').prop('disabled', false)\r\n } else {\r\n $('.btn-sendSearchCriteria').hide();\r\n $('#searchCriteria-save-btn').prop('disabled', true)\r\n }\r\n }\r\n\r\n //}\r\n\r\n // $('#hidePurchasedLeads').prop('checked', false);\r\n const count = +data.Count?.replace(/[',.]/g, '');\r\n this.Count = count;\r\n this.ResetCount(data.Count);\r\n\r\n this.Business.log('UpdateFilters', data);\r\n // if (count < 250000) {\r\n $('button.search-button').show();\r\n $('a.search-button').hide();\r\n $('.d-refresh-business-grid-btn').prop('disabled', false);\r\n // }\r\n // else {\r\n // $('button.search-button').hide();\r\n // $('a.search-button').show();\r\n // $('.d-refresh-business-grid-btn').prop('disabled', true);\r\n // }\r\n ($('.selected-criteria [data-bs-toggle]') as any).tooltip('dispose');\r\n $('.selected-criteria').html('
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
');\r\n let toLoad = false;\r\n // @ts-ignore\r\n this.ListNames = [];\r\n (this.Criterias as any) = data.Criterias;\r\n $('#LeftPane input[type=\"checkbox\"]:not(.custom-checkbox)').prop('checked', false);\r\n\r\n const sic = [];\r\n let instance = null;\r\n let last = null;\r\n try {\r\n instance = self.Business.CallbackPanelSicCode.Instance;\r\n last = instance.option('onSelectionChanged');\r\n instance.option('onSelectionChanged', null);\r\n }\r\n catch (ex) {\r\n console.warn(ex);\r\n }\r\n let resetCompanyName = true;\r\n self.Business.log('criteria', data)\r\n self.WildCard = '';\r\n self.State = '';\r\n self.City = '';\r\n self.SIC = '';\r\n self.SICDesc = '';\r\n $('.mainGrid .dx-texteditor-input:first').val('');\r\n $('#quickSearch').val('');\r\n data.Criterias?.forEach((criteria: { Name: string, Value: string, Display: string }) => {\r\n if (criteria.Name == 'BlackList') return;\r\n const b = $('#toggleCheckbox2-input').is(':checked');\r\n\r\n\r\n if (criteria.Name == 'Physical_City') {\r\n if (self.City == '')\r\n self.City = criteria.Value;\r\n else\r\n self.City += ',' + criteria.Value;\r\n }\r\n if (criteria.Name == 'Physical_State') {\r\n if (self.State == '')\r\n self.State = criteria.Value;\r\n else\r\n self.State += ',' + criteria.Value;\r\n }\r\n if (criteria.Name == 'SIC01') {\r\n if (self.SIC == '')\r\n self.SIC = criteria.Value;\r\n else\r\n self.SIC += ',' + criteria.Value;\r\n }\r\n if (criteria.Name == 'Primary_Company_Wildcard') {\r\n // $('#quickSearch').val(criteria.Value);\r\n self.WildCard = criteria.Value;\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Primary_Company_Exact') {\r\n // $('.mainGrid .dx-texteditor-input:first').val('\"' + criteria.Value + '\"');\r\n $('#quickSearch').val(criteria.Value);\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Company_Name') {\r\n $('.mainGrid .dx-texteditor-input:first').val(criteria.Value);\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Physical_State_Physical_City' || criteria.Name == 'Physical_State' || criteria.Name == 'SIC01') {\r\n resetCompanyName = false;\r\n }\r\n if (criteria.Name == 'Phone') {\r\n var phone = criteria.Value;\r\n\r\n // $('#quickSearch').val('+1 ('+phone.substr(0,3) + ') '+phone.substr(3, 3)+'-'+phone.substr(6));\r\n resetCompanyName = false;\r\n }\r\n if (window['User'] && window['User'].RAI && criteria.Name == 'is_primaryExec') return;\r\n if (criteria.Name == 'SIC_Description') {\r\n if (instance) instance.forEachNode(el => { if (el.data.Value == criteria.Value) sic.push(el.data.Id); })\r\n }\r\n toLoad = !self.AddButtonOnRightSearchCriteria(criteria.Name, criteria.Value, undefined, criteria.Display);\r\n\r\n });\r\n cname?.option('value', self.WildCard);\r\n ccity?.option('value', self.City);\r\n cstate?.option('value', self.State);\r\n csic?.option('value', self.SIC);\r\n csdesc?.option('value', self.SICDesc);\r\n if (resetCompanyName) {\r\n $('.mainGrid .dx-texteditor-input:first').val('');\r\n // $('#quickSearch').val('');\r\n }\r\n\r\n if (instance) {\r\n instance.option('selectedRowKeys', sic);\r\n instance.option('onSelectionChanged', last);\r\n }\r\n $('.root-preloader').hide();\r\n\r\n // let value = $('#quickSearch').val();\r\n // value && value != '+1 (___) ___-____' ? $('.search-legend').hide() : $('.search-legend').show();\r\n }\r\n}\r\n\r\nmodule.exports = Filters;","/**\r\n * GMap.ts\r\n */\r\n\r\nimport jqXHR = JQuery.jqXHR;\r\nimport { Business } from '../business';\r\nimport { FakeDrawer } from './FakeDrawer';\r\nimport { MapLabel } from './MapLabel';\r\nimport CR = Mocha.reporters.Base.cursor.CR;\r\nimport { isArray } from 'jquery';\r\nimport DevExpress from 'devextreme';\r\nimport on = DevExpress.events.on;\r\nconst Drawer = require('./FakeDrawer');\r\nconst Label = require('./MapLabel');\r\n\r\nexport interface Criteria {\r\n Name: string,\r\n Value: string,\r\n Display?: string\r\n}\r\n\r\nexport interface ResultCriteria {\r\n Count: string,\r\n Criterias: Array\r\n}\r\n\r\nconst Debug = require('../debug');\r\n\r\nexport class GMap {\r\n AllCircles: any[] = [];\r\n AllLabelsForCounties: any[];\r\n AllLabelsForStates: any[];\r\n AllPolygons: any[] = [];\r\n AutoComplete: google.maps.places.SearchBox; // === autocomplete on map search\r\n CursorX: number;\r\n CursorY: number;\r\n Drawer: FakeDrawer;\r\n Features: any[] = [];\r\n IndexDeleteResult = 0; // === index of selected area\r\n IsBusiness: boolean;\r\n Layer: any;\r\n log: Function; // === logger\r\n lInfoMap; // === element with info to selecting area\r\n MapOption: google.maps.MapOptions; //-\r\n Markers: google.maps.Marker[] = [];\r\n Parent; // Business or Consumer\r\n SearchCriterias: google.maps.Marker[] = []; //-\r\n SearchMap: google.maps.Map;\r\n SearchMarkers: google.maps.Marker[] = [];\r\n Service;\r\n ShowGrid = true; // === On Business\r\n Sizer: any; //-\r\n Type: 'Circle' | 'County' | 'State' | 'Shape';\r\n TempLabel: MapLabel;\r\n TempLabels: any[] = [];\r\n ZoomLevel: number;\r\n\r\n private FakeReq = false;\r\n\r\n constructor(parent?, debug?: boolean) {\r\n const self = this;\r\n const Logger = Debug(`${parent.name == 'Business' ? 'Business.GMAP' : 'Consumer.GMAP'}`);\r\n Logger.enabled = false;\r\n Logger.log = console.log;\r\n this.log = Logger;\r\n this.log('Init', 'Start');\r\n\r\n this.Parent = parent;\r\n this.IsBusiness = this.Parent?.name == 'Business';\r\n\r\n this.MapOption = {\r\n center: { lat: 39.8282, lng: -98.5795 },\r\n disableDefaultUI: true, // a way to quickly hide all controls\r\n disableDoubleClickZoom: true,\r\n gestureHandling: 'greedy',\r\n mapTypeControl: true,\r\n mapTypeControlOptions: {\r\n mapTypeIds: [window.google.maps.MapTypeId.ROADMAP, window.google.maps.MapTypeId.HYBRID]\r\n }, // here´s the array of controls\r\n mapTypeId: window.google.maps.MapTypeId.ROADMAP,\r\n scaleControl: false,\r\n zoom: 4,\r\n zoomControl: false,\r\n }\r\n\r\n this.ZoomLevel = this.MapOption.zoom;\r\n\r\n $(function () {\r\n self.gMapReady();\r\n });\r\n\r\n this.log('Init', 'GMap');\r\n }\r\n\r\n get InfoMap() {\r\n return document.getElementById('lInfoMap');\r\n }\r\n\r\n /**\r\n * gMapReady(): Function\r\n * First actions on google map\r\n */\r\n gMapReady() {\r\n console.log('mapThis', this);\r\n this.log('Ready', 'Map');\r\n const self = this;\r\n\r\n this.lInfoMap = $('#lInfoMap');\r\n\r\n $('.selection-box').hide(); // === hide sections with results map selection (right)\r\n\r\n if (self.IsBusiness) {\r\n self.gMapBusiness();\r\n } else {\r\n self.gMapConsumer();\r\n }\r\n\r\n self.gMapButtons();\r\n\r\n // === search btns ===\r\n\r\n const body = $('body');\r\n body.on('click', '.delete-me', function () { // ?\r\n $(this).remove();\r\n });\r\n body.on('click', '#select-radius-delete', () => { // === click on button delete all radius\r\n self.gMapClearAllCircles();\r\n });\r\n body.on('click', '#draw-radius-delete', () => { // === click on button delete all polygons\r\n self.gMapClearAllPolygons();\r\n });\r\n body.on('click', '#state-delete', () => {\r\n if (!self.IsBusiness) {\r\n self.gMapRemoveConsumerFiltersGroup('state');\r\n }\r\n self.gMapClearAllStates();\r\n });\r\n body.on('click', '#county-delete', () => {\r\n if (!self.IsBusiness) {\r\n self.gMapRemoveConsumerFiltersGroup('county');\r\n }\r\n self.gMapClearAllCounties();\r\n });\r\n this.log('Ready', 'End');\r\n }\r\n\r\n /**\r\n * gMapBusiness(): Function\r\n */\r\n gMapBusiness() {\r\n const self = this;\r\n const isCookie = self.Parent.getCookie('modifySearchFilters');\r\n if (isCookie != '') { // ?? why on map?\r\n const searchCriteria = (JSON.parse(isCookie));\r\n self.Parent.Filter.AddFilters(searchCriteria);\r\n self.Parent.createCookie('modifySearchFilters', JSON.stringify(''), new Date);\r\n }\r\n\r\n if (this.FakeReq) this.gMapInit();\r\n\r\n self.gMapGlobal();\r\n\r\n $('#maps-btnUpdateCount').off('click').on('click', () => {\r\n $('#h4-total-results-map span').html('Loading');\r\n self.gMapCheckTotalCount(true);\r\n });\r\n\r\n $('#google_map').off('shown.bs.modal').on('shown.bs.modal', () => {\r\n //Init Google Map\r\n self.log('Click', 'RestoreMap', 'Start');\r\n setTimeout(() => {\r\n self.gMapClearAll();\r\n\r\n // === remove all map filters\r\n self.Parent.Filter.RemoveAllFilter('County_Description', () => {\r\n self.Parent.Filter.RemoveAllFilter('proximity', () => {\r\n self.Parent.Filter.RemoveAllFilter('Physical_State', () => {\r\n self.Parent.Filter.Updates();\r\n });\r\n });\r\n });\r\n }, 700)\r\n\r\n //let countOfBusinesRecords = $('#tooMany').text();\r\n //$('#h4-total-results-map').text('Business Records: ' + countOfBusinesRecords)\r\n });\r\n\r\n //$('#google_map').on('hidden.bs.modal', () => {\r\n // //if (window['IsMapSearchRemoved'])\r\n // //window['Business'].RemoveAllFilter('proximity');\r\n //});\r\n $('#google_map').off('hide.bs.modal').on('hide.bs.modal', () => {\r\n self.gMapButtonClearMap();\r\n $('.fakeDrawerDiv').removeClass('active');\r\n })\r\n }\r\n\r\n /**\r\n * gMapButtonClearMap(): Function\r\n * Reset map filters\r\n * Reset colors\r\n * Reset search\r\n */\r\n gMapButtonClearMap() {\r\n const self = this;\r\n self.gMapClearAll();\r\n //$('[data-name=\"state\"]').each((el, it) => { $(it).parents('.selection-box__item').remove() });\r\n //$('[data-name=\"county\"]').each((el, it) => { $(it).parents('.selection-box__item').remove() });\r\n if (!self.IsBusiness) self.Parent.removeFilter('proximity');\r\n self.Drawer.Items.forEach((it) => {\r\n it.setMapItem(null);\r\n });\r\n self.Drawer.setMap(null);\r\n\r\n self.SearchMarkers.forEach(marker => {\r\n marker.setMap(null)\r\n });\r\n\r\n if (self.IsBusiness) self.gMapDisableButtonAddFilters();\r\n }\r\n\r\n /**\r\n * gMapButtons(): Function\r\n */\r\n gMapButtons() {\r\n const self = this;\r\n\r\n $('#btn-selectMapCircle').off('click').on('click', (e) => {\r\n self.gMapButtonsSelectAreas(e.currentTarget, 'circle');\r\n });\r\n\r\n $('#btn-selectMapPolygon').off('click').on('click', (e) => {\r\n self.gMapButtonsSelectAreas(e.currentTarget, 'polygon');\r\n });\r\n\r\n $('#btn-selectMapState').off('click').on('click', (e) => {\r\n self.gMapButtonsSelectAreas(e.currentTarget, 'state');\r\n });\r\n\r\n $('#btn-selectMapCounty').off('click').on('click', (e) => {\r\n self.gMapButtonsSelectAreas(e.currentTarget, 'county');\r\n });\r\n\r\n $('#btnRestoreMap').on('click', () => {\r\n self.log('Click', 'RestoreMap', 'Start');\r\n self.SearchMap.setCenter({ lat: 39.8282, lng: -98.5795 }); // Washington city\r\n self.SearchMap.setZoom(4); // reset zoom\r\n self.gMapButtonClearMap();\r\n self.log('Click', 'RestoreMap', 'End');\r\n });\r\n\r\n $('.go-search-business').on('click', () => {\r\n self.log('GoSearch', 'Start');\r\n window.google.maps.event.trigger(self.AutoComplete, 'place_changed');\r\n self.log('GoSearch', 'End');\r\n });\r\n\r\n $('#btnClearMapResults').off('click').on('click', () => {\r\n self.gMapButtonClearMap();\r\n });\r\n\r\n $('#addSearchResults, #gMap-addfilters').off('click').on('click', (e) => {\r\n self.gMapCheckTotalCount(true, () => {\r\n const id = $(e.currentTarget).attr('id');\r\n\r\n $('#nav-tabs-search').hide();\r\n $('.user-instruct').hide();\r\n $('.d-refresh-business-grid').hide();\r\n\r\n if (id == 'gMap-addfilters' || id == 'addSearchResults') {\r\n window['IsMapSearchRemoved'] = false;\r\n }\r\n\r\n if (id == 'gMap-addfilters') {\r\n self.ShowGrid = false;\r\n $('#a_search_tabs').trigger('click');\r\n } else\r\n self.ShowGrid = true;\r\n\r\n if (self.ShowGrid) {\r\n $('#GridViewBusiness').fadeIn('slow');\r\n $('.content-bottom-buttons').fadeIn('slow');\r\n $('.search-button:visible').trigger('click');\r\n }\r\n ($('#google_map') as any).modal('hide');\r\n });\r\n })\r\n }\r\n\r\n /**\r\n * gMapButtonsSelectAreas(): Function\r\n * @param target\r\n * @param typeName\r\n */\r\n gMapButtonsSelectAreas(target, typeName: String) {\r\n const self = this;\r\n $('.root-preloader').show();\r\n //if (self.Type == 'Shape' || self.Type == 'Circle' || self.Type == 'State')\r\n // self.gMapClearAll();\r\n //$('[data-name=\"state\"]').each((el, it) => { $(it).parents('.selection-box__item').remove() });\r\n //$('.createControlUI').trigger('click');\r\n //if (!$('#btn-selectMapCounty').hasClass('active')) {\r\n //self.gMapButtonClearMap();\r\n\r\n //self.gMapClearAll();\r\n //self.gMapMakeButtonSelected($(target).attr('id'));\r\n //$('#btn-selectMapState').removeClass('active');\r\n\r\n self.gMapButtonClearMap();\r\n self.gMapMakeButtonSelected($(target).attr('id'));\r\n\r\n if (!self.IsBusiness) self.Parent.removeFilter('proximity');\r\n\r\n switch (typeName) {\r\n case 'county':\r\n self.Type = 'County';\r\n $('.createControlUI').trigger('click');\r\n $('.fakeDrawerDiv').removeClass('active');\r\n self.gMapLoadBoundary('county');\r\n break;\r\n case 'circle':\r\n self.Type = 'Circle';\r\n $('.fakeDrawerDiv').addClass('active');\r\n if (self.IsBusiness)\r\n self.Parent.Filter.RemoveAllFilter('County_Description', () => {\r\n self.Parent.Filter.RemoveAllFilter('Physical_State', () => {\r\n self.Parent.Filter.Updates();\r\n\r\n self.Drawer.resetDrawer();\r\n self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.CIRCLE);\r\n $('.root-preloader').hide();\r\n });\r\n });\r\n else {\r\n self.Drawer.resetDrawer();\r\n self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.CIRCLE);\r\n $('.root-preloader').hide();\r\n }\r\n break;\r\n case 'polygon':\r\n self.Type = 'Shape';\r\n $('.fakeDrawerDiv').addClass('active');\r\n $('#initial-title .color-dbuilder').html('Use left click to draw your shape and double click to stop when you are done');\r\n if (self.IsBusiness) {\r\n self.Parent.Filter.RemoveAllFilter('County_Description', () => {\r\n self.Parent.Filter.RemoveAllFilter('Physical_State', () => {\r\n self.Parent.Filter.Updates();\r\n self.Drawer.resetDrawer();\r\n\r\n window.google.maps.event.clearListeners(self.SearchMap.data, 'click');\r\n self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.POLYGON);\r\n $('.root-preloader').hide();\r\n });\r\n });\r\n } else {\r\n self.Drawer.resetDrawer();\r\n\r\n window.google.maps.event.clearListeners(self.SearchMap.data, 'click');\r\n self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.POLYGON);\r\n $('.root-preloader').hide();\r\n }\r\n break;\r\n case 'state':\r\n self.Type = 'State';\r\n $('.createControlUI').trigger('click');\r\n $('.fakeDrawerDiv').removeClass('active');\r\n self.gMapLoadBoundary('state');\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * gMapCheckTotalCount(): Function\r\n * Only for Business\r\n * \r\n * @param isDel ??\r\n * @param callback\r\n */\r\n gMapCheckTotalCount(isDel?: boolean, callback?: Function) {\r\n // return;\r\n $('.root-preloader').show();\r\n const self = this;\r\n const list = $('.circle,.polygon');\r\n let loading = 0;\r\n const items = [];\r\n\r\n list.each((_, it) => {\r\n loading += $(it).data('loading')\r\n items.push($(it));\r\n });\r\n $('#h4-total-results-map span').text('...');\r\n //if ($('.polygon').length || true) {\r\n let criteria = '#POLYGON#'\r\n items.forEach(it => {\r\n const i = it.data('item'),\r\n pol = i.get('points');\r\n criteria += '|';\r\n pol.forEach(x => criteria += x.lng() + ' ' + x.lat() + ',');\r\n criteria += pol[0].lng() + ' ' + pol[0].lat();\r\n });\r\n if (items.length)\r\n //if (self.IsBusiness)\r\n self.gMapReturnProxyCount(criteria, undefined, callback);\r\n //else {\r\n // let criterias = { Criterias: [{ Name: 'proximity', Value: criteria }] };\r\n // self.Parent.ChangeFilters(criterias);\r\n //}\r\n //}\r\n //else {\r\n // let criteria = '#LATLONG#'\r\n // items.forEach(it => {\r\n // let circle = it.data('item'),\r\n // LAT = circle.getCenter().lat(),\r\n // LONG = circle.getCenter().lng(),\r\n // RAD = Math.round(circle.getRadius() * 0.000621371 * 100) / 100;\r\n // criteria += '|' + LAT + ',' + LONG + '|' + RAD;\r\n // });\r\n // if (items.length) self.gMapReturnProxyCount(criteria, undefined, callback);\r\n //}\r\n if (!items.length) {\r\n const counties = $('u[data-name=\"county\"]');\r\n const states = $('u[data-name=\"state\"]');\r\n if (counties.length || states.length) {\r\n let val = '';\r\n if (counties.length) {\r\n for (let i = 0; i < counties.length; i++)\r\n val += $(counties[i]).data('geoid') + ',';\r\n val = val.substr(0, val.length - 1);\r\n self.gMapReturnProxyCount(val, 'Vendor_State_County', callback);\r\n }\r\n else if (states.length) {\r\n for (let i = 0; i < states.length; i++)\r\n val += $(states[i]).data('state') + ',';\r\n val = val.substr(0, val.length - 1);\r\n self.gMapReturnProxyCount(val, 'Physical_State', callback);\r\n }\r\n }\r\n else\r\n self.Parent.Filter.RemoveAllFilter('proximity', (data) => {\r\n $('.root-preloader').hide();\r\n callback(data);\r\n self.Parent.Filter.UpdateFilters(data, undefined);\r\n }, true);\r\n }\r\n }\r\n\r\n /**\r\n * gMapCheckVisibilityOfSelectionBoxes(): Function\r\n * Remove all right section info and show message\r\n */\r\n gMapCheckVisibilityOfSelectionBoxes() {\r\n if ($('#radius-selection .selection-box__item').length === 1) {\r\n $('#radius-selection').hide();\r\n }\r\n\r\n if ($('#polygon-selection .selection-box__item').length === 1) {\r\n $('#polygon-selection').hide();\r\n }\r\n\r\n if ($('#state-selection .selection-box__item').length === 1) {\r\n $('#state-selection').hide();\r\n }\r\n\r\n if ($('#county-selection .selection-box__item').length === 1) {\r\n $('#county-selection').hide();\r\n }\r\n\r\n\r\n if ($('#gMapResults').children(':visible').length === 0) {\r\n $('#initial-title').show();\r\n $('#gMap-addfilters').hide();\r\n $('#gMap-addfilters-disable').show();\r\n }\r\n }\r\n\r\n /**\r\n * gMapClearAll(): Function\r\n * @param delFromSearchCriteria\r\n */\r\n gMapClearAll(delFromSearchCriteria?: boolean) {\r\n const self = this;\r\n\r\n // === Roll back filters\r\n if (self.IsBusiness) {\r\n $.ajax({\r\n url: '/Business/CleanMap', method: 'POST', async: false, success(data) {\r\n self.Parent.Filter.UpdateFilters(data, undefined);\r\n console.log('CleanMap', data);\r\n }\r\n });\r\n //} else {\r\n // if (delFromSearchCriteria) self.gMapRemoveConsumerFiltersGroup('county');\r\n }\r\n\r\n $('.btn-selectMap').removeClass('active'); // === Reset all selected buttons\r\n $('#gMap-search-input').val(''); // === Reset search field value\r\n self.lInfoMap.hide();\r\n\r\n // === Remove event click on all Delete btns on selected info\r\n const btnsDel = $('[id^=\"aDelRes\"]');\r\n for (let i = 0; i < btnsDel.length; i++) {\r\n const btnID = '#' + $(btnsDel[i]).attr('id');\r\n $('body').off('click', btnID);\r\n }\r\n\r\n $('#initial-title .color-dbuilder').html('Pinpoint your location then select your desired areas using the tools on the left');\r\n $('#initial-title').show();\r\n $('.selection-box').hide();\r\n\r\n if (self.IsBusiness) {\r\n const countOfBusinesRecords = $('#tooMany').text();\r\n $('#h4-total-results-map>span').html(countOfBusinesRecords);\r\n }\r\n\r\n window.google.maps.event.clearListeners(this.SearchMap.data, 'click');\r\n\r\n self.gMapClearOldShapes(); // === Remove all selected areas on map\r\n\r\n // === Reset AllCircles, AllPolygons, Driwer, Labels, Layer, Markers, SearchCriterias, TempLabels\r\n window['Labels']?.forEach(x => x.setMap(null));\r\n window['Labels'] = [];\r\n\r\n this.AllCircles.map(x => x.setMap(null));\r\n $('.circle').remove();\r\n\r\n this.AllPolygons.map(x => x.setMap(null));\r\n $('.polygon').remove();\r\n\r\n this.Drawer.setMap(null);\r\n this.Drawer.resetDrawer();\r\n this.Drawer.clearMapItems();\r\n\r\n if (this.Layer != null)\r\n this.Layer.setMap(null);\r\n\r\n if (this.Markers instanceof Array)\r\n for (let i = 0; i < this.Markers.length; i++) {\r\n this.Markers[i].setMap(null);\r\n }\r\n this.Markers = [];\r\n\r\n this.SearchCriterias.forEach(maker => maker.setMap(null));\r\n this.SearchCriterias = [];\r\n\r\n this.TempLabels.forEach(t => t.setMap(null));\r\n this.TempLabels = [];\r\n\r\n if (this.Sizer != null)\r\n this.Sizer.setMap(null);\r\n\r\n self.Drawer.setDrawingMode(null); // === remove all markers\r\n //this.IndexDeleteResult = 0; // index of selected area on map\r\n\r\n //if (window['clearAllS'] && !first) window['clearAllS'](); // ??\r\n\r\n //this.Parent.RemoveAllFilters(); // old\r\n }\r\n\r\n /**\r\n * gMapClearAllCircles(): Function\r\n */\r\n gMapClearAllCircles() {\r\n this.gMapHideSectionsBeforeClearAreaInfo();\r\n this.gMapRemoveFilterByPseudoCode('circle');\r\n $('.circle').remove();\r\n }\r\n\r\n /**\r\n * gMapClearAllCounties(): Function\r\n */\r\n gMapClearAllCounties() {\r\n this.gMapHideSectionsBeforeClearAreaInfo();\r\n //google.maps.event.clearListeners(searchmap.data, 'click');\r\n\r\n //$('[data-name=\"county\"]').each((el, it) => { $(it).parents('.selection-box__item').remove() })\r\n this.gMapLoadBoundary('county');\r\n this.gMapRemoveFilterByPseudoCode('county');\r\n }\r\n\r\n /**\r\n * gMapClearAllPolygons(): Function\r\n */\r\n gMapClearAllPolygons() {\r\n this.gMapHideSectionsBeforeClearAreaInfo();\r\n $('.polygon').remove();\r\n this.gMapRemoveFilterByPseudoCode('polygon');\r\n }\r\n\r\n /**\r\n * gMapClearAllStates(): Function\r\n */\r\n gMapClearAllStates() {\r\n this.gMapHideSectionsBeforeClearAreaInfo();\r\n //$('[data-name=\"state\"]').each((el, it) => { $(it).parents('.selection-box__item').remove() });\r\n this.gMapLoadBoundary('state');\r\n this.gMapRemoveFilterByPseudoCode('state');\r\n }\r\n\r\n /**\r\n * gMapClearOldShapes(): Function\r\n * Reset Google Map data for Counties, Features, Layer, States\r\n * */\r\n gMapClearOldShapes() {\r\n if (this.AllLabelsForStates instanceof Array)\r\n for (let i = 0; i < this.AllLabelsForStates.length; i++) {\r\n this.AllLabelsForStates[i].setMap(null);\r\n }\r\n this.AllLabelsForStates = [];\r\n\r\n if (this.AllLabelsForCounties instanceof Array)\r\n for (let i = 0; i < this.AllLabelsForCounties.length; i++) {\r\n this.AllLabelsForCounties[i].setMap(null);\r\n }\r\n this.AllLabelsForCounties = [];\r\n\r\n if (this.Features instanceof Array)\r\n for (let i = 0; i < this.Features.length; i++) {\r\n this.SearchMap.data.remove(this.Features[i]);\r\n }\r\n\r\n if (this.Layer != null)\r\n this.Layer.setMap(null);\r\n // $('.polygon').remove();\r\n // $('.circle').remove();\r\n }\r\n\r\n /**\r\n * gMapConsumer(): Function\r\n */\r\n gMapConsumer() {\r\n const self = this;\r\n self.gMapGlobal();\r\n //self.gMapClearAll();\r\n }\r\n\r\n /**\r\n * gMapDisableButtonAddFilters(): Function\r\n * Hide button Add Filters, show link Add Filters\r\n */\r\n gMapDisableButtonAddFilters() {\r\n $('#gMap-addfilters').hide();\r\n $('#gMap-addfilters-disable').show();\r\n }\r\n\r\n /**\r\n * gMapEnableButtonAddFilters(): Function\r\n * Only for business\r\n */\r\n gMapEnableButtonAddFilters() {\r\n $('#gMap-addfilters').show();\r\n $('#gMap-addfilters-disable').hide();\r\n $('.root-preloader').hide();\r\n }\r\n\r\n /**\r\n * gMapGetBounds(): Function\r\n * @param poly - map data of counte or state\r\n * @returns - LatLngBounds\r\n */\r\n gMapGetBounds(poly) {\r\n const bounds = new google.maps.LatLngBounds();\r\n poly.getPath().forEach(element => {\r\n bounds.extend(element)\r\n });\r\n return bounds;\r\n }\r\n\r\n /**\r\n * gMapGetBoundsFeature(): Function\r\n * @param poly - map data of county or state\r\n * @returns - LatLngBounds\r\n */\r\n gMapGetBoundsFeature(poly) {\r\n const bounds = new window.google.maps.LatLngBounds();\r\n const poly_type = poly.getGeometry().getType();\r\n\r\n poly.getGeometry().getArray().forEach(function (path) {\r\n path.getArray().forEach(function (latLng) {\r\n if (poly_type == 'MultiPolygon') {\r\n latLng.getArray().forEach(function (latLng1) {\r\n bounds.extend(latLng1);\r\n });\r\n } else\r\n bounds.extend(latLng);\r\n });\r\n });\r\n\r\n return bounds;\r\n }\r\n\r\n /**\r\n * gMapGlobal(): Function\r\n * General actions for Business and Consumer map\r\n * Init map\r\n */\r\n gMapGlobal() {\r\n const self = this;\r\n if (!self.SearchMap) {\r\n self.gMapInit();\r\n // if (window['LoadStations']) window['LoadStations']();\r\n self.gMapSearch();\r\n }\r\n\r\n $('#btnRestoreMap').trigger('click');\r\n window['IsMapSearchRemoved'] = true;\r\n }\r\n\r\n /**\r\n * gMapHideSectionsBeforeClearAreaInfo(): Function\r\n */\r\n gMapHideSectionsBeforeClearAreaInfo() {\r\n this.lInfoMap.hide();\r\n $('.selection-box .selection-box__item').remove();\r\n $('.selection-box').hide();\r\n\r\n if ($('#gMapResults').children(':visible').length === 0) {\r\n $('#initial-title').show();\r\n }\r\n if (this.IsBusiness) {\r\n this.gMapDisableButtonAddFilters();\r\n }\r\n\r\n this.gMapClearOldShapes();\r\n }\r\n\r\n /**\r\n * gMapInit(): Function\r\n */\r\n gMapInit() {\r\n const self: GMap = this;\r\n self.log('InitMap', 'Start');\r\n\r\n // === Initializing Google Map\r\n self.SearchMap = new window.google.maps.Map(document.getElementById('gMap-canvas'), this.MapOption);\r\n\r\n // === Initializing search on Google map\r\n const gmapSearchInput = document.getElementById('gMap-search-input') as HTMLInputElement;\r\n this.AutoComplete = new window.google.maps.places.SearchBox(gmapSearchInput);\r\n this.AutoComplete.addListener('places_changed', () => {\r\n self.gMapOnPlacesChanged();\r\n });\r\n\r\n this.SearchMap.addListener('bounds_changed', () => {\r\n self.gMapOnBoundsChanged();\r\n });\r\n window.google.maps.event.addListener(self.SearchMap, 'zoom_changed', () => {\r\n self.gMapOnZoomChanged();\r\n });\r\n\r\n // === Drawer // ??\r\n const fakeDrawerDiv = document.createElement('div');\r\n fakeDrawerDiv.className = 'fakeDrawerDiv';\r\n this.Drawer = new Drawer(fakeDrawerDiv, self.SearchMap);\r\n //$(fakeDrawerDiv).attr('index', 1);\r\n this.SearchMap.controls[google.maps.ControlPosition.TOP_CENTER].push(fakeDrawerDiv);\r\n\r\n const UpdateInfoCircle = circle => {\r\n self.InfoMap.innerHTML = `Radius: ${Math.round(circle.getRadius() * 0.000621371 * 100) / 100} mi`; //convert in miles\r\n };\r\n const UpdateInfoPolygon = (point1, point2) => {\r\n self.InfoMap.innerHTML = `Distance: ${Math.round(1000 * self.Drawer.distanceBetweenPoints(point1, point2) * 0.000621371 * 100) / 100} mi`;\r\n };\r\n\r\n // === Actions after select on map \r\n window.google.maps.event.addListener(this.Drawer, 'drawing_radius_changed', UpdateInfoCircle);\r\n window.google.maps.event.addListener(this.Drawer, 'drawing_length_changed', UpdateInfoPolygon);\r\n\r\n window.google.maps.event.addListener(this.Drawer, 'circlecomplete', (circle) => {\r\n self.gMapOnCircleComplete(circle);\r\n //self.gMapOnCircleComplete(circle, self);\r\n });\r\n window.google.maps.event.addListener(this.Drawer, 'bounds_changed', (circle) => {\r\n self.gMapOnCircleComplete(circle, true);\r\n });\r\n\r\n window.google.maps.event.addListener(this.Drawer, 'polygoncomplete', (polygon) => {\r\n self.gMapOnPolygonComplete(polygon);\r\n });\r\n window.google.maps.event.addListener(this.Drawer, 'polygonchange', (polygon) => {\r\n self.gMapOnPolygonComplete(polygon, true);\r\n //self.gMapOnPolygonUpdate(polygon);\r\n });\r\n\r\n $('#gMap-canvas').on('mousemove', (ev) => {\r\n self.gMapReadMouseMove(ev);\r\n })\r\n this.log('InitMap', 'End');\r\n }\r\n\r\n /**\r\n * gMapLoadBoundary(): Function\r\n * Loading demarcation of territory by state or county\r\n * \r\n * @param type = state or county\r\n */\r\n gMapLoadBoundary(type) {\r\n const self = this;\r\n\r\n $('.root-preloader').show();\r\n this.Drawer.resetDrawer();\r\n window.google.maps.event.clearListeners(this.SearchMap.data, 'click');\r\n\r\n this.SearchMap.data.addListener('addfeature', function (event) {\r\n //last State or last County from GEOJSON\r\n self.log('AddFeature', event);\r\n });\r\n switch (type) {\r\n case 'state':\r\n $.getJSON('/Map/gz_2010_us_040_00_500k.json', function (data) {\r\n const temp_features = self.SearchMap.data.addGeoJson(data);\r\n if (!(self.Features instanceof Array))\r\n self.Features = [];\r\n for (let i = 0; i < temp_features.length; i++) {\r\n self.Features.push(temp_features[i]);\r\n }\r\n $('.root-preloader').hide();\r\n });\r\n //searchmap.data.loadGeoJson('/../Business/GetGeoJsonStates');\r\n break;\r\n case 'county':\r\n $.getJSON('/Map/county.json', function (data) {\r\n const temp_features = self.SearchMap.data.addGeoJson(data);\r\n for (let i = 0; i < temp_features.length; i++) {\r\n self.Features.push(temp_features[i]);\r\n }\r\n $('.root-preloader').hide();\r\n });\r\n break;\r\n }\r\n\r\n const color = '#0ABA02';\r\n this.SearchMap.data.setStyle((feature) => {\r\n if (feature.getProperty('isColorful')) {\r\n return ({\r\n strokeColor: color,\r\n strokeOpacity: 1,\r\n strokeWeight: 2,\r\n fillColor: color,\r\n fillOpacity: 0\r\n });\r\n } else\r\n return ({\r\n strokeColor: color,\r\n strokeOpacity: 0.4,\r\n strokeWeight: 2,\r\n fillColor: color,\r\n fillOpacity: 0\r\n });\r\n });\r\n self.SearchMap.data.addListener('click', function (event) {\r\n if (!event.feature.getProperty('isColorful')) {\r\n self.gMapMakeBoundarySelectable(event.feature);\r\n switch (type) {\r\n case 'state':\r\n self.gMapOnClickState(event.feature);\r\n break;\r\n case 'county':\r\n self.gMapOnClickCounty(event.feature);\r\n break;\r\n }\r\n } else {\r\n $(event.feature.getProperty('remove_button')).trigger('click');\r\n }\r\n });\r\n //switch (type) {\r\n // case 'state': {\r\n // $('.root-preloader').show(); //Click on shape\r\n // self.SearchMap.data.addListener('click', function (event) {\r\n // if (!event.feature.getProperty('isColorful')) {\r\n // self.gMapMakeBoundarySelectable(event.feature);\r\n\r\n // const state_name = event.feature.getProperty('NAME');\r\n // const state_code = event.feature.getProperty('ABR');\r\n // self.gMapOnClickState(event.feature, state_name, state_code);\r\n // } else {\r\n // $(event.feature.getProperty('remove_button')).trigger('click');\r\n // }\r\n // });\r\n // }\r\n // break;\r\n // case 'county': {\r\n // self.SearchMap.data.addListener('click', function (event) {\r\n // $('.root-preloader').show(); //Click on shape\r\n // if (!event.feature.getProperty('isColorful')) {\r\n // self.gMapMakeBoundarySelectable(event.feature);\r\n\r\n // const county_name = event.feature.getProperty('NAME');\r\n // const state_short = event.feature.getProperty('STUSPS');\r\n // const geoid = event.feature.getProperty('GEOID');\r\n // // console.log(event.feature);\r\n // self.gMapOnClickCounty(event.feature, county_name, state_short, geoid);\r\n // } else {\r\n // $(event.feature.getProperty('remove_button')).trigger('click');\r\n\r\n // }\r\n // });\r\n // }\r\n // break;\r\n //}\r\n }\r\n\r\n /**\r\n * gMapMakeBoundarySelectable(): Function\r\n * Set boundary color\r\n * @param object\r\n */\r\n gMapMakeBoundarySelectable(object) {\r\n object.setProperty('isColorful', true);\r\n this.SearchMap.data.overrideStyle(object, {\r\n strokeOpacity: 1,\r\n fillOpacity: 0.4\r\n });\r\n }\r\n\r\n /**\r\n * gMapMakeButtonSelected(): Function\r\n * @param id - id of selected button\r\n */\r\n gMapMakeButtonSelected(id) {\r\n $('.gMap-choose-settings-item .boundary-select').removeClass('active');\r\n $(`#${id}`).addClass('active');\r\n }\r\n\r\n /**\r\n * gMapNewLabelDefaultSettings(): Function\r\n * @param count\r\n * @param font_size\r\n * @param latlong\r\n * @returns object Label with all data\r\n */\r\n gMapNewLabelDefaultSettings(count: string | number, font_size, latlong): MapLabel {\r\n const self = this;\r\n if (!window['Labels'])\r\n window['Labels'] = [];\r\n const label = new Label({\r\n align: 'center',\r\n fontColor: '#000000',\r\n fontSize: font_size,\r\n map: self.SearchMap,\r\n position: latlong,\r\n strokeColor: '#ffffff',\r\n strokeWeight: 0,\r\n text: count,\r\n });\r\n window['Labels'].push(label);\r\n return label;\r\n }\r\n\r\n /**\r\n * gMapOnBoundsChanged(): Function\r\n * Save new visible bounds map if map moving\r\n * */\r\n gMapOnBoundsChanged() {\r\n this.log('OnBoundsChanged', 'Start');\r\n this.AutoComplete.setBounds(this.SearchMap.getBounds());\r\n this.log('OnBoundsChanged', 'End');\r\n }\r\n\r\n /**\r\n * gMapOnCircleComplete(): Function\r\n * @param circle - object with data of selected circle area\r\n * @param isUpdate\r\n */\r\n gMapOnCircleComplete(circle, isUpdate = false) {\r\n const self = this;\r\n $('.root-preloader').show();\r\n this.lInfoMap.hide();\r\n $('#h4-total-results-map span').html('...');\r\n if (!isUpdate) self.Drawer.Id = circle.get('fakeId');\r\n if (!isUpdate && self.Drawer) {\r\n self.Drawer.Item.label?.setMap(null);\r\n //self.Drawer.Item.label = this.gMapNewLabelDefaultSettings('...', 20, new google.maps.LatLng(circle.getCenter().lat(), circle.getCenter().lng()));\r\n }\r\n const ne = new google.maps.LatLng(circle.getBounds().getNorthEast().lat(), circle.getBounds().getNorthEast().lng()),\r\n sw = new google.maps.LatLng(circle.getBounds().getSouthWest().lat(), circle.getBounds().getSouthWest().lng()),\r\n nw = new google.maps.LatLng(ne.lat(), sw.lng()),\r\n se = new google.maps.LatLng(sw.lat(), ne.lng());\r\n const newArray = [nw, ne, se, sw];\r\n circle.set('points', newArray);\r\n\r\n this.AllCircles.push(circle);\r\n const data = {\r\n //NAME: `Radius${self.AllCircles.length}`, // === old; for multiple circles\r\n NAME: 'Radius0',\r\n LAT: circle.getCenter().lat(),\r\n LONG: circle.getCenter().lng(),\r\n RAD: Math.round(circle.getRadius() * 0.000621371 * 100) / 100,\r\n arrayPoints: newArray.map(x => { return { LAT: x.lat(), LONG: x.lng() } })\r\n };\r\n self.gMapReturnCircleCount(data, circle, isUpdate);\r\n }\r\n\r\n /**\r\n * gMapOnClickCounty(): Function\r\n * @param poly_county\r\n * @param county_name\r\n * @param state_short\r\n * @param geoid\r\n */\r\n gMapOnClickCounty(poly_county) {\r\n const self = this;\r\n const county_name = poly_county.getProperty('NAME');\r\n const state_short = poly_county.getProperty('STUSPS');\r\n const geoid = poly_county.getProperty('GEOID');\r\n\r\n self.gMapDisableButtonAddFilters();\r\n if (poly_county != null) {\r\n $('.root-preloader').show();\r\n\r\n $('#h4-total-results-map span').html('...');\r\n const url = self.IsBusiness ? '/Business/ReturnProxyCount' : '/Consumer/ReturnProxyCount';\r\n\r\n $.post(url, { type: 'Vendor_State_County', value: geoid, }, (data, _, ctx) => {\r\n const rCount: any = data.Count;\r\n const gMapResults = document.getElementById('county-selection');\r\n const countySelection = $('#county-selection');\r\n if (!(countySelection.is(':visible'))) {\r\n countySelection.html('

County

');\r\n }\r\n const aDelResName = `aDelRes${self.IndexDeleteResult}`;\r\n gMapResults.innerHTML += `
Delete
`;\r\n\r\n $('#county-selection').show();\r\n $('#initial-title').hide();\r\n\r\n const id_aDelResName = `#${aDelResName}`;\r\n let mapLabel = null;\r\n const geom_type = poly_county.getGeometry().getType();\r\n if (geom_type === 'Polygon' || geom_type === 'MultiPolygon') {\r\n const bounds = self.gMapGetBoundsFeature(poly_county);\r\n const lat = bounds.getCenter().lat();\r\n const lng = bounds.getCenter().lng();\r\n\r\n mapLabel = self.gMapNewLabelDefaultSettings(rCount, 20, new google.maps.LatLng(lat, lng));\r\n self.AllLabelsForCounties.push(mapLabel);\r\n }\r\n\r\n poly_county.setProperty('remove_button', id_aDelResName);\r\n $('body').on('click', id_aDelResName, {\r\n boundaryObject: poly_county,\r\n btnId: id_aDelResName,\r\n count: rCount,\r\n criteriaName: 'County_Description',\r\n criteriaValue: county_name,\r\n div_name: `dMap${self.IndexDeleteResult}`,\r\n mapLabel: mapLabel,\r\n }, function (event) {\r\n mapLabel.setMap(null);\r\n self.gMapRemoveResult(event.data.div_name, 'boundary', -1, event.data.count, event.data.boundaryObject, event.data.btnId, event.data.criteriaName, event.data.criteriaValue);\r\n });\r\n\r\n self.IndexDeleteResult++;\r\n\r\n $('.root-preloader').hide();\r\n // $('#map-loader2').hide();\r\n if (self.IsBusiness)\r\n self.gMapEnableButtonAddFilters();\r\n else {\r\n self.Parent.addCountyFilter({ GEOID: data.Criterias[0].Value, Name: county_name }, true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * gMapOnClickState(): Function\r\n * @param poly_state - map data for state\r\n */\r\n gMapOnClickState(poly_state) {\r\n const self = this;\r\n const state_name = poly_state.getProperty('NAME');\r\n const state_code = poly_state.getProperty('ABR');\r\n\r\n self.gMapDisableButtonAddFilters();\r\n\r\n if (poly_state != null) {\r\n $('.root-preloader').show();\r\n\r\n $('#h4-total-results-map>span').html('...');\r\n const url = self.IsBusiness ? '/Business/ReturnProxyCount' : '/Consumer/ReturnProxyCount';\r\n\r\n $.post(url, { value: state_code, type: 'Physical_State' }, (data, _, ctx) => {\r\n const rCount: any = data.Count;\r\n const gMapResults = document.getElementById('state-selection');\r\n const stateSelection = $('#state-selection')\r\n if (!(stateSelection.is(':visible'))) {\r\n stateSelection.html('

State

');\r\n }\r\n const aDelResName = `aDelRes${self.IndexDeleteResult}`;\r\n gMapResults.innerHTML += `
Delete
`;\r\n\r\n $('#state-selection').show();\r\n $('#initial-title').hide();\r\n\r\n const id_aDelResName = `#${aDelResName}`;\r\n let mapLabel = null;\r\n const geom_type = poly_state.getGeometry().getType();\r\n if (geom_type === 'Polygon' || geom_type === 'MultiPolygon') {\r\n const bounds = self.gMapGetBoundsFeature(poly_state);\r\n const lat = bounds.getCenter().lat();\r\n const lng = bounds.getCenter().lng();\r\n\r\n mapLabel = self.gMapNewLabelDefaultSettings(rCount, 20, new google.maps.LatLng(lat, lng));\r\n self.AllLabelsForStates.push(mapLabel);\r\n }\r\n\r\n poly_state.setProperty('remove_button', id_aDelResName);\r\n $('body').on('click', id_aDelResName, {\r\n boundaryObject: poly_state,\r\n btnId: id_aDelResName,\r\n count: rCount,\r\n criteriaName: 'Physical_State',\r\n criteriaValue: state_code,\r\n div_name: `dMap${self.IndexDeleteResult}`,\r\n mapLabel: mapLabel,\r\n }, function (event) {\r\n mapLabel.setMap(null);\r\n self.gMapRemoveResult(event.data.div_name, 'boundary', -1, event.data.count, event.data.boundaryObject, event.data.btnId, event.data.criteriaName, event.data.criteriaValue);\r\n });\r\n\r\n self.IndexDeleteResult++;\r\n\r\n $('.root-preloader').hide();\r\n if (self.IsBusiness)\r\n self.gMapEnableButtonAddFilters();\r\n else {\r\n self.Parent.addStateFilter({ StateLong: state_name, StateShort: state_code }, true);\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n /**\r\n * gMapOnPlacesChanged(): Function\r\n * Save selected search place and show it on search field\r\n * */\r\n gMapOnPlacesChanged() {\r\n this.log('OnPlacesChanged', 'Start');\r\n const self: GMap = this;\r\n\r\n const place: google.maps.places.PlaceResult = this.AutoComplete.getPlaces()[0];\r\n this.SearchMarkers.forEach(marker => {\r\n marker.setMap(null)\r\n });\r\n this.SearchMarkers = [];\r\n const bounds: google.maps.LatLngBounds = new window.google.maps.LatLngBounds();\r\n\r\n if (!place.geometry) {\r\n this.log('OnPlacesChanged', 'Returned place contains no geometry');\r\n return;\r\n }\r\n\r\n $('#gMap-search-input').val(place.name);\r\n\r\n const marker = new window.google.maps.Marker({\r\n map: self.SearchMap,\r\n icon: {\r\n url: place.icon.replace('/v1/png_71', ''),\r\n size: new window.google.maps.Size(71, 71),\r\n origin: new window.google.maps.Point(0, 0),\r\n anchor: new window.google.maps.Point(17, 34),\r\n scaledSize: new window.google.maps.Size(25, 25)\r\n },\r\n title: place.name,\r\n position: place.geometry.location,\r\n\r\n });\r\n this.SearchMarkers.push(marker);\r\n if (place.geometry.viewport) {\r\n bounds.union(place.geometry.viewport);\r\n } else {\r\n bounds.extend(place.geometry.location);\r\n }\r\n this.SearchMap.fitBounds(bounds);\r\n this.log('OnPlacesChanged', 'End');\r\n }\r\n\r\n /**\r\n * gMapOnPolygonComplete(): Function\r\n * @param polygon\r\n */\r\n gMapOnPolygonComplete(polygon, isUpdate = false) {\r\n $('.root-preloader').show();\r\n this.lInfoMap.hide();\r\n $('#h4-total-results-map>span').html('...');\r\n if (!isUpdate) this.AllPolygons.push(polygon);\r\n const items = polygon.getPath();\r\n const newArray = [];\r\n for (let i = 0; i < items.getLength(); i++) {\r\n const xy = items.getAt(i);\r\n newArray.push({ LAT: xy.lat(), LONG: xy.lng() });\r\n }\r\n polygon.set('points', newArray.map(x => new google.maps.LatLng(x.LAT, x.LONG)));\r\n\r\n const data = {\r\n arrayPoints: newArray,\r\n NAME: 'Polygon0',\r\n /*NAME: 'Polygon' + self.AllPolygons.length,*/\r\n };\r\n this.Drawer.Id = polygon.get('fakeId');\r\n if (this.Drawer && this.Drawer.Item && !isUpdate) {\r\n this.Drawer.Item.label?.setMap(null);\r\n this.Drawer.Item.label = this.gMapNewLabelDefaultSettings('...', 20, new google.maps.LatLng(this.gMapGetBounds(polygon).getCenter().lat(), this.gMapGetBounds(polygon).getCenter().lng()));\r\n }\r\n this.gMapReturnPolygonCount(data, polygon, isUpdate);\r\n }\r\n\r\n /**\r\n * gMapOnZoomChanged(): Function\r\n */\r\n gMapOnZoomChanged() {\r\n this.log('OnZoomChanged', 'Start', this.ZoomLevel);\r\n this.ZoomLevel = this.SearchMap.getZoom();\r\n this.log('OnZoomChanged', 'End', this.ZoomLevel);\r\n }\r\n\r\n /**\r\n * gMapReadMouseMove(): Function\r\n * Set Postion cursor info\r\n * \r\n * @param e - event\r\n */\r\n gMapReadMouseMove(e) {\r\n const self = this;\r\n self.CursorX = e.clientX;\r\n self.CursorY = e.clientY;\r\n\r\n if (self.lInfoMap.is(':visible')) {\r\n self.lInfoMap.css('left', `${self.IsBusiness ? self.CursorX + 30 : self.CursorX - 262}px`);\r\n self.lInfoMap.css('top', `${self.IsBusiness ? self.CursorY + 30 : self.CursorY - 217}px`);\r\n }\r\n }\r\n\r\n /**\r\n * gMapRemoveConsumerFiltersGroup(): Function\r\n * @param filterName\r\n */\r\n gMapRemoveConsumerFiltersGroup(filterName) {\r\n const self = this;\r\n let filtersOnMap;\r\n switch (filterName) {\r\n case 'county':\r\n filtersOnMap = $('u[data-name=\"county\"]');\r\n for (let i = 0; i < filtersOnMap.length; i++) {\r\n self.Parent.removeCountyFilter($(filtersOnMap[i]).attr('data-county'), true);\r\n }\r\n break;\r\n case 'state':\r\n filtersOnMap = $('u[data-name=\"state\"]');\r\n for (let i = 0; i < filtersOnMap.length; i++) {\r\n self.Parent.removeStateFilter($(filtersOnMap[i]).attr('data-state'), true);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * gMapRemoveFilterByPseudoCode(): Function\r\n * \r\n * @param pseudocode String circle, county, polygon, state\r\n */\r\n gMapRemoveFilterByPseudoCode(pseudocode) {\r\n const self = this;\r\n $('.root-preloader').show();\r\n\r\n let Name = pseudocode;\r\n switch (pseudocode) {\r\n //case 'city':\r\n // Name = 'Physical_City';\r\n // break;\r\n //case 'area_code':\r\n // Name = 'Phone';\r\n // break;\r\n //case 'zip':\r\n // Name = 'Physical_Zip';\r\n // break;\r\n case 'circle':\r\n Name = 'proximity';\r\n for (const k in self.Drawer.Items) {\r\n const it = self.Drawer.Items[k];\r\n if (it.type === google.maps.drawing.OverlayType.CIRCLE) {\r\n it.setMap(null);\r\n }\r\n }\r\n break;\r\n case 'county':\r\n Name = 'County_Description';\r\n break;\r\n case 'polygon':\r\n Name = 'proximity';\r\n for (const k in self.Drawer.Items) {\r\n const it = self.Drawer.Items[k];\r\n if (it.type === google.maps.drawing.OverlayType.POLYGON) {\r\n it.setMap(null);\r\n }\r\n }\r\n // return this.gMapCheckTotalCount();\r\n break;\r\n case 'state':\r\n Name = 'Physical_State';\r\n break;\r\n }\r\n\r\n\r\n if (this.IsBusiness) {\r\n $('#h4-total-results-map > span').html('...');\r\n this.Parent.Filter.RemoveAllFilter(Name, (data) => {\r\n $('#h4-total-results-map>span').html(data.Count);\r\n $('.root-preloader').hide();\r\n });\r\n }\r\n else\r\n this.Parent.removeFilter(Name);\r\n }\r\n\r\n /**\r\n * gMapRemoveResult(): Function\r\n * @param div_name - id (withou #) removing section\r\n * @param type - circle, polygon, boundary\r\n * @param i - ??\r\n * @param count ??\r\n * @param boundaryObject\r\n * @param button_id - button id, when click\r\n * @param criteriaName\r\n * @param criteriaValue\r\n * @param event\r\n */\r\n gMapRemoveResult(div_name, type, i, count, boundaryObject, button_id, criteriaName, criteriaValue, event?) {\r\n const self = this;\r\n\r\n $('.root-preloader').show();\r\n\r\n $('#h4-total-results-map span').html('...');\r\n\r\n if (type == 'circle' || type == 'polygon') {\r\n $('#' + div_name).remove();\r\n // self.gMapCheckTotalCount(true);\r\n boundaryObject.setMap(null);\r\n }\r\n else {\r\n $('#' + div_name).parent().remove();\r\n }\r\n\r\n self.gMapCheckVisibilityOfSelectionBoxes();\r\n\r\n this.Drawer.setMap(null);\r\n\r\n if (type == 'boundary') {\r\n boundaryObject.setProperty('isColorful', false);\r\n this.SearchMap.data.overrideStyle(boundaryObject, {\r\n strokeOpacity: 0.4,\r\n fillOpacity: 0\r\n });\r\n }\r\n $('body').off('click', button_id);\r\n\r\n if (!self.IsBusiness) {\r\n if (criteriaName === 'County_Description') self.Parent.removeCountyFilter(criteriaValue, true);\r\n else if (criteriaName === 'Physical_State') self.Parent.removeStateFilter(criteriaValue, true);\r\n else {\r\n $('.btn-selectMap').removeClass('active');\r\n self.Parent.removeFilter('proximity')\r\n }\r\n }\r\n //if (criteriaName == 'proximity') {\r\n // // if(type == 'circle' || type == 'polygon')\r\n // // console.log();\r\n // // else this.Parent.Filter.RemoveAllFilter(criteriaName, (data) => {\r\n // // $('#h4-total-results-map>span').html(data.Count);\r\n // // })\r\n // //\r\n //}\r\n //else {\r\n // //$('.root-preloader').show();\r\n // //this.Parent.Filter.RemoveFilter(criteriaName, criteriaValue, (data) => {\r\n // // $('.root-preloader').hide();\r\n // // $('#h4-total-results-map>span').html(data.Count);\r\n // //})\r\n\r\n //}\r\n $('.root-preloader').hide();\r\n }\r\n\r\n /**\r\n * gMapReturnCircleCount(): Function\r\n * Create filter criteria for circle, show section with data of selected area\r\n * \r\n * @param req_data - object with NAME - name area, LAT - latitude, LONG - longitude, RAD - area radius, arrayPoints - extreme points of the circle (top, right, bottom, left)\r\n * @param circle - selected area\r\n * @param resize - not new area, it resized\r\n * @returns\r\n */\r\n gMapReturnCircleCount(req_data: { NAME: string, LAT: number, LONG: number, RAD: number, arrayPoints: Array }, circle, resize?: boolean) {\r\n const self = this;\r\n\r\n $('.root-preloader').show();\r\n circle.set('isLoading');\r\n\r\n const criteria = {\r\n Name: 'proximity',\r\n Value: '#POLYGON#|'\r\n }\r\n const fakeId = circle.get('fakeId');\r\n\r\n self.Drawer.Id = fakeId;\r\n if (req_data.arrayPoints.length == 0) return;\r\n req_data.arrayPoints.forEach(\r\n p => {\r\n criteria.Value += p.LONG + ' ' + p.LAT + ','\r\n }\r\n )\r\n criteria.Value += req_data.arrayPoints[0].LONG + ' ' + req_data.arrayPoints[0].LAT;\r\n\r\n if (resize) {\r\n if (this.Drawer && $(`#${fakeId}`).length) {\r\n self.Drawer.Item.label?.setMap(null);\r\n self.Drawer.Item.label = self.gMapNewLabelDefaultSettings('...', 20, new google.maps.LatLng(circle.getCenter().lat(), circle.getCenter().lng()));\r\n }\r\n $(`#${fakeId}`).data('loading', 1);\r\n $(`#${fakeId}`).attr('loading', 1);\r\n $(`#${fakeId} .l-each-result-map`).html('... results');\r\n }\r\n else {\r\n const selectRadius = $('#radius-selection')\r\n if (!(selectRadius.is(':visible'))) {\r\n selectRadius.html('

Radius

');\r\n }\r\n\r\n //const aDelResName = `aDelResC${self.IndexDeleteResult}`; // === old; for multiple circles\r\n //self.IndexDeleteResult++; // === old; for multiple circles\r\n\r\n const aDelResName = `aDelResC0`;\r\n //const div = $(`
Delete
`); // === old; for multiple circles\r\n const div = $(`
Delete
`);\r\n div.data('loading', 1);\r\n div.data('item', circle);\r\n div.appendTo('#radius-selection');\r\n $('#radius-selection').show();\r\n $('#initial-title').hide();\r\n\r\n const id_aDelResName = '#' + aDelResName;\r\n if (self.TempLabel != null) {\r\n self.TempLabels = self.TempLabels.filter(function (t) {\r\n if (t !== self.TempLabel)\r\n return t;\r\n })\r\n self.TempLabel.setMap(null);\r\n }\r\n $('body').on('click', id_aDelResName, {\r\n btnId: id_aDelResName,\r\n boundaryObject: circle.get('item'),\r\n count: '...',\r\n criteriaName: criteria.Name,\r\n criteriaValue: criteria.Value,\r\n div_name: fakeId,\r\n }, (event) => {\r\n self.gMapRemoveResult(fakeId, 'circle', -1, '' + Math.random(), circle.get('item'), id_aDelResName, criteria.Name, criteria.Value, event);\r\n });\r\n\r\n }\r\n\r\n if (self.IsBusiness) {\r\n if (this.FakeReq) {\r\n this.Parent.Filter.AddFilter(criteria.Name, criteria.Value, (data) => OnCallBack(data))\r\n return;\r\n }\r\n $.post('/Business/ReturnProxyCount', { value: criteria.Value }, (data, _, ctx) => {\r\n OnCallBack(data, ctx);\r\n });\r\n }\r\n else {\r\n $.get('/Consumer/ReturnProxyCount', { name: criteria.Name, value: criteria.Value }, (filters) => {\r\n OnCallBack(filters);\r\n })\r\n }\r\n\r\n function OnCallBack(data: ResultCriteria, ctx: jqXHR = null) {\r\n if (self.IsBusiness)\r\n self.Parent.Filter.UpdateFilters(data as any, ctx);\r\n else\r\n self.Parent.addCirclePoligonFilter(data.Criterias.find(item => item.Name === 'proximity'));\r\n\r\n if (self.Drawer && $('#' + fakeId).length) {\r\n self.Drawer.Item.label?.setMap(null);\r\n self.Drawer.Item.label = self.gMapNewLabelDefaultSettings(data.Count, 20, new google.maps.LatLng(circle.getCenter().lat(), circle.getCenter().lng()));\r\n }\r\n $(`#${fakeId}`).data('loading', 0);\r\n $(`#${fakeId}`).attr('loading', 0);\r\n $(`#${fakeId} .l-each-result-map`).html(`${data.Count} results`);\r\n $('#h4-total-results-map span').html(data.Count);\r\n //$('#h4-total-results-map span').html('...');\r\n //self.gMapCheckTotalCount();\r\n }\r\n }\r\n\r\n /**\r\n * gMapReturnProxyCount(): Function\r\n * Only for business\r\n * \r\n * @param criteria\r\n * @param type\r\n * @param callback\r\n */\r\n gMapReturnProxyCount(criteria, type?, callback?: Function) {\r\n const self = this;\r\n\r\n $('.root-preloader').show();\r\n // self.Parent.Filter.AddFilter('proximity', criteria, (_) => {\r\n // $('.root-preloader').hide();\r\n // self.gMapEnableButtonAddFilters();\r\n // }, false, true, true);\r\n //if (self.IsBusiness)\r\n $.post('/Business/ReturnProxyCount', { value: criteria, type: type }, (data, _, ctx) => {\r\n $('.root-preloader').hide();\r\n self.gMapEnableButtonAddFilters();\r\n self.Parent.Filter.UpdateFilters(data as any, ctx);\r\n if (callback) callback(data);\r\n });\r\n //else\r\n // $.post('/Consumer/ReturnProxyCount', { value: criteria, type: type }, (data, _, ctx) => {\r\n // console.log('proxy', data)\r\n // $('.root-preloader').hide();\r\n // //self.Parent.ChangeFilters(data as any);\r\n // self.Parent.AddFilter('Vendor_State_County', data.Criterias.Name, 'Vendor_State_County', 'County');\r\n // //if (callback) callback(data);\r\n // });\r\n }\r\n\r\n /**\r\n * gMapReturnPolygonCount(): Function\r\n * @param req_data\r\n * @param polygon\r\n * @param resize\r\n * @returns\r\n */\r\n gMapReturnPolygonCount(req_data: { NAME: string, arrayPoints: Array<{ LAT: number, LONG: number }> }, polygon, resize?: boolean) {\r\n const self = this;\r\n\r\n $('.root-preloader').show();\r\n const criteria = {\r\n Name: 'proximity',\r\n Value: '#POLYGON#|'\r\n }\r\n const id = polygon.get('fakeId');\r\n\r\n self.Drawer.Id = id;\r\n if (req_data.arrayPoints.length == 0) return;\r\n req_data.arrayPoints.forEach(\r\n p => {\r\n criteria.Value += p.LONG + ' ' + p.LAT + ','\r\n }\r\n )\r\n criteria.Value += req_data.arrayPoints[0].LONG + ' ' + req_data.arrayPoints[0].LAT;\r\n\r\n if (this.FakeReq) {\r\n this.Parent.Filter.AddFilter(criteria.Name, criteria.Value, (data) => OnCallBack(data, null))\r\n return;\r\n }\r\n if (!resize) {\r\n const drawRadius = $('#polygon-selection');\r\n if (!(drawRadius.is(':visible'))) {\r\n drawRadius.html('

Shape

');\r\n }\r\n const aDelResName = 'aDelResP0';\r\n //const aDelResName = 'aDelResP' + (self.IndexDeleteResult + 1);\r\n //const figure_name = (self.IndexDeleteResult + 1) + ' - Polygon';\r\n const div = $(`
Delete
`);\r\n div.data('loading', 1);\r\n div.attr('loading', 1);\r\n div.data('item', polygon);\r\n div.appendTo('#polygon-selection');\r\n\r\n $('#polygon-selection').show();\r\n $('#initial-title').hide();\r\n const id_aDelResName = '#' + aDelResName;\r\n if (self.TempLabel != null) {\r\n self.TempLabels = self.TempLabels.filter(function (t) {\r\n if (t !== self.TempLabel)\r\n return t;\r\n })\r\n self.TempLabel.setMap(null);\r\n }\r\n $('body').on('click', id_aDelResName, {\r\n div_name: '' + id,\r\n count: '...',\r\n boundaryObject: polygon.get('item'),\r\n btnId: id_aDelResName,\r\n criteriaName: criteria.Name,\r\n criteriaValue: criteria.Value\r\n }, function (event) {\r\n self.gMapRemoveResult(id, 'polygon', -1, '...', polygon.get('item'), 'id_aDelResName', criteria.Name, criteria.Value, event);\r\n });\r\n //self.IndexDeleteResult++;\r\n }\r\n else {\r\n $(`#${id}`).data('loading', 0);\r\n $(`#${id}`).attr('loading', 0);\r\n if (self.Drawer && $(`#${id}`).length) {\r\n self.Drawer.Item.label?.setMap(null);\r\n self.Drawer.Item.label = self.gMapNewLabelDefaultSettings('...', 20, new window.google.maps.LatLng(self.gMapGetBounds(polygon).getCenter().lat(), self.gMapGetBounds(polygon).getCenter().lng()));\r\n }\r\n $(`#${id} .l-each-result-map`).html('... results');\r\n }\r\n\r\n if (self.IsBusiness) {\r\n $.post('/Business/ReturnProxyCount', { value: criteria.Value }, (data, _, ctx) => {\r\n OnCallBack(data, ctx);\r\n })\r\n }\r\n else {\r\n $.get('/Consumer/ReturnProxyCount', { name: criteria.Name, value: criteria.Value }, (filters) => {\r\n OnCallBack(filters);\r\n })\r\n }\r\n\r\n function OnCallBack(data: ResultCriteria, ctx?: jqXHR) {\r\n if (self.IsBusiness)\r\n self.Parent.Filter.UpdateFilters(data as any, ctx);\r\n else {\r\n self.Parent.addCirclePoligonFilter(data.Criterias.find(item => item.Name === 'proximity'));\r\n }\r\n\r\n if (self.Drawer && $(`#${id}`).length) {\r\n self.Drawer.Item.label?.setMap(null);\r\n self.Drawer.Item.label = self.gMapNewLabelDefaultSettings(data.Count, 20, new window.google.maps.LatLng(self.gMapGetBounds(polygon).getCenter().lat(), self.gMapGetBounds(polygon).getCenter().lng()));\r\n }\r\n $(`#${id}`).data('loading', 0);\r\n $(`#${id}`).attr('loading', 0);\r\n $(`#${id} .l-each-result-map`).html(`${data.Count} results`);\r\n $('#h4-total-results-map span').html(data.Count);\r\n //$('#h4-total-results-map span').html('...');\r\n //self.gMapCheckTotalCount();\r\n if (!self.IsBusiness) $('.root-preloader').hide();\r\n }\r\n }\r\n\r\n /**\r\n * gMapSearch(): Function\r\n * On input on search map field\r\n * If is data:\r\n * Show dropdown with results\r\n * if enter:\r\n * select first result\r\n */\r\n gMapSearch() {\r\n const self = this;\r\n const gmapSearchInput = $('#gMap-search-input');\r\n\r\n $(gmapSearchInput).on('keydown', (e, data) => {\r\n if (data != undefined) {\r\n return;\r\n }\r\n if (e.keyCode == 13) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n //$(e.target).blur();\r\n\r\n const pac_item = $('.pac-container .pac-item:first');\r\n const pac_item_query = pac_item.find('.pac-item-query');\r\n const pac_item_span = pac_item.find('span:eq(3)');\r\n pac_item.trigger('click');\r\n let firstValue;\r\n if (pac_item_span.text() === '')\r\n firstValue = pac_item_query.text();\r\n else\r\n firstValue = pac_item_query.text() + ', ' + pac_item_span.text();\r\n if (firstValue.length)\r\n (e.target as any).value = firstValue;\r\n const service = new window.google.maps.places.PlacesService(self.SearchMap);\r\n self.Service = service;\r\n service.textSearch({ query: firstValue }, function (result, status) {\r\n if (status == window.google.maps.places.PlacesServiceStatus.OK) {\r\n const place = result[0];\r\n // Clear out the old markers.\r\n self.SearchMarkers.forEach(function (marker) {\r\n marker.setMap(null);\r\n });\r\n self.SearchMarkers = [];\r\n // For each place, get the icon, name and lo\r\n const bounds = new window.google.maps.LatLngBounds();\r\n if (!place.geometry) {\r\n\r\n return;\r\n }\r\n const pacInput = $('#gMap-search-input');\r\n pacInput.val(place.name);\r\n pacInput.blur();\r\n const icon = {\r\n url: place.icon.replace('/v1/png_71', ''),\r\n size: new google.maps.Size(71, 71),\r\n origin: new google.maps.Point(0, 0),\r\n anchor: new google.maps.Point(17, 34),\r\n scaledSize: new google.maps.Size(25, 25)\r\n };\r\n // Create a marker for each place.\r\n self.SearchMarkers.push(new google.maps.Marker({\r\n map: self.SearchMap,\r\n icon: icon,\r\n title: place.name,\r\n position: place.geometry.location\r\n }));\r\n if (place.geometry.viewport) {\r\n // Only geocodes have viewport.\r\n bounds.union(place.geometry.viewport);\r\n } else {\r\n bounds.extend(place.geometry.location);\r\n }\r\n self.SearchMap.fitBounds(bounds);\r\n }\r\n });\r\n\r\n }\r\n\r\n window.google.maps.event.trigger(gmapSearchInput, 'focus')\r\n window.google.maps.event.trigger(gmapSearchInput, 'keydown', {\r\n keyCode: 13\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n ///**\r\n // * gMapOnCircleUpdate(): Function\r\n // * @param circle\r\n // */\r\n //gMapOnCircleUpdate(circle) {\r\n // const self = this;\r\n // const ne = new google.maps.LatLng(circle.getBounds().getNorthEast().lat(), circle.getBounds().getNorthEast().lng()),\r\n // sw = new google.maps.LatLng(circle.getBounds().getSouthWest().lat(), circle.getBounds().getSouthWest().lng()),\r\n // nw = new google.maps.LatLng(ne.lat(), sw.lng()),\r\n // se = new google.maps.LatLng(sw.lat(), ne.lng());\r\n // const newArray = [nw, ne, se, sw];\r\n // circle.set('points', newArray);\r\n // const data = {\r\n // NAME: 'Radius' + self.AllCircles.length,\r\n // LAT: circle.getCenter().lat(),\r\n // LONG: circle.getCenter().lng(),\r\n // RAD: Math.round(circle.getRadius() * 0.000621371 * 100) / 100,\r\n // arrayPoints: newArray.map(x => { return { LAT: x.lat(), LONG: x.lng() } })\r\n // };\r\n // this.gMapReturnCircleCount(data, circle, true);\r\n //}\r\n\r\n ///**\r\n // * gMapOnPolygonUpdate(): Function\r\n // * @param polygon\r\n // */\r\n //gMapOnPolygonUpdate(polygon) {\r\n // const self = this;\r\n // $('.root-preloader').show();\r\n // $('#h4-total-results-map>span').html('...');\r\n // const items = polygon.getPath();\r\n // const newArray = [];\r\n // for (let i = 0; i < items.getLength(); i++) {\r\n // const xy = items.getAt(i);\r\n // newArray.push({ LAT: xy.lat(), LONG: xy.lng() });\r\n // }\r\n // polygon.set('points', newArray.map(x => new google.maps.LatLng(x.LAT, x.LONG)));\r\n // const data = {\r\n // arrayPoints: newArray,\r\n // NAME: 'Polygon0',\r\n // /*NAME: 'Polygon' + self.AllPolygons.length,*/\r\n // };\r\n // this.Drawer.Id = polygon.get('fakeId');\r\n // if (this.Drawer && this.Drawer.Item) {\r\n // this.Drawer.Item.label?.setMap(null);\r\n // this.Drawer.Item.label = this.gMapNewLabelDefaultSettings('...', 20, new google.maps.LatLng(this.gMapGetBounds(polygon).getCenter().lat(), this.gMapGetBounds(polygon).getCenter().lng()));\r\n // }\r\n // this.gMapReturnPolygonCount(data, polygon, true);\r\n //}\r\n\r\n //gMapButtonCicrle() { // === old\r\n // const self = this;\r\n // /**\r\n // * Click on button Select Radius\r\n // * if last selected button was State or County - clear all fields\r\n // * */\r\n // //if (self.Type == 'State' || self.Type == 'County')\r\n // self.gMapClearAll();\r\n\r\n // /**\r\n // * Remove data from select State\r\n // * Reset buttons State and County\r\n // * */\r\n // $('[data-name=\"state\"]').each((el, it) => { $(it).parents('.selection-box__item').remove() });\r\n // $('#btn-selectMapState').removeClass('active');\r\n // $('#btn-selectMapCounty').removeClass('active');\r\n\r\n // /**\r\n // * Business - reset County and State filters\r\n // * TODO Consumer\r\n // * */\r\n // if (self.IsBusiness)\r\n // self.Parent.Filter.RemoveAllFilter('County_Description', () => {\r\n // self.Parent.Filter.RemoveAllFilter('Physical_State', () => {\r\n // self.Parent.Filter.Updates();\r\n // self.Type = 'Circle';\r\n\r\n // self.gMapClearOldShapes();\r\n // // window.google.maps.event.clearListeners(self.SearchMap.data, 'click');\r\n // self.Drawer.resetDrawer();\r\n // self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.CIRCLE);\r\n // });\r\n // });\r\n // else {\r\n // self.Type = 'Circle';\r\n\r\n // self.gMapClearOldShapes();\r\n // // window.google.maps.event.clearListeners(self.SearchMap.data, 'click');\r\n // self.Drawer.resetDrawer();\r\n // self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.CIRCLE);\r\n // }\r\n //}\r\n\r\n //gMapButtonPolygon() { // === old\r\n // const self = this;\r\n // /**\r\n // * Click on button Select Radius\r\n // * if last selected button was State or County - clear all fields\r\n // * */\r\n // //if (self.Type == 'State' || self.Type == 'County')\r\n // self.gMapClearAll();\r\n\r\n // self.Type = 'Shape';\r\n // $('#initial-title .color-dbuilder').html('Use left click to draw your shape and double click to stop when you are done');\r\n // if (self.IsBusiness) {\r\n // self.Parent.Filter.RemoveAllFilter('County_Description', () => {\r\n // self.Parent.Filter.RemoveAllFilter('Physical_State', () => {\r\n // self.Parent.Filter.Updates();\r\n // self.gMapClearOldShapes();\r\n // self.Drawer.resetDrawer();\r\n\r\n // window.google.maps.event.clearListeners(self.SearchMap.data, 'click');\r\n // self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.POLYGON);\r\n // });\r\n // });\r\n // } else {\r\n // self.gMapClearOldShapes();\r\n // self.Drawer.resetDrawer();\r\n\r\n // window.google.maps.event.clearListeners(self.SearchMap.data, 'click');\r\n // self.Drawer.setDrawingMode(window.google.maps.drawing.OverlayType.POLYGON);\r\n // }\r\n //}\r\n}\r\nmodule.exports = GMap;","export class MapLabel extends window.google.maps.OverlayView {\r\n canvas_: HTMLCanvasElement\r\n\r\n constructor(opt_options: any) {\r\n super();\r\n this.set('fontFamily', 'sans-serif');\r\n this.set('fontSize', 12);\r\n this.set('fontColor', '#000000');\r\n this.set('strokeWeight', 4);\r\n this.set('strokeColor', '#ffffff');\r\n this.set('align', 'center');\r\n this.set('zIndex', 1e3);\r\n this.setValues(opt_options);\r\n }\r\n\r\n changed(prop) {\r\n switch (prop) {\r\n case 'fontFamily':\r\n case 'fontSize':\r\n case 'fontColor':\r\n case 'strokeWeight':\r\n case 'strokeColor':\r\n case 'align':\r\n case 'text':\r\n return this.drawCanvas_();\r\n case 'maxZoom':\r\n case 'minZoom':\r\n case 'position':\r\n return this.draw();\r\n }\r\n }\r\n\r\n drawCanvas_() {\r\n const canvas = this.canvas_;\r\n if (!canvas) return;\r\n\r\n const style = canvas.style;\r\n style.zIndex = /** @type number */(this.get('zIndex'));\r\n\r\n const ctx = canvas.getContext('2d');\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n ctx.strokeStyle = this.get('strokeColor');\r\n ctx.fillStyle = this.get('fontColor');\r\n ctx.font = this.get('fontSize') + 'px ' + this.get('fontFamily');\r\n\r\n const strokeWeight = Number(this.get('strokeWeight'));\r\n\r\n const text = this.get('text');\r\n if (text) {\r\n if (strokeWeight) {\r\n ctx.lineWidth = strokeWeight;\r\n ctx.strokeText(text, strokeWeight, strokeWeight);\r\n }\r\n\r\n ctx.fillText(text, strokeWeight, strokeWeight);\r\n\r\n const textMeasure = ctx.measureText(text);\r\n const textWidth = textMeasure.width + strokeWeight;\r\n style.marginLeft = this.getMarginLeft_(textWidth) + 'px';\r\n // Bring actual text top in line with desired latitude.\r\n // Cheaper than calculating height of text.\r\n style.marginTop = '-0.4em';\r\n }\r\n }\r\n\r\n onAdd() {\r\n const canvas = this.canvas_ = document.createElement('canvas');\r\n const style = canvas.style;\r\n style.position = 'absolute';\r\n\r\n const ctx = canvas.getContext('2d');\r\n ctx.lineJoin = 'round';\r\n ctx.textBaseline = 'top';\r\n\r\n this.drawCanvas_();\r\n\r\n const panes = this.getPanes();\r\n if (panes) {\r\n panes.mapPane.appendChild(canvas);\r\n (panes.mapPane as any).style.zIndex = 9999;\r\n }\r\n }\r\n\r\n getMarginLeft_(textWidth: any) {\r\n switch (this.get('align')) {\r\n case 'left':\r\n return 0;\r\n case 'right':\r\n return -textWidth;\r\n }\r\n return textWidth / -2;\r\n }\r\n\r\n draw() {\r\n const projection = this.getProjection();\r\n\r\n if (!projection) {\r\n // The map projection is not ready yet so do nothing\r\n return;\r\n }\r\n\r\n if (!this.canvas_) {\r\n // onAdd has not been called yet.\r\n return;\r\n }\r\n\r\n const latLng: google.maps.LatLng = this.get('position');\r\n if (!latLng) {\r\n return;\r\n }\r\n const pos = projection.fromLatLngToDivPixel(latLng);\r\n\r\n const style = this.canvas_.style;\r\n\r\n style['top'] = pos.y + 'px';\r\n style['left'] = pos.x + 'px';\r\n\r\n style['visibility'] = this.getVisible_();\r\n }\r\n\r\n getVisible_() {\r\n const minZoom = /** @type number */(this.get('minZoom'));\r\n const maxZoom = /** @type number */(this.get('maxZoom'));\r\n\r\n if (minZoom === undefined && maxZoom === undefined) {\r\n return '';\r\n }\r\n\r\n const map = this.getMap();\r\n if (!map) {\r\n return '';\r\n }\r\n\r\n const mapZoom = map.getZoom();\r\n if (mapZoom < minZoom || mapZoom > maxZoom) {\r\n return 'hidden';\r\n }\r\n return '';\r\n }\r\n\r\n onRemove() {\r\n const canvas = this.canvas_;\r\n if (canvas && canvas.parentNode) {\r\n canvas.parentNode.removeChild(canvas);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = MapLabel;"],"names":[],"sourceRoot":""}