@ozdao/martyrs 0.2.562 → 0.2.564
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{abac-DC2x92Pa.js → abac-DYoheWuc.js} +2 -1
- package/dist/{core.logger-VRHh-WUW.js → core.cache-DALYFDdy.js} +10 -59
- package/dist/core.logger-C3q8A9dl.js +51 -0
- package/dist/core.server.js +1 -1
- package/dist/{crud-DFFgLl09.js → crud-C7FSTUes.js} +2 -1
- package/dist/inventory.server.js +4 -3
- package/dist/{main-TV4u6Jux.js → main-CmjWiDVF.js} +402 -402
- package/dist/marketplace.server.js +389 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js +1 -3
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js.map +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js +1 -1
- package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/marketplace.client.js +5 -9
- package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/{layouts → pages}/Marketplace.vue.js +14 -18
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -0
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js +39 -0
- package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js.map +1 -0
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +0 -16
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/music.server.js +4 -3
- package/dist/orders.server.js +2 -2
- package/dist/organizations.server.js +9 -219
- package/dist/products.server.js +4 -3
- package/dist/queryProcessorOrganizations-BB11WFpc.js +221 -0
- package/dist/rents.server.js +2 -1
- package/dist/{web-Cq5tyhkl.js → web-cNKIl_cL.js} +1 -1
- package/package.json +1 -1
- package/src/modules/core/views/components/sections/filters/FiltersGroup.vue +3 -4
- package/src/modules/landing/components/sections/SectionFeatures.vue +1 -1
- package/src/modules/marketplace/marketplace.client.js +3 -10
- package/src/modules/marketplace/views/components/{layouts → pages}/Marketplace.vue +7 -16
- package/src/modules/marketplace/views/router/marketplace.router.js +37 -45
- package/src/modules/marketplace/views/store/marketplace.js +0 -16
- package/dist/martyrs/src/modules/marketplace/marketplace.router.js +0 -63
- package/dist/martyrs/src/modules/marketplace/marketplace.router.js.map +0 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +0 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +0 -73
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +0 -1
- package/src/modules/marketplace/marketplace.router.js +0 -66
- package/src/modules/marketplace/views/components/pages/Catalog.vue +0 -74
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
// Router
|
|
2
2
|
import addRoutes from '@martyrs/src/modules/core/views/router/addRoutes.js';
|
|
3
|
-
import { getRoutes } from './marketplace.router.js';
|
|
3
|
+
import { getRoutes } from './views/router/marketplace.router.js';
|
|
4
4
|
|
|
5
5
|
//Store
|
|
6
6
|
import * as storeMarketplace from './views/store/marketplace.js';
|
|
7
7
|
|
|
8
|
-
//
|
|
9
|
-
import Marketplace from './views/components/
|
|
8
|
+
// Pages
|
|
9
|
+
import Marketplace from './views/components/pages/Marketplace.vue';
|
|
10
10
|
|
|
11
11
|
// Sections
|
|
12
12
|
import SectionMenu from './views/components/sections/SectionMenu.vue';
|
|
13
13
|
|
|
14
|
-
// Pages
|
|
15
|
-
import Catalog from './views/components/pages/Catalog.vue';
|
|
16
|
-
|
|
17
14
|
// Пример функции инициализации для модуля маркетплейса
|
|
18
15
|
function initializeMarketplace(app, store, router, options = {}) {
|
|
19
16
|
const routes = getRoutes(options);
|
|
@@ -39,8 +36,6 @@ const ModuleMarketplace = {
|
|
|
39
36
|
// Sections
|
|
40
37
|
SectionMenu,
|
|
41
38
|
// Pages
|
|
42
|
-
Catalog,
|
|
43
|
-
// Layouts
|
|
44
39
|
Marketplace,
|
|
45
40
|
},
|
|
46
41
|
},
|
|
@@ -49,8 +44,6 @@ const ModuleMarketplace = {
|
|
|
49
44
|
export {
|
|
50
45
|
// Elements
|
|
51
46
|
// Pages
|
|
52
|
-
Catalog,
|
|
53
|
-
// Layouts
|
|
54
47
|
Marketplace,
|
|
55
48
|
// Blocks
|
|
56
49
|
// Sections
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<div class="o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative">
|
|
24
24
|
<div class="w-100 o-y-scroll h-100">
|
|
25
25
|
<!-- Location Filter -->
|
|
26
|
-
<div class="mn-b-medium">
|
|
26
|
+
<div v-if="!route.params.country && !route.params.state && !route.params.city" class="mn-b-medium">
|
|
27
27
|
<h4 class="mn-b-small">Location</h4>
|
|
28
28
|
<Field
|
|
29
29
|
v-model="searchLocation"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<!-- Filters Group -->
|
|
47
47
|
<FiltersGroup
|
|
48
48
|
:filters="marketplace.state.filter.options"
|
|
49
|
-
v-model:selected="
|
|
49
|
+
v-model:selected="marketplace.state.filter.selected"
|
|
50
50
|
:immediate="true"
|
|
51
51
|
:showHeader="false"
|
|
52
52
|
:showApplyButton="false"
|
|
@@ -76,10 +76,10 @@
|
|
|
76
76
|
location: localLocation?.location,
|
|
77
77
|
lookup: ['products','spots'],
|
|
78
78
|
contain: ['products'],
|
|
79
|
-
priceMin:
|
|
80
|
-
priceMax:
|
|
81
|
-
delivery:
|
|
82
|
-
payment:
|
|
79
|
+
priceMin: marketplace.state.filter.selected.price?.min,
|
|
80
|
+
priceMax: marketplace.state.filter.selected.price?.max,
|
|
81
|
+
delivery: marketplace.state.filter.selected.delivery?.length > 0 ? marketplace.state.filter.selected.delivery.join(',') : undefined,
|
|
82
|
+
payment: marketplace.state.filter.selected.payment?.length > 0 ? marketplace.state.filter.selected.payment.join(',') : undefined
|
|
83
83
|
}"
|
|
84
84
|
v-slot="{
|
|
85
85
|
items
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
<div class="mn-b-thin mobile-only">
|
|
90
90
|
<Filters
|
|
91
91
|
v-model:filters="marketplace.state.filter.options"
|
|
92
|
-
v-model:selected="
|
|
92
|
+
v-model:selected="marketplace.state.filter.selected"
|
|
93
93
|
class=""
|
|
94
94
|
/>
|
|
95
95
|
</div>
|
|
@@ -146,15 +146,6 @@
|
|
|
146
146
|
// Location filter
|
|
147
147
|
const searchLocation = ref('');
|
|
148
148
|
|
|
149
|
-
const selectedFilters = ref({
|
|
150
|
-
price: { min: null, max: null },
|
|
151
|
-
delivery: [],
|
|
152
|
-
payment: [],
|
|
153
|
-
availabilityDate: null,
|
|
154
|
-
rating: null
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
|
|
158
149
|
if (route.params) {
|
|
159
150
|
// Загружаем новые значения из параметров маршрута в состояние
|
|
160
151
|
let newState = {
|
|
@@ -1,50 +1,42 @@
|
|
|
1
|
-
|
|
1
|
+
function buildMarketplaceTree(options = {}) {
|
|
2
|
+
const marketplaceComponent = options.marketplaceComponent || (() => import(
|
|
3
|
+
/* webpackChunkName: 'marketplace-page' */
|
|
4
|
+
'../components/pages/Marketplace.vue'
|
|
5
|
+
));
|
|
2
6
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
|
|
19
|
-
meta: {
|
|
20
|
-
title: {
|
|
21
|
-
en: 'Marketplace',
|
|
22
|
-
ru: 'Маркетплейс',
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
path: 'marketplace/:country/:state',
|
|
28
|
-
name: 'MarketplaceState',
|
|
29
|
-
component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
|
|
30
|
-
meta: {
|
|
31
|
-
title: {
|
|
32
|
-
en: 'Marketplace',
|
|
33
|
-
ru: 'Маркетплейс',
|
|
7
|
+
const buildName = (suffix) => {
|
|
8
|
+
const prefix = options.routeNamePrefix || '';
|
|
9
|
+
return suffix ? `${prefix}${suffix}` : prefix || undefined;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
return [
|
|
13
|
+
{
|
|
14
|
+
path: ':country?/:state?/:city?',
|
|
15
|
+
name: buildName('Marketplace') || 'Marketplace',
|
|
16
|
+
component: marketplaceComponent,
|
|
17
|
+
meta: {
|
|
18
|
+
title: {
|
|
19
|
+
en: 'Marketplace',
|
|
20
|
+
ru: 'Маркетплейс',
|
|
21
|
+
},
|
|
34
22
|
},
|
|
35
23
|
},
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function getRoutes(options = {}) {
|
|
28
|
+
const route = options.route || 'Home';
|
|
29
|
+
const routes = [];
|
|
30
|
+
|
|
31
|
+
routes.push({
|
|
32
|
+
parentName: route,
|
|
33
|
+
config: {
|
|
34
|
+
basePath: options.basePath || 'marketplace',
|
|
35
|
+
routes: buildMarketplaceTree(options),
|
|
46
36
|
},
|
|
47
|
-
}
|
|
48
|
-
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
return routes;
|
|
40
|
+
}
|
|
49
41
|
|
|
50
|
-
export default
|
|
42
|
+
export default { getRoutes };
|
|
@@ -58,22 +58,6 @@ const state = reactive({
|
|
|
58
58
|
{ label: 'Bank Transfer', value: 'bank' },
|
|
59
59
|
],
|
|
60
60
|
},
|
|
61
|
-
{
|
|
62
|
-
title: 'Availability Date',
|
|
63
|
-
value: 'availabilityDate',
|
|
64
|
-
type: 'date'
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
title: 'Rating',
|
|
68
|
-
value: 'rating',
|
|
69
|
-
type: 'radio',
|
|
70
|
-
options: [
|
|
71
|
-
{ label: '5 stars', value: '5' },
|
|
72
|
-
{ label: '4+ stars', value: '4' },
|
|
73
|
-
{ label: '3+ stars', value: '3' },
|
|
74
|
-
{ label: 'Any rating', value: 'any' }
|
|
75
|
-
]
|
|
76
|
-
},
|
|
77
61
|
],
|
|
78
62
|
},
|
|
79
63
|
sort: {
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
function buildMarketplaceTree(options = {}) {
|
|
2
|
-
const layoutComponent = options.layoutComponent || (() => import(
|
|
3
|
-
/* webpackChunkName: 'marketplace-layout' */
|
|
4
|
-
"./views/components/layouts/Marketplace.vue.js"
|
|
5
|
-
));
|
|
6
|
-
const catalogComponent = options.catalogComponent || (() => import(
|
|
7
|
-
/* webpackChunkName: 'marketplace-catalog' */
|
|
8
|
-
"./views/components/pages/Catalog.vue.js"
|
|
9
|
-
));
|
|
10
|
-
const buildName = (suffix) => {
|
|
11
|
-
const prefix = options.routeNamePrefix || "";
|
|
12
|
-
return suffix ? `${prefix}${suffix}` : prefix || void 0;
|
|
13
|
-
};
|
|
14
|
-
return [
|
|
15
|
-
{
|
|
16
|
-
path: "",
|
|
17
|
-
name: buildName("Marketplace") || "Marketplace",
|
|
18
|
-
component: layoutComponent,
|
|
19
|
-
meta: {
|
|
20
|
-
title: {
|
|
21
|
-
en: "Marketplace",
|
|
22
|
-
ru: "Маркетплейс"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
children: [
|
|
26
|
-
{
|
|
27
|
-
path: ":country?",
|
|
28
|
-
component: catalogComponent,
|
|
29
|
-
children: [
|
|
30
|
-
{
|
|
31
|
-
path: ":state?",
|
|
32
|
-
name: buildName("State") || "State",
|
|
33
|
-
component: catalogComponent,
|
|
34
|
-
children: [
|
|
35
|
-
{
|
|
36
|
-
path: ":city?",
|
|
37
|
-
name: buildName("City") || "City",
|
|
38
|
-
component: catalogComponent
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
];
|
|
47
|
-
}
|
|
48
|
-
function getRoutes(options = {}) {
|
|
49
|
-
const route = options.route || "Home";
|
|
50
|
-
const routes = [];
|
|
51
|
-
routes.push({
|
|
52
|
-
parentName: route,
|
|
53
|
-
config: {
|
|
54
|
-
basePath: options.basePath || "marketplace",
|
|
55
|
-
routes: buildMarketplaceTree(options)
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return routes;
|
|
59
|
-
}
|
|
60
|
-
export {
|
|
61
|
-
getRoutes
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=marketplace.router.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.router.js","sources":["../../../../../src/modules/marketplace/marketplace.router.js"],"sourcesContent":["function buildMarketplaceTree(options = {}) {\n const layoutComponent = options.layoutComponent || (() => import(\n /* webpackChunkName: 'marketplace-layout' */\n './views/components/layouts/Marketplace.vue'\n ));\n const catalogComponent = options.catalogComponent || (() => import(\n /* webpackChunkName: 'marketplace-catalog' */\n './views/components/pages/Catalog.vue'\n ));\n\n const buildName = (suffix) => {\n const prefix = options.routeNamePrefix || '';\n return suffix ? `${prefix}${suffix}` : prefix || undefined;\n };\n\n return [\n {\n path: '',\n name: buildName('Marketplace') || 'Marketplace',\n component: layoutComponent,\n meta: {\n title: {\n en: 'Marketplace',\n ru: 'Маркетплейс',\n },\n },\n children: [\n {\n path: ':country?',\n component: catalogComponent,\n children: [\n {\n path: ':state?',\n name: buildName('State') || 'State',\n component: catalogComponent,\n children: [\n {\n path: ':city?',\n name: buildName('City') || 'City',\n component: catalogComponent,\n },\n ],\n },\n ],\n },\n ],\n },\n ];\n}\n\nexport function getRoutes(options = {}) {\n const route = options.route || 'Home';\n const routes = [];\n\n routes.push({\n parentName: route,\n config: {\n basePath: options.basePath || 'marketplace',\n routes: buildMarketplaceTree(options),\n },\n });\n\n return routes;\n}\n\nexport default { getRoutes };\n"],"names":[],"mappings":"AAAA,SAAS,qBAAqB,UAAU,IAAI;AAC1C,QAAM,kBAAkB,QAAQ,oBAAoB,MAAM;AAAA;AAAA,IAExD;AAAA,EACJ;AACE,QAAM,mBAAmB,QAAQ,qBAAqB,MAAM;AAAA;AAAA,IAE1D;AAAA,EACJ;AAEE,QAAM,YAAY,CAAC,WAAW;AAC5B,UAAM,SAAS,QAAQ,mBAAmB;AAC1C,WAAO,SAAS,GAAG,MAAM,GAAG,MAAM,KAAK,UAAU;AAAA,EACnD;AAEA,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM,UAAU,aAAa,KAAK;AAAA,MAClC,WAAW;AAAA,MACX,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACd;AAAA,MACA;AAAA,MACM,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,MAAM,UAAU,OAAO,KAAK;AAAA,cAC5B,WAAW;AAAA,cACX,UAAU;AAAA,gBACR;AAAA,kBACE,MAAM;AAAA,kBACN,MAAM,UAAU,MAAM,KAAK;AAAA,kBAC3B,WAAW;AAAA,gBAC7B;AAAA,cACA;AAAA,YACA;AAAA,UACA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA;AAEO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,SAAS,CAAA;AAEf,SAAO,KAAK;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,UAAU,QAAQ,YAAY;AAAA,MAC9B,QAAQ,qBAAqB,OAAO;AAAA,IAC1C;AAAA,EACA,CAAG;AAED,SAAO;AACT;"}
|
package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Marketplace.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/layouts/Marketplace.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header class=\"pd-medium mn-b-thin\">\n <h2 class=\"\">\n <span class=\"\">Weed Deliveries in </span>\n\n <span\n v-if=\"localPosition.city || localPosition.state || localPosition.country\"\n @click=\"a => { store.core.state.isOpenLocationPopup = true }\"\n class=\"t-main t-semi cursor-pointer \"\n >\n <template v-if=\"localPosition.city\">{{localPosition.city}}, </template>\n <template v-if=\"localPosition.state\">{{localPosition.state}}, </template>\n <template v-if=\"localPosition.country\">{{localPosition.country}}</template>\n </span>\n\n <span v-else @click=\"a => { store.core.state.isOpenLocationPopup = true }\" class=\"t-main t-semi cursor-pointer\">The World</span>\n </h2>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Location Filter -->\n <div class=\"mn-b-medium\">\n <h4 class=\"mn-b-small\">Location</h4>\n <Field\n v-model=\"searchLocation\"\n placeholder=\"Search location...\"\n type=\"text\"\n class=\"w-100 bg-light pd-small radius-small mn-b-small\"\n />\n <div class=\"gap-micro\">\n <div\n v-for=\"location in marketplace.state.locationOptions\"\n :key=\"location.label\"\n @click=\"router.push(location.path)\"\n class=\"cursor-pointer hover-t-underline mn-b-regular transition-all\"\n >\n {{ location.label }}\n </div>\n </div>\n </div>\n\n <!-- Filters Group -->\n <FiltersGroup\n :filters=\"marketplace.state.filter.options\"\n v-model:selected=\"selectedFilters\"\n :immediate=\"true\"\n :showHeader=\"false\"\n :showApplyButton=\"false\"\n :showResetButton=\"true\"\n />\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Feed\n :search=\"true\"\n v-model:sort=\"marketplace.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n }\n }\"\n :store=\"{\n read: (options) => marketplaceStore.readCatalog(options)\n }\"\n :options=\"{\n country: localPosition.country,\n state: localPosition.state,\n city: localPosition.city,\n location: localLocation?.location,\n lookup: ['products','spots'],\n contain: ['products'],\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n delivery: selectedFilters.delivery?.length > 0 ? selectedFilters.delivery.join(',') : undefined,\n payment: selectedFilters.payment?.length > 0 ? selectedFilters.payment.join(',') : undefined\n }\"\n v-slot=\"{\n items\n }\"\n class=\"rows-1 gap-thin\"\n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"marketplace.state.filter.options\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n\n <CardOrganization\n v-for=\"organization in items\"\n :key=\"organization._id\"\n :organization=\"organization\"\n :showRating=\"true\"\n :showFollowers=\"false\"\n :showProducts=\"true\"\n class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n />\n </Feed>\n\n </div>\n </div>\n </div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { onMounted, watch, ref } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n import { useI18n } from 'vue-i18n'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Filters from '@martyrs/src/modules/core/views/components/sections/Filters.vue'\n import FiltersGroup from '@martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue'\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n\n import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'\n import * as marketplace from '../../store/marketplace'\n import marketplaceStore from '../../store/marketplace'\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n const { returnCurrency } = useGlobalMixins()\n\n const localPosition = ref({\n city: null,\n state: null,\n country: null\n });\n\n const localLocation = ref(null);\n // Location filter\n const searchLocation = ref('');\n\n const selectedFilters = ref({\n price: { min: null, max: null },\n delivery: [],\n payment: [],\n availabilityDate: null,\n rating: null\n })\n\n\n if (route.params) {\n // Загружаем новые значения из параметров маршрута в состояние\n let newState = {\n country: denormalizeUrlParam(route.params.country),\n state: denormalizeUrlParam(route.params.state),\n city: denormalizeUrlParam(route.params.city),\n };\n\n\t // Обновляем глобальное состояние\n\t localPosition.value = newState;\n\t}\n\n\tif (route.query) {\n\t \tconst query = route.query;\n\n\t\tmarketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n\t\tmarketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n\t\tmarketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n\t}\n\n\tif (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam\n\tif (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder\n\n function denormalizeUrlParam(param) {\n return param\n .replace(/-/g, ' ')\n .replace(/\\b\\w/g, l => l.toUpperCase());\n }\n\n function normalizeUrlParam(param) {\n return param\n .toLowerCase()\n .replace(/ /g, '-')\n .replace(/[^a-z0-9-]/g, '');\n }\n\n\twatch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n\t\tlet query = { ...route.query}\n\t\t\n\t\tquery.sortParam = newSortValue.param\n\t\tquery.sortOrder = newSortValue.order\n\t \n\t // replace the current route\n\t router.replace({ query });\n\t}, { deep: true });\n\n\n\twatch(() => marketplace.state.filter.selectedFilters, (newFilterValue, oldFilterValue) => {\n\t // Переводим фильтр в формат query\n\t const query = { ...route.query };\n\n\t // Удаляем старые значения фильтра из query\n\t Object.keys(oldFilterValue).forEach(key => {\n\t if (query[key]) {\n\t delete query[key];\n\t }\n\t });\n\n\t // Добавляем новые значения фильтра в query\n\t const newQueryValues = Object.fromEntries(\n\t Object.entries(newFilterValue)\n\t .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n\t .map(([key, value]) => [key, value.join(',')])\n\t );\n\n\t delete query.options;\n\t Object.assign(query, newQueryValues);\n\n\t // Обновляем маршрут с новым query\n\t router.replace({ query });\n\t}, { deep: true })\n\n\twatch(() => store.core.state.position, (newPosition) => {\n // get the current route\n const currentRoute = { ...router.currentRoute.value };\n\t \n // create new parameters based on globals state position\n let newParams = {\n country: normalizeUrlParam(newPosition.country),\n state: normalizeUrlParam(newPosition.state),\n city: normalizeUrlParam(newPosition.city),\n };\n\n let newState = {\n country: denormalizeUrlParam(newPosition.country),\n state: denormalizeUrlParam(newPosition.state),\n city: denormalizeUrlParam(newPosition.city),\n };\n \n // update route params\n localPosition.value = newState;\n currentRoute.params = newParams;\n\n \n // replace the current route\n router.replace(currentRoute);\n\t}, { deep: true });\n\n const text = {\n locale: 'en',\n messages: {\n en: {\n meta: {\n title: \"Marketplace – Shop Our Wide Selection of Quality Weed for Delivery\",\n description: \"Browse our marketplace of top-grade weed strains and choose from a variety of delivery options. Order now and have your favorite strains delivered straight to your door. Safe, fast, and reliable.\",\n }\n },\n ru: {\n meta: {\n title: \"Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки\",\n description: \"Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.\",\n }\n }\n }\n }\n\n const { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n\n\n"],"names":["marketplace.state"],"mappings":"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"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { onMounted, createBlock, openBlock, unref, withCtx, createElementBlock, Fragment, renderList } from "vue";
|
|
2
|
-
import { useRoute } from "vue-router";
|
|
3
|
-
import _sfc_main$1 from "../../../../../components/Feed/Feed.vue.js";
|
|
4
|
-
import { useStore } from "../../../../core/views/store/core.store.js";
|
|
5
|
-
import _sfc_main$2 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
|
|
6
|
-
import { state, marketplaceStore } from "../../store/marketplace.js";
|
|
7
|
-
const _sfc_main = {
|
|
8
|
-
__name: "Catalog",
|
|
9
|
-
setup(__props) {
|
|
10
|
-
const store = useStore();
|
|
11
|
-
const route = useRoute();
|
|
12
|
-
onMounted(() => {
|
|
13
|
-
if (typeof gtag === "function") {
|
|
14
|
-
gtag("event", "view_marketplace", {
|
|
15
|
-
location: store.core.state.position?.location || "unknown",
|
|
16
|
-
page_path: window.location.pathname,
|
|
17
|
-
marketplace_id: route.params.id || "main"
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
return (_ctx, _cache) => {
|
|
22
|
-
return openBlock(), createBlock(_sfc_main$1, {
|
|
23
|
-
sort: state.sort,
|
|
24
|
-
"onUpdate:sort": _cache[0] || (_cache[0] = ($event) => state.sort = $event),
|
|
25
|
-
filter: state.filter,
|
|
26
|
-
"onUpdate:filter": _cache[1] || (_cache[1] = ($event) => state.filter = $event),
|
|
27
|
-
search: true,
|
|
28
|
-
showLoadMore: false,
|
|
29
|
-
states: {
|
|
30
|
-
empty: {
|
|
31
|
-
title: "No Shops Found",
|
|
32
|
-
description: "Currently, there are no shops."
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
store: {
|
|
36
|
-
read: (options) => unref(marketplaceStore).readCatalog(options)
|
|
37
|
-
},
|
|
38
|
-
options: {
|
|
39
|
-
country: unref(route).params.country,
|
|
40
|
-
state: unref(route).params.state,
|
|
41
|
-
city: unref(route).params.city,
|
|
42
|
-
categories: unref(route).query.categories,
|
|
43
|
-
prices: unref(route).query.prices,
|
|
44
|
-
delivery: unref(route).query.delivery,
|
|
45
|
-
location: unref(store).core.state.position?.location,
|
|
46
|
-
lookup: ["products", "spots"],
|
|
47
|
-
contain: ["products"]
|
|
48
|
-
},
|
|
49
|
-
class: "rows-1 gap-thin"
|
|
50
|
-
}, {
|
|
51
|
-
default: withCtx(({
|
|
52
|
-
items
|
|
53
|
-
}) => [
|
|
54
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(items, (organization) => {
|
|
55
|
-
return openBlock(), createBlock(_sfc_main$2, {
|
|
56
|
-
key: organization._id,
|
|
57
|
-
organization,
|
|
58
|
-
showRating: true,
|
|
59
|
-
showFollowers: false,
|
|
60
|
-
showProducts: true,
|
|
61
|
-
class: "bg-light w-100 o-hidden radius-medium pd-small"
|
|
62
|
-
}, null, 8, ["organization"]);
|
|
63
|
-
}), 128))
|
|
64
|
-
]),
|
|
65
|
-
_: 1
|
|
66
|
-
}, 8, ["sort", "filter", "store", "options"]);
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
export {
|
|
71
|
-
_sfc_main as default
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=Catalog.vue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Catalog.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/pages/Catalog.vue"],"sourcesContent":["<template>\n\t<Feed\n\t\tv-model:sort=\"marketplace.state.sort\"\n\t\tv-model:filter=\"marketplace.state.filter\"\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n },\n }\"\n :store=\"{\n read: (options) => marketplaceStore.readCatalog(options)\n }\"\n :options=\"{\n country: route.params.country,\n\t state: route.params.state,\n\t city: route.params.city,\n\t categories: route.query.categories,\n\t prices: route.query.prices,\n\t delivery: route.query.delivery,\n\t location: store.core.state.position?.location,\n\t lookup: ['products','spots'],\n\t contain: ['products'],\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <CardOrganization \n\t v-for=\"organization in items\" \n\t :key=\"organization._id\"\n\t :organization=\"organization\"\n\t :showRating=\"true\"\n\t :showFollowers=\"false\"\n\t :showProducts=\"true\"\n\t class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n\t />\n </Feed>\n</template>\n\n<script setup>\n\timport { computed,reactive,ref, onMounted,watch } from 'vue'\n\timport { useRoute } from 'vue-router'\n\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\t\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js'\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\tconst store = useStore()\n\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport * as marketplace from '../../store/marketplace';\n\timport marketplaceStore from '../../store/marketplace';\n\n\tconst route = useRoute()\n\n\tonMounted(() => {\n\t\t// Добавление Google Analytics event на открытие маркетплейса\n\t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_marketplace', {\n\t\t\t\tlocation: store.core.state.position?.location || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tmarketplace_id: route.params.id || 'main',\n\t\t\t});\n\t\t}\n\t})\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":[],"mappings":";;;;;;;;;AAmDC,UAAM,QAAQ,SAAQ;AAOtB,UAAM,QAAQ,SAAQ;AAEtB,cAAU,MAAM;AAEf,UAAI,OAAO,SAAS,YAAY;AAC/B,aAAK,SAAS,oBAAoB;AAAA,UACjC,UAAU,MAAM,KAAK,MAAM,UAAU,YAAY;AAAA,UACjD,WAAW,OAAO,SAAS;AAAA,UAC3B,gBAAgB,MAAM,OAAO,MAAM;AAAA,QACvC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
function buildMarketplaceTree(options = {}) {
|
|
2
|
-
const layoutComponent = options.layoutComponent || (() => import(
|
|
3
|
-
/* webpackChunkName: 'marketplace-layout' */
|
|
4
|
-
'./views/components/layouts/Marketplace.vue'
|
|
5
|
-
));
|
|
6
|
-
const catalogComponent = options.catalogComponent || (() => import(
|
|
7
|
-
/* webpackChunkName: 'marketplace-catalog' */
|
|
8
|
-
'./views/components/pages/Catalog.vue'
|
|
9
|
-
));
|
|
10
|
-
|
|
11
|
-
const buildName = (suffix) => {
|
|
12
|
-
const prefix = options.routeNamePrefix || '';
|
|
13
|
-
return suffix ? `${prefix}${suffix}` : prefix || undefined;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
return [
|
|
17
|
-
{
|
|
18
|
-
path: '',
|
|
19
|
-
name: buildName('Marketplace') || 'Marketplace',
|
|
20
|
-
component: layoutComponent,
|
|
21
|
-
meta: {
|
|
22
|
-
title: {
|
|
23
|
-
en: 'Marketplace',
|
|
24
|
-
ru: 'Маркетплейс',
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
children: [
|
|
28
|
-
{
|
|
29
|
-
path: ':country?',
|
|
30
|
-
component: catalogComponent,
|
|
31
|
-
children: [
|
|
32
|
-
{
|
|
33
|
-
path: ':state?',
|
|
34
|
-
name: buildName('State') || 'State',
|
|
35
|
-
component: catalogComponent,
|
|
36
|
-
children: [
|
|
37
|
-
{
|
|
38
|
-
path: ':city?',
|
|
39
|
-
name: buildName('City') || 'City',
|
|
40
|
-
component: catalogComponent,
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function getRoutes(options = {}) {
|
|
52
|
-
const route = options.route || 'Home';
|
|
53
|
-
const routes = [];
|
|
54
|
-
|
|
55
|
-
routes.push({
|
|
56
|
-
parentName: route,
|
|
57
|
-
config: {
|
|
58
|
-
basePath: options.basePath || 'marketplace',
|
|
59
|
-
routes: buildMarketplaceTree(options),
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
return routes;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export default { getRoutes };
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<Feed
|
|
3
|
-
v-model:sort="marketplace.state.sort"
|
|
4
|
-
v-model:filter="marketplace.state.filter"
|
|
5
|
-
:search="true"
|
|
6
|
-
:showLoadMore="false"
|
|
7
|
-
:states="{
|
|
8
|
-
empty: {
|
|
9
|
-
title: 'No Shops Found',
|
|
10
|
-
description: 'Currently, there are no shops.'
|
|
11
|
-
},
|
|
12
|
-
}"
|
|
13
|
-
:store="{
|
|
14
|
-
read: (options) => marketplaceStore.readCatalog(options)
|
|
15
|
-
}"
|
|
16
|
-
:options="{
|
|
17
|
-
country: route.params.country,
|
|
18
|
-
state: route.params.state,
|
|
19
|
-
city: route.params.city,
|
|
20
|
-
categories: route.query.categories,
|
|
21
|
-
prices: route.query.prices,
|
|
22
|
-
delivery: route.query.delivery,
|
|
23
|
-
location: store.core.state.position?.location,
|
|
24
|
-
lookup: ['products','spots'],
|
|
25
|
-
contain: ['products'],
|
|
26
|
-
}"
|
|
27
|
-
v-slot="{
|
|
28
|
-
items
|
|
29
|
-
}"
|
|
30
|
-
class="rows-1 gap-thin"
|
|
31
|
-
>
|
|
32
|
-
<CardOrganization
|
|
33
|
-
v-for="organization in items"
|
|
34
|
-
:key="organization._id"
|
|
35
|
-
:organization="organization"
|
|
36
|
-
:showRating="true"
|
|
37
|
-
:showFollowers="false"
|
|
38
|
-
:showProducts="true"
|
|
39
|
-
class="bg-light w-100 o-hidden radius-medium pd-small "
|
|
40
|
-
/>
|
|
41
|
-
</Feed>
|
|
42
|
-
</template>
|
|
43
|
-
|
|
44
|
-
<script setup>
|
|
45
|
-
import { computed,reactive,ref, onMounted,watch } from 'vue'
|
|
46
|
-
import { useRoute } from 'vue-router'
|
|
47
|
-
|
|
48
|
-
import Feed from '@martyrs/src/components/Feed/Feed.vue'
|
|
49
|
-
|
|
50
|
-
import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'
|
|
51
|
-
import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
|
|
52
|
-
const store = useStore()
|
|
53
|
-
|
|
54
|
-
import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'
|
|
55
|
-
|
|
56
|
-
import * as marketplace from '../../store/marketplace';
|
|
57
|
-
import marketplaceStore from '../../store/marketplace';
|
|
58
|
-
|
|
59
|
-
const route = useRoute()
|
|
60
|
-
|
|
61
|
-
onMounted(() => {
|
|
62
|
-
// Добавление Google Analytics event на открытие маркетплейса
|
|
63
|
-
if (typeof gtag === 'function') {
|
|
64
|
-
gtag('event', 'view_marketplace', {
|
|
65
|
-
location: store.core.state.position?.location || 'unknown',
|
|
66
|
-
page_path: window.location.pathname,
|
|
67
|
-
marketplace_id: route.params.id || 'main',
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
})
|
|
71
|
-
</script>
|
|
72
|
-
|
|
73
|
-
<style lang="scss">
|
|
74
|
-
</style>
|