josenanodev-react-components-library 0.0.8 → 0.0.9
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/cjs/components/Multicalendar/Multicalendar.css +41 -231
- package/dist/cjs/components/Multicalendar/Multicalendar.d.ts +1 -1
- package/dist/cjs/components/Multicalendar/Multicalendar.js +45 -33
- package/dist/cjs/components/Multicalendar/MulticalendarOwnFunctions.d.ts +1 -1
- package/dist/cjs/components/Multicalendar/MulticalendarOwnFunctions.js +3 -3
- package/dist/cjs/components/Multicalendar/subcomponents/composites/DatesGrid/DatesGrid.css +5 -4
- package/dist/cjs/components/Multicalendar/subcomponents/individuals/DatesRow/DatesRow.js +1 -1
- package/dist/cjs/components/Multicalendar/types.d.ts +7 -3
- package/dist/cjs/languages/en-EN.js +0 -170
- package/dist/cjs/languages/es-ES.js +0 -170
- package/dist/cjs/languages/it-IT.js +0 -170
- package/dist/cjs/languages/types.d.ts +0 -170
- package/dist/cjs/mocks/ReactComponentMocksForTesting/CellChildrenMock.js +1 -1
- package/dist/cjs/stories/css-presets.css +77 -0
- package/dist/esm/components/Multicalendar/Multicalendar.css +41 -231
- package/dist/esm/components/Multicalendar/Multicalendar.d.ts +1 -1
- package/dist/esm/components/Multicalendar/Multicalendar.js +47 -35
- package/dist/esm/components/Multicalendar/MulticalendarOwnFunctions.d.ts +1 -1
- package/dist/esm/components/Multicalendar/MulticalendarOwnFunctions.js +3 -3
- package/dist/esm/components/Multicalendar/subcomponents/composites/DatesGrid/DatesGrid.css +5 -4
- package/dist/esm/components/Multicalendar/subcomponents/individuals/DatesRow/DatesRow.js +1 -1
- package/dist/esm/components/Multicalendar/types.d.ts +7 -3
- package/dist/esm/languages/en-EN.js +0 -170
- package/dist/esm/languages/es-ES.js +0 -170
- package/dist/esm/languages/it-IT.js +0 -170
- package/dist/esm/languages/types.d.ts +0 -170
- package/dist/esm/mocks/ReactComponentMocksForTesting/CellChildrenMock.js +1 -1
- package/dist/esm/stories/css-presets.css +77 -0
- package/package.json +6 -7
|
@@ -2,22 +2,22 @@ import React, { useEffect, useState, useRef } from "react";
|
|
|
2
2
|
import * as Funciones from "./MulticalendarOwnFunctions";
|
|
3
3
|
import "./Multicalendar.css";
|
|
4
4
|
//Assets
|
|
5
|
-
import
|
|
5
|
+
import { BsChevronLeft, BsChevronRight } from "react-icons/bs";
|
|
6
6
|
//Componentes
|
|
7
7
|
import DatesRow from "./subcomponents/individuals/DatesRow/DatesRow";
|
|
8
8
|
import ListElementsColumn from "./subcomponents/composites/ListElementsColumn/ListElementsColumn";
|
|
9
9
|
import DatesGrid from "./subcomponents/composites/DatesGrid/DatesGrid";
|
|
10
|
-
import
|
|
10
|
+
import DropdownMonthNavigation from "./subcomponents/individuals/DropdownMonthNavigation/DropdownMonthNavigation";
|
|
11
11
|
//Hooks
|
|
12
12
|
import useWindowSize from "../../hooks/useWindowsSize";
|
|
13
13
|
//Utils
|
|
14
14
|
import sqlToJsDate from "../../utils/sqlToJsDate";
|
|
15
15
|
//Services
|
|
16
16
|
import { eraseMulticalendarYScrollPosition, getMulticalendarYScrollPosition, } from "../../Services/MulticalendarStatesAndSettings";
|
|
17
|
-
const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChildren, listElementsIdsArray, language, cellsWidth = 120, cellsHeight = 80, verticalAxisWidth = 280, horizontalAxisHeight = 148,
|
|
17
|
+
const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChildren, listElementsIdsArray, language, pastDatesVisible = true, cellsWidth = 120, cellsHeight = 80, verticalAxisWidth = 280, horizontalAxisHeight = 148, pastDaysInitialQuantity = 365, futureDaysInitialQuantity = 365, chunkRenderX = 0, chunkRenderY = 0, dynamicDaysQuantity = false, draggingOverDateCells = false, waitTimeForCalls = 500, callsOnScrollingMoves, callsOnScrollingStops, aditionalControlsComponents, upperLeftComponent, }) => {
|
|
18
18
|
//Constantes del componente
|
|
19
19
|
const origin = {
|
|
20
|
-
x: Math.ceil(
|
|
20
|
+
x: pastDatesVisible ? Math.ceil(pastDaysInitialQuantity) * cellsWidth : 0,
|
|
21
21
|
y: 0,
|
|
22
22
|
};
|
|
23
23
|
const initialDateOffset = 2 + chunkRenderX;
|
|
@@ -28,8 +28,8 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
28
28
|
//Estados
|
|
29
29
|
const [firtsCall, setFirtsCall] = useState(false);
|
|
30
30
|
const [windowWidth, windowHeight] = useWindowSize();
|
|
31
|
-
const [
|
|
32
|
-
const [
|
|
31
|
+
const [futureDaysQuantity, setFutureDaysQuantity] = useState(Math.ceil(futureDaysInitialQuantity));
|
|
32
|
+
const [pastDaysQuantity, setPastDaysQuantity] = useState(pastDatesVisible ? Math.ceil(pastDaysInitialQuantity) : 0);
|
|
33
33
|
const [paginationWidth, setPaginationWidth] = useState(0);
|
|
34
34
|
const [paginationHeight, setPaginationHeight] = useState(0);
|
|
35
35
|
const [xOffset, setXOffset] = useState(1);
|
|
@@ -49,6 +49,14 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
49
49
|
const [clientYPositionOnGrid, setClientYPositionOnGrid] = useState(undefined);
|
|
50
50
|
const [scrollingOnCourse, setScrollingOnCourse] = useState(false);
|
|
51
51
|
//UseEffects
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (pastDatesVisible) {
|
|
54
|
+
setPastDaysQuantity(Math.ceil(pastDaysInitialQuantity));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
setPastDaysQuantity(0);
|
|
58
|
+
}
|
|
59
|
+
}, [pastDatesVisible, pastDaysInitialQuantity]);
|
|
52
60
|
useEffect(() => {
|
|
53
61
|
//Delegamos un cambio de estado a los primero renderes para evitar duplicado de llamadas a la API
|
|
54
62
|
if (!firtsCall) {
|
|
@@ -137,7 +145,7 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
137
145
|
});
|
|
138
146
|
}
|
|
139
147
|
setXOffset(Funciones.defineXOffset(xPosition, cellsWidth, chunkRenderX));
|
|
140
|
-
const fechaMinimaMilisegundos = Funciones.minimalDateMilliseconds(xPosition, cellsWidth,
|
|
148
|
+
const fechaMinimaMilisegundos = Funciones.minimalDateMilliseconds(xPosition, cellsWidth, pastDaysQuantity, initialDateOffset);
|
|
141
149
|
setMinimumVisibleDate(Funciones.defineMinimalVisibleDate(fechaMinimaMilisegundos, initialDateOffset));
|
|
142
150
|
if (updateList)
|
|
143
151
|
setUpdateList(false);
|
|
@@ -150,7 +158,7 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
150
158
|
chunkRenderX,
|
|
151
159
|
cellsWidth,
|
|
152
160
|
initialDateOffset,
|
|
153
|
-
|
|
161
|
+
pastDaysQuantity,
|
|
154
162
|
renderCoordinates.x,
|
|
155
163
|
renderCoordinates.y,
|
|
156
164
|
origin.x,
|
|
@@ -169,7 +177,10 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
169
177
|
}
|
|
170
178
|
}, [xPosition, yPosition, idTimeoutForCalls, waitTimeForCalls]);
|
|
171
179
|
useEffect(() => {
|
|
172
|
-
if (
|
|
180
|
+
if (scrollingOnCourse && callsOnScrollingMoves) {
|
|
181
|
+
callsOnScrollingMoves();
|
|
182
|
+
}
|
|
183
|
+
else if (!scrollingOnCourse && callsOnScrollingStops) {
|
|
173
184
|
callsOnScrollingStops();
|
|
174
185
|
}
|
|
175
186
|
// eslint-disable-next-line
|
|
@@ -188,46 +199,46 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
188
199
|
gridTemplateColumns: `${verticalAxisWidth}px`,
|
|
189
200
|
gridTemplateRows: `70px ${horizontalAxisHeight - 70}px calc(100% - ${horizontalAxisHeight}px`,
|
|
190
201
|
} },
|
|
191
|
-
React.createElement("div", { className: "
|
|
192
|
-
React.createElement("div", { className: "div-
|
|
193
|
-
React.createElement(
|
|
194
|
-
Funciones.scrollByDate(new Date(Number(Date.parse(sqlToJsDate(valorDeOpcion).toString()))), gridWrapperRef,
|
|
195
|
-
}, options: Funciones.defineMonthsArray(
|
|
196
|
-
React.createElement("button", { onClick: () => Funciones.scrollByDate(new Date(), gridWrapperRef,
|
|
197
|
-
React.createElement("div", { className: "div-
|
|
198
|
-
React.createElement("div", { className: "
|
|
199
|
-
React.createElement("div", { className: "
|
|
200
|
-
React.createElement("div", { ref: destiniesColumnRef, className: "
|
|
202
|
+
React.createElement("div", { className: "controls" },
|
|
203
|
+
React.createElement("div", { className: "div-dates-navigation" },
|
|
204
|
+
React.createElement(DropdownMonthNavigation, { minimumVisibleDate: minimumVisibleDate, onChangeAction: (valorDeOpcion) => {
|
|
205
|
+
Funciones.scrollByDate(new Date(Number(Date.parse(sqlToJsDate(valorDeOpcion).toString()))), gridWrapperRef, pastDaysQuantity, cellsWidth);
|
|
206
|
+
}, options: Funciones.defineMonthsArray(pastDaysQuantity, futureDaysQuantity, language) }),
|
|
207
|
+
React.createElement("button", { onClick: () => Funciones.scrollByDate(new Date(), gridWrapperRef, pastDaysQuantity, cellsWidth) }, language["Today"])),
|
|
208
|
+
aditionalControlsComponents && (React.createElement("div", { className: "div-aditional-controls-components" }, aditionalControlsComponents))),
|
|
209
|
+
React.createElement("div", { className: "div-upper-left-component" }, upperLeftComponent),
|
|
210
|
+
React.createElement("div", { className: "vertical-axis" },
|
|
211
|
+
React.createElement("div", { ref: destiniesColumnRef, className: "div-list-element-column", onScroll: (e) => {
|
|
201
212
|
// Se puede hacer funcion
|
|
202
213
|
if (gridWrapperRef.current !== null)
|
|
203
214
|
gridWrapperRef.current.scrollTop = e.target.scrollTop;
|
|
204
215
|
} },
|
|
205
216
|
React.createElement(ListElementsColumn, { listHeight: cellsHeight * listElementsIdsArray.length, yOffset: yOffset, elementsHeight: cellsHeight, idsArray: visibleListElementsIds, ReactListElementChildren: ReactListElementChildren }))),
|
|
206
|
-
React.createElement("div", { className: "
|
|
207
|
-
React.createElement("div", { className: "div-
|
|
208
|
-
React.createElement("button", { className: "
|
|
217
|
+
React.createElement("div", { className: "horizontal-axis" },
|
|
218
|
+
React.createElement("div", { className: "div-weeks-buttons" },
|
|
219
|
+
React.createElement("button", { className: "past-week-button", onClick: () => {
|
|
209
220
|
// Se puede hacer funcion
|
|
210
221
|
if (datesRowRef.current !== null)
|
|
211
222
|
datesRowRef.current.scroll({
|
|
212
223
|
left: datesRowRef.current.scrollLeft - cellsWidth * 7,
|
|
213
224
|
});
|
|
214
225
|
} },
|
|
215
|
-
React.createElement(
|
|
226
|
+
React.createElement(BsChevronLeft, null)),
|
|
216
227
|
React.createElement("button", { onClick: () => {
|
|
217
228
|
// Se puede hacer funcion
|
|
218
229
|
if (datesRowRef.current !== null)
|
|
219
230
|
datesRowRef.current.scroll({
|
|
220
231
|
left: datesRowRef.current.scrollLeft + cellsWidth * 7,
|
|
221
232
|
});
|
|
222
|
-
}, className: "
|
|
223
|
-
React.createElement(
|
|
224
|
-
React.createElement("div", { ref: datesRowRef, className: "div-
|
|
233
|
+
}, className: "next-week-button" },
|
|
234
|
+
React.createElement(BsChevronRight, null))),
|
|
235
|
+
React.createElement("div", { ref: datesRowRef, className: "div-dates-row", onScroll: (e) => {
|
|
225
236
|
if (gridWrapperRef.current !== null)
|
|
226
237
|
gridWrapperRef.current.scrollLeft = e.target.scrollLeft;
|
|
227
238
|
} },
|
|
228
|
-
React.createElement(DatesRow, { visibleDates: visibleDates, width: (
|
|
229
|
-
React.createElement("div", { className: "div-
|
|
230
|
-
React.createElement("div", { ref: gridWrapperRef, className: "
|
|
239
|
+
React.createElement(DatesRow, { visibleDates: visibleDates, width: (pastDaysQuantity + futureDaysQuantity) * cellsWidth, height: 64, cellsWidth: cellsWidth, cellsHeight: 64, offset: xOffset, language: language }))),
|
|
240
|
+
React.createElement("div", { className: "div-main-container" },
|
|
241
|
+
React.createElement("div", { ref: gridWrapperRef, className: "main-container", onScroll: (e) => {
|
|
231
242
|
if (datesRowRef.current !== null) {
|
|
232
243
|
datesRowRef.current.scrollLeft = e.target.scrollLeft;
|
|
233
244
|
setXPosition(e.target.scrollLeft);
|
|
@@ -236,15 +247,16 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
236
247
|
destiniesColumnRef.current.scrollTop = e.target.scrollTop;
|
|
237
248
|
setYPosition(e.target.scrollTop);
|
|
238
249
|
}
|
|
239
|
-
if (
|
|
250
|
+
if (dynamicDaysQuantity &&
|
|
240
251
|
e.target.scrollLeft +
|
|
241
252
|
e.target.offsetWidth >
|
|
242
|
-
(
|
|
243
|
-
|
|
253
|
+
(pastDaysQuantity + futureDaysQuantity) * cellsWidth - cellsWidth) {
|
|
254
|
+
setFutureDaysQuantity(futureDaysQuantity + 1);
|
|
244
255
|
}
|
|
245
|
-
if (
|
|
256
|
+
if (pastDatesVisible &&
|
|
257
|
+
dynamicDaysQuantity &&
|
|
246
258
|
e.target.scrollLeft < cellsWidth) {
|
|
247
|
-
|
|
259
|
+
setPastDaysQuantity(pastDaysQuantity + 1);
|
|
248
260
|
e.target.scrollLeft = cellsWidth * 3;
|
|
249
261
|
}
|
|
250
262
|
Funciones.authomaticScrollInGrid(draggingOverDateCells, clientXPositionOnGrid, clientYPositionOnGrid, cellsWidth, cellsHeight, e.target);
|
|
@@ -257,6 +269,6 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
|
|
|
257
269
|
Funciones.startAuthomaticScrollInGrid(draggingOverDateCells, x, y, cellsWidth, cellsHeight, gridWrapperRef);
|
|
258
270
|
}
|
|
259
271
|
} },
|
|
260
|
-
React.createElement(DatesGrid, { gridWidth: (
|
|
272
|
+
React.createElement(DatesGrid, { gridWidth: (pastDaysQuantity + futureDaysQuantity) * cellsWidth, gridHeight: cellsHeight * listElementsIdsArray.length, xOffset: xOffset, yOffset: yOffset, cellsWidth: cellsWidth, cellsHeight: cellsHeight, visibleListElementsIdsArray: visibleListElementsIds, visibleDates: visibleDates, ReactCellChildren: ReactCellChildren })))));
|
|
261
273
|
};
|
|
262
274
|
export default Multicalendar;
|
|
@@ -63,7 +63,7 @@ export declare function defineListElementsArrayVisibleList(paginationHeight: num
|
|
|
63
63
|
* @param language language object for traductions
|
|
64
64
|
* @returns string of the date, month followed by year
|
|
65
65
|
*/
|
|
66
|
-
export declare function defineMonthsArray(leftPagination: number, language: languageType): JSX.Element[];
|
|
66
|
+
export declare function defineMonthsArray(leftPagination: number, rightPagination: number, language: languageType): JSX.Element[];
|
|
67
67
|
/**
|
|
68
68
|
*
|
|
69
69
|
* @param holdingClic boolean to know if mouse id down
|
|
@@ -95,7 +95,7 @@ export function defineListElementsArrayVisibleList(paginationHeight, chunkRender
|
|
|
95
95
|
let array = [];
|
|
96
96
|
for (let index = 0; index < paginationHeight + chunkRenderY * 2; index++) {
|
|
97
97
|
if (listElementsIds[index + offset] && index + offset >= 0)
|
|
98
|
-
array[index] =
|
|
98
|
+
array[index] = listElementsIds[index + offset];
|
|
99
99
|
}
|
|
100
100
|
return array;
|
|
101
101
|
}
|
|
@@ -105,9 +105,9 @@ export function defineListElementsArrayVisibleList(paginationHeight, chunkRender
|
|
|
105
105
|
* @param language language object for traductions
|
|
106
106
|
* @returns string of the date, month followed by year
|
|
107
107
|
*/
|
|
108
|
-
export function defineMonthsArray(leftPagination, language) {
|
|
108
|
+
export function defineMonthsArray(leftPagination, rightPagination, language) {
|
|
109
109
|
let minimumDateMilliseconds = Date.parse(new Date().toString()) - leftPagination * millisecondsOfOneDay;
|
|
110
|
-
let maximumDateMilliseconds = Date.parse(new Date().toString()) +
|
|
110
|
+
let maximumDateMilliseconds = Date.parse(new Date().toString()) + rightPagination * millisecondsOfOneDay;
|
|
111
111
|
let array = [];
|
|
112
112
|
let sideArray = [];
|
|
113
113
|
for (let index = 0; index * millisecondsOfOneDay + minimumDateMilliseconds < maximumDateMilliseconds; index++) {
|
|
@@ -30,7 +30,7 @@ const DatesRow = ({ visibleDates, width, height, cellsWidth, cellsHeight, offset
|
|
|
30
30
|
height: height,
|
|
31
31
|
paddingLeft: offset * cellsWidth,
|
|
32
32
|
} }, visibleDates.length > 0 &&
|
|
33
|
-
visibleDates.map((dateObject) => (React.createElement("div", { className: "date-cell", style: {
|
|
33
|
+
visibleDates.map((dateObject) => (React.createElement("div", { key: dateObject.toString(), className: "date-cell", style: {
|
|
34
34
|
width: cellsWidth,
|
|
35
35
|
height: cellsHeight,
|
|
36
36
|
} },
|
|
@@ -6,18 +6,22 @@ export interface MulticalendarPropsType {
|
|
|
6
6
|
ReactListElementChildren: ReactListElementChildrenType;
|
|
7
7
|
listElementsIdsArray: string[] | number[];
|
|
8
8
|
language: languageType;
|
|
9
|
+
pastDatesVisible?: boolean
|
|
9
10
|
cellsWidth?: number;
|
|
10
11
|
cellsHeight?: number;
|
|
11
12
|
verticalAxisWidth?: number;
|
|
12
13
|
horizontalAxisHeight?: number;
|
|
13
|
-
|
|
14
|
+
pastDaysInitialQuantity?: number;
|
|
15
|
+
futureDaysInitialQuantity?: number;
|
|
14
16
|
chunkRenderX?: number;
|
|
15
17
|
chunkRenderY?: number;
|
|
16
18
|
draggingOverDateCells?: boolean;
|
|
17
|
-
|
|
18
|
-
logoUrl?: string;
|
|
19
|
+
dynamicDaysQuantity?: boolean;
|
|
19
20
|
waitTimeForCalls?: number;
|
|
21
|
+
callsOnScrollingMoves?: Function;
|
|
20
22
|
callsOnScrollingStops?: Function;
|
|
23
|
+
aditionalControlsComponents?: JSX.Element | JSX.Element[]
|
|
24
|
+
upperLeftComponent?: JSX.Element
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
export interface RenderCoordinatesType {
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
const spanish = {
|
|
2
|
-
"of": "of",
|
|
3
|
-
"Automatized": "Automatized",
|
|
4
|
-
"properties": "properties",
|
|
5
|
-
"stablishment": "stablishment",
|
|
6
|
-
"stablishments": "stablishments",
|
|
7
|
-
"Loading": "Loading",
|
|
8
2
|
"Today": "Today",
|
|
9
|
-
"Filters": "Filters",
|
|
10
|
-
"Search": "Search",
|
|
11
|
-
"Property Manager": "Property Manager",
|
|
12
|
-
"Zones": "Zones",
|
|
13
|
-
"Properties": "Properties",
|
|
14
|
-
"Categories": "Categories",
|
|
15
|
-
"Clear filters": "Clear filters",
|
|
16
3
|
"monday": "monday",
|
|
17
4
|
"tuesday": "tuesday",
|
|
18
5
|
"wednesday": "wednesday",
|
|
@@ -32,162 +19,5 @@ const spanish = {
|
|
|
32
19
|
"october": "october",
|
|
33
20
|
"november": "november",
|
|
34
21
|
"december": "december",
|
|
35
|
-
"days": "days",
|
|
36
|
-
"Reload": "Reload",
|
|
37
|
-
"Reload properties": "Reload properties",
|
|
38
|
-
"Reload prices": "Reload prices",
|
|
39
|
-
"Competitors": "Competitors",
|
|
40
|
-
"Quick view": "Quick view",
|
|
41
|
-
"View KPIs": "View KPIs",
|
|
42
|
-
"Recommended price": "Recommended price",
|
|
43
|
-
"Minimal price": "Minimal price",
|
|
44
|
-
"Base price": "Base price",
|
|
45
|
-
"PMS price": "PMS price",
|
|
46
|
-
"Change by quantity": "Change by quantity",
|
|
47
|
-
"Change by percentage": "Change by percentage",
|
|
48
|
-
"Competitors price": "Competitors price",
|
|
49
|
-
"Minimal stay": "Minimal stay",
|
|
50
|
-
"Availability": "Availability",
|
|
51
|
-
"Auto adjustment": "Auto adjustment",
|
|
52
|
-
"Ajust leftout days": "Ajust leftout days",
|
|
53
|
-
"Send prices to OTAs": "Send prices to OTAs",
|
|
54
|
-
"Update competitors prices": "Update competitors prices",
|
|
55
|
-
"Go back to original values": "Go back to original values",
|
|
56
|
-
"Updating competitors prices": "Updating competitors prices",
|
|
57
|
-
"Select price type": "Select price type",
|
|
58
|
-
"Base": "Base",
|
|
59
|
-
"Recommended": "Recommended",
|
|
60
|
-
"Minimal": "Minimal",
|
|
61
|
-
"It is the ideal price of the market": "It is the ideal price of the market",
|
|
62
|
-
"It is the price desired by the property manager": "It is the price desired by the property manager",
|
|
63
|
-
"It is the highest value between recommended and base price": "It is the highest value between recommended and base price",
|
|
64
|
-
"Go back": "Go back",
|
|
65
|
-
"Apply": "Apply",
|
|
66
|
-
"Send": "Send",
|
|
67
|
-
"Cancel": "Cancel",
|
|
68
|
-
"Schedule": "Schedule",
|
|
69
|
-
"Menu": "Menu",
|
|
70
|
-
"Multidashboard": "Multidashboard",
|
|
71
|
-
"Settings": "Settings",
|
|
72
|
-
"General report": "General report",
|
|
73
|
-
"Property resume": "Property resume",
|
|
74
|
-
"Price settings": "Price settings",
|
|
75
|
-
"Update competitors prices up to 1 year": "Update competitors prices up to 1 year",
|
|
76
|
-
"Performance manager": "Performance manager",
|
|
77
|
-
"Pickup": "Pickup",
|
|
78
|
-
"Forecast": "Forecast",
|
|
79
|
-
"Rate shopper": "Rate shopper",
|
|
80
|
-
"Aspirational compset": "Aspirational compset",
|
|
81
|
-
"Individual dashboard": "Individual dashboard",
|
|
82
|
-
"Individual report": "Individual report",
|
|
83
|
-
"Schedule automatic prices sends": "Schedule automatic prices sends",
|
|
84
|
-
"Send new prices now": "Send new prices now",
|
|
85
|
-
"Select date range": "Select date range",
|
|
86
|
-
"Custom range": "Custom range",
|
|
87
|
-
"Generate prices Excel file": "Generate prices Excel file",
|
|
88
|
-
"Select channels, Mark Up and currency": "Select channels, Mark Up and currency",
|
|
89
|
-
"Channel": "Channel",
|
|
90
|
-
"Mark Up": "Mark Up",
|
|
91
|
-
"MLOS": "MLOS",
|
|
92
|
-
"Currency": "Currency",
|
|
93
|
-
"Add channel": "Add channel",
|
|
94
|
-
"Export to Excel": "Export to Excel",
|
|
95
|
-
"Save settings": "Save settings",
|
|
96
|
-
"Controls": "Controls",
|
|
97
|
-
"General data": "General data",
|
|
98
|
-
"Work days": "Work days",
|
|
99
|
-
"Weekends and holydays": "Weekends and holydays",
|
|
100
|
-
"Fixed expenses": "Fixed expenses",
|
|
101
|
-
"Varaible expenses": "Varaible expenses",
|
|
102
|
-
"Local currency": "Local currency",
|
|
103
|
-
"Symbol": "Symbol",
|
|
104
|
-
"Cleaning fee": "Cleaning fee",
|
|
105
|
-
"Weekdays discounts": "Weekdays discounts",
|
|
106
|
-
"Seasons discounts": "Seasons discounts",
|
|
107
|
-
"High": "High",
|
|
108
|
-
"Medium high": "Medium high",
|
|
109
|
-
"Medium": "Medium",
|
|
110
|
-
"Medium low": "Medium low",
|
|
111
|
-
"Low": "Low",
|
|
112
|
-
"Left out days": "Left out days",
|
|
113
|
-
"Release": "Release",
|
|
114
|
-
"Increase": "Increase",
|
|
115
|
-
"Occupation rules": "Occupation rules",
|
|
116
|
-
"Apply rules": "Apply rules",
|
|
117
|
-
"Max OCC": "Max OCC",
|
|
118
|
-
"Max ADR": "Max ADR",
|
|
119
|
-
"Final autoprice": "Final autoprice",
|
|
120
|
-
"Release (N days)": "Release (N días)",
|
|
121
|
-
"% Occupation": "% Occupation",
|
|
122
|
-
"% Discount": "% Discount",
|
|
123
|
-
"Maximum": "Maximum",
|
|
124
|
-
"Pax. Mapped": "Pax. Mapped",
|
|
125
|
-
"Minimal occ.": "Minimal occ.",
|
|
126
|
-
"Maxmimum occ.": "Maxmimum occ.",
|
|
127
|
-
"Type of adjustment": "Type of adjustment",
|
|
128
|
-
"Personalized": "Personalized",
|
|
129
|
-
"Price per guest": "Price per guest",
|
|
130
|
-
"Occupation": "Occupation",
|
|
131
|
-
"Pax occupation": "Pax occupation",
|
|
132
|
-
"Price": "Price",
|
|
133
|
-
"Guests": "Guests",
|
|
134
|
-
"Regular price rised by:": "Regular price rised by:",
|
|
135
|
-
"Regular price decreased by:": "Regular price decreased by:",
|
|
136
|
-
"PAX price": "PAX price",
|
|
137
|
-
"Go back to Multiprice": "Go back to Multiprice",
|
|
138
|
-
"Seasons": "Seasons",
|
|
139
|
-
"1º Fortnight": "1º Fortnight",
|
|
140
|
-
"2º Fortnight": "2º Fortnight",
|
|
141
|
-
"Workdays": "Workdays",
|
|
142
|
-
"Weekend": "Weekend",
|
|
143
|
-
"Go back to initial price settings": "Go back to initial price settings",
|
|
144
|
-
"Settings saved succesfully": "Settings saved succesfully",
|
|
145
|
-
"Seasons and minimal stays saved succesfully": "Seasons and minimal stays saved succesfully",
|
|
146
|
-
"An error has ocurred, try again later": "An error has ocurred, try again later",
|
|
147
|
-
"All task have been succesfully achived. We are waiting to recieve data from the OTA. This task can take up to 15min.": "All task have been succesfully achived. We are waiting to recieve data from the OTA. This task can take up to 15min.",
|
|
148
|
-
"It was no possible to send the task to update the competitors prices": "It was no possible to send the task to update the competitors prices",
|
|
149
|
-
"Server is under mantanance, please wait until the service is brought back to you": "Server is under mantanance, please wait until the service is brought back to you",
|
|
150
|
-
"There has been an error, please try again": "There has been an error, please try again",
|
|
151
|
-
"prices will be sent periodically": "prices will be sent periodically",
|
|
152
|
-
"Selected dates": "Selected dates",
|
|
153
|
-
"Days range": "Days range",
|
|
154
|
-
"Revenue": "Revenue",
|
|
155
|
-
"ADR": "ADR",
|
|
156
|
-
"Appliable days of the week": "Appliable days of the week",
|
|
157
|
-
"Manual edition": "Manual edition",
|
|
158
|
-
"Period": "Period",
|
|
159
|
-
"Protect prices": "Protect prices",
|
|
160
|
-
"Protect MLOS": "Protect MLOS",
|
|
161
|
-
"Unprotect prices": "Unprotect prices",
|
|
162
|
-
"Unprotect MLOS": "Unprotect MLOS",
|
|
163
|
-
"Import prices from PMS": "Import prices from PMS",
|
|
164
|
-
"Settings type": "Settings type",
|
|
165
|
-
"Customized": "Customized",
|
|
166
|
-
"Prices have been successfully sent": "Prices have been successfully sent",
|
|
167
|
-
"There has been an error while trying to send the selected prices, please try again later": "There has been an error while trying to send the selected prices, please try again later",
|
|
168
|
-
"Copy settings to other properties": "Copy settings to other properties",
|
|
169
|
-
"Select the properties to which the settings will be copied": "Select the properties to which the settings will be copied",
|
|
170
|
-
"NOTE: All the settings on the selected properties will be overwriten, previous settings in each of the will be lost": "NOTE: All the settings on the selected properties will be overwriten, previous settings in each of the will be lost",
|
|
171
|
-
"Request import": "Request import",
|
|
172
|
-
"Atention!": "Atention!",
|
|
173
|
-
"You are trying to lower a price below the minimal price, this can't be done, the price will stay at the minimum": "You are trying to lower a price below the minimal price, this can't be done, the price will stay at the minimum",
|
|
174
|
-
"Don't show this again": "Don't show this again",
|
|
175
|
-
"Import successfully requested, this task can take up to 10 minutes": "Import successfully requested, this task can take up to 10 minutes",
|
|
176
|
-
"Import requested have failed, please try again later": "Import requested have failed, please try again later",
|
|
177
|
-
"Some custom changes are not protected": "Some custom changes are not protected",
|
|
178
|
-
"There are unprotected custom changes that will be sent. Remember to protect any change in base price or minimal stay, otherwise the changes will be lost on further calculus": "There are unprotected custom changes that will be sent. Remember to protect any change in base price or minimal stay, otherwise the changes will be lost on further calculus",
|
|
179
|
-
"Protect changes and send": "Protect changes and send",
|
|
180
|
-
"Send changes without protecting": "Send changes without protecting",
|
|
181
|
-
"Please define base price values before saving": "Please define base price values before saving",
|
|
182
|
-
"Please define pax mapped before saving": "Please define pax mapped before saving",
|
|
183
|
-
"Do you want to save your changes?": "Do you want to save your changes?",
|
|
184
|
-
"A request will be sent to save your settings": "A request will be sent to save your settings",
|
|
185
|
-
"Minimal price by season": "Minimal price by season",
|
|
186
|
-
"Minimum price according to costs": "Minimum price according to costs",
|
|
187
|
-
"Break even": "Break even",
|
|
188
|
-
"The minimal price of a season can't be lower than the minimal price according to costs": "The minimal price of a season can't be lower than the minimal price according to costs",
|
|
189
|
-
"Season": "Season",
|
|
190
|
-
"Event": "Event",
|
|
191
|
-
"Holiday": "Holiday",
|
|
192
22
|
};
|
|
193
23
|
export default spanish;
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
const spanish = {
|
|
2
|
-
"of": "de",
|
|
3
|
-
"Automatized": "Automatizado",
|
|
4
|
-
"properties": "propiedades",
|
|
5
|
-
"stablishment": "establecimiento",
|
|
6
|
-
"stablishments": "establecimientos",
|
|
7
|
-
"Loading": "Cargando",
|
|
8
2
|
"Today": "Hoy",
|
|
9
|
-
"Filters": "Filtros",
|
|
10
|
-
"Search": "Buscar",
|
|
11
|
-
"Property Manager": "Property Manager",
|
|
12
|
-
"Zones": "Zonas",
|
|
13
|
-
"Properties": "Propiedades",
|
|
14
|
-
"Categories": "Categorías",
|
|
15
|
-
"Clear filters": "Quitar filtros",
|
|
16
3
|
"monday": "lunes",
|
|
17
4
|
"tuesday": "martes",
|
|
18
5
|
"wednesday": "miércoles",
|
|
@@ -32,162 +19,5 @@ const spanish = {
|
|
|
32
19
|
"october": "octubre",
|
|
33
20
|
"november": "noviembre",
|
|
34
21
|
"december": "diciembre",
|
|
35
|
-
"days": "días",
|
|
36
|
-
"Reload": "Recargar",
|
|
37
|
-
"Reload properties": "Recargar propiedades",
|
|
38
|
-
"Reload prices": "Recargar precios",
|
|
39
|
-
"Competitors": "Competidores",
|
|
40
|
-
"Quick view": "Visualización rapida",
|
|
41
|
-
"View KPIs": "Ver KPIs",
|
|
42
|
-
"Recommended price": "Precio recomendado",
|
|
43
|
-
"Minimal price": "Precio Mínimo",
|
|
44
|
-
"Base price": "Precio Base",
|
|
45
|
-
"PMS price": "Precio PMS",
|
|
46
|
-
"Change by quantity": "Modificación por enteros",
|
|
47
|
-
"Change by percentage": "Modificación porcentual",
|
|
48
|
-
"Competitors price": "Precio Competidores",
|
|
49
|
-
"Minimal stay": "Estancia Mínima",
|
|
50
|
-
"Availability": "Disponibilidad",
|
|
51
|
-
"Auto adjustment": "Ajuste autómatico",
|
|
52
|
-
"Ajust leftout days": "Regular días huérfanos",
|
|
53
|
-
"Send prices to OTAs": "Enviar precios a OTAs",
|
|
54
|
-
"Update competitors prices": "Actualizar precios de competidores",
|
|
55
|
-
"Go back to original values": "Volver a valores de origen",
|
|
56
|
-
"Updating competitors prices": "Actualizando precios de competidores",
|
|
57
|
-
"Select price type": "Seleccione tipo de precio",
|
|
58
|
-
"Base": "Base",
|
|
59
|
-
"Recommended": "Recomendado",
|
|
60
|
-
"Minimal": "Mínimo",
|
|
61
|
-
"It is the ideal price of the market": "Es el precio más idoneo segun el mercado",
|
|
62
|
-
"It is the price desired by the property manager": "Es el precio que el property manager desea recibir",
|
|
63
|
-
"It is the highest value between recommended and base price": "Es el precio más alto entre el base y el recomendado",
|
|
64
|
-
"Go back": "Volver",
|
|
65
|
-
"Apply": "Aplicar",
|
|
66
|
-
"Send": "Enviar",
|
|
67
|
-
"Cancel": "Cancelar",
|
|
68
|
-
"Schedule": "Programar",
|
|
69
|
-
"Menu": "Menú",
|
|
70
|
-
"Multidashboard": "Multidashboard",
|
|
71
|
-
"Settings": "Configuración",
|
|
72
|
-
"General report": "Reporte general",
|
|
73
|
-
"Property resume": "Ficha de la propiedad",
|
|
74
|
-
"Price settings": "Configuración de precios",
|
|
75
|
-
"Update competitors prices up to 1 year": "Actualizar precio de competidores a 1 año",
|
|
76
|
-
"Performance manager": "Gestor de rendimientos",
|
|
77
|
-
"Pickup": "Pickup",
|
|
78
|
-
"Forecast": "Forecast",
|
|
79
|
-
"Rate shopper": "Rate shopper",
|
|
80
|
-
"Aspirational compset": "Compset aspiracional",
|
|
81
|
-
"Individual dashboard": "Dashboard individual",
|
|
82
|
-
"Individual report": "Reporte individual",
|
|
83
|
-
"Schedule automatic prices sends": "Programar envio de precios automatizados",
|
|
84
|
-
"Send new prices now": "Enviar nuevos precios ahora",
|
|
85
|
-
"Select date range": "Seleccione rango de fechas",
|
|
86
|
-
"Custom range": "Rango personalizado",
|
|
87
|
-
"Generate prices Excel file": "Generar Excel de precios",
|
|
88
|
-
"Select channels, Mark Up and currency": "Selccione canales, Mark Up y moneda",
|
|
89
|
-
"Channel": "Canal",
|
|
90
|
-
"Mark Up": "Mark Up",
|
|
91
|
-
"MLOS": "MLOS",
|
|
92
|
-
"Currency": "Moneda",
|
|
93
|
-
"Add channel": "Agregar canal",
|
|
94
|
-
"Export to Excel": "Exportar a excel",
|
|
95
|
-
"Save settings": "Guardar ajustes",
|
|
96
|
-
"Controls": "Controles",
|
|
97
|
-
"General data": "Datos generales",
|
|
98
|
-
"Work days": "Días laborables",
|
|
99
|
-
"Weekends and holydays": "Fin de semana y días festivos",
|
|
100
|
-
"Fixed expenses": "Costes fijos",
|
|
101
|
-
"Varaible expenses": "Costes variables",
|
|
102
|
-
"Local currency": "Divisa",
|
|
103
|
-
"Symbol": "Símbolo",
|
|
104
|
-
"Cleaning fee": "Tasa de limpieza",
|
|
105
|
-
"Weekdays discounts": "Descuentos por días de la semana",
|
|
106
|
-
"Seasons discounts": "Descuentos por temporada",
|
|
107
|
-
"High": "Alta",
|
|
108
|
-
"Medium high": "Media alta",
|
|
109
|
-
"Medium": "Media",
|
|
110
|
-
"Medium low": "Media baja",
|
|
111
|
-
"Low": "Baja",
|
|
112
|
-
"Left out days": "Días huérfanos",
|
|
113
|
-
"Release": "Release",
|
|
114
|
-
"Increase": "Incremento",
|
|
115
|
-
"Occupation rules": "Reglas de ocupación",
|
|
116
|
-
"Apply rules": "Aplicar reglas",
|
|
117
|
-
"Max OCC": "Max OCC",
|
|
118
|
-
"Max ADR": "Max ADR",
|
|
119
|
-
"Final autoprice": "Autoprecio final",
|
|
120
|
-
"Release (N days)": "Release (N días)",
|
|
121
|
-
"% Occupation": "% Ocupación",
|
|
122
|
-
"% Discount": "% Descuento",
|
|
123
|
-
"Maximum": "Máxima",
|
|
124
|
-
"Pax. Mapped": "Pax. Mapeado",
|
|
125
|
-
"Minimal occ.": "Ocup. Mínima",
|
|
126
|
-
"Maxmimum occ.": "Ocup. Máxima",
|
|
127
|
-
"Type of adjustment": "Tipo de ajuste",
|
|
128
|
-
"Personalized": "Personalizado",
|
|
129
|
-
"Price per guest": "Precio por huésped",
|
|
130
|
-
"Occupation": "Ocupación",
|
|
131
|
-
"Pax occupation": "Pax ocupación",
|
|
132
|
-
"Price": "Precio",
|
|
133
|
-
"Guests": "Personas",
|
|
134
|
-
"Regular price rised by:": "Precio habitual aumentado en:",
|
|
135
|
-
"Regular price decreased by:": "Precio habitual reducido en:",
|
|
136
|
-
"PAX price": "Precio según PAX",
|
|
137
|
-
"Go back to Multiprice": "Regresar a multiprice",
|
|
138
|
-
"Seasons": "Temporadas",
|
|
139
|
-
"1º Fortnight": "1º Quincena",
|
|
140
|
-
"2º Fortnight": "2º Quincena",
|
|
141
|
-
"Workdays": "Laborales",
|
|
142
|
-
"Weekend": "Fin de semana",
|
|
143
|
-
"Go back to initial price settings": "Volver a ajuste de tarifa inicial",
|
|
144
|
-
"Settings saved succesfully": "Ajustes guardados exitosamente",
|
|
145
|
-
"Seasons and minimal stays saved succesfully": "Temporadas y minimos de estancia guardados exitosamente",
|
|
146
|
-
"An error has ocurred, try again later": "Ocurrió un error, vuelva a intentar más tarde",
|
|
147
|
-
"All task have been succesfully achived. We are waiting to recieve data from the OTA. This task can take up to 15min.": "Todas las tareas se han ejecutado correctamente. Estamos pendiente de recibir los datos desde la OTA. Esta operación puede tardar 15min.",
|
|
148
|
-
"It was no possible to send the task to update the competitors prices": "No fue posible enviar la solicitud para actualizar los precios de competidores",
|
|
149
|
-
"Server is under mantanance, please wait until the service is brought back to you": "Estamos realizando tareas de mantenimiento. En breve, el servicio será restaurado.",
|
|
150
|
-
"There has been an error, please try again": "Hubo un error al procesar su solicitud, por favor intente de nuevo",
|
|
151
|
-
"prices will be sent periodically": "los precios se enviarán periodicamente",
|
|
152
|
-
"Selected dates": "Fechas seleccionadas",
|
|
153
|
-
"Days range": "Rango de días",
|
|
154
|
-
"Revenue": "Revenue",
|
|
155
|
-
"ADR": "ADR",
|
|
156
|
-
"Appliable days of the week": "Días de la semana aplicables",
|
|
157
|
-
"Manual edition": "Edición manual",
|
|
158
|
-
"Period": "Periodo",
|
|
159
|
-
"Protect prices": "Proteger precios",
|
|
160
|
-
"Protect MLOS": "Proteger MLOS",
|
|
161
|
-
"Unprotect prices": "Desproteger precios",
|
|
162
|
-
"Unprotect MLOS": "Desproteger MLOS",
|
|
163
|
-
"Import prices from PMS": "Importar precios desde PMS",
|
|
164
|
-
"Settings type": "Tipo de ajuste",
|
|
165
|
-
"Customized": "Personalizado",
|
|
166
|
-
"Prices have been successfully sent": "Los precios se han enviado correctamente",
|
|
167
|
-
"There has been an error while trying to send the selected prices, please try again later": "Sucedió un error al intentar enviar los precios, por favor intente más tarde",
|
|
168
|
-
"Copy settings to other properties": "Copiar ajustes a otras propiedades",
|
|
169
|
-
"Select the properties to which the settings will be copied": "Selecciones las propiedades a las que serán copiados los ajustes",
|
|
170
|
-
"NOTE: All the settings on the selected properties will be overwriten, previous settings in each of the will be lost": "NOTA: Todos los ajustes de las propiedades seleccionadas serán sobreescritos, todos los ajustes previos serán eliminados",
|
|
171
|
-
"Request import": "Solicitar importación",
|
|
172
|
-
"Atention!": "Atención!",
|
|
173
|
-
"You are trying to lower a price below the minimal price, this can't be done, the price will stay at the minimum": "Esta intentando reducir el precio por debajo del precio mínimo, esto no es posible, el precio permanecerá en el valor mínimo",
|
|
174
|
-
"Don't show this again": "No mostrar esto de nuevo",
|
|
175
|
-
"Import successfully requested, this task can take up to 10 minutes": "Importación solicitada con éxito, está tarea puede tardar hasta 10 minutos",
|
|
176
|
-
"Import requested have failed, please try again later": "La solicitud de importación ha fallado, por favor intente más tarde",
|
|
177
|
-
"Some custom changes are not protected": "Algunos cambios personalizados no están protegidos",
|
|
178
|
-
"There are unprotected custom changes that will be sent. Remember to protect any change in base price or minimal stay, otherwise the changes will be lost on further calculus": "Hay cambios personalizados desprotegidos que serán enviados. Recuerde proteger cualquier cambio en precio base o estancia mínima, de lo contrario los cambios se perderán en cálculos posteriores",
|
|
179
|
-
"Protect changes and send": "Proteger cambios y enviar",
|
|
180
|
-
"Send changes without protecting": "Enviar sin proteger",
|
|
181
|
-
"Please define base price values before saving": "Por favor defina el precio base antes de guardar",
|
|
182
|
-
"Please define pax mapped before saving": "Por favor defina el pax. mapeado antes de guardar",
|
|
183
|
-
"Do you want to save your changes?": "¿Esta seguro que desea guardar sus cambios?",
|
|
184
|
-
"A request will be sent to save your settings": "Se enviará una solicitud para que los ajustes sean guardados",
|
|
185
|
-
"Minimal price by season": "Precio mínimo por temporada",
|
|
186
|
-
"Minimum price according to costs": "Precio mínimo según costes",
|
|
187
|
-
"Break even": "Punto crítico",
|
|
188
|
-
"The minimal price of a season can't be lower than the minimal price according to costs": "El precio mínimo de una temporada no puede ser menor al precio mínimo según costes",
|
|
189
|
-
"Season": "Temporada",
|
|
190
|
-
"Event": "Evento",
|
|
191
|
-
"Holiday": "Festivo",
|
|
192
22
|
};
|
|
193
23
|
export default spanish;
|