@sedoo/unidoo 0.1.71 → 0.1.73
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/auth/auth.common.js +1 -1
- package/dist/auth/auth.umd.js +1 -1
- package/dist/auth/auth.umd.min.js +1 -1
- package/dist/unidoo/unidoo.common.js +6 -6
- package/dist/unidoo/unidoo.umd.js +6 -6
- package/dist/unidoo/unidoo.umd.min.js +6 -6
- package/package.json +2 -1
- package/src/auth.js +44 -38
- package/src/components/UnidooCaptcha.vue +62 -68
- package/src/components/UnidooCrudTable.vue +21 -15
- package/src/components/UnidooMapGeoFeatures.vue +142 -134
- package/src/components/UnidooTrajectoryMap.vue +76 -70
- package/src/components/unidoo-heatmap/Heatmap.js +120 -103
- package/src/components/unidoo-heatmap/UnidooHeatmap.vue +333 -291
- package/src/components/unidoo-player/unidoo-player-layout/UnidooPlayerLayout.vue +262 -219
- package/src/components/unidoo-viewer/campaign-product-block/campaign-product-block.vue +59 -44
- package/src/components/unidoo-viewer/heatmap-component/heatmap-component.vue +61 -58
- package/src/components/unidoo-viewer/map-viewer/wms-viewer.vue +1 -1
- package/src/components/unidoo-viewer/map-viewer/wmts-viewer.vue +154 -134
- package/src/components/unidoo-viewer/tree-viewer/tree-viewer.vue +1 -1
- package/src/components/unidoo-viewer/unidoo-viewer.vue +8 -6
- package/src/components/unidoo-viewer/years-component/years-component.vue +58 -38
- package/src/utils.js +7 -5
|
@@ -1,39 +1,54 @@
|
|
|
1
1
|
/* eslint-disable keyword-spacing */
|
|
2
2
|
<template>
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
3
|
+
<client-only>
|
|
4
|
+
<v-container>
|
|
5
|
+
<section v-if="heatmap" heatmap-calendar>
|
|
6
|
+
<div
|
|
7
|
+
month
|
|
8
|
+
v-for="(month, monthIndex) in heatmap.monthCalendar"
|
|
9
|
+
:key="monthIndex"
|
|
10
|
+
>
|
|
11
|
+
<header>{{ lo.months[monthIndex] }}</header>
|
|
12
|
+
<div days>
|
|
13
|
+
<div
|
|
14
|
+
:class="computeClass(day)"
|
|
15
|
+
v-for="(day, dayIndex) in month"
|
|
16
|
+
:key="dayIndex"
|
|
17
|
+
:data-day="formatDate(day.date)"
|
|
18
|
+
:data-count="day.count"
|
|
19
|
+
:data-color="day.colorIndex"
|
|
20
|
+
:style="{
|
|
21
|
+
opacity: day.date <= now ? 1 : 0.3,
|
|
22
|
+
backgroundColor: getColor(day.colorIndex)
|
|
23
|
+
}"
|
|
24
|
+
v-tooltip="tooltipOptions(day)"
|
|
25
|
+
@click="handleClick($event, day)"
|
|
26
|
+
>
|
|
27
|
+
<div v-if="day.date < now" :style="{ color: getTextColor(day) }">
|
|
28
|
+
{{ dayIndex + 1 }}
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
22
31
|
</div>
|
|
23
32
|
</div>
|
|
24
|
-
</
|
|
25
|
-
</
|
|
26
|
-
</
|
|
33
|
+
</section>
|
|
34
|
+
</v-container>
|
|
35
|
+
</client-only>
|
|
27
36
|
</template>
|
|
28
37
|
|
|
29
38
|
<script>
|
|
30
|
-
import Plugin from
|
|
31
|
-
import { VTooltip } from
|
|
32
|
-
import Heatmap from
|
|
33
|
-
import {
|
|
34
|
-
|
|
39
|
+
import Plugin from "../../plugin.js";
|
|
40
|
+
import { VTooltip } from "v-tooltip";
|
|
41
|
+
import Heatmap from "./Heatmap";
|
|
42
|
+
import {
|
|
43
|
+
DEFAULT_LOCALE,
|
|
44
|
+
DEFAULT_RANGE_COLOR,
|
|
45
|
+
DEFAULT_TOOLTIP_UNIT
|
|
46
|
+
} from "./consts.js";
|
|
47
|
+
import { utcToZonedTime } from "date-fns-tz";
|
|
35
48
|
|
|
36
|
-
|
|
49
|
+
if (typeof window !== "undefined") {
|
|
50
|
+
VTooltip.enabled = window.innerWidth > 768;
|
|
51
|
+
}
|
|
37
52
|
|
|
38
53
|
export default {
|
|
39
54
|
directives: {
|
|
@@ -75,7 +90,7 @@ export default {
|
|
|
75
90
|
showCount: {
|
|
76
91
|
type: Boolean,
|
|
77
92
|
default: false
|
|
78
|
-
},
|
|
93
|
+
},
|
|
79
94
|
noDataText: {
|
|
80
95
|
type: String,
|
|
81
96
|
default: null
|
|
@@ -93,22 +108,22 @@ export default {
|
|
|
93
108
|
default: "Europe/Paris"
|
|
94
109
|
}
|
|
95
110
|
},
|
|
96
|
-
data: () => ({
|
|
97
|
-
|
|
98
|
-
}),
|
|
111
|
+
data: () => ({}),
|
|
99
112
|
watch: {
|
|
100
|
-
dateValue
|
|
101
|
-
this.focusDate(val)
|
|
102
|
-
this.updateDateSwitcher(val)
|
|
103
|
-
},
|
|
104
|
-
year
|
|
105
|
-
if (val !== old) {
|
|
106
|
-
const rects = document.querySelectorAll(
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
dateValue(val) {
|
|
114
|
+
this.focusDate(val);
|
|
115
|
+
this.updateDateSwitcher(val);
|
|
116
|
+
},
|
|
117
|
+
year(val, old) {
|
|
118
|
+
if (val !== old && typeof document !== "undefined") {
|
|
119
|
+
const rects = document.querySelectorAll(
|
|
120
|
+
"[heatmap-calendar] [month] .monthday"
|
|
121
|
+
);
|
|
122
|
+
rects.forEach((element) => {
|
|
123
|
+
element.classList.remove("day-focus");
|
|
109
124
|
});
|
|
110
|
-
this.focusDate(this.dateValue)
|
|
111
|
-
this.updateDateSwitcher(null)
|
|
125
|
+
this.focusDate(this.dateValue);
|
|
126
|
+
this.updateDateSwitcher(null);
|
|
112
127
|
}
|
|
113
128
|
}
|
|
114
129
|
},
|
|
@@ -116,10 +131,11 @@ export default {
|
|
|
116
131
|
now() {
|
|
117
132
|
return new Date(new Date().setHours(23, 59, 59, 999)).toUnidooUTC();
|
|
118
133
|
},
|
|
119
|
-
heatmap
|
|
120
|
-
|
|
134
|
+
heatmap() {
|
|
135
|
+
if (typeof window === "undefined") return null;
|
|
136
|
+
return new Heatmap(this.year, this.values, this.completeValue);
|
|
121
137
|
},
|
|
122
|
-
lo
|
|
138
|
+
lo() {
|
|
123
139
|
if (this.locale) {
|
|
124
140
|
return {
|
|
125
141
|
months: this.locale.months || DEFAULT_LOCALE.months,
|
|
@@ -127,111 +143,130 @@ export default {
|
|
|
127
143
|
on: this.locale.on || DEFAULT_LOCALE.on,
|
|
128
144
|
less: this.locale.less || DEFAULT_LOCALE.less,
|
|
129
145
|
more: this.locale.more || DEFAULT_LOCALE.more
|
|
130
|
-
}
|
|
146
|
+
};
|
|
131
147
|
}
|
|
132
|
-
return DEFAULT_LOCALE
|
|
148
|
+
return DEFAULT_LOCALE;
|
|
133
149
|
},
|
|
134
150
|
dateValue() {
|
|
135
151
|
if (this.value) {
|
|
136
|
-
return
|
|
152
|
+
return this.value instanceof Date ? this.value : this.value.date;
|
|
137
153
|
} else {
|
|
138
154
|
return this.value;
|
|
139
155
|
}
|
|
140
156
|
}
|
|
141
157
|
},
|
|
142
|
-
beforeMount
|
|
158
|
+
beforeMount() {
|
|
143
159
|
const self = this;
|
|
144
|
-
Date.prototype.toUnidooUTC = function() {
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
Plugin.EventBus.$on("unidoo-heatmap-set-date", params => {
|
|
160
|
+
Date.prototype.toUnidooUTC = function () {
|
|
161
|
+
return utcToZonedTime(this, self.timeZone);
|
|
162
|
+
};
|
|
163
|
+
Plugin.EventBus.$on("unidoo-heatmap-set-date", (params) => {
|
|
148
164
|
if (this.heatmapKey) {
|
|
149
165
|
if (params.key === this.heatmapKey && params.date) {
|
|
150
|
-
this.setDate(params.date)
|
|
151
|
-
}
|
|
166
|
+
this.setDate(params.date);
|
|
167
|
+
}
|
|
152
168
|
} else if (params.date) {
|
|
153
|
-
this.setDate(params.date)
|
|
169
|
+
this.setDate(params.date);
|
|
154
170
|
}
|
|
155
|
-
})
|
|
156
|
-
Plugin.EventBus.$on("unidoo-heatmap-get-date", params => {
|
|
171
|
+
});
|
|
172
|
+
Plugin.EventBus.$on("unidoo-heatmap-get-date", (params) => {
|
|
157
173
|
if (this.heatmapKey) {
|
|
158
174
|
if (params.key === this.heatmapKey) {
|
|
159
|
-
this.updateDateSwitcher(this.dateValue)
|
|
160
|
-
}
|
|
161
|
-
} else {
|
|
162
|
-
this.updateDateSwitcher(this.dateValue)
|
|
175
|
+
this.updateDateSwitcher(this.dateValue);
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
this.updateDateSwitcher(this.dateValue);
|
|
163
179
|
}
|
|
164
|
-
})
|
|
180
|
+
});
|
|
165
181
|
},
|
|
166
182
|
methods: {
|
|
167
|
-
computeClass
|
|
168
|
-
return `monthday ${
|
|
183
|
+
computeClass(day) {
|
|
184
|
+
return `monthday ${
|
|
185
|
+
day.date <= this.now ? "clickable" : "not-clickable"
|
|
186
|
+
} ${this.isSameDay(day.date, this.dateValue) ? "day-focus" : ""}`;
|
|
169
187
|
},
|
|
170
|
-
tooltipOptions
|
|
188
|
+
tooltipOptions(day) {
|
|
171
189
|
if (this.tooltip) {
|
|
172
190
|
if (day.count != null) {
|
|
173
191
|
if (this.showCount) {
|
|
174
192
|
return {
|
|
175
|
-
content: `<b>${day.count} ${this.tooltipUnit}</b> ${this.lo.on} ${
|
|
193
|
+
content: `<b>${day.count} ${this.tooltipUnit}</b> ${this.lo.on} ${
|
|
194
|
+
this.lo.months[day.date.getMonth()]
|
|
195
|
+
} ${day.date.getDate()}, ${day.date.getFullYear()}`,
|
|
176
196
|
delay: { show: 150, hide: 50 }
|
|
177
|
-
}
|
|
197
|
+
};
|
|
178
198
|
} else {
|
|
179
199
|
return {
|
|
180
|
-
content: `${this.lo.on} ${
|
|
200
|
+
content: `${this.lo.on} ${
|
|
201
|
+
this.lo.months[day.date.getMonth()]
|
|
202
|
+
} ${day.date.getDate()}, ${day.date.getFullYear()}`,
|
|
181
203
|
delay: { show: 150, hide: 50 }
|
|
182
|
-
}
|
|
204
|
+
};
|
|
183
205
|
}
|
|
184
206
|
} else if (this.noDataText) {
|
|
185
207
|
return {
|
|
186
208
|
content: `${this.noDataText}`,
|
|
187
209
|
delay: { show: 150, hide: 50 }
|
|
188
|
-
}
|
|
210
|
+
};
|
|
189
211
|
} else {
|
|
190
212
|
return {
|
|
191
|
-
content: `${this.lo.on} ${
|
|
213
|
+
content: `${this.lo.on} ${
|
|
214
|
+
this.lo.months[day.date.getMonth()]
|
|
215
|
+
} ${day.date.getDate()}, ${day.date.getFullYear()}`,
|
|
192
216
|
delay: { show: 150, hide: 50 }
|
|
193
|
-
}
|
|
217
|
+
};
|
|
194
218
|
}
|
|
195
219
|
}
|
|
196
|
-
return false
|
|
220
|
+
return false;
|
|
197
221
|
},
|
|
198
|
-
handleClick
|
|
222
|
+
handleClick(e, day) {
|
|
199
223
|
if (day) {
|
|
200
|
-
if (
|
|
224
|
+
if (
|
|
225
|
+
day.date <= this.now &&
|
|
226
|
+
(typeof day.count === "number" || this.missingAllowed)
|
|
227
|
+
) {
|
|
201
228
|
if (this.returnObject) {
|
|
202
|
-
this.$emit(
|
|
229
|
+
this.$emit("input", day);
|
|
203
230
|
} else {
|
|
204
|
-
this.$emit(
|
|
231
|
+
this.$emit("input", day.date);
|
|
205
232
|
}
|
|
206
233
|
}
|
|
207
234
|
}
|
|
208
235
|
},
|
|
209
|
-
setDate
|
|
210
|
-
if (!d) return
|
|
236
|
+
setDate(d) {
|
|
237
|
+
if (!d) return;
|
|
211
238
|
const day = this.heatmap.getDayFromDate(d);
|
|
212
239
|
this.handleClick(null, day);
|
|
213
240
|
},
|
|
214
|
-
updateDateSwitcher
|
|
215
|
-
this.$unidooDateSwitcher.update(
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
241
|
+
updateDateSwitcher(d) {
|
|
242
|
+
this.$unidooDateSwitcher.update(
|
|
243
|
+
{
|
|
244
|
+
hasPrevious: this.hasPreviousDate(d),
|
|
245
|
+
hasNext: this.hasNextDate(d),
|
|
246
|
+
previousAvailable: this.heatmap.getPreviousAvailableDate(d),
|
|
247
|
+
nextAvailable: this.heatmap.getNextAvailableDate(d)
|
|
248
|
+
},
|
|
249
|
+
this.heatmapKey
|
|
250
|
+
);
|
|
251
|
+
},
|
|
252
|
+
hasPreviousDate(d) {
|
|
223
253
|
if (!d || !this.isDateInYear(d)) return false;
|
|
224
|
-
const syear =
|
|
254
|
+
const syear =
|
|
255
|
+
this.year instanceof Date ? this.year.getFullYear() : this.year;
|
|
225
256
|
const firstDay = new Date(syear, 0, 1).toUnidooUTC();
|
|
226
257
|
d.setHours(0, 0, 0, 0);
|
|
227
258
|
if (d <= firstDay) return false;
|
|
228
|
-
return true;
|
|
259
|
+
return true;
|
|
229
260
|
},
|
|
230
|
-
hasNextDate
|
|
261
|
+
hasNextDate(d) {
|
|
231
262
|
if (!d || !this.isDateInYear(d)) return false;
|
|
232
|
-
const syear =
|
|
263
|
+
const syear =
|
|
264
|
+
this.year instanceof Date ? this.year.getFullYear() : this.year;
|
|
233
265
|
let lastDay = null;
|
|
234
|
-
if (
|
|
266
|
+
if (
|
|
267
|
+
new Date(syear, 0, 1).toUnidooUTC().getFullYear() ===
|
|
268
|
+
new Date().toUnidooUTC().getFullYear()
|
|
269
|
+
) {
|
|
235
270
|
lastDay = new Date().toUnidooUTC();
|
|
236
271
|
} else {
|
|
237
272
|
lastDay = new Date(syear, 11, 31).toUnidooUTC();
|
|
@@ -240,237 +275,244 @@ export default {
|
|
|
240
275
|
if (d >= lastDay) return false;
|
|
241
276
|
return true;
|
|
242
277
|
},
|
|
243
|
-
focusDate
|
|
244
|
-
if (!d) return
|
|
278
|
+
focusDate(d) {
|
|
279
|
+
if (!d) return;
|
|
245
280
|
const date = this.formatDate(d);
|
|
246
|
-
const el = this.$el.querySelector(`[data-day='${date}']`)
|
|
281
|
+
const el = this.$el.querySelector(`[data-day='${date}']`);
|
|
247
282
|
if (el) {
|
|
248
|
-
this.focusElement(el)
|
|
283
|
+
this.focusElement(el);
|
|
249
284
|
}
|
|
250
285
|
},
|
|
251
|
-
focusElement
|
|
252
|
-
const rects = this.$el.querySelectorAll(
|
|
253
|
-
|
|
254
|
-
|
|
286
|
+
focusElement(el) {
|
|
287
|
+
const rects = this.$el.querySelectorAll(
|
|
288
|
+
"[heatmap-calendar] [month] .monthday"
|
|
289
|
+
);
|
|
290
|
+
rects.forEach((element) => {
|
|
291
|
+
element.classList.remove("day-focus");
|
|
255
292
|
});
|
|
256
|
-
el.classList.add(
|
|
293
|
+
el.classList.add("day-focus");
|
|
257
294
|
},
|
|
258
|
-
getColor
|
|
259
|
-
if (typeof this.rangeColor[index] ===
|
|
260
|
-
return this.rangeColor[0]
|
|
295
|
+
getColor(index) {
|
|
296
|
+
if (typeof this.rangeColor[index] === "undefined") {
|
|
297
|
+
return this.rangeColor[0];
|
|
261
298
|
} else {
|
|
262
|
-
return this.rangeColor[index]
|
|
299
|
+
return this.rangeColor[index];
|
|
263
300
|
}
|
|
264
301
|
},
|
|
265
302
|
// compute text contrast (source https://codepen.io/davidhalford/pen/ywEva)
|
|
266
|
-
getTextColor
|
|
267
|
-
const rectColor = this.getColor(day.colorIndex)
|
|
268
|
-
if (rectColor && rectColor.startsWith(
|
|
303
|
+
getTextColor(day) {
|
|
304
|
+
const rectColor = this.getColor(day.colorIndex);
|
|
305
|
+
if (rectColor && rectColor.startsWith("#")) {
|
|
269
306
|
const threshold = 130; /* about half of 256. Lower threshold equals more dark text on dark background */
|
|
270
|
-
const hRed = this.hexToR(rectColor)
|
|
271
|
-
const hGreen = this.hexToG(rectColor)
|
|
272
|
-
const hBlue = this.hexToB(rectColor)
|
|
273
|
-
const cBrightness = (
|
|
307
|
+
const hRed = this.hexToR(rectColor);
|
|
308
|
+
const hGreen = this.hexToG(rectColor);
|
|
309
|
+
const hBlue = this.hexToB(rectColor);
|
|
310
|
+
const cBrightness = (hRed * 299 + hGreen * 587 + hBlue * 114) / 1000;
|
|
274
311
|
if (cBrightness > threshold) {
|
|
275
|
-
return "#000000"
|
|
312
|
+
return "#000000";
|
|
276
313
|
} else {
|
|
277
|
-
return "#ffffff"
|
|
314
|
+
return "#ffffff";
|
|
278
315
|
}
|
|
279
316
|
} else {
|
|
280
|
-
return "#000000"
|
|
317
|
+
return "#000000";
|
|
281
318
|
}
|
|
282
319
|
},
|
|
283
|
-
hexToR
|
|
284
|
-
return parseInt(
|
|
320
|
+
hexToR(h) {
|
|
321
|
+
return parseInt(this.cutHex(h).substring(0, 2), 16);
|
|
285
322
|
},
|
|
286
|
-
hexToG
|
|
287
|
-
return parseInt(
|
|
323
|
+
hexToG(h) {
|
|
324
|
+
return parseInt(this.cutHex(h).substring(2, 4), 16);
|
|
288
325
|
},
|
|
289
|
-
hexToB
|
|
290
|
-
return parseInt(
|
|
326
|
+
hexToB(h) {
|
|
327
|
+
return parseInt(this.cutHex(h).substring(4, 6), 16);
|
|
291
328
|
},
|
|
292
|
-
cutHex
|
|
293
|
-
return
|
|
329
|
+
cutHex(h) {
|
|
330
|
+
return h.charAt(0) === "#" ? h.substring(1, 7) : h;
|
|
294
331
|
},
|
|
295
|
-
formatDate
|
|
296
|
-
if (!d) return
|
|
297
|
-
const date = new Date(d).toUnidooUTC()
|
|
298
|
-
if (!date) return
|
|
299
|
-
const dd = date.getDate()
|
|
300
|
-
const mm = date.getMonth() + 1
|
|
301
|
-
const yyyy = date.getFullYear()
|
|
302
|
-
return `${yyyy}-${mm}-${dd}
|
|
332
|
+
formatDate(d) {
|
|
333
|
+
if (!d) return "";
|
|
334
|
+
const date = new Date(d).toUnidooUTC();
|
|
335
|
+
if (!date) return "";
|
|
336
|
+
const dd = date.getDate();
|
|
337
|
+
const mm = date.getMonth() + 1;
|
|
338
|
+
const yyyy = date.getFullYear();
|
|
339
|
+
return `${yyyy}-${mm}-${dd}`;
|
|
303
340
|
},
|
|
304
|
-
isSameDay
|
|
305
|
-
if (!first || !second) return false
|
|
306
|
-
return
|
|
341
|
+
isSameDay(first, second) {
|
|
342
|
+
if (!first || !second) return false;
|
|
343
|
+
return (
|
|
344
|
+
first.getFullYear() === second.getFullYear() &&
|
|
307
345
|
first.getMonth() === second.getMonth() &&
|
|
308
346
|
first.getDate() === second.getDate()
|
|
347
|
+
);
|
|
309
348
|
},
|
|
310
|
-
isDateInYear
|
|
349
|
+
isDateInYear(d) {
|
|
311
350
|
if (this.year && d) {
|
|
312
|
-
const sd =
|
|
313
|
-
const syear =
|
|
351
|
+
const sd = "" + (d instanceof Date ? d.getFullYear() : d);
|
|
352
|
+
const syear =
|
|
353
|
+
"" +
|
|
354
|
+
(this.year instanceof Date ? this.year.getFullYear() : this.year);
|
|
314
355
|
return syear === sd;
|
|
315
356
|
} else {
|
|
316
|
-
return false
|
|
357
|
+
return false;
|
|
317
358
|
}
|
|
318
359
|
}
|
|
319
360
|
}
|
|
320
|
-
}
|
|
361
|
+
};
|
|
321
362
|
</script>
|
|
322
363
|
<style scoped>
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
364
|
+
section[heatmap-calendar] {
|
|
365
|
+
display: flex;
|
|
366
|
+
flex-flow: row wrap;
|
|
367
|
+
max-width: 1300px;
|
|
368
|
+
line-height: 1.5;
|
|
369
|
+
}
|
|
370
|
+
section[heatmap-calendar] [month] {
|
|
371
|
+
display: flex;
|
|
372
|
+
flex: 0 0 580px;
|
|
373
|
+
flex-flow: row nowrap;
|
|
374
|
+
align-items: top;
|
|
375
|
+
}
|
|
376
|
+
section[heatmap-calendar] [month] header {
|
|
377
|
+
flex: 0 0 35px;
|
|
378
|
+
color: #767676;
|
|
379
|
+
font-size: 12px;
|
|
380
|
+
}
|
|
381
|
+
section[heatmap-calendar] [month] [days] {
|
|
382
|
+
display: flex;
|
|
383
|
+
flex-direction: row;
|
|
384
|
+
flex-wrap: wrap;
|
|
385
|
+
margin: 0 5px;
|
|
386
|
+
}
|
|
387
|
+
section[heatmap-calendar] [month] .monthday {
|
|
388
|
+
margin-right: 2px;
|
|
389
|
+
margin-bottom: 2px;
|
|
390
|
+
width: 15px;
|
|
391
|
+
height: 15px;
|
|
392
|
+
text-align: center;
|
|
393
|
+
background-color: rgb(235, 237, 240);
|
|
394
|
+
}
|
|
395
|
+
section[heatmap-calendar] .monthday:not(:nth-child(7n + 1)) > div {
|
|
396
|
+
display: none;
|
|
397
|
+
}
|
|
398
|
+
section[heatmap-calendar] [month] .monthday.not-clickable {
|
|
399
|
+
opacity: 0.2;
|
|
400
|
+
}
|
|
401
|
+
section[heatmap-calendar] [month] .monthday.clickable:hover {
|
|
402
|
+
outline: 2px solid rgb(195, 195, 195);
|
|
403
|
+
cursor: pointer;
|
|
404
|
+
}
|
|
405
|
+
section[heatmap-calendar] [month] .monthday > div {
|
|
406
|
+
fill: black;
|
|
407
|
+
pointer-events: none;
|
|
408
|
+
font-size: 11px;
|
|
409
|
+
letter-spacing: 0;
|
|
410
|
+
line-height: 15px;
|
|
411
|
+
}
|
|
412
|
+
section[heatmap-calendar] [month] .monthday.day-focus {
|
|
413
|
+
box-shadow: 0px 0px 0px 1px rgba(255, 0, 0, 0.5);
|
|
414
|
+
}
|
|
415
|
+
section[heatmap-calendar] [month] .monthday.day-focus::before {
|
|
416
|
+
display: block;
|
|
417
|
+
position: absolute;
|
|
418
|
+
content: "";
|
|
419
|
+
height: 15px;
|
|
420
|
+
width: 15px;
|
|
421
|
+
background: rgba(255, 55, 43, 0.5);
|
|
422
|
+
}
|
|
423
|
+
@media screen and (max-width: 1160px) {
|
|
329
424
|
section[heatmap-calendar] [month] {
|
|
330
|
-
|
|
331
|
-
flex: 0 0 580px;
|
|
332
|
-
flex-flow:row nowrap;
|
|
333
|
-
align-items: top;
|
|
334
|
-
}
|
|
335
|
-
section[heatmap-calendar] [month] header {
|
|
336
|
-
flex: 0 0 35px;
|
|
337
|
-
color:#767676;
|
|
338
|
-
font-size: 12px;
|
|
339
|
-
}
|
|
340
|
-
section[heatmap-calendar] [month] [days] {
|
|
341
|
-
display: flex;
|
|
342
|
-
flex-direction: row;
|
|
343
|
-
flex-wrap: wrap;
|
|
344
|
-
margin: 0 5px;
|
|
345
|
-
}
|
|
346
|
-
section[heatmap-calendar] [month] .monthday{
|
|
347
|
-
margin-right: 2px;
|
|
348
|
-
margin-bottom: 2px;
|
|
349
|
-
width:15px;
|
|
350
|
-
height:15px;
|
|
351
|
-
text-align: center;
|
|
352
|
-
background-color:rgb(235, 237, 240);
|
|
353
|
-
}
|
|
354
|
-
section[heatmap-calendar] .monthday:not(:nth-child(7n+1)) > div {
|
|
355
|
-
display:none;
|
|
356
|
-
}
|
|
357
|
-
section[heatmap-calendar] [month] .monthday.not-clickable {
|
|
358
|
-
opacity:0.2;
|
|
359
|
-
}
|
|
360
|
-
section[heatmap-calendar] [month] .monthday.clickable:hover {
|
|
361
|
-
outline:2px solid rgb(195, 195, 195);
|
|
362
|
-
cursor: pointer;
|
|
363
|
-
}
|
|
364
|
-
section[heatmap-calendar] [month] .monthday > div {
|
|
365
|
-
fill:black;
|
|
366
|
-
pointer-events:none;
|
|
367
|
-
font-size: 11px;
|
|
368
|
-
letter-spacing: 0;
|
|
369
|
-
line-height: 15px;
|
|
370
|
-
}
|
|
371
|
-
section[heatmap-calendar] [month] .monthday.day-focus{
|
|
372
|
-
box-shadow: 0px 0px 0px 1px rgba(255,0,0,0.5);
|
|
373
|
-
}
|
|
374
|
-
section[heatmap-calendar] [month] .monthday.day-focus::before{
|
|
375
|
-
display: block;
|
|
376
|
-
position: absolute;
|
|
377
|
-
content: '';
|
|
378
|
-
height: 15px;
|
|
379
|
-
width: 15px;
|
|
380
|
-
background: rgba(255,55,43,0.5);
|
|
381
|
-
}
|
|
382
|
-
@media screen and (max-width: 1160px) {
|
|
383
|
-
section[heatmap-calendar] [month] {
|
|
384
|
-
flex:auto;
|
|
385
|
-
}
|
|
425
|
+
flex: auto;
|
|
386
426
|
}
|
|
427
|
+
}
|
|
387
428
|
</style>
|
|
388
429
|
<style>
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
430
|
+
.vue-tooltip-theme.tooltip {
|
|
431
|
+
display: block !important;
|
|
432
|
+
z-index: 10000;
|
|
433
|
+
}
|
|
434
|
+
.vue-tooltip-theme.tooltip .tooltip-inner {
|
|
435
|
+
background: rgba(0, 0, 0, 0.7);
|
|
436
|
+
border-radius: 3px;
|
|
437
|
+
color: #ebedf0;
|
|
438
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
|
|
439
|
+
Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
|
440
|
+
font-size: 12px;
|
|
441
|
+
line-height: 16px;
|
|
442
|
+
padding: 14px 10px;
|
|
443
|
+
}
|
|
444
|
+
.vue-tooltip-theme.tooltip .tooltip-inner b {
|
|
445
|
+
color: white;
|
|
446
|
+
}
|
|
447
|
+
.vue-tooltip-theme.tooltip .tooltip-arrow {
|
|
448
|
+
width: 0;
|
|
449
|
+
height: 0;
|
|
450
|
+
border-style: solid;
|
|
451
|
+
position: absolute;
|
|
452
|
+
margin: 5px;
|
|
453
|
+
border-color: black;
|
|
454
|
+
z-index: 1;
|
|
455
|
+
}
|
|
456
|
+
.vue-tooltip-theme.tooltip[x-placement^="top"] {
|
|
457
|
+
margin-bottom: 5px;
|
|
458
|
+
}
|
|
459
|
+
.vue-tooltip-theme.tooltip[x-placement^="top"] .tooltip-arrow {
|
|
460
|
+
border-width: 5px 5px 0 5px;
|
|
461
|
+
border-left-color: transparent !important;
|
|
462
|
+
border-right-color: transparent !important;
|
|
463
|
+
border-bottom-color: transparent !important;
|
|
464
|
+
bottom: -5px;
|
|
465
|
+
left: calc(50% - 5px);
|
|
466
|
+
margin-top: 0;
|
|
467
|
+
margin-bottom: 0;
|
|
468
|
+
}
|
|
469
|
+
.vue-tooltip-theme.tooltip[x-placement^="bottom"] {
|
|
470
|
+
margin-top: 5px;
|
|
471
|
+
}
|
|
472
|
+
.vue-tooltip-theme.tooltip[x-placement^="bottom"] .tooltip-arrow {
|
|
473
|
+
border-width: 0 5px 5px 5px;
|
|
474
|
+
border-left-color: transparent !important;
|
|
475
|
+
border-right-color: transparent !important;
|
|
476
|
+
border-top-color: transparent !important;
|
|
477
|
+
top: -5px;
|
|
478
|
+
left: calc(50% - 5px);
|
|
479
|
+
margin-top: 0;
|
|
480
|
+
margin-bottom: 0;
|
|
481
|
+
}
|
|
482
|
+
.vue-tooltip-theme.tooltip[x-placement^="right"] {
|
|
483
|
+
margin-left: 5px;
|
|
484
|
+
}
|
|
485
|
+
.vue-tooltip-theme.tooltip[x-placement^="right"] .tooltip-arrow {
|
|
486
|
+
border-width: 5px 5px 5px 0;
|
|
487
|
+
border-left-color: transparent !important;
|
|
488
|
+
border-top-color: transparent !important;
|
|
489
|
+
border-bottom-color: transparent !important;
|
|
490
|
+
left: -5px;
|
|
491
|
+
top: calc(50% - 5px);
|
|
492
|
+
margin-left: 0;
|
|
493
|
+
margin-right: 0;
|
|
494
|
+
}
|
|
495
|
+
.vue-tooltip-theme.tooltip[x-placement^="left"] {
|
|
496
|
+
margin-right: 5px;
|
|
497
|
+
}
|
|
498
|
+
.vue-tooltip-theme.tooltip[x-placement^="left"] .tooltip-arrow {
|
|
499
|
+
border-width: 5px 0 5px 5px;
|
|
500
|
+
border-top-color: transparent !important;
|
|
501
|
+
border-right-color: transparent !important;
|
|
502
|
+
border-bottom-color: transparent !important;
|
|
503
|
+
right: -5px;
|
|
504
|
+
top: calc(50% - 5px);
|
|
505
|
+
margin-left: 0;
|
|
506
|
+
margin-right: 0;
|
|
507
|
+
}
|
|
508
|
+
.vue-tooltip-theme.tooltip[aria-hidden="true"] {
|
|
509
|
+
visibility: hidden;
|
|
510
|
+
opacity: 0;
|
|
511
|
+
transition: opacity 0.15s, visibility 0.15s;
|
|
512
|
+
}
|
|
513
|
+
.vue-tooltip-theme.tooltip[aria-hidden="false"] {
|
|
514
|
+
visibility: visible;
|
|
515
|
+
opacity: 1;
|
|
516
|
+
transition: opacity 0.15s;
|
|
517
|
+
}
|
|
476
518
|
</style>
|