@iobroker/adapter-react-v5 7.3.1 → 7.4.0
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/README.md +6 -2
- package/build/Components/ComplexCron.js +1 -1
- package/build/Components/ComplexCron.js.map +1 -1
- package/build/Components/FileViewer.js +5 -5
- package/build/Components/FileViewer.js.map +1 -1
- package/build/Components/Icon.d.ts +1 -2
- package/build/Components/Icon.js +5 -5
- package/build/Components/Icon.js.map +1 -1
- package/build/Components/IconDeviceType.d.ts +8 -0
- package/build/Components/IconDeviceType.js +207 -0
- package/build/Components/IconDeviceType.js.map +1 -0
- package/build/Components/SimpleCron/cronText.d.ts +1 -2
- package/build/Components/SimpleCron/cronText.js +1 -2
- package/build/Components/SimpleCron/cronText.js.map +1 -1
- package/build/Components/SimpleCron/index.js +1 -1
- package/build/Components/SimpleCron/index.js.map +1 -1
- package/build/Components/UploadImage.js +1 -6
- package/build/Components/UploadImage.js.map +1 -1
- package/build/icons/IconButtonImage.d.ts +3 -0
- package/build/icons/IconButtonImage.js +7 -0
- package/build/icons/IconButtonImage.js.map +1 -0
- package/build/icons/IconVacuum.d.ts +3 -0
- package/build/icons/IconVacuum.js +10 -0
- package/build/icons/IconVacuum.js.map +1 -0
- package/build/index.d.ts +7 -3
- package/build/index.js +7 -3
- package/build/index.js.map +1 -1
- package/modulefederation.admin.config.js +2 -0
- package/package.json +18 -18
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AcUnit, Air, Blinds, BlindsClosed, ColorLens, ControlCamera, DeviceHub, DirectionsRun, DoorSliding, Gradient, Hub, Image, Info, Lightbulb, LocationOn, Lock, Palette, PlayArrowRounded, Polyline, Power, QuestionMark, SensorDoor, Thermostat, Timeline, TipsAndUpdates, Tune, Videocam, VolumeUp, Warning, Water, WaterDrop, WbSunny, Whatshot, Window, } from '@mui/icons-material';
|
|
3
|
+
import { Icon } from './Icon';
|
|
4
|
+
import { Utils } from './Utils';
|
|
5
|
+
import { IconButtonImage } from '../icons/IconButtonImage';
|
|
6
|
+
import { IconVacuum } from '../icons/IconVacuum';
|
|
7
|
+
import { IconInstance } from '../icons/IconInstance';
|
|
8
|
+
// Taken from type detector: https://github.com/ioBroker/ioBroker.type-detector/blob/master/src/types.ts#L27
|
|
9
|
+
const deviceTypes = [
|
|
10
|
+
'unknown',
|
|
11
|
+
'airCondition',
|
|
12
|
+
'blind',
|
|
13
|
+
'blindButtons',
|
|
14
|
+
'button',
|
|
15
|
+
'buttonSensor',
|
|
16
|
+
'camera',
|
|
17
|
+
'chart',
|
|
18
|
+
'cie',
|
|
19
|
+
'ct',
|
|
20
|
+
'dimmer',
|
|
21
|
+
'door',
|
|
22
|
+
'fireAlarm',
|
|
23
|
+
'floodAlarm',
|
|
24
|
+
'gate',
|
|
25
|
+
'hue',
|
|
26
|
+
'humidity',
|
|
27
|
+
'image',
|
|
28
|
+
'info',
|
|
29
|
+
'instance',
|
|
30
|
+
'light',
|
|
31
|
+
'location',
|
|
32
|
+
'lock',
|
|
33
|
+
'media',
|
|
34
|
+
'motion',
|
|
35
|
+
'rgb',
|
|
36
|
+
'rgbSingle',
|
|
37
|
+
'rgbwSingle',
|
|
38
|
+
'slider',
|
|
39
|
+
'socket',
|
|
40
|
+
'temperature',
|
|
41
|
+
'thermostat',
|
|
42
|
+
'vacuumCleaner',
|
|
43
|
+
'volume',
|
|
44
|
+
'volumeGroup',
|
|
45
|
+
'warning',
|
|
46
|
+
'weatherCurrent',
|
|
47
|
+
'weatherForecast',
|
|
48
|
+
'window',
|
|
49
|
+
'windowTilt',
|
|
50
|
+
'hub3',
|
|
51
|
+
'node',
|
|
52
|
+
'controller',
|
|
53
|
+
'hub5',
|
|
54
|
+
];
|
|
55
|
+
export function isDeviceIcon(icon) {
|
|
56
|
+
if (deviceTypes.includes(icon)) {
|
|
57
|
+
return icon;
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
export function getDeviceIcon(type, props) {
|
|
62
|
+
let SvgComponent;
|
|
63
|
+
if (type === 'hub3') {
|
|
64
|
+
SvgComponent = DeviceHub;
|
|
65
|
+
}
|
|
66
|
+
if (type === 'node') {
|
|
67
|
+
SvgComponent = Polyline;
|
|
68
|
+
}
|
|
69
|
+
if (type === 'hub5') {
|
|
70
|
+
SvgComponent = Hub;
|
|
71
|
+
}
|
|
72
|
+
if (type === 'controller') {
|
|
73
|
+
SvgComponent = ControlCamera;
|
|
74
|
+
}
|
|
75
|
+
if (type === 'airCondition') {
|
|
76
|
+
SvgComponent = AcUnit;
|
|
77
|
+
}
|
|
78
|
+
if (type === 'blind') {
|
|
79
|
+
SvgComponent = Blinds;
|
|
80
|
+
}
|
|
81
|
+
if (type === 'camera') {
|
|
82
|
+
SvgComponent = Videocam;
|
|
83
|
+
}
|
|
84
|
+
if (type === 'chart') {
|
|
85
|
+
SvgComponent = Timeline;
|
|
86
|
+
}
|
|
87
|
+
if (type === 'ct') {
|
|
88
|
+
SvgComponent = Gradient;
|
|
89
|
+
}
|
|
90
|
+
if (type === 'dimmer') {
|
|
91
|
+
SvgComponent = TipsAndUpdates;
|
|
92
|
+
}
|
|
93
|
+
if (type === 'door') {
|
|
94
|
+
SvgComponent = SensorDoor;
|
|
95
|
+
}
|
|
96
|
+
if (type === 'fireAlarm') {
|
|
97
|
+
SvgComponent = Whatshot;
|
|
98
|
+
}
|
|
99
|
+
if (type === 'floodAlarm') {
|
|
100
|
+
SvgComponent = Water;
|
|
101
|
+
}
|
|
102
|
+
if (type === 'humidity') {
|
|
103
|
+
SvgComponent = WaterDrop;
|
|
104
|
+
}
|
|
105
|
+
if (type === 'image') {
|
|
106
|
+
SvgComponent = Image;
|
|
107
|
+
}
|
|
108
|
+
if (type === 'light') {
|
|
109
|
+
SvgComponent = Lightbulb;
|
|
110
|
+
}
|
|
111
|
+
if (type === 'lock') {
|
|
112
|
+
SvgComponent = Lock;
|
|
113
|
+
}
|
|
114
|
+
if (type === 'location') {
|
|
115
|
+
SvgComponent = LocationOn;
|
|
116
|
+
}
|
|
117
|
+
if (type === 'media') {
|
|
118
|
+
SvgComponent = PlayArrowRounded;
|
|
119
|
+
}
|
|
120
|
+
if (type === 'motion') {
|
|
121
|
+
SvgComponent = DirectionsRun;
|
|
122
|
+
}
|
|
123
|
+
if (type === 'rgb') {
|
|
124
|
+
SvgComponent = Palette;
|
|
125
|
+
}
|
|
126
|
+
if (type === 'rgbSingle') {
|
|
127
|
+
SvgComponent = Palette;
|
|
128
|
+
}
|
|
129
|
+
if (type === 'rgbwSingle') {
|
|
130
|
+
SvgComponent = Palette;
|
|
131
|
+
}
|
|
132
|
+
if (type === 'slider') {
|
|
133
|
+
SvgComponent = Tune;
|
|
134
|
+
}
|
|
135
|
+
if (type === 'socket') {
|
|
136
|
+
SvgComponent = Power;
|
|
137
|
+
}
|
|
138
|
+
if (type === 'temperature') {
|
|
139
|
+
SvgComponent = Thermostat;
|
|
140
|
+
}
|
|
141
|
+
if (type === 'thermostat') {
|
|
142
|
+
SvgComponent = Thermostat;
|
|
143
|
+
}
|
|
144
|
+
if (type === 'volume') {
|
|
145
|
+
SvgComponent = VolumeUp;
|
|
146
|
+
}
|
|
147
|
+
if (type === 'volumeGroup') {
|
|
148
|
+
SvgComponent = VolumeUp;
|
|
149
|
+
}
|
|
150
|
+
if (type === 'weatherCurrent') {
|
|
151
|
+
SvgComponent = Air;
|
|
152
|
+
}
|
|
153
|
+
if (type === 'weatherForecast') {
|
|
154
|
+
SvgComponent = WbSunny;
|
|
155
|
+
}
|
|
156
|
+
if (type === 'window') {
|
|
157
|
+
SvgComponent = Window;
|
|
158
|
+
}
|
|
159
|
+
if (type === 'windowTilt') {
|
|
160
|
+
SvgComponent = Window;
|
|
161
|
+
}
|
|
162
|
+
if (type === 'blindButtons') {
|
|
163
|
+
SvgComponent = BlindsClosed;
|
|
164
|
+
}
|
|
165
|
+
if (type === 'button') {
|
|
166
|
+
SvgComponent = IconButtonImage;
|
|
167
|
+
}
|
|
168
|
+
if (type === 'buttonSensor') {
|
|
169
|
+
SvgComponent = IconButtonImage;
|
|
170
|
+
}
|
|
171
|
+
if (type === 'cie') {
|
|
172
|
+
SvgComponent = ColorLens;
|
|
173
|
+
}
|
|
174
|
+
if (type === 'gate') {
|
|
175
|
+
SvgComponent = DoorSliding;
|
|
176
|
+
}
|
|
177
|
+
if (type === 'hue') {
|
|
178
|
+
SvgComponent = ColorLens;
|
|
179
|
+
}
|
|
180
|
+
if (type === 'info') {
|
|
181
|
+
SvgComponent = Info;
|
|
182
|
+
}
|
|
183
|
+
if (type === 'instance') {
|
|
184
|
+
SvgComponent = IconInstance;
|
|
185
|
+
}
|
|
186
|
+
if (type === 'unknown') {
|
|
187
|
+
SvgComponent = QuestionMark;
|
|
188
|
+
}
|
|
189
|
+
if (type === 'vacuumCleaner') {
|
|
190
|
+
SvgComponent = IconVacuum;
|
|
191
|
+
}
|
|
192
|
+
if (type === 'warning') {
|
|
193
|
+
SvgComponent = Warning;
|
|
194
|
+
}
|
|
195
|
+
if (SvgComponent) {
|
|
196
|
+
return (React.createElement(SvgComponent, { style: props.style || undefined, className: Utils.clsx(props.className, 'iconOwn') }));
|
|
197
|
+
}
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
export function IconDeviceType(props) {
|
|
201
|
+
const icon = getDeviceIcon(props.src, props);
|
|
202
|
+
if (icon) {
|
|
203
|
+
return icon;
|
|
204
|
+
}
|
|
205
|
+
return React.createElement(Icon, { ...props });
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=IconDeviceType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconDeviceType.js","sourceRoot":"./src/","sources":["Components/IconDeviceType.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACH,MAAM,EACN,GAAG,EACH,MAAM,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACR,GAAG,EACH,KAAK,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,IAAI,EACJ,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,UAAU,EAEV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAkB,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,4GAA4G;AAC5G,MAAM,WAAW,GAAG;IAChB,SAAS;IACT,cAAc;IACd,OAAO;IACP,cAAc;IACd,QAAQ;IACR,cAAc;IACd,QAAQ;IACR,OAAO;IACP,KAAK;IACL,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,WAAW;IACX,YAAY;IACZ,MAAM;IACN,KAAK;IACL,UAAU;IACV,OAAO;IACP,MAAM;IACN,UAAU;IACV,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,QAAQ;IACR,KAAK;IACL,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,eAAe;IACf,QAAQ;IACR,aAAa;IACb,SAAS;IACT,gBAAgB;IAChB,iBAAiB;IACjB,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,MAAM;IACN,YAAY;IACZ,MAAM;CACA,CAAC;AAIX,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAkB,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAkB,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAgB,EAAE,KAAiB;IAC7D,IAAI,YAA0C,CAAC;IAC/C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,YAAY,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,YAAY,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,YAAY,GAAG,GAAG,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACxB,YAAY,GAAG,aAAa,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC1B,YAAY,GAAG,MAAM,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,YAAY,GAAG,MAAM,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,YAAY,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,YAAY,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,cAAc,CAAC;IAClC,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACvB,YAAY,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACxB,YAAY,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACtB,YAAY,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,YAAY,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,YAAY,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACtB,YAAY,GAAG,UAAU,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,YAAY,GAAG,gBAAgB,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,aAAa,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,YAAY,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACvB,YAAY,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACxB,YAAY,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACzB,YAAY,GAAG,UAAU,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACxB,YAAY,GAAG,UAAU,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACzB,YAAY,GAAG,QAAQ,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC5B,YAAY,GAAG,GAAG,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC7B,YAAY,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,MAAM,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACxB,YAAY,GAAG,MAAM,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC1B,YAAY,GAAG,YAAY,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,YAAY,GAAG,eAAmC,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC1B,YAAY,GAAG,eAAmC,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,YAAY,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,YAAY,GAAG,WAAW,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,YAAY,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACtB,YAAY,GAAG,YAAgC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,YAAY,GAAG,YAAY,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC3B,YAAY,GAAG,UAA8B,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,YAAY,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,CACH,oBAAC,YAAY,IACT,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS,EAC/B,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,GACnD,CACL,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC3C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,GAAiB,EAAE,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,oBAAC,IAAI,OAAK,KAAK,GAAI,CAAC;AAC/B,CAAC","sourcesContent":["import React from 'react';\nimport {\n AcUnit,\n Air,\n Blinds,\n BlindsClosed,\n ColorLens,\n ControlCamera,\n DeviceHub,\n DirectionsRun,\n DoorSliding,\n Gradient,\n Hub,\n Image,\n Info,\n Lightbulb,\n LocationOn,\n Lock,\n Palette,\n PlayArrowRounded,\n Polyline,\n Power,\n QuestionMark,\n SensorDoor,\n type SvgIconComponent,\n Thermostat,\n Timeline,\n TipsAndUpdates,\n Tune,\n Videocam,\n VolumeUp,\n Warning,\n Water,\n WaterDrop,\n WbSunny,\n Whatshot,\n Window,\n} from '@mui/icons-material';\nimport { Icon, type IconProps } from './Icon';\nimport { Utils } from './Utils';\nimport { IconButtonImage } from '../icons/IconButtonImage';\nimport { IconVacuum } from '../icons/IconVacuum';\nimport { IconInstance } from '../icons/IconInstance';\n\n// Taken from type detector: https://github.com/ioBroker/ioBroker.type-detector/blob/master/src/types.ts#L27\nconst deviceTypes = [\n 'unknown',\n 'airCondition',\n 'blind',\n 'blindButtons',\n 'button',\n 'buttonSensor',\n 'camera',\n 'chart',\n 'cie',\n 'ct',\n 'dimmer',\n 'door',\n 'fireAlarm',\n 'floodAlarm',\n 'gate',\n 'hue',\n 'humidity',\n 'image',\n 'info',\n 'instance',\n 'light',\n 'location',\n 'lock',\n 'media',\n 'motion',\n 'rgb',\n 'rgbSingle',\n 'rgbwSingle',\n 'slider',\n 'socket',\n 'temperature',\n 'thermostat',\n 'vacuumCleaner',\n 'volume',\n 'volumeGroup',\n 'warning',\n 'weatherCurrent',\n 'weatherForecast',\n 'window',\n 'windowTilt',\n 'hub3',\n 'node',\n 'controller',\n 'hub5',\n] as const;\n\nexport type DeviceType = (typeof deviceTypes)[number];\n\nexport function isDeviceIcon(icon: string): DeviceType | null {\n if (deviceTypes.includes(icon as DeviceType)) {\n return icon as DeviceType;\n }\n return null;\n}\n\nexport function getDeviceIcon(type: DeviceType, props?: IconProps): React.JSX.Element | null {\n let SvgComponent: SvgIconComponent | undefined;\n if (type === 'hub3') {\n SvgComponent = DeviceHub;\n }\n if (type === 'node') {\n SvgComponent = Polyline;\n }\n if (type === 'hub5') {\n SvgComponent = Hub;\n }\n if (type === 'controller') {\n SvgComponent = ControlCamera;\n }\n if (type === 'airCondition') {\n SvgComponent = AcUnit;\n }\n if (type === 'blind') {\n SvgComponent = Blinds;\n }\n if (type === 'camera') {\n SvgComponent = Videocam;\n }\n if (type === 'chart') {\n SvgComponent = Timeline;\n }\n if (type === 'ct') {\n SvgComponent = Gradient;\n }\n if (type === 'dimmer') {\n SvgComponent = TipsAndUpdates;\n }\n if (type === 'door') {\n SvgComponent = SensorDoor;\n }\n if (type === 'fireAlarm') {\n SvgComponent = Whatshot;\n }\n if (type === 'floodAlarm') {\n SvgComponent = Water;\n }\n if (type === 'humidity') {\n SvgComponent = WaterDrop;\n }\n if (type === 'image') {\n SvgComponent = Image;\n }\n if (type === 'light') {\n SvgComponent = Lightbulb;\n }\n if (type === 'lock') {\n SvgComponent = Lock;\n }\n if (type === 'location') {\n SvgComponent = LocationOn;\n }\n if (type === 'media') {\n SvgComponent = PlayArrowRounded;\n }\n if (type === 'motion') {\n SvgComponent = DirectionsRun;\n }\n if (type === 'rgb') {\n SvgComponent = Palette;\n }\n if (type === 'rgbSingle') {\n SvgComponent = Palette;\n }\n if (type === 'rgbwSingle') {\n SvgComponent = Palette;\n }\n if (type === 'slider') {\n SvgComponent = Tune;\n }\n if (type === 'socket') {\n SvgComponent = Power;\n }\n if (type === 'temperature') {\n SvgComponent = Thermostat;\n }\n if (type === 'thermostat') {\n SvgComponent = Thermostat;\n }\n if (type === 'volume') {\n SvgComponent = VolumeUp;\n }\n if (type === 'volumeGroup') {\n SvgComponent = VolumeUp;\n }\n if (type === 'weatherCurrent') {\n SvgComponent = Air;\n }\n if (type === 'weatherForecast') {\n SvgComponent = WbSunny;\n }\n if (type === 'window') {\n SvgComponent = Window;\n }\n if (type === 'windowTilt') {\n SvgComponent = Window;\n }\n if (type === 'blindButtons') {\n SvgComponent = BlindsClosed;\n }\n if (type === 'button') {\n SvgComponent = IconButtonImage as SvgIconComponent;\n }\n if (type === 'buttonSensor') {\n SvgComponent = IconButtonImage as SvgIconComponent;\n }\n if (type === 'cie') {\n SvgComponent = ColorLens;\n }\n if (type === 'gate') {\n SvgComponent = DoorSliding;\n }\n if (type === 'hue') {\n SvgComponent = ColorLens;\n }\n if (type === 'info') {\n SvgComponent = Info;\n }\n if (type === 'instance') {\n SvgComponent = IconInstance as SvgIconComponent;\n }\n if (type === 'unknown') {\n SvgComponent = QuestionMark;\n }\n if (type === 'vacuumCleaner') {\n SvgComponent = IconVacuum as SvgIconComponent;\n }\n if (type === 'warning') {\n SvgComponent = Warning;\n }\n\n if (SvgComponent) {\n return (\n <SvgComponent\n style={props.style || undefined}\n className={Utils.clsx(props.className, 'iconOwn')}\n />\n );\n }\n return null;\n}\n\nexport function IconDeviceType(props: IconProps): React.JSX.Element | null {\n const icon = getDeviceIcon(props.src as DeviceType, props);\n if (icon) {\n return icon;\n }\n\n return <Icon {...props} />;\n}\n"]}
|
|
@@ -7,5 +7,4 @@ import 'cronstrue/locales/zh_CN';
|
|
|
7
7
|
import 'cronstrue/locales/uk';
|
|
8
8
|
import 'cronstrue/locales/pt_BR';
|
|
9
9
|
import 'cronstrue/locales/pl';
|
|
10
|
-
declare function convertCronToText(cron: string, lang?: ioBroker.Languages): string;
|
|
11
|
-
export default convertCronToText;
|
|
10
|
+
export declare function convertCronToText(cron: string, lang?: ioBroker.Languages): string;
|
|
@@ -8,8 +8,7 @@ import 'cronstrue/locales/zh_CN';
|
|
|
8
8
|
import 'cronstrue/locales/uk';
|
|
9
9
|
import 'cronstrue/locales/pt_BR';
|
|
10
10
|
import 'cronstrue/locales/pl';
|
|
11
|
-
function convertCronToText(cron, lang) {
|
|
11
|
+
export function convertCronToText(cron, lang) {
|
|
12
12
|
return cronstrue.toString(cron, { locale: lang });
|
|
13
13
|
}
|
|
14
|
-
export default convertCronToText;
|
|
15
14
|
//# sourceMappingURL=cronText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cronText.js","sourceRoot":"./src/","sources":["Components/SimpleCron/cronText.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAE9B,
|
|
1
|
+
{"version":3,"file":"cronText.js","sourceRoot":"./src/","sources":["Components/SimpleCron/cronText.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAE9B,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAyB;IACrE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import cronstrue from 'cronstrue';\nimport 'cronstrue/locales/fr';\nimport 'cronstrue/locales/es';\nimport 'cronstrue/locales/de';\nimport 'cronstrue/locales/it';\nimport 'cronstrue/locales/ru';\nimport 'cronstrue/locales/zh_CN';\nimport 'cronstrue/locales/uk';\nimport 'cronstrue/locales/pt_BR';\nimport 'cronstrue/locales/pl';\n\nexport function convertCronToText(cron: string, lang?: ioBroker.Languages): string {\n return cronstrue.toString(cron, { locale: lang });\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { InputLabel, MenuItem, Select, TextField, FormControl, FormControlLabel, Checkbox, } from '@mui/material';
|
|
3
|
-
import convertCronToText from './cronText';
|
|
3
|
+
import { convertCronToText } from './cronText';
|
|
4
4
|
import { I18n } from '../../i18n';
|
|
5
5
|
const styles = {
|
|
6
6
|
mainDiv: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"./src/","sources":["Components/SimpleCron/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n InputLabel,\n MenuItem,\n Select,\n TextField,\n FormControl,\n FormControlLabel,\n Checkbox,\n type Theme,\n} from '@mui/material';\n\nimport convertCronToText from './cronText';\n\nimport { I18n } from '../../i18n';\n\nconst styles: Record<string, React.CSSProperties> = {\n mainDiv: {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n },\n formControl: {\n margin: 0,\n minWidth: 120,\n },\n formControlMarginRight: {\n marginRight: 5,\n },\n formControlPaddingTop: {\n paddingTop: 6.2,\n },\n};\n\ntype SimpleCronType = 'once' | 'interval' | 'intervalBetween' | 'specific';\nconst PERIODIC = {\n once: 'once',\n interval: 'interval',\n intervalBetween: 'intervalBetween',\n specific: 'specific',\n};\nconst PERIODIC_TYPES = {\n seconds: 'seconds',\n minutes: 'minutes',\n // hours: 'hours',\n};\nconst WEEKDAYS = [\n 'ra_Sunday',\n 'ra_Monday',\n 'ra_Tuesday',\n 'ra_Wednesday',\n 'ra_Thursday',\n 'ra_Friday',\n 'ra_Saturday',\n 'ra_Sunday',\n];\n\nfunction padding(num: number): string {\n if (num < 10) {\n return `0${num}`;\n }\n\n return `${num}`;\n}\nconst DEFAULT_STATE = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n};\n\ninterface SimpleCronProps {\n cronExpression?: string;\n onChange: (cron: string) => void;\n language: ioBroker.Languages;\n}\n\ninterface SimpleCronState {\n extended: boolean;\n cron: string;\n mode: SimpleCronType;\n once: {\n time: string;\n date: string;\n // weekdays?: number[];\n };\n interval: {\n period: number;\n unit: string;\n minutes?: number; // if extended\n hours?: number; // if extended\n };\n intervalBetween: {\n period: number;\n unit: string;\n timeFrom: number;\n timeTo: number;\n weekdays: number[];\n minutes?: number; // if extended\n hours?: number; // if extended\n };\n specific: {\n time: string;\n weekdays: number[];\n };\n}\n\ninterface CronStructure {\n seconds: string | null;\n minutes: string;\n hours: string;\n date: string;\n months: string;\n dow: string;\n}\n\nfunction text2weekdays(text: string): number[] {\n if (text === '*') {\n return [0, 1, 2, 3, 4, 5, 6];\n }\n\n const parts = text.split(',');\n const list: number[] = [];\n parts.forEach(part => {\n const _parts = part.split('-');\n if (_parts.length === 2) {\n const start = parseInt(_parts[0], 10);\n const end = parseInt(_parts[1], 10);\n for (let day = start; day <= end; day++) {\n if (!list.includes(day === 7 ? 0 : day)) {\n list.push(day === 7 ? 0 : day);\n }\n }\n } else {\n if (part === '7') {\n part = '0';\n }\n const numPart = parseInt(part, 10);\n if (!list.includes(numPart)) {\n list.push(numPart);\n }\n }\n });\n list.sort();\n return list;\n}\n\nexport function cron2state(cron: string, force?: boolean): Partial<SimpleCronState> | null {\n cron = cron.replace(/['\"]/g, '').trim();\n const cronParts = cron.split(' ');\n let options: CronStructure;\n let state: Partial<SimpleCronState> | null = null;\n\n if (cronParts.length === 6) {\n options = {\n seconds: cronParts[0] || '*',\n minutes: cronParts[1] || '*',\n hours: cronParts[2] || '*',\n date: cronParts[3] || '*',\n months: cronParts[4] || '*',\n dow: cronParts[5] || '*',\n };\n } else {\n options = {\n seconds: null,\n minutes: cronParts[0] || '*',\n hours: cronParts[1] || '*',\n date: cronParts[2] || '*',\n months: cronParts[3] || '*',\n dow: cronParts[4] || '*',\n };\n }\n\n // * * * * *\n if (\n options.seconds === null &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n state = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n };\n } // * * * * * *\n\n if (\n options.seconds === '*' &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n state = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.seconds,\n },\n };\n } else if (\n options.seconds === null &&\n options.minutes.includes('/') &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * * * *\n state = {\n mode: 'interval',\n interval: {\n period: parseInt(options.minutes.split('/')[1], 10),\n unit: PERIODIC_TYPES.minutes,\n },\n };\n } else if (\n options.seconds !== null &&\n options.seconds.includes('/') &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * * * * *\n state = {\n mode: 'interval',\n interval: {\n period: parseInt(options.seconds.split('/')[1], 10),\n unit: PERIODIC_TYPES.seconds,\n },\n };\n } else if (\n options.seconds !== null &&\n options.seconds.includes('/') &&\n options.minutes === '*' &&\n options.hours.includes('-') &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * 0-23 * * 1-7 or */n * 0-23 * * *\n state = {\n mode: 'intervalBetween',\n intervalBetween: {\n period: parseInt(options.seconds.split('/')[1], 10),\n unit: PERIODIC_TYPES.seconds,\n timeFrom: parseInt(options.hours.split('-')[0], 10),\n timeTo: parseInt(options.hours.split('-')[1], 10),\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n options.minutes.includes('/') &&\n options.hours.includes('-') &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n 0-23 * * 1-7 or */n 0-23 * * *\n state = {\n mode: 'intervalBetween',\n intervalBetween: {\n period: parseInt(options.minutes.split('/')[1], 10),\n unit: PERIODIC_TYPES.minutes,\n timeFrom: parseInt(options.hours.split('-')[0], 10),\n timeTo: parseInt(options.hours.split('-')[1], 10),\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n parseInt(options.minutes, 10).toString() === options.minutes &&\n parseInt(options.hours, 10).toString() === options.hours &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // m h * * 1-7 or m h * * *\n state = {\n mode: 'specific',\n specific: {\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n parseInt(options.minutes, 10).toString() === options.minutes &&\n parseInt(options.hours, 10).toString() === options.hours &&\n parseInt(options.date, 10).toString() === options.date &&\n parseInt(options.months, 10).toString() === options.months &&\n (options.dow === '*' || force)\n ) {\n // m h d M *\n state = {\n mode: 'once',\n once: {\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\n date: `${padding(parseInt(options.date, 10))}.${padding(parseInt(options.months, 10))}`,\n },\n };\n }\n\n return state;\n}\n\nexport class SimpleCron extends React.Component<SimpleCronProps, SimpleCronState> {\n constructor(props: SimpleCronProps) {\n super(props);\n let cron =\n typeof props.cronExpression === 'string'\n ? props.cronExpression.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '')\n : '';\n if (cron[0] === '{') {\n cron = '';\n }\n const state = cron2state(cron || '* * * * *', true) || DEFAULT_STATE;\n\n this.state = {\n extended: false,\n cron: SimpleCron.state2cron(state as SimpleCronState),\n mode: 'interval',\n once: {\n time: '00:00',\n date: '',\n },\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n intervalBetween: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n timeFrom: 0,\n timeTo: 23,\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n },\n specific: {\n time: '00:00',\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n },\n };\n Object.assign(this.state, state);\n\n if (this.state.cron !== props.cronExpression) {\n setTimeout(() => props.onChange && props.onChange(this.state.cron), 100);\n }\n }\n\n static periodArray2text(list: number[], max: number = 7): string {\n max = max || 7;\n if (list.length === max) {\n return '*';\n }\n const text = [];\n let start = null;\n let end = null;\n if (!list.length) {\n return '_';\n }\n for (let i = 0; i < list.length; i++) {\n if (start === null) {\n start = list[i];\n end = list[i];\n } else if (list[i - 1] + 1 === list[i]) {\n end = list[i];\n } else {\n if (start !== end) {\n text.push(`${start}-${end}`);\n } else {\n text.push(start);\n }\n start = list[i];\n end = list[i];\n }\n }\n if (start !== end) {\n text.push(`${start}-${end}`);\n } else {\n text.push(start);\n }\n return text.join(',');\n }\n\n static text2weekdays(text: string): number[] {\n return text2weekdays(text);\n }\n\n static state2cron(state: Partial<SimpleCronState>): string {\n let cron = '* * * * *';\n if (state.mode === 'interval') {\n const settings = state.interval || {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n };\n if (settings.period !== undefined && settings.period > 60) {\n settings.period = 60;\n }\n if (settings.period !== undefined && settings.period < 1) {\n settings.period = 1;\n }\n\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 60) {\n settings.minutes = 60;\n }\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes < 1) {\n settings.minutes = 1;\n }\n\n if (settings.hours !== undefined && settings.hours !== null && settings.hours > 24) {\n settings.hours = 24;\n }\n if (settings.hours !== undefined && settings.hours !== null && settings.hours < 1) {\n settings.hours = 1;\n }\n\n if (state.extended) {\n cron = `${settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 1 ? `*/${settings.minutes}` : '*'} ${settings.hours !== undefined && settings.hours !== null && settings.hours > 1 ? `*/${settings.hours}` : '*'} * * *`;\n } else {\n switch (settings.unit) {\n case PERIODIC_TYPES.seconds:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * * *`;\n break;\n case PERIODIC_TYPES.minutes:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * *`;\n break;\n default:\n break;\n }\n }\n } else if (state.mode === 'intervalBetween') {\n const settings = state.intervalBetween || {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n timeFrom: 0,\n timeTo: 24,\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n };\n let hours;\n settings.timeFrom = settings.timeFrom || 0;\n settings.timeTo = settings.timeTo === undefined ? 24 : settings.timeTo;\n if (settings.timeFrom !== 0 && settings.timeTo === 24) {\n settings.timeTo = 23;\n }\n if (settings.timeFrom === 0 && settings.timeTo === 24) {\n hours = '*';\n } else {\n hours = settings.timeFrom !== settings.timeTo ? `${settings.timeFrom}-${settings.timeTo}` : '*';\n }\n if (settings.period > 60) {\n settings.period = 60;\n }\n if (settings.period < 1) {\n settings.period = 1;\n }\n settings.unit = settings.unit || PERIODIC_TYPES.minutes;\n switch (settings.unit) {\n case PERIODIC_TYPES.seconds:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\n break;\n case PERIODIC_TYPES.minutes:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\n break;\n default:\n break;\n }\n } else if (state.mode === 'specific') {\n const settings = state.specific || {\n time: '00:00',\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n };\n const parts = (settings.time || '00:00').split(':');\n let minutes = parseInt(parts[1], 10) || 0;\n if (minutes > 59) {\n minutes = 59;\n }\n if (minutes < 0) {\n minutes = 0;\n }\n let hours = parseInt(parts[0], 10) || 0;\n if (hours > 23) {\n hours = 59;\n }\n if (hours < 0) {\n hours = 0;\n }\n\n cron = `${minutes} ${hours} * * ${this.periodArray2text(settings.weekdays || [])}`;\n } else if (state.mode === 'once') {\n const settings = state.once || {\n time: '00:00',\n date: '',\n };\n if (!settings.date) {\n settings.date = `${new Date().getDate()}.${padding(new Date().getMonth() + 1)}`;\n }\n const parts = (settings.time || '00:00').split(':');\n const partsDate = settings.date.split('.');\n let minutes = parseInt(parts[1], 10) || 0;\n if (minutes > 59) {\n minutes = 59;\n }\n if (minutes < 0) {\n minutes = 0;\n }\n let hours = parseInt(parts[0], 10) || 0;\n if (hours > 23) {\n hours = 59;\n }\n if (hours < 0) {\n hours = 0;\n }\n let date = parseInt(partsDate[0], 10) || 1;\n if (date > 31) {\n date = 31;\n }\n if (date < 1) {\n hours = 1;\n }\n let month = parseInt(partsDate[1], 10) || 1;\n if (month > 12) {\n month = 12;\n }\n if (month < 1) {\n month = 1;\n }\n\n cron = `${minutes} ${hours} ${date} ${month} *`;\n }\n return cron;\n }\n\n recalcCron(): void {\n this.onChange(SimpleCron.state2cron(this.state));\n }\n\n getControlsWeekdaysElements(type: 'intervalBetween' | 'specific'): React.JSX.Element {\n const settings = type === 'intervalBetween' ? this.state.intervalBetween : this.state.specific;\n return (\n <div\n key=\"weekdays\"\n style={{ paddingLeft: 8, width: 'calc(100% - 8px)', maxWidth: 600 }}\n >\n <h5>{I18n.t('ra_On weekdays')}</h5>\n {[1, 2, 3, 4, 5, 6, 0].map(day => (\n <FormControlLabel\n key={WEEKDAYS[day]}\n control={\n <Checkbox\n checked={settings.weekdays.includes(day)}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n const pos = _settings.weekdays.indexOf(day);\n if (e.target.checked) {\n if (pos === -1) {\n _settings.weekdays.push(day);\n }\n } else {\n if (pos !== -1) {\n _settings.weekdays.splice(pos, 1);\n }\n }\n _settings.weekdays.sort();\n if (type === 'intervalBetween') {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n } else {\n this.setState({ specific: _settings }, () => this.recalcCron());\n }\n }}\n value={day.toString()}\n />\n }\n label={I18n.t(WEEKDAYS[day])}\n />\n ))}\n </div>\n );\n }\n\n getControlsPeriodElements(type: 'interval' | 'intervalBetween'): React.JSX.Element {\n const settings = type === 'interval' ? this.state.interval : this.state.intervalBetween;\n\n if (this.state.extended) {\n return (\n <div\n key=\"period\"\n style={{ paddingLeft: 8, display: 'inline-block' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_minutes')}\n value={settings.minutes}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.minutes = parseInt(e.target.value, 10);\n if (_settings.minutes < 1) {\n _settings.minutes = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 60,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_hours')}\n value={settings.hours}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.hours = parseInt(e.target.value, 10);\n if (_settings.hours < 1) {\n _settings.hours = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 24,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n </div>\n );\n }\n\n return (\n <div\n key=\"period\"\n style={{ paddingLeft: 8, display: 'inline-block' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_every')}\n value={settings.period}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.period = parseInt(e.target.value, 10);\n if (_settings.period < 1) {\n _settings.period = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 60,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n <Select\n variant=\"standard\"\n style={{ verticalAlign: 'bottom' }}\n value={settings.unit}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.unit = e.target.value;\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n >\n <MenuItem value=\"seconds\">{I18n.t('sc_seconds')}</MenuItem>)\n <MenuItem value=\"minutes\">{I18n.t('sc_minutes')}</MenuItem>)\n </Select>\n </div>\n );\n }\n\n getControlsTime(type: 'once' | 'specific'): React.JSX.Element {\n const settings = type === 'once' ? this.state.once : this.state.specific;\n return (\n <FormControl\n variant=\"standard\"\n sx={{\n ...styles.formControl,\n '&.MuiFormControl-root': styles.formControlMarginRight,\n }}\n >\n <TextField\n variant=\"standard\"\n key=\"at\"\n label={I18n.t('sc_time')}\n value={settings.time}\n type=\"time\"\n sx={(theme: Theme) => ({\n '& input[type=\"time\"]::-webkit-calendar-picker-indicator': {\n filter: theme.palette.mode === 'dark' ? 'invert(80%)' : undefined,\n },\n })}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.time = e.target.value;\n if (type === 'once') {\n this.setState({ once: _settings }, () => this.recalcCron());\n } else {\n this.setState({ specific: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n inputLabel: {\n shrink: true,\n },\n }}\n margin=\"normal\"\n />\n </FormControl>\n );\n }\n\n getControlsDate(): React.JSX.Element {\n const settings = this.state.once;\n\n if (!settings.date) {\n const d = new Date();\n settings.date = `${d.getDate()}.${padding(d.getMonth() + 1)}`;\n }\n\n // <InputLabel htmlFor=\"formatted-text-mask-input\">{I18n.t('sc_at')}</InputLabel>\n return (\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <TextField\n variant=\"standard\"\n key=\"date\"\n label={I18n.t('sc_date')}\n value={settings.date}\n type=\"text\"\n slotProps={{\n htmlInput: {\n style: styles.formControlPaddingTop,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.once));\n _settings.date = e.target.value;\n this.setState({ once: _settings }, () => this.recalcCron());\n }}\n margin=\"normal\"\n />\n </FormControl>\n );\n }\n\n getOnceElements(): React.JSX.Element {\n return (\n <div style={{ marginLeft: 8 }}>\n {this.getControlsTime('once')}\n {this.getControlsDate()}\n </div>\n );\n }\n\n getIntervalElements(): React.JSX.Element {\n return this.getControlsPeriodElements('interval');\n }\n\n getIntervalBetweenElements(): React.JSX.Element[] {\n const settings = this.state.intervalBetween;\n return [\n this.getControlsPeriodElements('intervalBetween'),\n <div\n key=\"between\"\n style={{ paddingLeft: 8, display: 'inline-block', verticalAlign: 'top' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_hours')}</h5>\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <InputLabel\n shrink\n htmlFor=\"age-label-placeholder\"\n >\n {I18n.t('sc_from')}\n </InputLabel>\n <Select\n variant=\"standard\"\n style={{ width: 100 }}\n value={settings.timeFrom}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\n _settings.timeFrom = parseInt(e.target.value as string, 10);\n if (_settings.timeTo === 24) {\n _settings.timeTo = 23;\n }\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }}\n >\n {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\n hour => (\n <MenuItem\n key={`B_${hour}`}\n value={hour}\n >\n {`${padding(hour)}:00`}\n </MenuItem>\n ),\n )}\n </Select>\n </FormControl>\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <InputLabel\n shrink\n htmlFor=\"age-label-placeholder\"\n >\n {I18n.t('sc_to')}\n </InputLabel>\n <Select\n variant=\"standard\"\n style={{ width: 100 }}\n value={settings.timeTo}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\n _settings.timeTo = parseInt(e.target.value as string, 10);\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\n hour => (\n <MenuItem\n key={`A_${hour}`}\n value={hour}\n >\n {`${padding(hour)}:00`}\n </MenuItem>\n ),\n )}\n {!settings.timeFrom && <MenuItem value={24}>00:00</MenuItem>}\n </Select>\n </FormControl>\n </div>,\n this.getControlsWeekdaysElements('intervalBetween'),\n ];\n }\n\n getSpecificTimeElements(): React.JSX.Element[] {\n return [\n <div\n key=\"time\"\n style={{ marginLeft: 8 }}\n >\n {this.getControlsTime('specific')}\n </div>,\n this.getControlsWeekdaysElements('specific'),\n ];\n }\n\n onModeChange(mode: 'once' | 'interval' | 'intervalBetween' | 'specific'): void {\n if (mode !== this.state.mode) {\n this.setState({ mode }, () => this.recalcCron());\n }\n }\n\n onChange(cron: string): void {\n if (cron !== this.state.cron) {\n this.setState({ cron });\n this.props.onChange && this.props.onChange(cron);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <div style={styles.mainDiv}>\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)' }}>\n <TextField\n variant=\"standard\"\n style={{ width: '100%' }}\n value={this.state.cron}\n disabled\n error={this.state.cron.includes('_')}\n />\n </div>\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)', height: 60 }}>\n {this.state.cron.includes('_')\n ? I18n.t('sc_invalid_cron')\n : convertCronToText(this.state.cron, this.props.language || 'en')}\n </div>\n <div>\n <FormControl\n variant=\"standard\"\n style={{ ...styles.formControl, marginLeft: 8, marginTop: 8 }}\n >\n <InputLabel>{I18n.t('ra_Repeat')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.mode}\n onChange={e => this.onModeChange(e.target.value as SimpleCronType)}\n inputProps={{ name: 'mode', id: 'mode' }}\n >\n <MenuItem value=\"once\">{I18n.t('sc_once')}</MenuItem>\n <MenuItem value=\"interval\">{I18n.t('sc_interval')}</MenuItem>\n <MenuItem value=\"intervalBetween\">{I18n.t('sc_intervalBetween')}</MenuItem>\n <MenuItem value=\"specific\">{I18n.t('sc_specific')}</MenuItem>\n </Select>\n </FormControl>\n </div>\n {this.state.mode === PERIODIC.once && this.getOnceElements()}\n {this.state.mode === 'interval' && this.getIntervalElements()}\n {this.state.mode === 'intervalBetween' && this.getIntervalBetweenElements()}\n {this.state.mode === 'specific' && this.getSpecificTimeElements()}\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"./src/","sources":["Components/SimpleCron/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n InputLabel,\n MenuItem,\n Select,\n TextField,\n FormControl,\n FormControlLabel,\n Checkbox,\n type Theme,\n} from '@mui/material';\n\nimport { convertCronToText } from './cronText';\n\nimport { I18n } from '../../i18n';\n\nconst styles: Record<string, React.CSSProperties> = {\n mainDiv: {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n },\n formControl: {\n margin: 0,\n minWidth: 120,\n },\n formControlMarginRight: {\n marginRight: 5,\n },\n formControlPaddingTop: {\n paddingTop: 6.2,\n },\n};\n\ntype SimpleCronType = 'once' | 'interval' | 'intervalBetween' | 'specific';\nconst PERIODIC = {\n once: 'once',\n interval: 'interval',\n intervalBetween: 'intervalBetween',\n specific: 'specific',\n};\nconst PERIODIC_TYPES = {\n seconds: 'seconds',\n minutes: 'minutes',\n // hours: 'hours',\n};\nconst WEEKDAYS = [\n 'ra_Sunday',\n 'ra_Monday',\n 'ra_Tuesday',\n 'ra_Wednesday',\n 'ra_Thursday',\n 'ra_Friday',\n 'ra_Saturday',\n 'ra_Sunday',\n];\n\nfunction padding(num: number): string {\n if (num < 10) {\n return `0${num}`;\n }\n\n return `${num}`;\n}\nconst DEFAULT_STATE = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n};\n\ninterface SimpleCronProps {\n cronExpression?: string;\n onChange: (cron: string) => void;\n language: ioBroker.Languages;\n}\n\ninterface SimpleCronState {\n extended: boolean;\n cron: string;\n mode: SimpleCronType;\n once: {\n time: string;\n date: string;\n // weekdays?: number[];\n };\n interval: {\n period: number;\n unit: string;\n minutes?: number; // if extended\n hours?: number; // if extended\n };\n intervalBetween: {\n period: number;\n unit: string;\n timeFrom: number;\n timeTo: number;\n weekdays: number[];\n minutes?: number; // if extended\n hours?: number; // if extended\n };\n specific: {\n time: string;\n weekdays: number[];\n };\n}\n\ninterface CronStructure {\n seconds: string | null;\n minutes: string;\n hours: string;\n date: string;\n months: string;\n dow: string;\n}\n\nfunction text2weekdays(text: string): number[] {\n if (text === '*') {\n return [0, 1, 2, 3, 4, 5, 6];\n }\n\n const parts = text.split(',');\n const list: number[] = [];\n parts.forEach(part => {\n const _parts = part.split('-');\n if (_parts.length === 2) {\n const start = parseInt(_parts[0], 10);\n const end = parseInt(_parts[1], 10);\n for (let day = start; day <= end; day++) {\n if (!list.includes(day === 7 ? 0 : day)) {\n list.push(day === 7 ? 0 : day);\n }\n }\n } else {\n if (part === '7') {\n part = '0';\n }\n const numPart = parseInt(part, 10);\n if (!list.includes(numPart)) {\n list.push(numPart);\n }\n }\n });\n list.sort();\n return list;\n}\n\nexport function cron2state(cron: string, force?: boolean): Partial<SimpleCronState> | null {\n cron = cron.replace(/['\"]/g, '').trim();\n const cronParts = cron.split(' ');\n let options: CronStructure;\n let state: Partial<SimpleCronState> | null = null;\n\n if (cronParts.length === 6) {\n options = {\n seconds: cronParts[0] || '*',\n minutes: cronParts[1] || '*',\n hours: cronParts[2] || '*',\n date: cronParts[3] || '*',\n months: cronParts[4] || '*',\n dow: cronParts[5] || '*',\n };\n } else {\n options = {\n seconds: null,\n minutes: cronParts[0] || '*',\n hours: cronParts[1] || '*',\n date: cronParts[2] || '*',\n months: cronParts[3] || '*',\n dow: cronParts[4] || '*',\n };\n }\n\n // * * * * *\n if (\n options.seconds === null &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n state = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n };\n } // * * * * * *\n\n if (\n options.seconds === '*' &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n state = {\n mode: 'interval',\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.seconds,\n },\n };\n } else if (\n options.seconds === null &&\n options.minutes.includes('/') &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * * * *\n state = {\n mode: 'interval',\n interval: {\n period: parseInt(options.minutes.split('/')[1], 10),\n unit: PERIODIC_TYPES.minutes,\n },\n };\n } else if (\n options.seconds !== null &&\n options.seconds.includes('/') &&\n options.minutes === '*' &&\n options.hours === '*' &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * * * * *\n state = {\n mode: 'interval',\n interval: {\n period: parseInt(options.seconds.split('/')[1], 10),\n unit: PERIODIC_TYPES.seconds,\n },\n };\n } else if (\n options.seconds !== null &&\n options.seconds.includes('/') &&\n options.minutes === '*' &&\n options.hours.includes('-') &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n * 0-23 * * 1-7 or */n * 0-23 * * *\n state = {\n mode: 'intervalBetween',\n intervalBetween: {\n period: parseInt(options.seconds.split('/')[1], 10),\n unit: PERIODIC_TYPES.seconds,\n timeFrom: parseInt(options.hours.split('-')[0], 10),\n timeTo: parseInt(options.hours.split('-')[1], 10),\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n options.minutes.includes('/') &&\n options.hours.includes('-') &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // */n 0-23 * * 1-7 or */n 0-23 * * *\n state = {\n mode: 'intervalBetween',\n intervalBetween: {\n period: parseInt(options.minutes.split('/')[1], 10),\n unit: PERIODIC_TYPES.minutes,\n timeFrom: parseInt(options.hours.split('-')[0], 10),\n timeTo: parseInt(options.hours.split('-')[1], 10),\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n parseInt(options.minutes, 10).toString() === options.minutes &&\n parseInt(options.hours, 10).toString() === options.hours &&\n options.date === '*' &&\n options.months === '*' &&\n (options.dow === '*' || force)\n ) {\n // m h * * 1-7 or m h * * *\n state = {\n mode: 'specific',\n specific: {\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\n weekdays: text2weekdays(options.dow),\n },\n };\n } else if (\n options.seconds === null &&\n parseInt(options.minutes, 10).toString() === options.minutes &&\n parseInt(options.hours, 10).toString() === options.hours &&\n parseInt(options.date, 10).toString() === options.date &&\n parseInt(options.months, 10).toString() === options.months &&\n (options.dow === '*' || force)\n ) {\n // m h d M *\n state = {\n mode: 'once',\n once: {\n time: `${padding(parseInt(options.hours, 10))}:${padding(parseInt(options.minutes, 10))}`,\n date: `${padding(parseInt(options.date, 10))}.${padding(parseInt(options.months, 10))}`,\n },\n };\n }\n\n return state;\n}\n\nexport class SimpleCron extends React.Component<SimpleCronProps, SimpleCronState> {\n constructor(props: SimpleCronProps) {\n super(props);\n let cron =\n typeof props.cronExpression === 'string'\n ? props.cronExpression.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '')\n : '';\n if (cron[0] === '{') {\n cron = '';\n }\n const state = cron2state(cron || '* * * * *', true) || DEFAULT_STATE;\n\n this.state = {\n extended: false,\n cron: SimpleCron.state2cron(state as SimpleCronState),\n mode: 'interval',\n once: {\n time: '00:00',\n date: '',\n },\n interval: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n },\n intervalBetween: {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n timeFrom: 0,\n timeTo: 23,\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n },\n specific: {\n time: '00:00',\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n },\n };\n Object.assign(this.state, state);\n\n if (this.state.cron !== props.cronExpression) {\n setTimeout(() => props.onChange && props.onChange(this.state.cron), 100);\n }\n }\n\n static periodArray2text(list: number[], max: number = 7): string {\n max = max || 7;\n if (list.length === max) {\n return '*';\n }\n const text = [];\n let start = null;\n let end = null;\n if (!list.length) {\n return '_';\n }\n for (let i = 0; i < list.length; i++) {\n if (start === null) {\n start = list[i];\n end = list[i];\n } else if (list[i - 1] + 1 === list[i]) {\n end = list[i];\n } else {\n if (start !== end) {\n text.push(`${start}-${end}`);\n } else {\n text.push(start);\n }\n start = list[i];\n end = list[i];\n }\n }\n if (start !== end) {\n text.push(`${start}-${end}`);\n } else {\n text.push(start);\n }\n return text.join(',');\n }\n\n static text2weekdays(text: string): number[] {\n return text2weekdays(text);\n }\n\n static state2cron(state: Partial<SimpleCronState>): string {\n let cron = '* * * * *';\n if (state.mode === 'interval') {\n const settings = state.interval || {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n };\n if (settings.period !== undefined && settings.period > 60) {\n settings.period = 60;\n }\n if (settings.period !== undefined && settings.period < 1) {\n settings.period = 1;\n }\n\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 60) {\n settings.minutes = 60;\n }\n if (settings.minutes !== undefined && settings.minutes !== null && settings.minutes < 1) {\n settings.minutes = 1;\n }\n\n if (settings.hours !== undefined && settings.hours !== null && settings.hours > 24) {\n settings.hours = 24;\n }\n if (settings.hours !== undefined && settings.hours !== null && settings.hours < 1) {\n settings.hours = 1;\n }\n\n if (state.extended) {\n cron = `${settings.minutes !== undefined && settings.minutes !== null && settings.minutes > 1 ? `*/${settings.minutes}` : '*'} ${settings.hours !== undefined && settings.hours !== null && settings.hours > 1 ? `*/${settings.hours}` : '*'} * * *`;\n } else {\n switch (settings.unit) {\n case PERIODIC_TYPES.seconds:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * * *`;\n break;\n case PERIODIC_TYPES.minutes:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * * * *`;\n break;\n default:\n break;\n }\n }\n } else if (state.mode === 'intervalBetween') {\n const settings = state.intervalBetween || {\n period: 1,\n unit: PERIODIC_TYPES.minutes,\n timeFrom: 0,\n timeTo: 24,\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n };\n let hours;\n settings.timeFrom = settings.timeFrom || 0;\n settings.timeTo = settings.timeTo === undefined ? 24 : settings.timeTo;\n if (settings.timeFrom !== 0 && settings.timeTo === 24) {\n settings.timeTo = 23;\n }\n if (settings.timeFrom === 0 && settings.timeTo === 24) {\n hours = '*';\n } else {\n hours = settings.timeFrom !== settings.timeTo ? `${settings.timeFrom}-${settings.timeTo}` : '*';\n }\n if (settings.period > 60) {\n settings.period = 60;\n }\n if (settings.period < 1) {\n settings.period = 1;\n }\n settings.unit = settings.unit || PERIODIC_TYPES.minutes;\n switch (settings.unit) {\n case PERIODIC_TYPES.seconds:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} * ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\n break;\n case PERIODIC_TYPES.minutes:\n cron = `${settings.period > 1 ? `*/${settings.period}` : '*'} ${hours} * * ${this.periodArray2text(settings.weekdays)}`;\n break;\n default:\n break;\n }\n } else if (state.mode === 'specific') {\n const settings = state.specific || {\n time: '00:00',\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n };\n const parts = (settings.time || '00:00').split(':');\n let minutes = parseInt(parts[1], 10) || 0;\n if (minutes > 59) {\n minutes = 59;\n }\n if (minutes < 0) {\n minutes = 0;\n }\n let hours = parseInt(parts[0], 10) || 0;\n if (hours > 23) {\n hours = 59;\n }\n if (hours < 0) {\n hours = 0;\n }\n\n cron = `${minutes} ${hours} * * ${this.periodArray2text(settings.weekdays || [])}`;\n } else if (state.mode === 'once') {\n const settings = state.once || {\n time: '00:00',\n date: '',\n };\n if (!settings.date) {\n settings.date = `${new Date().getDate()}.${padding(new Date().getMonth() + 1)}`;\n }\n const parts = (settings.time || '00:00').split(':');\n const partsDate = settings.date.split('.');\n let minutes = parseInt(parts[1], 10) || 0;\n if (minutes > 59) {\n minutes = 59;\n }\n if (minutes < 0) {\n minutes = 0;\n }\n let hours = parseInt(parts[0], 10) || 0;\n if (hours > 23) {\n hours = 59;\n }\n if (hours < 0) {\n hours = 0;\n }\n let date = parseInt(partsDate[0], 10) || 1;\n if (date > 31) {\n date = 31;\n }\n if (date < 1) {\n hours = 1;\n }\n let month = parseInt(partsDate[1], 10) || 1;\n if (month > 12) {\n month = 12;\n }\n if (month < 1) {\n month = 1;\n }\n\n cron = `${minutes} ${hours} ${date} ${month} *`;\n }\n return cron;\n }\n\n recalcCron(): void {\n this.onChange(SimpleCron.state2cron(this.state));\n }\n\n getControlsWeekdaysElements(type: 'intervalBetween' | 'specific'): React.JSX.Element {\n const settings = type === 'intervalBetween' ? this.state.intervalBetween : this.state.specific;\n return (\n <div\n key=\"weekdays\"\n style={{ paddingLeft: 8, width: 'calc(100% - 8px)', maxWidth: 600 }}\n >\n <h5>{I18n.t('ra_On weekdays')}</h5>\n {[1, 2, 3, 4, 5, 6, 0].map(day => (\n <FormControlLabel\n key={WEEKDAYS[day]}\n control={\n <Checkbox\n checked={settings.weekdays.includes(day)}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n const pos = _settings.weekdays.indexOf(day);\n if (e.target.checked) {\n if (pos === -1) {\n _settings.weekdays.push(day);\n }\n } else {\n if (pos !== -1) {\n _settings.weekdays.splice(pos, 1);\n }\n }\n _settings.weekdays.sort();\n if (type === 'intervalBetween') {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n } else {\n this.setState({ specific: _settings }, () => this.recalcCron());\n }\n }}\n value={day.toString()}\n />\n }\n label={I18n.t(WEEKDAYS[day])}\n />\n ))}\n </div>\n );\n }\n\n getControlsPeriodElements(type: 'interval' | 'intervalBetween'): React.JSX.Element {\n const settings = type === 'interval' ? this.state.interval : this.state.intervalBetween;\n\n if (this.state.extended) {\n return (\n <div\n key=\"period\"\n style={{ paddingLeft: 8, display: 'inline-block' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_minutes')}\n value={settings.minutes}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.minutes = parseInt(e.target.value, 10);\n if (_settings.minutes < 1) {\n _settings.minutes = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 60,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_hours')}\n value={settings.hours}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.hours = parseInt(e.target.value, 10);\n if (_settings.hours < 1) {\n _settings.hours = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 24,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n </div>\n );\n }\n\n return (\n <div\n key=\"period\"\n style={{ paddingLeft: 8, display: 'inline-block' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_period')}</h5>\n <TextField\n variant=\"standard\"\n style={{ marginTop: 0, marginBottom: 0, verticalAlign: 'bottom' }}\n key=\"value\"\n label={I18n.t('sc_every')}\n value={settings.period}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.period = parseInt(e.target.value, 10);\n if (_settings.period < 1) {\n _settings.period = 1;\n }\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n htmlInput: {\n min: 1,\n max: 60,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n type=\"number\"\n margin=\"normal\"\n />\n <Select\n variant=\"standard\"\n style={{ verticalAlign: 'bottom' }}\n value={settings.unit}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.unit = e.target.value;\n if (type === 'interval') {\n this.setState({ interval: _settings }, () => this.recalcCron());\n } else {\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }\n }}\n >\n <MenuItem value=\"seconds\">{I18n.t('sc_seconds')}</MenuItem>)\n <MenuItem value=\"minutes\">{I18n.t('sc_minutes')}</MenuItem>)\n </Select>\n </div>\n );\n }\n\n getControlsTime(type: 'once' | 'specific'): React.JSX.Element {\n const settings = type === 'once' ? this.state.once : this.state.specific;\n return (\n <FormControl\n variant=\"standard\"\n sx={{\n ...styles.formControl,\n '&.MuiFormControl-root': styles.formControlMarginRight,\n }}\n >\n <TextField\n variant=\"standard\"\n key=\"at\"\n label={I18n.t('sc_time')}\n value={settings.time}\n type=\"time\"\n sx={(theme: Theme) => ({\n '& input[type=\"time\"]::-webkit-calendar-picker-indicator': {\n filter: theme.palette.mode === 'dark' ? 'invert(80%)' : undefined,\n },\n })}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state[type]));\n _settings.time = e.target.value;\n if (type === 'once') {\n this.setState({ once: _settings }, () => this.recalcCron());\n } else {\n this.setState({ specific: _settings }, () => this.recalcCron());\n }\n }}\n slotProps={{\n inputLabel: {\n shrink: true,\n },\n }}\n margin=\"normal\"\n />\n </FormControl>\n );\n }\n\n getControlsDate(): React.JSX.Element {\n const settings = this.state.once;\n\n if (!settings.date) {\n const d = new Date();\n settings.date = `${d.getDate()}.${padding(d.getMonth() + 1)}`;\n }\n\n // <InputLabel htmlFor=\"formatted-text-mask-input\">{I18n.t('sc_at')}</InputLabel>\n return (\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <TextField\n variant=\"standard\"\n key=\"date\"\n label={I18n.t('sc_date')}\n value={settings.date}\n type=\"text\"\n slotProps={{\n htmlInput: {\n style: styles.formControlPaddingTop,\n },\n inputLabel: {\n shrink: true,\n },\n }}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.once));\n _settings.date = e.target.value;\n this.setState({ once: _settings }, () => this.recalcCron());\n }}\n margin=\"normal\"\n />\n </FormControl>\n );\n }\n\n getOnceElements(): React.JSX.Element {\n return (\n <div style={{ marginLeft: 8 }}>\n {this.getControlsTime('once')}\n {this.getControlsDate()}\n </div>\n );\n }\n\n getIntervalElements(): React.JSX.Element {\n return this.getControlsPeriodElements('interval');\n }\n\n getIntervalBetweenElements(): React.JSX.Element[] {\n const settings = this.state.intervalBetween;\n return [\n this.getControlsPeriodElements('intervalBetween'),\n <div\n key=\"between\"\n style={{ paddingLeft: 8, display: 'inline-block', verticalAlign: 'top' }}\n >\n <h5 style={{ marginBottom: 5 }}>{I18n.t('sc_hours')}</h5>\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <InputLabel\n shrink\n htmlFor=\"age-label-placeholder\"\n >\n {I18n.t('sc_from')}\n </InputLabel>\n <Select\n variant=\"standard\"\n style={{ width: 100 }}\n value={settings.timeFrom}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\n _settings.timeFrom = parseInt(e.target.value as string, 10);\n if (_settings.timeTo === 24) {\n _settings.timeTo = 23;\n }\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }}\n >\n {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\n hour => (\n <MenuItem\n key={`B_${hour}`}\n value={hour}\n >\n {`${padding(hour)}:00`}\n </MenuItem>\n ),\n )}\n </Select>\n </FormControl>\n <FormControl\n variant=\"standard\"\n style={styles.formControl}\n >\n <InputLabel\n shrink\n htmlFor=\"age-label-placeholder\"\n >\n {I18n.t('sc_to')}\n </InputLabel>\n <Select\n variant=\"standard\"\n style={{ width: 100 }}\n value={settings.timeTo}\n onChange={e => {\n const _settings = JSON.parse(JSON.stringify(this.state.intervalBetween));\n _settings.timeTo = parseInt(e.target.value as string, 10);\n this.setState({ intervalBetween: _settings }, () => this.recalcCron());\n }}\n >\n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23].map(\n hour => (\n <MenuItem\n key={`A_${hour}`}\n value={hour}\n >\n {`${padding(hour)}:00`}\n </MenuItem>\n ),\n )}\n {!settings.timeFrom && <MenuItem value={24}>00:00</MenuItem>}\n </Select>\n </FormControl>\n </div>,\n this.getControlsWeekdaysElements('intervalBetween'),\n ];\n }\n\n getSpecificTimeElements(): React.JSX.Element[] {\n return [\n <div\n key=\"time\"\n style={{ marginLeft: 8 }}\n >\n {this.getControlsTime('specific')}\n </div>,\n this.getControlsWeekdaysElements('specific'),\n ];\n }\n\n onModeChange(mode: 'once' | 'interval' | 'intervalBetween' | 'specific'): void {\n if (mode !== this.state.mode) {\n this.setState({ mode }, () => this.recalcCron());\n }\n }\n\n onChange(cron: string): void {\n if (cron !== this.state.cron) {\n this.setState({ cron });\n this.props.onChange && this.props.onChange(cron);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <div style={styles.mainDiv}>\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)' }}>\n <TextField\n variant=\"standard\"\n style={{ width: '100%' }}\n value={this.state.cron}\n disabled\n error={this.state.cron.includes('_')}\n />\n </div>\n <div style={{ paddingLeft: 8, width: 'calc(100% - 8px)', height: 60 }}>\n {this.state.cron.includes('_')\n ? I18n.t('sc_invalid_cron')\n : convertCronToText(this.state.cron, this.props.language || 'en')}\n </div>\n <div>\n <FormControl\n variant=\"standard\"\n style={{ ...styles.formControl, marginLeft: 8, marginTop: 8 }}\n >\n <InputLabel>{I18n.t('ra_Repeat')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.mode}\n onChange={e => this.onModeChange(e.target.value as SimpleCronType)}\n inputProps={{ name: 'mode', id: 'mode' }}\n >\n <MenuItem value=\"once\">{I18n.t('sc_once')}</MenuItem>\n <MenuItem value=\"interval\">{I18n.t('sc_interval')}</MenuItem>\n <MenuItem value=\"intervalBetween\">{I18n.t('sc_intervalBetween')}</MenuItem>\n <MenuItem value=\"specific\">{I18n.t('sc_specific')}</MenuItem>\n </Select>\n </FormControl>\n </div>\n {this.state.mode === PERIODIC.once && this.getOnceElements()}\n {this.state.mode === 'interval' && this.getIntervalElements()}\n {this.state.mode === 'intervalBetween' && this.getIntervalBetweenElements()}\n {this.state.mode === 'specific' && this.getSpecificTimeElements()}\n </div>\n );\n }\n}\n"]}
|
|
@@ -458,12 +458,7 @@ export class UploadImage extends Component {
|
|
|
458
458
|
return (React.createElement(Dropzone, { disabled: !!disabled || cropHandler, key: "dropzone", multiple: false, accept: accept, maxSize: maxSize, onDragEnter: () => this.setState({ uploadFile: 'dragging' }), onDragLeave: () => this.setState({ uploadFile: true }), onDrop: (acceptedFiles, errors) => {
|
|
459
459
|
this.setState({ uploadFile: false });
|
|
460
460
|
if (!acceptedFiles.length) {
|
|
461
|
-
window.alert(
|
|
462
|
-
errors[0] &&
|
|
463
|
-
errors[0].errors &&
|
|
464
|
-
errors[0].errors[0] &&
|
|
465
|
-
errors[0].errors[0].message) ||
|
|
466
|
-
I18n.t('ra_Cannot upload'));
|
|
461
|
+
window.alert(errors?.[0]?.errors?.[0]?.message || I18n.t('ra_Cannot upload'));
|
|
467
462
|
}
|
|
468
463
|
else {
|
|
469
464
|
this.onDrop(acceptedFiles);
|