@kalisio/kdk 2.1.8 → 2.2.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/.travis.test.sh +42 -10
- package/README.md +2 -2
- package/core/api/application.js +6 -1
- package/core/api/authentication.js +17 -1
- package/core/api/db.js +7 -2
- package/core/api/hooks/hooks.authentication.js +4 -2
- package/core/api/hooks/hooks.authorisations.js +12 -2
- package/core/api/hooks/hooks.model.js +5 -5
- package/core/api/hooks/hooks.organisations.js +0 -4
- package/core/api/services/account/account.hooks.js +10 -6
- package/core/api/services/account/account.service.js +1 -1
- package/{map/api/services/geocoder/geocoder.hooks.js → core/api/services/import-export/import-export.hooks.js} +7 -5
- package/core/api/services/import-export/import-export.service.js +11 -0
- package/core/api/services/index.js +13 -1
- package/core/api/services/users/users.hooks.js +2 -3
- package/core/client/api.js +16 -14
- package/core/client/capabilities.js +6 -2
- package/core/client/components/KContent.vue +11 -1
- package/core/client/components/KDialog.vue +17 -15
- package/core/client/components/KSponsor.vue +1 -1
- package/core/client/components/KTextArea.vue +5 -1
- package/core/client/components/app/KAbout.vue +1 -2
- package/core/client/components/app/KWelcome.vue +3 -5
- package/core/client/components/chart/KTimeSeriesChart.vue +24 -37
- package/core/client/components/collection/KColumn.vue +20 -17
- package/core/client/components/editor/KModalEditor.vue +0 -2
- package/core/client/components/form/KChipsField.vue +12 -2
- package/core/client/components/form/KColorField.vue +12 -2
- package/core/client/components/form/KColorScaleField.vue +12 -2
- package/core/client/components/form/KDateTimeRangeField.vue +12 -2
- package/core/client/components/form/KDatetimeField.vue +12 -2
- package/core/client/components/form/KEmailField.vue +12 -2
- package/core/client/components/form/KFileField.vue +12 -2
- package/core/client/components/form/KForm.vue +43 -9
- package/core/client/components/form/KIconField.vue +12 -2
- package/core/client/components/form/KItemField.vue +25 -4
- package/core/client/components/form/KNumberField.vue +12 -2
- package/core/client/components/form/KOptionsField.vue +12 -2
- package/core/client/components/form/KPasswordField.vue +12 -2
- package/core/client/components/form/KPhoneField.vue +13 -3
- package/core/client/components/form/KPropertyItemField.vue +12 -2
- package/core/client/components/form/KResolutionField.vue +126 -0
- package/core/client/components/form/KRoleField.vue +12 -2
- package/core/client/components/form/KSelectField.vue +14 -4
- package/core/client/components/form/KTextField.vue +12 -2
- package/core/client/components/form/KTextareaField.vue +13 -3
- package/core/client/components/form/KToggleField.vue +12 -2
- package/core/client/components/form/KTokenField.vue +12 -2
- package/core/client/components/form/KUnitField.vue +12 -2
- package/core/client/components/form/KUrlField.vue +12 -2
- package/core/client/components/input/KIconChooser.vue +10 -12
- package/core/client/components/input/KPalette.vue +2 -1
- package/core/client/components/layout/KPage.vue +5 -4
- package/core/client/components/layout/KWindow.vue +10 -10
- package/core/client/components/media/KColorScale.vue +26 -20
- package/core/client/components/media/KImageViewer.vue +57 -33
- package/core/client/components/media/KShape.vue +14 -103
- package/core/client/components/screen/KRegisterScreen.vue +0 -1
- package/core/client/components/screen/KScreenFooter.vue +0 -18
- package/core/client/components/team/KAddMember.vue +14 -11
- package/core/client/components/team/KGroupsActivity.vue +14 -0
- package/core/client/components/team/KMembersActivity.vue +12 -0
- package/core/client/components/team/KTagsActivity.vue +14 -0
- package/core/client/components/time/KDateTime.vue +23 -7
- package/core/client/components/time/KTimeControl.vue +142 -0
- package/core/client/components/tool/KExportTool.vue +57 -0
- package/core/client/composables/collection.js +0 -1
- package/core/client/composables/pwa.js +0 -1
- package/core/client/composables/schema.js +1 -1
- package/core/client/composables/session.js +30 -6
- package/core/client/exporter.js +141 -0
- package/core/client/i18n/core_en.json +93 -24
- package/core/client/i18n/core_fr.json +94 -24
- package/core/client/index.js +3 -0
- package/core/client/layout.js +34 -14
- package/core/client/local-storage.js +8 -6
- package/core/client/mixins/index.js +0 -1
- package/core/client/mixins/mixin.base-field.js +24 -2
- package/core/client/mixins/mixin.object-proxy.js +0 -1
- package/core/client/readers/reader.csv.js +1 -1
- package/core/client/search.js +2 -1
- package/core/client/services/index.js +2 -1
- package/core/client/services/local-settings.service.js +4 -4
- package/core/client/theme.js +3 -3
- package/core/client/time.js +4 -0
- package/core/client/units.js +149 -4
- package/core/client/utils/index.js +13 -6
- package/core/client/utils/utils.account.js +1 -1
- package/core/client/utils/utils.colors.js +43 -0
- package/core/client/utils/utils.platform.js +0 -1
- package/core/client/utils/utils.pwa.js +14 -14
- package/core/client/utils/utils.session.js +1 -1
- package/core/client/utils/utils.shapes.js +270 -0
- package/core/client/utils/utils.time.js +37 -0
- package/core/common/permissions.js +3 -0
- package/core/common/schemas/settings.update.json +50 -29
- package/extras/css/core.variables.scss +3 -1
- package/extras/tours/map/navigation-bar.js +17 -15
- package/extras/tours/map/timeline.js +33 -33
- package/map/api/config/categories.cjs +4 -1
- package/map/api/hooks/hooks.catalog.js +39 -0
- package/map/api/hooks/hooks.features.js +23 -3
- package/map/api/hooks/hooks.query.js +31 -10
- package/map/api/models/projects.model.mongodb.js +8 -0
- package/map/api/services/catalog/catalog.hooks.js +5 -3
- package/map/api/services/features/features.hooks.js +18 -6
- package/map/api/services/index.js +22 -6
- package/map/api/services/projects/projects.hooks.js +118 -0
- package/map/client/capture.js +16 -0
- package/map/client/cesium/utils/index.js +3 -0
- package/map/client/cesium/utils/utils.events.js +30 -0
- package/map/client/cesium/utils/utils.popup.js +17 -0
- package/map/client/cesium/{utils.js → utils/utils.style.js} +53 -49
- package/map/client/components/KCapture.vue +50 -0
- package/map/client/components/KCaptureTextArea.vue +53 -0
- package/map/client/components/KCompass.vue +2 -2
- package/map/client/components/KFeaturesChart.vue +1 -1
- package/map/client/components/KFeaturesFilter.vue +2 -2
- package/map/client/components/KLayerStyleForm.vue +256 -430
- package/map/client/components/KLevelSlider.vue +1 -1
- package/map/client/components/KNorth.vue +31 -0
- package/map/client/components/KProjectMenu.vue +88 -0
- package/map/client/components/KTimezoneMap.vue +36 -23
- package/map/client/components/catalog/KAddLayer.vue +3 -4
- package/map/client/components/catalog/KConnectLayer.vue +16 -4
- package/map/client/components/catalog/KCreateLayer.vue +1 -2
- package/map/client/components/catalog/KCreateProject.vue +100 -0
- package/map/client/components/catalog/KCreateView.vue +25 -2
- package/map/client/components/catalog/KLayersPanel.vue +24 -27
- package/map/client/components/catalog/KLayersSelector.vue +1 -1
- package/map/client/components/catalog/KProjectEditor.vue +91 -0
- package/map/client/components/catalog/KProjectManager.vue +60 -0
- package/map/client/components/catalog/KProjectSelector.vue +38 -0
- package/map/client/components/catalog/KProjectsPanel.vue +153 -0
- package/map/client/components/catalog/KSelectLayers.vue +96 -0
- package/map/client/components/catalog/KSelectViews.vue +96 -0
- package/map/client/components/catalog/KViewsPanel.vue +66 -30
- package/map/client/components/form/KDirectionField.vue +24 -5
- package/map/client/components/form/KLayerCategoryField.vue +12 -2
- package/map/client/components/form/KLocationField.vue +20 -5
- package/map/client/components/form/KOwsLayerField.vue +12 -2
- package/map/client/components/form/KOwsServiceField.vue +12 -2
- package/map/client/components/form/KSelectLayersField.vue +159 -0
- package/map/client/components/form/KSelectViewsField.vue +121 -0
- package/map/client/components/form/KTimezoneField.vue +24 -17
- package/map/client/components/legend/KColorScaleLegend.vue +1 -1
- package/map/client/components/legend/KLayerLegend.vue +61 -0
- package/map/client/components/legend/KLegend.vue +45 -44
- package/map/client/components/legend/KLegendRenderer.vue +5 -3
- package/map/client/components/legend/KSymbolsLegend.vue +12 -10
- package/map/client/components/legend/KVariablesLegend.vue +78 -0
- package/map/client/components/location/KGeocodersFilter.vue +2 -4
- package/map/client/components/location/KLocationMap.vue +48 -17
- package/map/client/components/location/KLocationSearch.vue +13 -3
- package/map/client/components/tools/KSearchTool.vue +17 -12
- package/map/client/components/widget/KElevationProfile.vue +16 -19
- package/map/client/components/widget/KMapillaryViewer.vue +21 -22
- package/map/client/components/widget/KTimeSeries.vue +35 -23
- package/map/client/composables/activity.js +15 -2
- package/map/client/composables/catalog.js +66 -0
- package/map/client/composables/highlight.js +56 -20
- package/map/client/composables/index.js +2 -0
- package/map/client/composables/location.js +25 -18
- package/map/client/composables/project.js +122 -0
- package/map/client/geolocation.js +1 -1
- package/map/client/globe.js +2 -0
- package/map/client/i18n/map_en.json +123 -76
- package/map/client/i18n/map_fr.json +124 -72
- package/map/client/index.js +3 -0
- package/map/client/init.js +17 -0
- package/map/client/leaflet/GSMaPLayer.js +16 -17
- package/map/client/leaflet/ShapeMarker.js +40 -0
- package/map/client/leaflet/TiledFeatureLayer.js +1 -1
- package/map/client/leaflet/TiledMeshLayer.js +11 -15
- package/map/client/leaflet/TiledWindLayer.js +6 -10
- package/map/client/leaflet/utils/index.js +4 -0
- package/map/client/leaflet/utils/utils.events.js +41 -0
- package/map/client/leaflet/utils/utils.popup.js +21 -0
- package/map/client/leaflet/utils/utils.style.js +191 -0
- package/map/client/leaflet/utils/utils.tiles.js +87 -0
- package/map/client/map.js +2 -0
- package/map/client/mixins/globe/mixin.base-globe.js +29 -21
- package/map/client/mixins/globe/mixin.geojson-layers.js +132 -69
- package/map/client/mixins/globe/mixin.popup.js +2 -1
- package/map/client/mixins/globe/mixin.style.js +6 -4
- package/map/client/mixins/globe/mixin.tooltip.js +8 -3
- package/map/client/mixins/map/mixin.base-map.js +13 -11
- package/map/client/mixins/map/mixin.edit-layers.js +15 -15
- package/map/client/mixins/map/mixin.forecast-layers.js +3 -1
- package/map/client/mixins/map/mixin.geojson-layers.js +56 -20
- package/map/client/mixins/map/mixin.georaster-layers.js +4 -11
- package/map/client/mixins/map/mixin.heatmap-layers.js +1 -1
- package/map/client/mixins/map/mixin.popup.js +2 -1
- package/map/client/mixins/map/mixin.style.js +4 -67
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +2 -1
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +4 -2
- package/map/client/mixins/map/mixin.tooltip.js +2 -1
- package/map/client/mixins/mixin.activity.js +66 -191
- package/map/client/mixins/mixin.catalog-panel.js +6 -6
- package/map/client/mixins/mixin.context.js +13 -10
- package/map/client/mixins/mixin.feature-service.js +29 -300
- package/map/client/mixins/mixin.weacast.js +11 -17
- package/map/client/pixi-utils.js +1 -1
- package/map/client/planets.js +58 -0
- package/map/client/utils/index.js +6 -0
- package/map/client/utils/utils.capture.js +176 -0
- package/map/client/utils/utils.catalog.js +149 -0
- package/map/client/utils/utils.features.js +364 -0
- package/map/client/utils/utils.js +0 -151
- package/map/client/utils/utils.layers.js +174 -0
- package/map/client/utils/utils.location.js +91 -23
- package/map/client/utils/utils.project.js +8 -0
- package/map/client/utils/utils.schema.js +0 -1
- package/map/client/utils/utils.style.js +297 -0
- package/map/client/utils.all.js +2 -2
- package/map/client/utils.globe.js +1 -1
- package/map/client/utils.map.js +1 -1
- package/map/common/permissions.js +2 -0
- package/map/common/schemas/capture.create.json +132 -0
- package/map/common/schemas/projects.create.json +52 -0
- package/map/common/schemas/projects.update.json +52 -0
- package/package.json +6 -5
- package/test/api/core/account.test.js +20 -0
- package/test/api/core/config/default.cjs +16 -3
- package/test/api/core/import-export.test.js +86 -0
- package/test/api/core/test-log-2023-12-19.log +7 -0
- package/test/api/core/test-log-2024-01-04.log +14 -0
- package/test/api/map/catalog.test.js +164 -0
- package/test/api/map/index.test.js +25 -61
- package/test/api/map/test-log-2023-11-24.log +121 -0
- package/test/api/map/test-log-2023-12-12.log +29 -0
- package/test/api/map/test-log-2023-12-13.log +5 -0
- package/test/api/map/test-log-2024-01-04.log +2 -0
- package/test/api/map/test-log-2024-01-11.log +1 -0
- package/test/api/map/test-log-2024-01-25.log +19 -0
- package/test/client/core/layout.js +25 -5
- package/test/client/core/utils.js +7 -0
- package/test/client/map/catalog.js +78 -1
- package/test/client/map/time.js +2 -1
- package/core/client/components/screen/KEndpointScreen.vue +0 -80
- package/core/client/mixins/mixin.account.js +0 -61
- package/extras/icons/kdk.png +0 -0
- package/map/api/services/geocoder/geocoder.service.js +0 -79
- package/map/client/components/KCaptureToolbar.vue +0 -155
- package/map/client/components/KColorLegend.vue +0 -349
- package/map/client/components/KTimeline.vue +0 -293
- package/map/client/components/KUrlLegend.vue +0 -122
- package/map/client/leaflet/utils.js +0 -246
|
@@ -30,8 +30,18 @@
|
|
|
30
30
|
</q-option-group>
|
|
31
31
|
</template>
|
|
32
32
|
<!-- Helper -->
|
|
33
|
-
<template v-if="
|
|
34
|
-
<
|
|
33
|
+
<template v-if="hasHelper" v-slot:append>
|
|
34
|
+
<k-action
|
|
35
|
+
:id="properties.name + '-helper'"
|
|
36
|
+
:label="helperLabel"
|
|
37
|
+
:icon="helperIcon"
|
|
38
|
+
:tooltip="helperTooltip"
|
|
39
|
+
:url="helperUrl"
|
|
40
|
+
:dialog="helperDialog"
|
|
41
|
+
:context="helperContext"
|
|
42
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
43
|
+
color="primary"
|
|
44
|
+
/>
|
|
35
45
|
</template>
|
|
36
46
|
</q-field>
|
|
37
47
|
</template>
|
|
@@ -26,8 +26,18 @@
|
|
|
26
26
|
/>
|
|
27
27
|
</template>
|
|
28
28
|
<!-- Helper -->
|
|
29
|
-
<template v-if="
|
|
30
|
-
<
|
|
29
|
+
<template v-if="hasHelper" v-slot:append>
|
|
30
|
+
<k-action
|
|
31
|
+
:id="properties.name + '-helper'"
|
|
32
|
+
:label="helperLabel"
|
|
33
|
+
:icon="helperIcon"
|
|
34
|
+
:tooltip="helperTooltip"
|
|
35
|
+
:url="helperUrl"
|
|
36
|
+
:dialog="helperDialog"
|
|
37
|
+
:context="helperContext"
|
|
38
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
39
|
+
color="primary"
|
|
40
|
+
/>
|
|
31
41
|
</template>
|
|
32
42
|
</q-input>
|
|
33
43
|
</template>
|
|
@@ -16,9 +16,19 @@
|
|
|
16
16
|
@blur="onChanged"
|
|
17
17
|
@update:model-value="onChanged"
|
|
18
18
|
>
|
|
19
|
-
|
|
20
|
-
<template v-if="
|
|
21
|
-
<
|
|
19
|
+
<!-- Helper -->
|
|
20
|
+
<template v-if="hasHelper" v-slot:append>
|
|
21
|
+
<k-action
|
|
22
|
+
:id="properties.name + '-helper'"
|
|
23
|
+
:label="helperLabel"
|
|
24
|
+
:icon="helperIcon"
|
|
25
|
+
:tooltip="helperTooltip"
|
|
26
|
+
:url="helperUrl"
|
|
27
|
+
:dialog="helperDialog"
|
|
28
|
+
:context="helperContext"
|
|
29
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
30
|
+
color="primary"
|
|
31
|
+
/>
|
|
22
32
|
</template>
|
|
23
33
|
</q-input>
|
|
24
34
|
</template>
|
|
@@ -49,8 +49,18 @@
|
|
|
49
49
|
</q-item>
|
|
50
50
|
</template>
|
|
51
51
|
<!-- Helper -->
|
|
52
|
-
<template v-if="
|
|
53
|
-
<
|
|
52
|
+
<template v-if="hasHelper" v-slot:append>
|
|
53
|
+
<k-action
|
|
54
|
+
:id="properties.name + '-helper'"
|
|
55
|
+
:label="helperLabel"
|
|
56
|
+
:icon="helperIcon"
|
|
57
|
+
:tooltip="helperTooltip"
|
|
58
|
+
:url="helperUrl"
|
|
59
|
+
:dialog="helperDialog"
|
|
60
|
+
:context="helperContext"
|
|
61
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
62
|
+
color="primary"
|
|
63
|
+
/>
|
|
54
64
|
</template>
|
|
55
65
|
</q-select>
|
|
56
66
|
</template>
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="labelClass">
|
|
3
|
+
<q-select
|
|
4
|
+
v-model="resolution"
|
|
5
|
+
:options="getResolutions()"
|
|
6
|
+
style="min-width: 30%"
|
|
7
|
+
dense
|
|
8
|
+
:label="label"
|
|
9
|
+
:borderless="borderless"
|
|
10
|
+
:disable="disabled"
|
|
11
|
+
>
|
|
12
|
+
<template v-slot:option="scope">
|
|
13
|
+
<q-item v-bind="scope.itemProps">
|
|
14
|
+
<q-item-section>
|
|
15
|
+
<q-item-label v-html="scope.opt.label" />
|
|
16
|
+
</q-item-section>
|
|
17
|
+
<q-item-section side>
|
|
18
|
+
<q-item-label caption>{{ scope.opt.description }}</q-item-label>
|
|
19
|
+
</q-item-section>
|
|
20
|
+
</q-item>
|
|
21
|
+
</template>
|
|
22
|
+
</q-select>
|
|
23
|
+
<q-input
|
|
24
|
+
v-model.number="width"
|
|
25
|
+
type="number"
|
|
26
|
+
min="256" max="4000"
|
|
27
|
+
mask="(#)###"
|
|
28
|
+
dense
|
|
29
|
+
:borderless="borderless"
|
|
30
|
+
input-class="text-center"
|
|
31
|
+
style="max-width: 54px"
|
|
32
|
+
:readonly="readonly"
|
|
33
|
+
:disable="disabled"
|
|
34
|
+
@update:model-value='updateModel()'
|
|
35
|
+
/>
|
|
36
|
+
<span>x</span>
|
|
37
|
+
<q-input
|
|
38
|
+
v-model.number="height"
|
|
39
|
+
type="number"
|
|
40
|
+
min="256" max="4000"
|
|
41
|
+
mask="(#)###"
|
|
42
|
+
dense
|
|
43
|
+
:borderless="borderless"
|
|
44
|
+
input-class="text-center"
|
|
45
|
+
style="max-width: 54px"
|
|
46
|
+
:readonly="readonly"
|
|
47
|
+
:disable="disabled"
|
|
48
|
+
@update:model-value='updateModel()'
|
|
49
|
+
/>
|
|
50
|
+
</div>
|
|
51
|
+
</template>
|
|
52
|
+
|
|
53
|
+
<script>
|
|
54
|
+
import _ from 'lodash'
|
|
55
|
+
import { baseField } from '../../mixins'
|
|
56
|
+
import { i18n } from '../../i18n.js'
|
|
57
|
+
|
|
58
|
+
export default {
|
|
59
|
+
mixins: [baseField],
|
|
60
|
+
data () {
|
|
61
|
+
return {
|
|
62
|
+
width: 1280,
|
|
63
|
+
height: 720,
|
|
64
|
+
resolution: undefined
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
watch: {
|
|
68
|
+
resolution: {
|
|
69
|
+
immediate: true,
|
|
70
|
+
handler (value) {
|
|
71
|
+
if (!value) this.resolution = this.getResolutions()[1]
|
|
72
|
+
else {
|
|
73
|
+
const size = _.split(this.resolution.value, 'x')
|
|
74
|
+
this.width = size[0]
|
|
75
|
+
this.height = size[1]
|
|
76
|
+
}
|
|
77
|
+
this.updateModel()
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
width: {
|
|
81
|
+
handler (value) {
|
|
82
|
+
if (value < 256) this.width = 256
|
|
83
|
+
if (value > 4000) this.width = 4000
|
|
84
|
+
this.updateModel()
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
height: {
|
|
88
|
+
handler (value) {
|
|
89
|
+
if (value < 256) this.height = 256
|
|
90
|
+
if (value > 4000) this.height = 4000
|
|
91
|
+
this.updateModel()
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
computed: {
|
|
96
|
+
labelClass () {
|
|
97
|
+
const classObject = {}
|
|
98
|
+
classObject['row items-center no-wrap q-gutter-x-xs q-pb-md items-start'] = true
|
|
99
|
+
if (this.properties.center) classObject['justify-center'] = true
|
|
100
|
+
return classObject
|
|
101
|
+
},
|
|
102
|
+
borderless () {
|
|
103
|
+
return this.properties.borderless ? this.properties.borderless : false
|
|
104
|
+
},
|
|
105
|
+
readonly () {
|
|
106
|
+
return this.resolution.readonly
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
methods: {
|
|
110
|
+
getResolutions () {
|
|
111
|
+
return [
|
|
112
|
+
{ label: i18n.t('KResolutionField.SD_LABEL'), description: i18n.t('KResolutionField.SD_DESCRIPTION'), value: '640x480', readonly: true },
|
|
113
|
+
{ label: i18n.t('KResolutionField.HD_LABEL'), description: i18n.t('KResolutionField.HD_DESCRIPTION'), value: '1280x720', readonly: true },
|
|
114
|
+
{ label: i18n.t('KResolutionField.FHD_LABEL'), description: i18n.t('KResolutionField.FHD_DESCRIPTION'), value: '1920x1080', readonly: true },
|
|
115
|
+
{ label: i18n.t('KResolutionField.QHD_LABEL'), description: i18n.t('KResolutionField.QHD_DESCRIPTION'), value: '2560x1440', readonly: true },
|
|
116
|
+
{ label: i18n.t('KResolutionField.2K_LABEL'), description: i18n.t('KResolutionField.2K_DESCRIPTION'), value: '2048x1080', readonly: true },
|
|
117
|
+
{ label: i18n.t('KResolutionField.4K_LABEL'), description: i18n.t('KResolutionField.4K_DESCRIPTION'), value: '3840x2160', readonly: true },
|
|
118
|
+
{ label: i18n.t('KResolutionField.PERSONALISED_LABEL'), value: '1280x721', readonly: false }
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
updateModel () {
|
|
122
|
+
this.model = { width: this.width, height: this.height }
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
</script>
|
|
@@ -24,8 +24,18 @@
|
|
|
24
24
|
/>
|
|
25
25
|
</template>
|
|
26
26
|
<!-- Helper -->
|
|
27
|
-
<template v-if="
|
|
28
|
-
<
|
|
27
|
+
<template v-if="hasHelper" v-slot:append>
|
|
28
|
+
<k-action
|
|
29
|
+
:id="properties.name + '-helper'"
|
|
30
|
+
:label="helperLabel"
|
|
31
|
+
:icon="helperIcon"
|
|
32
|
+
:tooltip="helperTooltip"
|
|
33
|
+
:url="helperUrl"
|
|
34
|
+
:dialog="helperDialog"
|
|
35
|
+
:context="helperContext"
|
|
36
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
37
|
+
color="primary"
|
|
38
|
+
/>
|
|
29
39
|
</template>
|
|
30
40
|
</q-field>
|
|
31
41
|
</template>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
@blur="onChanged"
|
|
28
28
|
@update:model-value="onChanged"
|
|
29
29
|
>
|
|
30
|
-
<!--
|
|
30
|
+
<!-- options display -->
|
|
31
31
|
<template v-slot:option="scope">
|
|
32
32
|
<q-item
|
|
33
33
|
v-bind="scope.itemProps"
|
|
@@ -44,9 +44,19 @@
|
|
|
44
44
|
{{ scope.opt.label }}
|
|
45
45
|
</span>
|
|
46
46
|
</template>
|
|
47
|
-
<!--
|
|
48
|
-
<template v-if="
|
|
49
|
-
<
|
|
47
|
+
<!-- Helper -->
|
|
48
|
+
<template v-if="hasHelper" v-slot:append>
|
|
49
|
+
<k-action
|
|
50
|
+
:id="properties.name + '-helper'"
|
|
51
|
+
:label="helperLabel"
|
|
52
|
+
:icon="helperIcon"
|
|
53
|
+
:tooltip="helperTooltip"
|
|
54
|
+
:url="helperUrl"
|
|
55
|
+
:dialog="helperDialog"
|
|
56
|
+
:context="helperContext"
|
|
57
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
58
|
+
color="primary"
|
|
59
|
+
/>
|
|
50
60
|
</template>
|
|
51
61
|
</q-select>
|
|
52
62
|
</template>
|
|
@@ -18,8 +18,18 @@
|
|
|
18
18
|
@update:model-value='onChanged'
|
|
19
19
|
>
|
|
20
20
|
<!-- Helper -->
|
|
21
|
-
<template v-if="
|
|
22
|
-
<
|
|
21
|
+
<template v-if="hasHelper" v-slot:append>
|
|
22
|
+
<k-action
|
|
23
|
+
:id="properties.name + '-helper'"
|
|
24
|
+
:label="helperLabel"
|
|
25
|
+
:icon="helperIcon"
|
|
26
|
+
:tooltip="helperTooltip"
|
|
27
|
+
:url="helperUrl"
|
|
28
|
+
:dialog="helperDialog"
|
|
29
|
+
:context="helperContext"
|
|
30
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
31
|
+
color="primary"
|
|
32
|
+
/>
|
|
23
33
|
</template>
|
|
24
34
|
</q-input>
|
|
25
35
|
</template>
|
|
@@ -22,8 +22,18 @@
|
|
|
22
22
|
</div>
|
|
23
23
|
</template>
|
|
24
24
|
<!-- Helper -->
|
|
25
|
-
<template v-if="
|
|
26
|
-
<
|
|
25
|
+
<template v-if="hasHelper" v-slot:append>
|
|
26
|
+
<k-action
|
|
27
|
+
:id="properties.name + '-helper'"
|
|
28
|
+
:label="helperLabel"
|
|
29
|
+
:icon="helperIcon"
|
|
30
|
+
:tooltip="helperTooltip"
|
|
31
|
+
:url="helperUrl"
|
|
32
|
+
:dialog="helperDialog"
|
|
33
|
+
:context="helperContext"
|
|
34
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
35
|
+
color="primary"
|
|
36
|
+
/>
|
|
27
37
|
</template>
|
|
28
38
|
</q-field>
|
|
29
39
|
</template>
|
|
@@ -75,7 +85,7 @@ export default {
|
|
|
75
85
|
computed: {
|
|
76
86
|
editorToolbar () {
|
|
77
87
|
let configuration
|
|
78
|
-
_.forEach(this.toolbar || this.defaultToolbar, (value, key) => {
|
|
88
|
+
_.forEach(this.properties.toolbar || this.toolbar || this.defaultToolbar, (value, key) => {
|
|
79
89
|
if (_.get(this.$q.screen, key)) {
|
|
80
90
|
configuration = value
|
|
81
91
|
return false
|
|
@@ -22,8 +22,18 @@
|
|
|
22
22
|
/>
|
|
23
23
|
</template>
|
|
24
24
|
<!-- Helper -->
|
|
25
|
-
<template v-if="
|
|
26
|
-
<
|
|
25
|
+
<template v-if="hasHelper" v-slot:append>
|
|
26
|
+
<k-action
|
|
27
|
+
:id="properties.name + '-helper'"
|
|
28
|
+
:label="helperLabel"
|
|
29
|
+
:icon="helperIcon"
|
|
30
|
+
:tooltip="helperTooltip"
|
|
31
|
+
:url="helperUrl"
|
|
32
|
+
:dialog="helperDialog"
|
|
33
|
+
:context="helperContext"
|
|
34
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
35
|
+
color="primary"
|
|
36
|
+
/>
|
|
27
37
|
</template>
|
|
28
38
|
</q-field>
|
|
29
39
|
</template>
|
|
@@ -21,8 +21,18 @@
|
|
|
21
21
|
@keyup="onKeyUp($event, i - 1)"
|
|
22
22
|
>
|
|
23
23
|
<!-- Helper -->
|
|
24
|
-
<template v-if="
|
|
25
|
-
<
|
|
24
|
+
<template v-if="hasHelper" v-slot:append>
|
|
25
|
+
<k-action
|
|
26
|
+
:id="properties.name + '-helper'"
|
|
27
|
+
:label="helperLabel"
|
|
28
|
+
:icon="helperIcon"
|
|
29
|
+
:tooltip="helperTooltip"
|
|
30
|
+
:url="helperUrl"
|
|
31
|
+
:dialog="helperDialog"
|
|
32
|
+
:context="helperContext"
|
|
33
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
34
|
+
color="primary"
|
|
35
|
+
/>
|
|
26
36
|
</template>
|
|
27
37
|
</q-input>
|
|
28
38
|
</div>
|
|
@@ -30,8 +30,18 @@
|
|
|
30
30
|
</q-item>
|
|
31
31
|
</template>
|
|
32
32
|
<!-- Helper -->
|
|
33
|
-
<template v-if="
|
|
34
|
-
<
|
|
33
|
+
<template v-if="hasHelper" v-slot:append>
|
|
34
|
+
<k-action
|
|
35
|
+
:id="properties.name + '-helper'"
|
|
36
|
+
:label="helperLabel"
|
|
37
|
+
:icon="helperIcon"
|
|
38
|
+
:tooltip="helperTooltip"
|
|
39
|
+
:url="helperUrl"
|
|
40
|
+
:dialog="helperDialog"
|
|
41
|
+
:context="helperContext"
|
|
42
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
43
|
+
color="primary"
|
|
44
|
+
/>
|
|
35
45
|
</template>
|
|
36
46
|
</q-select>
|
|
37
47
|
</template>
|
|
@@ -17,8 +17,18 @@
|
|
|
17
17
|
bottom-slots
|
|
18
18
|
>
|
|
19
19
|
<!-- Helper -->
|
|
20
|
-
<template v-if="
|
|
21
|
-
<
|
|
20
|
+
<template v-if="hasHelper" v-slot:append>
|
|
21
|
+
<k-action
|
|
22
|
+
:id="properties.name + '-helper'"
|
|
23
|
+
:label="helperLabel"
|
|
24
|
+
:icon="helperIcon"
|
|
25
|
+
:tooltip="helperTooltip"
|
|
26
|
+
:url="helperUrl"
|
|
27
|
+
:dialog="helperDialog"
|
|
28
|
+
:context="helperContext"
|
|
29
|
+
@dialog-confirmed="onHelperDialogConfirmed"
|
|
30
|
+
color="primary"
|
|
31
|
+
/>
|
|
22
32
|
</template>
|
|
23
33
|
</q-input>
|
|
24
34
|
</template>
|
|
@@ -18,18 +18,9 @@
|
|
|
18
18
|
dense />
|
|
19
19
|
</div>
|
|
20
20
|
<div id="icons" class="row justify-start items-center q-gutter-sm">
|
|
21
|
-
<template v-for="icon in iconsPage">
|
|
22
|
-
<q-icon :id="getIconId(icon.name)"
|
|
23
|
-
|
|
24
|
-
<q-tooltip>
|
|
25
|
-
{{icon.title}}
|
|
26
|
-
</q-tooltip>
|
|
27
|
-
</q-icon>
|
|
28
|
-
<q-icon :id="getIconId(icon.name)" v-if="icon.name !== selectedIcon.name" :key="icon.name"
|
|
29
|
-
color="grey-7" :name="icon.name" size="2rem" @click="onIconSelected(icon)">
|
|
30
|
-
<q-tooltip>
|
|
31
|
-
{{icon.title}}
|
|
32
|
-
</q-tooltip>
|
|
21
|
+
<template v-for="icon in iconsPage" :key="icon.name">
|
|
22
|
+
<q-icon :id="getIconId(icon.name)" :color="getIconColor(icon.name)" :name="icon.name" size="2rem" @click="onIconSelected(icon)">
|
|
23
|
+
<q-tooltip>{{icon.title}}</q-tooltip>
|
|
33
24
|
</q-icon>
|
|
34
25
|
</template>
|
|
35
26
|
</div>
|
|
@@ -106,6 +97,13 @@ export default {
|
|
|
106
97
|
getIconId (name) {
|
|
107
98
|
return _.kebabCase(name)
|
|
108
99
|
},
|
|
100
|
+
getIconColor (name) {
|
|
101
|
+
let color = 'grey-7'
|
|
102
|
+
if (name === this.selectedIcon.name) {
|
|
103
|
+
color = this.selectedIcon.color === 'white' ? 'black' : this.selectedIcon.color
|
|
104
|
+
}
|
|
105
|
+
return color
|
|
106
|
+
},
|
|
109
107
|
getIconsForCategory (category) {
|
|
110
108
|
const categoryIcons = this.categoryInfos[this.selectedCategory.value].icons
|
|
111
109
|
const icons = []
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="row justify-
|
|
2
|
+
<div class="row justify-center q-gutter-xs full-width">
|
|
3
3
|
<template v-for="(color, index) in colors" :key="index">
|
|
4
4
|
<q-btn
|
|
5
5
|
:id="'style-color-' + color"
|
|
6
6
|
:round="shape === 'round'"
|
|
7
7
|
:icon="modelValue === color ? 'las la-check' : ''"
|
|
8
8
|
:color="color"
|
|
9
|
+
:text-color="color === 'white' ? 'black' : 'white'"
|
|
9
10
|
small
|
|
10
11
|
@click="$emit('update:modelValue', color)" />
|
|
11
12
|
</template>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
Managed stickies
|
|
19
19
|
Be careful of the order
|
|
20
20
|
-->
|
|
21
|
-
<!-- bottom -->
|
|
21
|
+
<!-- bottom pane -->
|
|
22
22
|
<q-page-sticky position="bottom" class="k-sticky">
|
|
23
23
|
<div id="bottom-pane" v-show="hasBottomPaneComponents" class="column items-center">
|
|
24
24
|
<KOpener id="bottom-opener" v-if="bottomPane.opener" v-model="isBottomPaneOpened" position="bottom" />
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
36
|
</q-page-sticky>
|
|
37
|
-
<!-- right -->
|
|
37
|
+
<!-- right pane -->
|
|
38
38
|
<q-page-sticky position="right" class="k-sticky">
|
|
39
39
|
<div id="right-pane" v-show="hasRightPaneComponents" class="row items-center">
|
|
40
40
|
<KOpener id="right-opener" v-if="rightPane.opener" v-model="isRightPaneOpened" position="right" />
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
</div>
|
|
52
52
|
</div>
|
|
53
53
|
</q-page-sticky>
|
|
54
|
-
<!-- top -->
|
|
54
|
+
<!-- top pane -->
|
|
55
55
|
<q-page-sticky position="top" class="k-sticky">
|
|
56
56
|
<div id="top-pane" v-show="hasTopPaneComponents" class="column items-center">
|
|
57
57
|
<div>
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
:style="`max-width: ${bottomWindowSize[0]}px; max-height: ${bottomWindowSize[1]};px`"
|
|
114
114
|
/>
|
|
115
115
|
</q-page-sticky>
|
|
116
|
-
<!-- left -->
|
|
116
|
+
<!-- left pane -->
|
|
117
117
|
<q-page-sticky position="left" class="k-sticky">
|
|
118
118
|
<div id="left-pane" v-show="hasLeftPaneComponents" class="row items-center">
|
|
119
119
|
<div>
|
|
@@ -309,6 +309,7 @@ body {
|
|
|
309
309
|
background-color: #FFFFFF;
|
|
310
310
|
border: solid 1px lightgrey;
|
|
311
311
|
border-radius: 3px;
|
|
312
|
+
position: relative;
|
|
312
313
|
}
|
|
313
314
|
.k-pane:hover, .k-left-pane:hover {
|
|
314
315
|
border: solid 1px $primary;
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
dense
|
|
38
38
|
direction="horizontal"
|
|
39
39
|
action-renderer="button"
|
|
40
|
-
:content="
|
|
40
|
+
:content="headerControls"
|
|
41
41
|
class="q-pr-xs"
|
|
42
42
|
/>
|
|
43
43
|
<KPanel
|
|
44
44
|
v-else
|
|
45
45
|
id="window-controls"
|
|
46
|
-
:content="
|
|
46
|
+
:content="headerControls"
|
|
47
47
|
/>
|
|
48
48
|
</div>
|
|
49
49
|
<!--
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
<q-resize-observer @resize="onFooterResized" />
|
|
76
76
|
<!-- window grip -->
|
|
77
77
|
<q-icon
|
|
78
|
-
v-if="currentWindow.state !== 'maximized'"
|
|
78
|
+
v-if="currentWindow.controls.resize && currentWindow.state !== 'maximized'"
|
|
79
79
|
class="k-window-grip"
|
|
80
80
|
name="las la-slash"
|
|
81
81
|
size="10px"
|
|
@@ -161,7 +161,7 @@ const menu = computed(() => {
|
|
|
161
161
|
id: `${props.placement}-window-menu`,
|
|
162
162
|
component: 'menu/KMenu',
|
|
163
163
|
icon: 'las la-cube',
|
|
164
|
-
|
|
164
|
+
dense: true,
|
|
165
165
|
tooltip: 'Widgets',
|
|
166
166
|
actionRenderer: 'item',
|
|
167
167
|
content: widgetMenuItems
|
|
@@ -169,14 +169,14 @@ const menu = computed(() => {
|
|
|
169
169
|
}
|
|
170
170
|
return menu
|
|
171
171
|
})
|
|
172
|
-
const
|
|
172
|
+
const headerControls = computed(() => {
|
|
173
173
|
return [{
|
|
174
174
|
id: `pin-${props.placement}-window`,
|
|
175
175
|
icon: pinIcons[props.placement],
|
|
176
176
|
size: 'sm',
|
|
177
177
|
tooltip: 'KWindow.PIN_ACTION',
|
|
178
178
|
class: 'k-window-control',
|
|
179
|
-
visible: currentWindow.state === 'floating',
|
|
179
|
+
visible: currentWindow.controls.pin && currentWindow.state === 'floating',
|
|
180
180
|
handler: () => Layout.setWindowState(props.placement, 'pinned')
|
|
181
181
|
}, {
|
|
182
182
|
id: `unpin-${props.placement}-window`,
|
|
@@ -184,27 +184,28 @@ const controls = computed(() => {
|
|
|
184
184
|
size: 'sm',
|
|
185
185
|
tooltip: 'KWindow.RESTORE_ACTION',
|
|
186
186
|
class: 'k-window-control',
|
|
187
|
-
visible: currentWindow.state === 'pinned' && restoreGeometry,
|
|
187
|
+
visible: currentWindow.controls.unpin && currentWindow.state === 'pinned' && restoreGeometry,
|
|
188
188
|
handler: () => Layout.setWindowState(props.placement, 'floating')
|
|
189
189
|
}, {
|
|
190
190
|
id: `unpin-${props.placement}-window`,
|
|
191
191
|
icon: 'las la-expand',
|
|
192
192
|
size: 'sm',
|
|
193
193
|
tooltip: 'KWindow.MAXIMIZE_ACTION',
|
|
194
|
-
visible: currentWindow.state !== 'maximized',
|
|
194
|
+
visible: currentWindow.controls.maximize && currentWindow.state !== 'maximized',
|
|
195
195
|
handler: () => Layout.setWindowState(props.placement, 'maximized')
|
|
196
196
|
}, {
|
|
197
197
|
id: `restore-${props.placement}-window`,
|
|
198
198
|
icon: 'las la-compress',
|
|
199
199
|
size: 'sm',
|
|
200
200
|
tooltip: 'KWindow.RESTORE_ACTION',
|
|
201
|
-
visible: currentWindow.state === 'maximized',
|
|
201
|
+
visible: currentWindow.controls.restore && currentWindow.state === 'maximized',
|
|
202
202
|
handler: () => Layout.setWindowState(props.placement, backupState)
|
|
203
203
|
}, {
|
|
204
204
|
id: `close-${props.placement}-window`,
|
|
205
205
|
icon: 'las la-times',
|
|
206
206
|
size: 'sm',
|
|
207
207
|
tooltip: 'KWindow.CLOSE_ACTION',
|
|
208
|
+
visible: currentWindow.controls.close,
|
|
208
209
|
handler: () => Layout.setWindowVisible(props.placement, false)
|
|
209
210
|
}]
|
|
210
211
|
})
|
|
@@ -288,7 +289,6 @@ function refresh (newState, oldState) {
|
|
|
288
289
|
logger.warn(`[KDK] invalid window state ${currentWindow.state}`)
|
|
289
290
|
}
|
|
290
291
|
}
|
|
291
|
-
|
|
292
292
|
function setPinnedGeometry () {
|
|
293
293
|
const sizeRatio = currentWindow.sizePolicy.pinned[$q.screen.name]
|
|
294
294
|
const w = $q.screen.width * sizeRatio[0] / 100
|