Joywork/complexes/js/9a9e3c7c85ff1ccf.js
2026-05-22 21:21:54 +03:00

32 lines
40 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(self["webpackChunkcomplexes"] = self["webpackChunkcomplexes"] || []).push([["src_shared_utils_util_js"],{
/***/ "./src/app/store/fields.js":
/*!*********************************!*\
!*** ./src/app/store/fields.js ***!
\*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useFieldsStore: function() { return /* binding */ useFieldsStore; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _shared_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/shared/api */ \"./src/shared/api.js\");\n/* harmony import */ var vue_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-router */ \"./node_modules/vue-router/dist/vue-router.mjs\");\n\n\n\n\n\nconst useFieldsStore = (0,pinia__WEBPACK_IMPORTED_MODULE_3__.defineStore)(\"fields\", () => {\n const route = (0,vue_router__WEBPACK_IMPORTED_MODULE_4__.useRoute)();\n const decorations = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const paymentTypes = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const complexes_types = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const complex_suggestions = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const countries = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const metros = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const windowsPlacements = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const rf_regions = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const rayons = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)([]);\n const currentRegionInfo = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)({\n region_id: null,\n region_id_user: null,\n kladr: null,\n label: null\n });\n const regionsInfo = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)({\n regions: [],\n regions_list: {}\n });\n const complex_status = [];\n const builders = (0,vue__WEBPACK_IMPORTED_MODULE_1__.reactive)({\n list: [],\n options: []\n });\n const installmentPrograms = (0,vue__WEBPACK_IMPORTED_MODULE_1__.ref)([]);\n const fetchComplexStatuses = () => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getComplexStatus().then(response => {\n if (response.data) {\n complex_status.push(...response.data);\n }\n });\n };\n const refetchDecorationsList = () => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDecorations().then(response => {\n decorations.splice(0);\n decorations.push(...response.data);\n });\n };\n const fetchInstallmentPrograms = async (houseId = null, complexId = null) => {\n try {\n installmentPrograms.value = [];\n let response;\n if (houseId) {\n response = await _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getInstallmentProgramsByHouseId(houseId);\n } else if (complexId) {\n response = await _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getInstallmentProgramsByComplexId(complexId);\n } else {\n response = await _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getInstallments();\n }\n if (response?.data) {\n installmentPrograms.value.push(...response.data);\n }\n } catch (e) {\n console.error('Ошибка загрузки программ рассрочек:', e);\n }\n };\n const fetchComplexSuggestions = isViewPage => _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getComplexSuggestions(isViewPage).then(response => {\n complex_suggestions.push(...response.data);\n });\n (0,vue__WEBPACK_IMPORTED_MODULE_1__.onMounted)(() => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDecorations().then(response => {\n decorations.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getPaymentTypes().then(response => {\n paymentTypes.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getComplexTypes().then(response => {\n complexes_types.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCountry().then(response => {\n countries.push(...response.data.country);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRFRegions().then(response => {\n const currentRegion = response.data.regions.find(region => region.code == response.data.region_id_user);\n if (currentRegion) {\n rayons.push(...currentRegion.rayons);\n }\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getMetro(response.data.region_id_user).then(metrosResponse => {\n metros.push(...metrosResponse.data);\n });\n currentRegionInfo.region_id = parseInt(response.data.region_id_user);\n currentRegionInfo.region_id_user = parseInt(response.data.region_id_user);\n regionsInfo.regions.push(...response.data.regions);\n regionsInfo.regions_list = response.data.regions_list;\n currentRegionInfo.kladr = regionsInfo.regions_list[currentRegionInfo.region_id].kladr;\n currentRegionInfo.label = regionsInfo.regions_list[currentRegionInfo.region_id].label;\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getWindowsPlacements().then(response => {\n windowsPlacements.push(...response.data);\n });\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getBuilders().then(response => {\n builders.list = response.data.list;\n builders.options.push(...response.data.options);\n });\n fetchComplexSuggestions(!route.meta.isViewPage);\n fetchComplexStatuses();\n });\n const changeRegionInfoRegionId = payload => {\n currentRegionInfo.region_id = payload;\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getMetro(currentRegionInfo.region_id).then(response => {\n metros.splice(0);\n });\n };\n const metroListChanged = region_id => {\n _shared_api__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getMetro(region_id).then(response => {\n metros.splice(0);\n metros.push(...response.data);\n });\n };\n (0,vue__WEBPACK_IMPORTED_MODULE_1__.watch)(() => route.meta.isViewPage, (newValue, prevValue) => {\n if (newValue !== prevValue) {\n fetchComplexSuggestions(!newValue);\n }\n }, {\n deep: true\n });\n return {\n decorations,\n paymentTypes,\n complexes_types,\n countries,\n rf_regions,\n rayons,\n metros,\n currentRegionInfo,\n regionsInfo,\n windowsPlacements,\n complex_suggestions,\n changeRegionInfoRegionId,\n metroListChanged,\n builders,\n complex_status,\n refetchDecorationsList,\n installmentPrograms,\n fetchInstallmentPrograms\n };\n});\n\n//# sourceURL=webpack://complexes/./src/app/store/fields.js?");
/***/ }),
/***/ "./src/shared/utils/util.js":
/*!**********************************!*\
!*** ./src/shared/utils/util.js ***!
\**********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ INITIAL_COMPLEX: function() { return /* binding */ INITIAL_COMPLEX; },\n/* harmony export */ adsStates: function() { return /* binding */ adsStates; },\n/* harmony export */ adsTargets: function() { return /* binding */ adsTargets; },\n/* harmony export */ avitoStateCheck: function() { return /* binding */ avitoStateCheck; },\n/* harmony export */ calculateInstallmentPrice: function() { return /* binding */ calculateInstallmentPrice; },\n/* harmony export */ cianStateCheck: function() { return /* binding */ cianStateCheck; },\n/* harmony export */ confirmpopupStyle: function() { return /* binding */ confirmpopupStyle; },\n/* harmony export */ containsNumber: function() { return /* binding */ containsNumber; },\n/* harmony export */ copyObject: function() { return /* binding */ copyObject; },\n/* harmony export */ domclickStateCheck: function() { return /* binding */ domclickStateCheck; },\n/* harmony export */ fixRoomVisible: function() { return /* binding */ fixRoomVisible; },\n/* harmony export */ formatDate: function() { return /* binding */ formatDate; },\n/* harmony export */ formatNumber: function() { return /* binding */ formatNumber; },\n/* harmony export */ generateAlphabetSequence: function() { return /* binding */ generateAlphabetSequence; },\n/* harmony export */ getConstraints: function() { return /* binding */ getConstraints; },\n/* harmony export */ getStatusText: function() { return /* binding */ getStatusText; },\n/* harmony export */ isActiveStatus: function() { return /* binding */ isActiveStatus; },\n/* harmony export */ isEmpty: function() { return /* binding */ isEmpty; },\n/* harmony export */ isErrorStatus: function() { return /* binding */ isErrorStatus; },\n/* harmony export */ isSendToAds: function() { return /* binding */ isSendToAds; },\n/* harmony export */ isWaitStatus: function() { return /* binding */ isWaitStatus; },\n/* harmony export */ join: function() { return /* binding */ join; },\n/* harmony export */ layout_futures: function() { return /* binding */ layout_futures; },\n/* harmony export */ multiSelectStyle: function() { return /* binding */ multiSelectStyle; },\n/* harmony export */ onlyStateCheck: function() { return /* binding */ onlyStateCheck; },\n/* harmony export */ photoToObjectUrl: function() { return /* binding */ photoToObjectUrl; },\n/* harmony export */ room_types: function() { return /* binding */ room_types; },\n/* harmony export */ room_types_which_has_rooms: function() { return /* binding */ room_types_which_has_rooms; },\n/* harmony export */ stateError: function() { return /* binding */ stateError; },\n/* harmony export */ stateWait: function() { return /* binding */ stateWait; },\n/* harmony export */ typeRooms: function() { return /* binding */ typeRooms; },\n/* harmony export */ yandexStateCheck: function() { return /* binding */ yandexStateCheck; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _app_store_fields__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/app/store/fields */ \"./src/app/store/fields.js\");\n\n\n\n\n\nfunction isEmpty(data) {\n if (typeof data === \"object\") {\n if (JSON.stringify(data) === \"{}\" || JSON.stringify(data) === \"[]\") {\n return true;\n } else if (!data) {\n return true;\n }\n return false;\n } else if (typeof data === \"string\") {\n if (!data.trim()) {\n return true;\n }\n return false;\n } else if (typeof data === \"undefined\") {\n return true;\n } else {\n return false;\n }\n}\nconst layout_futures = {\n none_of_the_above: \"Ничего из перечисленного\",\n studio: \"Студия\",\n european_layout: \"Европланировка\",\n available: \"Свободная\"\n};\nconst room_types = {\n apartment: 'Квартира',\n apartments: 'Апартаменты',\n parking_space: 'Машиноместо',\n office: 'Офис',\n storage_room: 'Кладовка',\n warehouse: 'Склад',\n retail_space: 'Торговое Помещение',\n commercial_space: 'Помещение свободного назначения',\n townhouse: 'Таунхаус',\n villa: 'Вилла',\n penthouse: 'Пентхаус',\n duplex: 'Дуплекс',\n cottage: 'Коттедж'\n};\nconst room_types_which_has_rooms = ['apartment', 'apartments', 'retail_space', 'commercial_space', 'townhouse', 'villa', 'penthouse', 'duplex', 'cottage'];\nconst calculateInstallmentPrice = (room, installment) => {\n const basePrice = parseFloat(room.installment_price || 0);\n const initialPayment = parseFloat(installment.initial_payment || 0) / 100 * basePrice;\n const remainingAmount = basePrice - initialPayment;\n const interestRate = parseFloat(installment.interest_rate || 0) / 100;\n const totalWithInterest = remainingAmount * (1 + interestRate);\n const total = basePrice + (interestRate > 0 ? totalWithInterest - remainingAmount : 0);\n\n // Убираем лишние нули после точки\n return parseFloat(total.toFixed(10));\n};\nlet roomids = [];\nconst fixRoomVisible = (room, filters) => {\n room.visible = true;\n const isMoreThenFive = filters.rooms.includes('5-more');\n const isSelectedStudio = filters.rooms.includes('studio');\n const isRoomCountSelected = filters.rooms.includes(String(room.rooms_count));\n const fieldsStore = (0,_app_store_fields__WEBPACK_IMPORTED_MODULE_4__.useFieldsStore)();\n if (filters.rooms.length) {\n if (filters.selectedTypes.some(type => room_types_which_has_rooms.includes(type))) {\n if (isSelectedStudio) {\n room.visible = room.layout_feature == 'studio' || isRoomCountSelected && room.layout_feature != 'studio' || isMoreThenFive && room.rooms_count >= 5;\n } else {\n room.visible = isRoomCountSelected && room.layout_feature != 'studio' || isMoreThenFive && room.rooms_count >= 5;\n }\n }\n }\n if (filters.onlyFree && room.complex_status_info.status_type !== 'available') {\n room.visible = false;\n }\n if (filters.price.min !== '') {\n if (!filters.useSquarePrice) {\n if (filters.price.min > room.total_amount) {\n room.visible = false;\n }\n } else {\n if (filters.price.min > room.total_amount / room.area) {\n room.visible = false;\n }\n }\n }\n if (filters.price.max !== '') {\n if (!filters.useSquarePrice) {\n if (filters.price.max < room.total_amount) {\n room.visible = false;\n }\n } else {\n if (filters.price.max < room.total_amount / room.area) {\n room.visible = false;\n }\n }\n }\n if (filters.square.min !== '' && filters.square.min > room.area) {\n room.visible = false;\n }\n if (filters.square.max !== '' && filters.square.max < room.area) {\n room.visible = false;\n }\n if (filters.squareKitchen.max !== '' && (!room.kitchen_area ? true : filters.squareKitchen.max < +room.kitchen_area)) {\n room.visible = false;\n }\n if (filters.squareKitchen.min !== '' && (!room.kitchen_area ? true : filters.squareKitchen.min > +room.kitchen_area)) {\n room.visible = false;\n }\n if (filters.selectedTypes.length && !filters.selectedTypes.includes(room.type)) {\n room.visible = false;\n }\n if (filters.floor.from !== '' && room.floor && parseInt(filters.floor.from) > room.floor) {\n room.visible = false;\n }\n if (filters.floor.to !== '' && room.floor && parseInt(filters.floor.to) < room.floor) {\n room.visible = false;\n }\n if (filters.selectedDecorations && filters.selectedDecorations.length && !filters.selectedDecorations.map(num => parseInt(num)).includes(room.decoration_id)) {\n room.visible = false;\n }\n if (filters.selectedWindowsPlacements && filters.selectedWindowsPlacements.length && !filters.selectedWindowsPlacements.map(num => parseInt(num)).includes(room.windows_placement_id)) {\n room.visible = false;\n }\n if (filters.number && room.number != filters.number) {\n room.visible = false;\n }\n\n // Фильтрация по способам оплаты\n if (filters.selectedPaymentTypes && filters.selectedPaymentTypes.length > 0) {\n let roomPaymentTypes = [];\n try {\n roomPaymentTypes = Array.isArray(room.payment_types) ? room.payment_types : JSON.parse(room.payment_types || '[]');\n } catch (e) {\n console.warn('Invalid payment_types JSON for room', room.id);\n roomPaymentTypes = [];\n }\n const hasPaymentMatch = filters.selectedPaymentTypes?.some(pt => roomPaymentTypes.includes(pt));\n if (!hasPaymentMatch) {\n room.visible = false;\n return;\n }\n\n // Installment-specific filters\n if (filters.selectedPaymentTypes.includes('INSTALLMENT')) {\n if (!fieldsStore.installmentPrograms?.length && !filters.selectedInstallments.length > 0 && !filters.customSelectedInstallments.length > 0) {\n room.visible = true;\n return;\n }\n const matchingInstallment = Array.isArray(room.installment_plans) && room.installment_plans.some(installment => {\n const basePrice = room.installment_price;\n const initialPaymentPercent = parseFloat(installment.initial_payment || 0);\n const actualInitialPayment = initialPaymentPercent / 100 * basePrice;\n\n // Проверка выбранных рассрочек\n if (filters.selectedInstallments?.length > 0 || filters.customSelectedInstallments.length > 0) {\n if (!filters.selectedInstallments.includes(installment.id) && !filters.customSelectedInstallments.includes(installment.id)) {\n return false;\n }\n }\n\n // Проверка суммы первоначального взноса\n if (filters.initialPayment !== '' && filters.initialPayment !== null) {\n const userInitialPayment = parseFloat(filters.initialPayment);\n if (room.installment_price <= 0 || actualInitialPayment > userInitialPayment) {\n return false;\n }\n }\n\n // Проверка срока (end_date)\n if (filters.paymentTerm !== '' && filters.paymentTerm !== null) {\n const maxPaymentTerm = parseFloat(filters.paymentTerm);\n const currentDate = new Date();\n const endDate = new Date(installment.house_installment_end_date);\n const monthsDiff = (endDate - currentDate) / (1000 * 60 * 60 * 24 * 30.44);\n if (isNaN(monthsDiff) || monthsDiff < maxPaymentTerm || monthsDiff < 0) {\n return false;\n }\n }\n\n // Проверка цены в рассрочку\n const installmentPrice = calculateInstallmentPrice(room, installment);\n if (filters.installmentPrice?.min !== '' && filters.installmentPrice?.min !== null) {\n const minPrice = parseFloat(filters.installmentPrice.min);\n if (room.installment_price < minPrice) {\n return false;\n }\n }\n if (filters.installmentPrice?.max !== '' && filters.installmentPrice?.max !== null) {\n const maxPrice = parseFloat(filters.installmentPrice.max);\n if (room.installment_price > maxPrice) {\n return false;\n }\n }\n return true;\n });\n if (!matchingInstallment) {\n room.visible = false;\n }\n }\n }\n\n //если выбрана просто площадка\n if (filters.adsTargets && filters.adsTargets.length && (!filters.adsStates || !filters.adsStates.length)) {\n //если у нас выбран домклик\n if (filters.adsTargets.map(num => parseInt(num)).includes(4) && !room.add_to_domclick_feed) {\n room.visible = false;\n }\n //если у нас выбран авито\n if (filters.adsTargets.map(num => parseInt(num)).includes(1) && !room.add_to_avito_feed) {\n room.visible = false;\n }\n //если у нас выбран циан\n if (filters.adsTargets.map(num => parseInt(num)).includes(2) && !room.add_to_cian_feed) {\n room.visible = false;\n }\n //если у нас выбран яндекс\n if (filters.adsTargets.map(num => parseInt(num)).includes(3) && !room.add_to_yandex_feed) {\n room.visible = false;\n }\n }\n //если выбран просто статус\n if (filters.adsStates && filters.adsStates.length && (!filters.adsTargets || !filters.adsTargets.length)) {\n onlyStateCheck(room, filters);\n }\n //если выбрана и площадка и статус\n if (filters.adsTargets && filters.adsTargets.length && filters.adsStates && filters.adsStates.length) {\n let visD = false;\n let visC = false;\n let visY = false;\n let visA = false;\n\n //если у нас выбран домклик\n if (filters.adsTargets.map(num => parseInt(num)).includes(4)) {\n visD = domclickStateCheck(room, filters);\n }\n //если у нас выбран авито\n if (filters.adsTargets.map(num => parseInt(num)).includes(1)) {\n visA = avitoStateCheck(room, filters);\n }\n //если у нас выбран циан\n if (filters.adsTargets.map(num => parseInt(num)).includes(2)) {\n visC = cianStateCheck(room, filters);\n }\n //если у нас выбран яндекс\n if (filters.adsTargets.map(num => parseInt(num)).includes(3)) {\n visY = yandexStateCheck(room, filters);\n }\n room.visible = !(!visD && !visD && !visC && !visY);\n }\n};\nconst stateError = room => {\n return room.add_to_domclick_feed && room.ads_domclick_error || room.add_to_avito_feed && room.ads_avito_error || room.add_to_cian_feed && room.ads_cian_error || room.add_to_yandex_feed && room.ads_yandex_error;\n};\nconst stateWait = room => {\n return room.add_to_domclick_feed && !room.ads_domclick_error && !room.ads_domclick_url || room.add_to_avito_feed && !room.ads_avito_error && !room.ads_avito_url || room.add_to_cian_feed && !room.ads_cian_error && !room.ads_cian_url || room.add_to_yandex_feed && !room.ads_yandex_error && !room.ads_yandex_url;\n};\nconst onlyStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_domclick_feed && !room.add_to_avito_feed && !room.add_to_cian_feed && !room.add_to_yandex_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && stateWait(room)) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && (room.add_to_domclick_feed && room.ads_domclick_error || room.add_to_avito_feed && room.ads_avito_error || room.add_to_cian_feed && room.ads_cian_error || room.add_to_yandex_feed && room.ads_yandex_error)) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && !stateWait(room) && !stateError(room) && (room.add_to_domclick_feed && room.ads_domclick_url || room.add_to_avito_feed && room.ads_avito_url || room.add_to_yandex_feed && room.ads_yandex_url || room.add_to_cian_feed && room.ads_cian_url)) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n};\nconst domclickStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_domclick_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_domclick_feed && !room.ads_domclick_error && !room.ads_domclick_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_domclick_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_domclick_feed && room.ads_domclick_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst avitoStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_avito_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_avito_feed && !room.ads_avito_error && !room.ads_avito_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_avito_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_avito_feed && room.ads_avito_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst cianStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_cian_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_cian_feed && !room.ads_cian_error && !room.ads_cian_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_cian_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_cian_feed && room.ads_cian_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst yandexStateCheck = (room, filters) => {\n //делаем наоборот, считаем, что изначально не видно\n let visible = false;\n\n //если не размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(1) && !room.add_to_yandex_feed) {\n visible = true;\n }\n //если отправлен\n if (filters.adsStates.map(num => parseInt(num)).includes(2) && room.add_to_yandex_feed && !room.ads_yandex_error && !room.ads_yandex_url) {\n visible = true;\n }\n //если с ошибками\n if (filters.adsStates.map(num => parseInt(num)).includes(3) && room.ads_yandex_error) {\n visible = true;\n }\n //если размещается\n if (filters.adsStates.map(num => parseInt(num)).includes(4) && room.add_to_yandex_feed && room.ads_yandex_url) {\n visible = true;\n }\n if (!visible) {\n room.visible = false;\n }\n return visible;\n};\nconst typeRooms = [{\n name: \"Студия\",\n value: \"studio\"\n}, {\n name: \"1\",\n value: \"1\"\n}, {\n name: \"2\",\n value: \"2\"\n}, {\n name: \"3\",\n value: \"3\"\n}, {\n name: \"4\",\n value: \"4\"\n}, {\n name: \"5 и более\",\n value: \"5-more\"\n}];\nconst adsTargets = [{\n name: \"Авито\",\n value: \"1\"\n}, {\n name: \"Циан\",\n value: \"2\"\n}, {\n name: \"Яндекс\",\n value: \"3\"\n}, {\n name: \"Домклик\",\n value: \"4\"\n}];\nconst adsStates = [{\n name: \"Не размещается\",\n value: \"1\"\n}, {\n name: \"Отправлен\",\n value: \"2\"\n}, {\n name: \"С ошибками\",\n value: \"3\"\n}, {\n name: \"Размещается\",\n value: \"4\"\n}];\nconst containsNumber = str => {\n let regex = /\\d/;\n return regex.test(str);\n};\nconst isErrorStatus = apartament => {\n return apartament.add_to_domclick_feed && apartament.ads_domclick_error || apartament.add_to_avito_feed && apartament.ads_avito_error || apartament.add_to_cian_feed && apartament.ads_cian_error || apartament.add_to_yandex_feed && apartament.ads_yandex_error;\n};\nconst isWaitStatus = apartament => {\n let waitSt = false;\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && !apartament.ads_domclick_url) {\n waitSt = true;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && !apartament.ads_avito_url) {\n waitSt = true;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && !apartament.ads_cian_url) {\n waitSt = true;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && !apartament.ads_yandex_url) {\n waitSt = true;\n }\n return waitSt;\n};\nconst isSendToAds = apartament => {\n return apartament.add_to_cian_feed || apartament.add_to_avito_feed || apartament.add_to_domclick_feed || apartament.add_to_yandex_feed;\n};\nconst isActiveStatus = apartament => {\n let activeSt = false;\n if (!isWaitStatus(apartament) && !isErrorStatus(apartament)) {\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && apartament.ads_domclick_url) {\n activeSt = true;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && apartament.ads_avito_url) {\n activeSt = true;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && apartament.ads_cian_url) {\n activeSt = true;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && apartament.ads_yandex_url) {\n activeSt = true;\n }\n }\n return activeSt;\n};\nconst getStatusText = apartament => {\n let statusText = \"\";\n if (apartament.ads_domclick_error) {\n statusText = statusText + `<div>Домклик - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_domclick_error + `</div>`;\n }\n if (apartament.ads_avito_error) {\n statusText = statusText + `<div>Авито - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_avito_error + `</div>`;\n }\n if (apartament.ads_yandex_error) {\n statusText = statusText + `<div>Яндекс - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_yandex_error + `</div>`;\n }\n if (apartament.ads_cian_error) {\n statusText = statusText + `<div>Циан - ошибка размещения</div><h4 style='font-weight: bold;'>Ошибки размещения</h4><div style='font-size: 12px;'>` + apartament.ads_cian_error + `</div>`;\n }\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && !apartament.ads_domclick_url) {\n statusText = statusText + `<div>Домклик - отправлен</div>`;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && !apartament.ads_avito_url) {\n statusText = statusText + `<div>Авито - отправлен</div>`;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && !apartament.ads_cian_url) {\n statusText = statusText + `<div>Циан - отправлен</div>`;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && !apartament.ads_yandex_url) {\n statusText = statusText + `<div>Яндекс - отправлен</div>`;\n }\n if (apartament.add_to_domclick_feed && !apartament.ads_domclick_error && apartament.ads_domclick_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_domclick_url + `' target='_blank'>Домклик</a> - размещено</div>`;\n }\n if (apartament.add_to_avito_feed && !apartament.ads_avito_error && apartament.ads_avito_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_avito_url + `' target='_blank'>Авито</a> - размещено</div>`;\n }\n if (apartament.add_to_cian_feed && !apartament.ads_cian_error && apartament.ads_cian_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_cian_url + `' target='_blank'>Циан</a> - размещено</div>`;\n }\n if (apartament.add_to_yandex_feed && !apartament.ads_yandex_error && apartament.ads_yandex_url) {\n statusText = statusText + `<div style='pointer-events: initial;'><a style='border-bottom: 1px solid;' href='` + apartament.ads_yandex_url + `' target='_blank'>Яндекс</a> - размещено</div>`;\n }\n return statusText;\n};\nconst formatNumber = number => {\n if (!number) return 0;\n let numberStr = number.toString();\n let parts = numberStr.split('.');\n let integerPart = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n let formattedNumber = parts.length === 2 ? integerPart + '.' + parts[1] : integerPart;\n return formattedNumber;\n};\nconst join = (arr /*, separator */) => {\n var separator = arguments.length > 1 ? arguments[1] : \", \";\n return arr.filter(function (n) {\n return n;\n }).join(separator);\n};\nconst getConstraints = (kladr, label) => {\n let ids = new Array();\n if (kladr == 0 && label == 'москва и московская область') {\n ids.push({\n kladr_id: \"7700000000000\"\n });\n ids.push({\n kladr_id: \"5000000000000\"\n });\n } else if (kladr == 0 && label == 'санкт-петербург и ленинградская обл') {\n ids.push({\n kladr_id: \"7800000000000\"\n });\n ids.push({\n kladr_id: \"4700000000000\"\n });\n } else if (kladr == 0 && label == 'крым и севастополь') {\n ids.push({\n kladr_id: \"9100000000000\"\n });\n ids.push({\n kladr_id: \"9200000000000\"\n });\n } else {\n ids.push({\n kladr_id: kladr.toString()\n });\n }\n return ids;\n};\nconst INITIAL_COMPLEX = {\n id: 0,\n type: 'complex',\n name: '',\n address: {\n \"id\": null,\n \"complex_id\": null,\n \"address\": \"\",\n // \"rayon_id\": null,\n \"rayon\": null,\n \"city\": \"\",\n \"street\": \"\",\n \"korpus\": \"\",\n \"dom\": \"\",\n \"litera\": \"\",\n \"kladr_id\": \"\",\n \"latitude\": \"\",\n \"longitude\": \"\"\n },\n actions: [],\n address_line: '',\n rf_region_id: 0,\n country_id: 171,\n rf_region_rayon: '',\n rayon_id: 0,\n city: '',\n street: '',\n korpus: '',\n dom: '',\n litera: '',\n kladr_id: '',\n region_kladr_id: '',\n latitude: '',\n longitude: '',\n lines: [],\n deadline: [],\n builder_id: 0,\n images: [],\n payment_types: [],\n contract_type: '',\n housing_class_id: 0,\n first_floor: 0,\n last_floor: 0,\n number_apartments: 0,\n ceiling_height: 0,\n decoration_id: 0,\n parking: 0,\n closed_area: 0,\n protected_area: 0,\n concierge: 0,\n house_type: 0,\n house_material: 0,\n metros: [],\n infrastructure: {\n 'school': 0,\n 'kindergarten': 0,\n 'playgrounds': 0,\n 'sportsgrounds': 0,\n 'cafes': 0,\n 'shops': 0,\n 'beautysalons': 0,\n 'fitnessclub': 0,\n 'park': 0,\n 'trc': 0,\n 'commercialobjects': 0\n },\n metro: {\n 'metro_id': null,\n 'subway_time': '',\n 'subway_distance': null\n },\n dop: {\n domclick_id: null,\n title_desc: '',\n text_desc: '',\n title_desc_dop: '',\n text_desc_dop: '',\n url_video: '',\n type_video: null,\n UTP: [],\n UTP2: [],\n phone_op: '',\n phone_mobil_op: null,\n address_op: '',\n latitude_op: '',\n longitude_op: '',\n timezone_op: '',\n workdays_op: null,\n opentime_op: '',\n closetime_op: ''\n },\n cadastral_number: null,\n has_show_room: 0\n};\nconst confirmpopupStyle = {\n root: {\n class: [\"!p-3.5\"]\n },\n content: {\n class: [\"!p-0 !mb-2.5\"]\n },\n message: {\n class: [\"!m-0 !text-base !font-normal\"]\n },\n footer: {\n class: [\"!flex !flex-row-reverse !justify-center !gap-x-3 !p-0\"]\n },\n rejectButton: {\n class: [\"!px-3 !font-normal !m-0\"]\n },\n acceptButton: {\n class: [\"!px-3 !font-normal\"]\n }\n};\nconst photoToObjectUrl = url => URL.createObjectURL(url);\nconst copyObject = object => JSON.parse(JSON.stringify(object));\nconst generateAlphabetSequence = number => {\n let result = [];\n function numberToAlphabet(n) {\n let chars = [];\n while (n > 0) {\n let remainder = (n - 1) % 26;\n chars.push(String.fromCharCode(remainder + 65));\n n = Math.floor((n - 1) / 26);\n }\n return chars.reverse().join('');\n }\n for (let i = 1; i <= number; i++) {\n result.push(numberToAlphabet(i));\n }\n return result;\n};\nconst multiSelectStyle = {\n root: {\n class: ['!rounded !border !border-grey-400 !p-3 !h-max']\n },\n input: {\n class: ['!flex !flex-row !items-center !p-0 !text-sm !leading-none !text-grey-900 !mr-3']\n },\n wrapper: {\n class: ['!p-0']\n },\n item: {\n class: ['!text-sm']\n },\n label: {\n class: ['!p-0']\n },\n header: {\n class: ['custom-header']\n }\n};\nconst formatDate = utcDateStr => {\n const [datePart, timePart] = utcDateStr.split(' ');\n const [year, month, day] = datePart.split('-').map(Number);\n const [hour, minute, second] = timePart.split(':').map(Number);\n const utcDate = new Date(Date.UTC(year, month - 1, day, hour, minute, second));\n const options = {\n timeZone: 'Asia/Yerevan',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false // 24-hour format\n };\n const formatter = new Intl.DateTimeFormat('en-US', options);\n const timeZonedDate = formatter.format(utcDate);\n return timeZonedDate;\n};\n\n//# sourceURL=webpack://complexes/./src/shared/utils/util.js?");
/***/ })
}]);