Compare commits
110 Commits
blending
...
master_v2_
Author | SHA1 | Date | |
---|---|---|---|
9cd50bc908 | |||
9b677d7828 | |||
eed5964f02 | |||
|
6bfdb69fd8 | ||
|
be2a23fdff | ||
|
3d0925f444 | ||
|
4ddd39864e | ||
|
1379a257c7 | ||
|
d7104f33fd | ||
|
70d7a7010e | ||
|
66dffac3fe | ||
|
ea83d8023a | ||
|
4821e2100c | ||
6d5a661004 | |||
|
6105a290b3 | ||
|
ed0e427cd3 | ||
|
946f2dda3f | ||
|
7213e6bddb | ||
|
caac3e3d60 | ||
|
1f1a26de65 | ||
|
8583f77627 | ||
|
0f6972635c | ||
|
590ea06f2f | ||
|
7b25ddfee0 | ||
|
b6820b4368 | ||
|
4aef830905 | ||
|
f0c6ad03d9 | ||
|
191beed68d | ||
|
b2f2805247 | ||
|
7a0842ea24 | ||
|
67d3799550 | ||
|
a6842221ad | ||
|
be5bffaaff | ||
|
9eee4a4d1f | ||
44ae08f0c1 | |||
c62a34e34b | |||
70cb05c4ce | |||
12504e0ff6 | |||
55cba70a1c | |||
52dd69a9a5 | |||
e5a142fad4 | |||
33e76ee393 | |||
0a5f561bd6 | |||
2c498c05f0 | |||
75311073cb | |||
14076866ec | |||
|
44aadff1d2 | ||
82fc72c185 | |||
006d13af6a | |||
1eb926d029 | |||
a87b1bc380 | |||
593323a934 | |||
039d2d2de3 | |||
3f499105d9 | |||
243516ca6d | |||
6360f499da | |||
|
bb438b9eec | ||
|
61b3766012 | ||
f8dd60edbd | |||
d59a111b0d | |||
48466524bb | |||
|
46dee256f3 | ||
|
84ae856c71 | ||
55b518facc | |||
4738681294 | |||
|
da7a4bdd05 | ||
5998be5c1c | |||
5ce15fcb80 | |||
efb6f0437a | |||
d71124dfc4 | |||
2f645fa71c | |||
5027ba5233 | |||
aa0e83045b | |||
77e270c6b2 | |||
d29ca4c6dd | |||
361bcb7719 | |||
ae87589a45 | |||
800dfec98d | |||
|
3bc125cff0 | ||
5c7ac2a7d0 | |||
|
1b93f2f92a | ||
3b84db438f | |||
1d7e4de1d1 | |||
740ff764e5 | |||
|
9c7d961e67 | ||
966fe44583 | |||
899fdc5e66 | |||
|
98975d4cd5 | ||
|
f0f340e9a9 | ||
09c37b7e82 | |||
52c375fc7d | |||
|
a380a132b7 | ||
|
ba2594addf | ||
|
53ca6af019 | ||
6c304fdfe6 | |||
fdeb182c75 | |||
|
e4003940da | ||
|
789e80cffc | ||
|
ee37d680b2 | ||
|
00c4056b5d | ||
|
a4c3a24dda | ||
|
e9cbd79d3b | ||
|
4a8aacd710 | ||
|
1ce66817d4 | ||
|
a45c188c1e | ||
|
a254c7d118 | ||
|
dea3713269 | ||
|
652f6bfd2e | ||
|
601a95a33e | ||
|
27f914c995 |
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "media_player_client",
|
"name": "media_player_client",
|
||||||
"version": "1.5.6",
|
"version": "1.6.0",
|
||||||
"description": "A Quasar Framework app",
|
"description": "A Quasar Framework app",
|
||||||
"productName": "MediaPlayerClient",
|
"productName": "MediaPlayerClient",
|
||||||
"author": "fangxiang <fangxiang@cloudview.work>",
|
"author": "fangxiang <fangxiang@cloudview.work>",
|
||||||
|
@ -41,9 +41,12 @@ module.exports = configure(function (ctx) {
|
|||||||
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
|
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
|
||||||
build: {
|
build: {
|
||||||
vueRouterMode: "hash", // available values: 'hash', 'history'
|
vueRouterMode: "hash", // available values: 'hash', 'history'
|
||||||
|
uglifyOptions: {
|
||||||
|
compress: {
|
||||||
|
drop_console: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
// transpile: false,
|
// transpile: false,
|
||||||
|
|
||||||
// Add dependencies for transpiling with Babel (Array of string/regex)
|
// Add dependencies for transpiling with Babel (Array of string/regex)
|
||||||
// (from node_modules, which are by default not transpiled).
|
// (from node_modules, which are by default not transpiled).
|
||||||
// Applies only if "transpile" is set to true.
|
// Applies only if "transpile" is set to true.
|
||||||
@ -52,7 +55,7 @@ module.exports = configure(function (ctx) {
|
|||||||
// rtl: true, // https://v2.quasar.dev/options/rtl-support
|
// rtl: true, // https://v2.quasar.dev/options/rtl-support
|
||||||
// preloadChunks: true,
|
// preloadChunks: true,
|
||||||
// showProgress: false,
|
// showProgress: false,
|
||||||
// gzip: true,
|
gzip: true,
|
||||||
// analyze: true,
|
// analyze: true,
|
||||||
|
|
||||||
// Options below are automatically set depending on the env, set them if you want to override
|
// Options below are automatically set depending on the env, set them if you want to override
|
||||||
|
38
src/App.vue
38
src/App.vue
@ -15,6 +15,8 @@ import GlobalData from "./common/GlobalData";
|
|||||||
import { EProductNames } from "./entities/ProductNames";
|
import { EProductNames } from "./entities/ProductNames";
|
||||||
import { api } from "./boot/axios";
|
import { api } from "./boot/axios";
|
||||||
import { WuJieInitializer } from "./common/WuJieInitializer";
|
import { WuJieInitializer } from "./common/WuJieInitializer";
|
||||||
|
import ClientConnection from "./common/ClientConnection";
|
||||||
|
import { Common } from "./common/Common";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "App",
|
name: "App",
|
||||||
@ -117,7 +119,7 @@ export default defineComponent({
|
|||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
EventBus.getInstance().on(EventNamesDefine.CheckDebug2, () => {
|
EventBus.getInstance().on(EventNamesDefine.CheckDebug, () => {
|
||||||
const to_normal_url = () => {
|
const to_normal_url = () => {
|
||||||
const p1 = window.location.href.indexOf("?debug");
|
const p1 = window.location.href.indexOf("?debug");
|
||||||
const p2 = window.location.href.indexOf("#");
|
const p2 = window.location.href.indexOf("#");
|
||||||
@ -284,6 +286,40 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EventBus.getInstance().on(
|
||||||
|
EventNamesDefine.CurrentConnectConnected,
|
||||||
|
async (connection: ClientConnection) => {
|
||||||
|
const show_version_tip = () =>
|
||||||
|
$q.dialog({
|
||||||
|
persistent: true,
|
||||||
|
title: $t.t("Version Mismatch !"),
|
||||||
|
message: $t.t(
|
||||||
|
"Version Mismatch ! Please Upgrade The Software Again ! Otherwise, The File Function Cannot Be Used !"
|
||||||
|
),
|
||||||
|
});
|
||||||
|
if (connection) {
|
||||||
|
let count = 0;
|
||||||
|
while (
|
||||||
|
connection &&
|
||||||
|
!connection.is_login &&
|
||||||
|
count < (1000 * 10) / 100 /* 10 S */
|
||||||
|
) {
|
||||||
|
await Common.waitFor(100);
|
||||||
|
}
|
||||||
|
if (count < (1000 * 10) / 100) {
|
||||||
|
try {
|
||||||
|
const response = await connection.getHttpInterfaceVersion();
|
||||||
|
if (!response || response.version != 2) {
|
||||||
|
show_version_tip();
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
show_version_tip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -710,6 +710,17 @@ export default class ClientConnection {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
public setMagicWallList(list:any) {
|
||||||
|
this.ws?.send(
|
||||||
|
JSON.stringify(
|
||||||
|
new Protocol.SetApplicationConfigRequestEntity(
|
||||||
|
0,
|
||||||
|
"magic_list",
|
||||||
|
typeof (list) == 'string' ? list : JSON.stringify(list)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public setConfigure(k: string, v: string) {
|
public setConfigure(k: string, v: string) {
|
||||||
this.ws?.send(
|
this.ws?.send(
|
||||||
@ -823,6 +834,7 @@ export default class ClientConnection {
|
|||||||
active_code: string,
|
active_code: string,
|
||||||
online: boolean,
|
online: boolean,
|
||||||
active_forever: boolean,
|
active_forever: boolean,
|
||||||
|
attribute: number,
|
||||||
secret_key?: string,
|
secret_key?: string,
|
||||||
hour?: number
|
hour?: number
|
||||||
) {
|
) {
|
||||||
@ -833,6 +845,7 @@ export default class ClientConnection {
|
|||||||
active_code,
|
active_code,
|
||||||
online,
|
online,
|
||||||
active_forever,
|
active_forever,
|
||||||
|
attribute,
|
||||||
secret_key,
|
secret_key,
|
||||||
hour,
|
hour,
|
||||||
0
|
0
|
||||||
@ -1343,6 +1356,12 @@ export default class ClientConnection {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getHttpInterfaceVersion() {
|
||||||
|
return await this.doRpc<Protocol.RpcGetHttpInterfaceVersionResponseEntity>(
|
||||||
|
new Protocol.RpcGetHttpInterfaceVersionRequestEntity()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public async setJointActionEquipment(
|
public async setJointActionEquipment(
|
||||||
entity: JointActionEquipmentTableEntity
|
entity: JointActionEquipmentTableEntity
|
||||||
) {
|
) {
|
||||||
@ -1438,7 +1457,8 @@ export default class ClientConnection {
|
|||||||
column: number,
|
column: number,
|
||||||
location: number,
|
location: number,
|
||||||
enable: boolean,
|
enable: boolean,
|
||||||
width: number
|
width: number,
|
||||||
|
auto_sync: boolean,
|
||||||
) {
|
) {
|
||||||
return await this.doRpc<Protocol.NoneResponse>(
|
return await this.doRpc<Protocol.NoneResponse>(
|
||||||
new Protocol.SetBlendingOverlapRequestEntity(
|
new Protocol.SetBlendingOverlapRequestEntity(
|
||||||
@ -1446,7 +1466,8 @@ export default class ClientConnection {
|
|||||||
column,
|
column,
|
||||||
location,
|
location,
|
||||||
enable,
|
enable,
|
||||||
width
|
width,
|
||||||
|
auto_sync
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1551,21 +1572,15 @@ export default class ClientConnection {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async SetProjectorResolution(
|
public async SetProjectorResolution(width: number, height: number) {
|
||||||
width: number,
|
|
||||||
height: number
|
|
||||||
) {
|
|
||||||
return await this.doRpc<Protocol.GetBlendingConfigResponseEntity>(
|
return await this.doRpc<Protocol.GetBlendingConfigResponseEntity>(
|
||||||
new Protocol.SetProjectorResolutionRequestEntity(width, height)
|
new Protocol.SetProjectorResolutionRequestEntity(width, height)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async SetProjectorLayout(
|
public async SetProjectorLayout(row: number, column: number) {
|
||||||
row: number,
|
|
||||||
column: number
|
|
||||||
) {
|
|
||||||
return await this.doRpc<Protocol.GetBlendingConfigResponseEntity>(
|
return await this.doRpc<Protocol.GetBlendingConfigResponseEntity>(
|
||||||
new Protocol.SetProjectorResolutionRequestEntity(row, column)
|
new Protocol.SetProjectorLayoutRequestEntity(row, column)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
}
|
}
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<q-card class="overflow-hidden" style="overflow-y: scroll; max-width: 35vw">
|
<q-card class="overflow-hidden" style="overflow-y: scroll; max-width: 40vw">
|
||||||
<q-form>
|
<q-form>
|
||||||
<q-card-section class="q-ma-none q-pa-sm">
|
<q-card-section class="q-ma-none q-pa-sm">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -37,8 +37,67 @@
|
|||||||
|
|
||||||
<q-separator />
|
<q-separator />
|
||||||
|
|
||||||
<q-card-section style="max-height: 50vh; width: 35vw" class="scroll">
|
<q-card-section style="max-height: 60vh; width: 40vw" class="scroll">
|
||||||
<q-list>
|
<q-list>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section avatar>{{ $t("product") }}</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-radio
|
||||||
|
v-model="selected_product"
|
||||||
|
val=""
|
||||||
|
:label="$t('normal')"
|
||||||
|
color="cyan"
|
||||||
|
class="offset-md-1 col"
|
||||||
|
:loading="loading"
|
||||||
|
:disable="loading"
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-radio
|
||||||
|
v-model="selected_product"
|
||||||
|
val="magic_wall"
|
||||||
|
:label="$t('magic wall')"
|
||||||
|
color="cyan"
|
||||||
|
class="offset-md-1 col"
|
||||||
|
:loading="loading"
|
||||||
|
:disable="loading"
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<q-radio
|
||||||
|
v-model="selected_product"
|
||||||
|
val="fusion"
|
||||||
|
:label="$t('fusion')"
|
||||||
|
color="cyan"
|
||||||
|
class="offset-md-1 col"
|
||||||
|
:loading="loading"
|
||||||
|
:disable="loading"
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item v-if="selected_product == 'fusion'">
|
||||||
|
<q-item-section avatar>{{ $t("fusion") }}</q-item-section>
|
||||||
|
<q-item-section>
|
||||||
|
<div class="row" v-for="(row, row_index) in 3" :key="row">
|
||||||
|
<q-radio
|
||||||
|
v-for="(item, item_index) in 3"
|
||||||
|
:key="row_index * 3 + item"
|
||||||
|
v-model="function_fusion_count"
|
||||||
|
:val="row_index * 3 + item"
|
||||||
|
:label="
|
||||||
|
(row_index * 3 + item).toString() +
|
||||||
|
$t(' ') +
|
||||||
|
$t('fusion out')
|
||||||
|
"
|
||||||
|
color="cyan"
|
||||||
|
class="col"
|
||||||
|
:class="item_index ? 'offset-md-1 ' : ''"
|
||||||
|
:loading="loading"
|
||||||
|
:disable="loading"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section avatar>{{ $t("function") }}</q-item-section>
|
<q-item-section avatar>{{ $t("function") }}</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
@ -69,7 +128,6 @@
|
|||||||
:disable="loading"
|
:disable="loading"
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
|
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section avatar></q-item-section>
|
<q-item-section avatar></q-item-section>
|
||||||
@ -83,40 +141,22 @@
|
|||||||
:disable="loading"
|
:disable="loading"
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-item>
|
||||||
|
<q-item-section> </q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-checkbox
|
|
||||||
v-model="function_magic_wall"
|
|
||||||
@update:model-value="changeMagic()"
|
|
||||||
:label="$t('magic wall')"
|
|
||||||
color="cyan"
|
|
||||||
class="offset-md-1 col"
|
|
||||||
:loading="loading"
|
|
||||||
:disable="loading"
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
<q-item-section>
|
|
||||||
<q-checkbox
|
|
||||||
v-model="function_fusion"
|
|
||||||
@update:model-value="changeFusion()"
|
|
||||||
:label="$t('fusion')"
|
|
||||||
color="cyan"
|
|
||||||
class="offset-md-1 col"
|
|
||||||
:loading="loading"
|
|
||||||
:disable="loading"
|
|
||||||
|
|
||||||
/>
|
|
||||||
</q-item-section>
|
|
||||||
<q-item-section avatar>
|
|
||||||
<q-btn
|
<q-btn
|
||||||
@click="setDeviceAttribute"
|
@click="setDeviceAttributeAndProduct"
|
||||||
:label="$t('commit')"
|
:label="$t('commit')"
|
||||||
no-caps
|
no-caps
|
||||||
outline
|
outline
|
||||||
|
class="q-px-lg"
|
||||||
color="primary"
|
color="primary"
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
|
<q-item-section> </q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
|
<q-separator />
|
||||||
<q-item>
|
<q-item>
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
{{ $t("language") }}
|
{{ $t("language") }}
|
||||||
@ -153,7 +193,6 @@
|
|||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
|
|
||||||
<q-separator class="q-mt-md" />
|
<q-separator class="q-mt-md" />
|
||||||
|
|
||||||
<q-item class="q-mt-md">
|
<q-item class="q-mt-md">
|
||||||
@ -199,8 +238,10 @@ import { useStore } from "src/store";
|
|||||||
import { useQuasar, date as $date } from "quasar";
|
import { useQuasar, date as $date } from "quasar";
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import GlobalData from "src/common/GlobalData";
|
import GlobalData from "src/common/GlobalData";
|
||||||
import { Protocol } from "src/entities/WSProtocol";
|
import {
|
||||||
import { EDeviceAttribute } from "src/entities/EDeviceAttribute";
|
EDeviceAttribute,
|
||||||
|
EDeviceAttributeHelper,
|
||||||
|
} from "src/entities/EDeviceAttribute";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "ComponentAdvancedDebugDialog",
|
name: "ComponentAdvancedDebugDialog",
|
||||||
@ -226,10 +267,44 @@ export default defineComponent({
|
|||||||
const function_magic_wall = ref(
|
const function_magic_wall = ref(
|
||||||
$store.state.custom_defines.function_magic_wall
|
$store.state.custom_defines.function_magic_wall
|
||||||
);
|
);
|
||||||
const function_fusion = ref(
|
const function_fusion = ref($store.state.custom_defines.function_fusion);
|
||||||
$store.state.custom_defines.function_magic_wall
|
const function_fusion_count = ref(0);
|
||||||
);
|
|
||||||
const target_language = ref("zh-CN");
|
const target_language = ref("zh-CN");
|
||||||
|
const selected_product = ref("");
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => selected_product.value,
|
||||||
|
(newValue) => {
|
||||||
|
function_fusion.value = newValue == "fusion";
|
||||||
|
function_magic_wall.value = newValue == "magic_wall";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const getFinalAttribute = () => {
|
||||||
|
let attribute = EDeviceAttribute.None;
|
||||||
|
if (function_center_control.value) {
|
||||||
|
attribute |= EDeviceAttribute.CenterControl;
|
||||||
|
}
|
||||||
|
if (function_output_board.value) {
|
||||||
|
attribute |= EDeviceAttribute.OutputBoard;
|
||||||
|
}
|
||||||
|
if (function_mirroring_output.value) {
|
||||||
|
attribute |= EDeviceAttribute.MirroringOutput;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (function_custom_ISV.value) {
|
||||||
|
attribute |= EDeviceAttribute.CustomISV;
|
||||||
|
}
|
||||||
|
if (function_magic_wall.value) {
|
||||||
|
attribute |= EDeviceAttribute.ProductMagicWall;
|
||||||
|
}
|
||||||
|
if (function_fusion.value) {
|
||||||
|
attribute |= EDeviceAttributeHelper.getProdictFusionAttributeByIndex(
|
||||||
|
function_fusion_count.value
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return attribute;
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
show_dialog,
|
show_dialog,
|
||||||
@ -239,8 +314,10 @@ export default defineComponent({
|
|||||||
function_custom_ISV,
|
function_custom_ISV,
|
||||||
function_magic_wall,
|
function_magic_wall,
|
||||||
function_fusion,
|
function_fusion,
|
||||||
|
function_fusion_count,
|
||||||
function_mirroring_output,
|
function_mirroring_output,
|
||||||
target_language,
|
target_language,
|
||||||
|
selected_product,
|
||||||
|
|
||||||
showDialog() {
|
showDialog() {
|
||||||
show_dialog.value = true;
|
show_dialog.value = true;
|
||||||
@ -254,8 +331,18 @@ export default defineComponent({
|
|||||||
$store.state.custom_defines.function_mirroring_output;
|
$store.state.custom_defines.function_mirroring_output;
|
||||||
function_magic_wall.value =
|
function_magic_wall.value =
|
||||||
$store.state.custom_defines.function_magic_wall;
|
$store.state.custom_defines.function_magic_wall;
|
||||||
function_fusion.value =
|
function_fusion.value = $store.state.custom_defines.function_fusion;
|
||||||
$store.state.custom_defines.function_fusion;
|
function_fusion_count.value =
|
||||||
|
EDeviceAttributeHelper.getProductFusionOutputCountDefault(
|
||||||
|
$store.state.device_attribute,
|
||||||
|
1
|
||||||
|
);
|
||||||
|
|
||||||
|
if (function_magic_wall.value) {
|
||||||
|
selected_product.value = "magic_wall";
|
||||||
|
} else if (function_fusion.value) {
|
||||||
|
selected_product.value = "fusion";
|
||||||
|
}
|
||||||
},
|
},
|
||||||
resetData() {
|
resetData() {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@ -264,8 +351,9 @@ export default defineComponent({
|
|||||||
function_output_board.value = false;
|
function_output_board.value = false;
|
||||||
function_mirroring_output.value = false;
|
function_mirroring_output.value = false;
|
||||||
function_custom_ISV.value = false;
|
function_custom_ISV.value = false;
|
||||||
function_magic_wall.value=false;
|
function_magic_wall.value = false;
|
||||||
function_fusion.value=false
|
function_fusion.value = false;
|
||||||
|
selected_product.value = "";
|
||||||
},
|
},
|
||||||
|
|
||||||
restartDevice() {
|
restartDevice() {
|
||||||
@ -343,27 +431,22 @@ export default defineComponent({
|
|||||||
</div>`,
|
</div>`,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
setDeviceAttribute() {
|
setDeviceAttributeAndProduct() {
|
||||||
let attribute = EDeviceAttribute.None;
|
let attribute = getFinalAttribute();
|
||||||
if (function_center_control.value) {
|
GlobalData.getInstance()
|
||||||
attribute |= EDeviceAttribute.CenterControl;
|
.getCurrentClient()
|
||||||
}
|
?.setDeviceAttribute(attribute);
|
||||||
if (function_output_board.value) {
|
|
||||||
attribute |= EDeviceAttribute.OutputBoard;
|
|
||||||
}
|
|
||||||
if (function_mirroring_output.value) {
|
|
||||||
attribute |= EDeviceAttribute.MirroringOutput;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (function_custom_ISV.value) {
|
$q.notify({
|
||||||
attribute |= EDeviceAttribute.CustomISV;
|
color: "positive",
|
||||||
}
|
icon: "done",
|
||||||
if (function_magic_wall.value) {
|
message: $t.t("set device function") + $t.t("success") + "!",
|
||||||
attribute |= EDeviceAttribute.ProductMagicWall;
|
position: "top",
|
||||||
}
|
timeout: 1500,
|
||||||
if (function_fusion.value) {
|
});
|
||||||
attribute |= EDeviceAttribute.ProductFusion;
|
},
|
||||||
}
|
setDeviceAttribute() {
|
||||||
|
let attribute = getFinalAttribute();
|
||||||
|
|
||||||
GlobalData.getInstance()
|
GlobalData.getInstance()
|
||||||
.getCurrentClient()
|
.getCurrentClient()
|
||||||
@ -389,16 +472,16 @@ export default defineComponent({
|
|||||||
timeout: 1500,
|
timeout: 1500,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
changeMagic(){
|
changeMagic() {
|
||||||
if(function_magic_wall.value){
|
if (function_magic_wall.value) {
|
||||||
function_fusion.value=false;
|
function_fusion.value = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
changeFusion(){
|
changeFusion() {
|
||||||
if(function_fusion.value){
|
if (function_fusion.value) {
|
||||||
function_magic_wall.value=false;
|
function_magic_wall.value = false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -222,10 +222,11 @@
|
|||||||
style="color: #ffbe4a; font-size: 2.5em"
|
style="color: #ffbe4a; font-size: 2.5em"
|
||||||
></q-icon>
|
></q-icon>
|
||||||
{{
|
{{
|
||||||
props.value.length > 60
|
props.value.length > 25
|
||||||
? props.value.substr(0, 60) + "..."
|
? props.value.substr(0, 25) + "..."
|
||||||
: props.value
|
: props.value
|
||||||
}}
|
}}
|
||||||
|
|
||||||
<q-tooltip> {{ props.value }} </q-tooltip>
|
<q-tooltip> {{ props.value }} </q-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="props.col.name == 'file_size'">
|
<div v-else-if="props.col.name == 'file_size'">
|
||||||
@ -918,7 +919,6 @@ export default defineComponent({
|
|||||||
const response = await GlobalData.getInstance()
|
const response = await GlobalData.getInstance()
|
||||||
.getCurrentClient()
|
.getCurrentClient()
|
||||||
?.CreateDirectoryFileManager(path.value, data);
|
?.CreateDirectoryFileManager(path.value, data);
|
||||||
console.log(response);
|
|
||||||
if (response && response.success) {
|
if (response && response.success) {
|
||||||
refresh_file_list();
|
refresh_file_list();
|
||||||
$q.notify({
|
$q.notify({
|
||||||
@ -1090,6 +1090,8 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
uploading.value = false;
|
uploading.value = false;
|
||||||
|
refresh_file_list()
|
||||||
|
uploader.value.reset()
|
||||||
}, 500);
|
}, 500);
|
||||||
},
|
},
|
||||||
copyFile(file: FileEntity) {
|
copyFile(file: FileEntity) {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -17,18 +17,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="row">
|
<div class="row" v-show="ispad">
|
||||||
<div class="col-1"></div>
|
<div class="col-1"></div>
|
||||||
<div class="col-2 q-px-md"> <q-select class="q-pt-md" :label="$t('point')" :dense="true" filled
|
<div class="col-2 q-px-md" @mousewheel="details_selsect"> <q-select class="q-pt-md" :label="$t('point')" :dense="true" filled
|
||||||
v-model="options_model" @update:model-value="(val) => { options_model = val }" :options="options" emit-value
|
v-model="options_model" @update:model-value="(val) => { options_model = val }" :options="options" emit-value
|
||||||
map-options /></div>
|
map-options /></div>
|
||||||
<div class="col-2 q-px-md"> <q-input filled type="number" class="q-pt-md" :dense="true"
|
<div class="col-2 q-px-md" @mousewheel="details_selsect_val($event,'x')">
|
||||||
v-model="value[options_model].x" @update:model-value="chang(options_model, $event, 'h')" label="x"
|
<q-input filled type="number" class="q-pt-md" :dense="true"
|
||||||
lazy-rules />
|
v-model="value[options_model].x" @click="()=>{url.indexOf('pad')!=-1?ipad_chang=true:''}" :readonly="url.indexOf('pad')!=-1" @update:model-value="chang(options_model, $event, 'h')" label="x"
|
||||||
|
lazy-rules >
|
||||||
|
</q-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-2 q-px-md"> <q-input filled type="number" class="q-pt-md" :dense="true"
|
<div class="col-2 q-px-md" @mousewheel="details_selsect_val($event,'y')"> <q-input filled type="number" class="q-pt-md" :dense="true"
|
||||||
v-model="value[options_model].y" @update:model-value="chang(options_model, $event, 'h')" label="y"
|
v-model="value[options_model].y" @click="()=>{url.indexOf('pad')!=-1?ipad_chang=true:''}" :readonly="url.indexOf('pad')!=-1" @update:model-value="chang(options_model, $event, 'h')" label="y"
|
||||||
lazy-rules /></div>
|
lazy-rules /></div>
|
||||||
<div class="q-pt-md col-2">
|
<div class="q-pt-md col-2">
|
||||||
<q-btn color="white" @click="reset(options_model, true, 'h')" text-color="black" :label="$t('reset')" />
|
<q-btn color="white" @click="reset(options_model, true, 'h')" text-color="black" :label="$t('reset')" />
|
||||||
@ -38,7 +39,76 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div v-show="!ispad" style="display: flex;justify-content: space-around;">
|
||||||
|
|
||||||
|
<div class="q-px-md" @mousewheel="details_selsect"> <q-select class="q-pt-md" :label="$t('point')" :dense="true" filled
|
||||||
|
v-model="options_model" @update:model-value="(val) => { options_model = val }" :options="options" emit-value
|
||||||
|
map-options /></div>
|
||||||
|
<div class="q-px-md" @mousewheel="details_selsect_val($event,'x')">
|
||||||
|
<q-input filled type="number" class="q-pt-md" :dense="true"
|
||||||
|
v-model="value[options_model].x" @focus="input_x_focus=true" @blur="input_x_focus=false" @click="()=>{url.indexOf('pad')!=-1?ipad_chang=true:''}" :readonly="url.indexOf('pad')!=-1" @update:model-value="chang(options_model, $event, 'h')" label="x"
|
||||||
|
lazy-rules >
|
||||||
|
<template v-if="input_x_focus" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="mousedown('+','x')" @mouseup="mouseup" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="mousedown('-','x')" @mouseup="mouseup" />
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="q-px-md" @mousewheel="details_selsect_val($event,'y')"> <q-input filled type="number" class="q-pt-md" :dense="true"
|
||||||
|
v-model="value[options_model].y" @focus="input_y_focus=true" @blur="input_y_focus=false" @click="()=>{url.indexOf('pad')!=-1?ipad_chang=true:''}" :readonly="url.indexOf('pad')!=-1" @update:model-value="chang(options_model, $event, 'h')" label="y"
|
||||||
|
lazy-rules >
|
||||||
|
<template v-if="input_y_focus" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="mousedown('+','y')" @mouseup="mouseup" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="mousedown('-','y')" @mouseup="mouseup" />
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</div>
|
||||||
|
<div class="q-pt-md">
|
||||||
|
<q-btn color="white" @click="reset(options_model, true, 'h')" text-color="black" :label="$t('reset')" />
|
||||||
|
</div>
|
||||||
|
<div class="q-pt-md">
|
||||||
|
<div><q-btn color="white" @click="resetall" text-color="black" :label="$t('resetall')" /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </div> -->
|
||||||
|
<q-dialog v-model="ipad_chang">
|
||||||
|
<q-card style="width: 40vw; max-width: 80vw;">
|
||||||
|
<q-card-section>
|
||||||
|
<!-- <div class="text-h6">{{ $t('point') +(options_model+1 )}}</div> -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4"><q-select class="q-pt-md" :label="$t('point')" :dense="true" filled
|
||||||
|
v-model="options_model" @update:model-value="(val) => { options_model = val }" :options="options" emit-value
|
||||||
|
map-options /></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-section class="q-pt-none">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12" style="text-align: center;"><q-btn color="white" text-color="black" icon="keyboard_arrow_up" @touchstart="handlerTouchstart('y','+')" @touchend="handlerTouchend" /></div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6" style="text-align: center;"><q-btn color="white" text-color="black" icon="keyboard_arrow_left" @touchstart="handlerTouchstart('x','-')" @touchend="handlerTouchend" /></div>
|
||||||
|
<div class="col-6" style="text-align: center;"><q-btn color="white" text-color="black" icon="keyboard_arrow_right" @touchstart="handlerTouchstart('x','+')" @touchend="handlerTouchend" /></div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12" style="text-align: center;"><q-btn color="white" text-color="black" icon="keyboard_arrow_down" @touchstart="handlerTouchstart('y','-')" @touchend="handlerTouchend" /></div>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-actions align="right" class="bg-white text-teal">
|
||||||
|
<q-btn flat :label="$t('close')" color="primary" @click="ipad_chang=false" />
|
||||||
|
</q-card-actions>
|
||||||
|
</q-card>
|
||||||
|
</q-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
@ -53,6 +123,16 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!-- 取消浏览器自带的input箭头 使用q-input的图标实现 -->
|
||||||
|
<style>
|
||||||
|
input::-webkit-outer-spin-button,
|
||||||
|
input::-webkit-inner-spin-button {
|
||||||
|
-webkit-appearance: none !important;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import {
|
import {
|
||||||
defineComponent,
|
defineComponent,
|
||||||
@ -62,7 +142,9 @@ import {
|
|||||||
watch,
|
watch,
|
||||||
nextTick,
|
nextTick,
|
||||||
onBeforeUnmount,
|
onBeforeUnmount,
|
||||||
defineExpose
|
defineExpose,
|
||||||
|
toRefs,
|
||||||
|
inject
|
||||||
} from "vue";
|
} from "vue";
|
||||||
import { useStore } from "src/store";
|
import { useStore } from "src/store";
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
@ -76,20 +158,39 @@ import { config } from "process";
|
|||||||
import { QSelect, QInput, QBtn } from "quasar";
|
import { QSelect, QInput, QBtn } from "quasar";
|
||||||
import { div } from "zrender/lib/core/vector";
|
import { div } from "zrender/lib/core/vector";
|
||||||
import GlobalData from "src/common/GlobalData";
|
import GlobalData from "src/common/GlobalData";
|
||||||
import { number } from "@intlify/core-base";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "ComponentDensityCorrection",
|
name: "ComponentDensityCorrection",
|
||||||
components: {
|
components: {
|
||||||
Vue3DraggableResizable
|
Vue3DraggableResizable
|
||||||
},
|
},
|
||||||
setup() {
|
props: {
|
||||||
|
col: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
type: String,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
|
const now_selsect_projector:any = inject<string>("now_selsect_projector");
|
||||||
let set = GlobalData.getInstance().getCurrentClient();
|
let set = GlobalData.getInstance().getCurrentClient();
|
||||||
let $store = useStore();
|
let $store = useStore();
|
||||||
let $t = useI18n();
|
let $t = useI18n();
|
||||||
const ste_status = ref(0);
|
const ste_status = ref(0);
|
||||||
let allconfig = JSON.parse($store.state.fusion_configuration);
|
let allconfig = JSON.parse($store.state.fusion_configuration);
|
||||||
let config = JSON.parse($store.state.fusion_configuration).projectors[0];
|
|
||||||
|
/**
|
||||||
|
* 平板弹窗修改
|
||||||
|
*/
|
||||||
|
const ipad_chang=ref(false)
|
||||||
|
/**
|
||||||
|
* 当前url路径
|
||||||
|
*/
|
||||||
|
let url = window.location.href;
|
||||||
const configselsect = computed(() => {
|
const configselsect = computed(() => {
|
||||||
return $store.state.selected_projector;
|
return $store.state.selected_projector;
|
||||||
});
|
});
|
||||||
@ -104,10 +205,20 @@ export default defineComponent({
|
|||||||
$store.getters.GetTheCurrentlySelectedCamera[1]
|
$store.getters.GetTheCurrentlySelectedCamera[1]
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
/**
|
||||||
|
* 当前配置文件
|
||||||
|
*/
|
||||||
|
let config = JSON.parse($store.state.fusion_configuration).projectors[selectedprojector.value];
|
||||||
|
/**
|
||||||
|
* 当前点的数量
|
||||||
|
*/
|
||||||
const value_point_amount = ref(5)
|
const value_point_amount = ref(5)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 深度copy函数
|
||||||
|
* @param o1
|
||||||
|
* @param o2
|
||||||
|
*/
|
||||||
const deepcopy = (o1: any, o2: any) => {
|
const deepcopy = (o1: any, o2: any) => {
|
||||||
for (let k in o2) {
|
for (let k in o2) {
|
||||||
if (typeof o2[k] === "object") {
|
if (typeof o2[k] === "object") {
|
||||||
@ -118,11 +229,14 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* 使用服务器配置
|
||||||
|
*/
|
||||||
const use_server_config = () => {
|
const use_server_config = () => {
|
||||||
value.value = []
|
value.value = []
|
||||||
value_point.value = []
|
value_point.value = []
|
||||||
for (let index = 0; index < config.point4.length; index++) {
|
for (let index = 0; index < config.point4.length; index++) {
|
||||||
|
|
||||||
let tmp: DensityCorrectionPoint = config.point4[index];
|
let tmp: DensityCorrectionPoint = config.point4[index];
|
||||||
value.value.push(tmp)
|
value.value.push(tmp)
|
||||||
let x_y = coordinate_transformation_value_to_xy(tmp.x, tmp.y)
|
let x_y = coordinate_transformation_value_to_xy(tmp.x, tmp.y)
|
||||||
@ -137,7 +251,9 @@ export default defineComponent({
|
|||||||
value_point.value.push(tmp_point)
|
value_point.value.push(tmp_point)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 使用缓存
|
||||||
|
*/
|
||||||
const use_set_cache = () => {
|
const use_set_cache = () => {
|
||||||
if (set_cache.value[selectedprojector.value] != null) {
|
if (set_cache.value[selectedprojector.value] != null) {
|
||||||
let tmp = JSON.parse(set_cache.value[selectedprojector.value]);
|
let tmp = JSON.parse(set_cache.value[selectedprojector.value]);
|
||||||
@ -146,12 +262,16 @@ export default defineComponent({
|
|||||||
recalculate_coordinates()
|
recalculate_coordinates()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 保存缓存
|
||||||
|
*/
|
||||||
const save_set_cache = () => {
|
const save_set_cache = () => {
|
||||||
let tmp = { value: value.value, value_point: value_point.value }
|
let tmp = { value: value.value, value_point: value_point.value }
|
||||||
set_cache.value[selectedprojector.value] = JSON.stringify(tmp);
|
set_cache.value[selectedprojector.value] = JSON.stringify(tmp);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 监听是否切换了投影机
|
||||||
|
*/
|
||||||
watch(
|
watch(
|
||||||
() => configselsect,
|
() => configselsect,
|
||||||
(newVal, oldVal) => {
|
(newVal, oldVal) => {
|
||||||
@ -178,7 +298,9 @@ export default defineComponent({
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 缓存 变量
|
||||||
|
*/
|
||||||
const set_cache: any = ref([]);
|
const set_cache: any = ref([]);
|
||||||
//值
|
//值
|
||||||
let value = ref(<DensityCorrection[]>[]);
|
let value = ref(<DensityCorrection[]>[]);
|
||||||
@ -188,11 +310,21 @@ export default defineComponent({
|
|||||||
* 当前选中的点的索引
|
* 当前选中的点的索引
|
||||||
*/
|
*/
|
||||||
const options_model = ref(0)
|
const options_model = ref(0)
|
||||||
|
/**
|
||||||
|
* html div元素用来计算
|
||||||
|
*/
|
||||||
const div = ref();
|
const div = ref();
|
||||||
|
/**
|
||||||
|
* 最大值
|
||||||
|
*/
|
||||||
const max = ref({ x: 0, y: 0 })
|
const max = ref({ x: 0, y: 0 })
|
||||||
|
/**
|
||||||
|
* 点大小
|
||||||
|
*/
|
||||||
const point = ref({ w: 20, h: 20 })
|
const point = ref({ w: 20, h: 20 })
|
||||||
|
/**
|
||||||
|
* 监听点的切换
|
||||||
|
*/
|
||||||
watch(() => options_model, (newval, oldval) => {
|
watch(() => options_model, (newval, oldval) => {
|
||||||
set?.SetBlendingOption("blending_grids_select_point", `4:${options_model.value + 1}`)
|
set?.SetBlendingOption("blending_grids_select_point", `4:${options_model.value + 1}`)
|
||||||
}, { deep: true })
|
}, { deep: true })
|
||||||
@ -205,7 +337,9 @@ export default defineComponent({
|
|||||||
max.value.x = div.value.offsetWidth
|
max.value.x = div.value.offsetWidth
|
||||||
max.value.y = div.value.offsetHeight
|
max.value.y = div.value.offsetHeight
|
||||||
})
|
})
|
||||||
|
/**
|
||||||
|
* 计算可供选择的点
|
||||||
|
*/
|
||||||
const options = computed(() => {
|
const options = computed(() => {
|
||||||
let tmp = []
|
let tmp = []
|
||||||
for (let index = 0; index < value_point.value.length; index++) {
|
for (let index = 0; index < value_point.value.length; index++) {
|
||||||
@ -216,23 +350,61 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
return tmp
|
return tmp
|
||||||
})
|
})
|
||||||
|
/**
|
||||||
|
* 修改点数量函数
|
||||||
|
* @param val
|
||||||
|
*/
|
||||||
const chang_point_amount = (val: number) => {
|
const chang_point_amount = (val: number) => {
|
||||||
start_point()
|
start_point()
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 小点移动回调
|
||||||
|
* @param $event
|
||||||
|
* @param index
|
||||||
|
*/
|
||||||
const dragStartHandle = ($event: any, index: number) => {
|
const dragStartHandle = ($event: any, index: number) => {
|
||||||
let obj_x = $event.x
|
let obj_x = $event.x
|
||||||
let obj_y = $event.y
|
let obj_y = $event.y
|
||||||
let tmp = coordinate_transformation_xy_to_value(obj_x, obj_y)
|
let tmp = coordinate_transformation_xy_to_value(obj_x, obj_y)
|
||||||
value.value[index].x = Math.round(tmp.x)
|
value.value[index].x = Math.round(tmp.x)
|
||||||
value.value[index].y = Math.round(tmp.y)
|
value.value[index].y = Math.round(tmp.y)
|
||||||
send_value(index, Math.round(tmp.x), Math.round(tmp.y))
|
/**
|
||||||
save_set_cache()
|
* 判断摄像机
|
||||||
|
*/
|
||||||
|
if(now_selsect_projector?.value=='0-0'){
|
||||||
|
|
||||||
|
if(index==1||index==3){
|
||||||
|
value.value[index].x = Math.round(tmp.x)>allconfig.projector_width?allconfig.projector_width:Math.round(tmp.x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(now_selsect_projector?.value=='0-1'){
|
||||||
|
if(index==0||index==2){
|
||||||
|
value.value[index].x = Math.round(tmp.x)<0?0:Math.round(tmp.x)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
send_value(index, value.value[index].x , value.value[index].y)
|
||||||
|
save_set_cache()
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 点的数据发生修改时计算位置
|
||||||
|
* @param index
|
||||||
|
* @param $event
|
||||||
|
* @param type
|
||||||
|
*/
|
||||||
const chang = (index: number, $event: any, type: string) => {
|
const chang = (index: number, $event: any, type: string) => {
|
||||||
index = Number(index)
|
index = Number(index)
|
||||||
|
if (now_selsect_projector?.value == '0-0'&&props.col=='2') {
|
||||||
|
|
||||||
|
if (index == 1 || index == 3) {
|
||||||
|
value.value[index].x > allconfig.projector_width ? value.value[index].x =allconfig.projector_width : value.value[index].x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (now_selsect_projector?.value == '0-1'&&props.col=='2') {
|
||||||
|
if (index == 0 || index == 2) {
|
||||||
|
value.value[index].x < 0 ? value.value[index].x= 0 : value.value[index].x
|
||||||
|
}
|
||||||
|
}
|
||||||
let tmp = coordinate_transformation_value_to_xy(value.value[index].x, value.value[index].y)
|
let tmp = coordinate_transformation_value_to_xy(value.value[index].x, value.value[index].y)
|
||||||
value_point.value[index].y = Math.round(tmp.y)
|
value_point.value[index].y = Math.round(tmp.y)
|
||||||
value_point.value[index].x = Math.round(tmp.x)
|
value_point.value[index].x = Math.round(tmp.x)
|
||||||
@ -296,8 +468,10 @@ export default defineComponent({
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
Proportion.value.x = allconfig.projector_width / (div.value.offsetWidth - point.value.w)
|
Proportion.value.x = allconfig.projector_width / (div.value.offsetWidth - point.value.w)
|
||||||
Proportion.value.y = allconfig.projector_height / (div.value.offsetHeight - point.value.h)
|
Proportion.value.y = allconfig.projector_height / (div.value.offsetHeight - point.value.h)
|
||||||
|
set?.GetBlendingConfig("").then((res) => {
|
||||||
|
config=JSON.parse(res?.config??"").projectors[selectedprojector.value];
|
||||||
start_point()
|
start_point()
|
||||||
start()
|
//start()
|
||||||
use_server_config()
|
use_server_config()
|
||||||
if (
|
if (
|
||||||
sessionStorage.FourPointCalibration &&
|
sessionStorage.FourPointCalibration &&
|
||||||
@ -305,7 +479,8 @@ export default defineComponent({
|
|||||||
) {
|
) {
|
||||||
set_cache.value = JSON.parse(sessionStorage.FourPointCalibration);
|
set_cache.value = JSON.parse(sessionStorage.FourPointCalibration);
|
||||||
use_set_cache();
|
use_set_cache();
|
||||||
}
|
}})
|
||||||
|
keyDown()
|
||||||
window.onresize = () => {
|
window.onresize = () => {
|
||||||
return (() => {
|
return (() => {
|
||||||
if (div != null) {
|
if (div != null) {
|
||||||
@ -339,6 +514,7 @@ export default defineComponent({
|
|||||||
value_point.value[index].x = Math.round(tmp.x)
|
value_point.value[index].x = Math.round(tmp.x)
|
||||||
}
|
}
|
||||||
send_value(-2,0,0)
|
send_value(-2,0,0)
|
||||||
|
save_set_cache()
|
||||||
}
|
}
|
||||||
const recalculate_coordinates = () => {
|
const recalculate_coordinates = () => {
|
||||||
try {
|
try {
|
||||||
@ -358,10 +534,228 @@ export default defineComponent({
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 滚轮切换
|
||||||
|
* @param details
|
||||||
|
*/
|
||||||
|
const details_selsect=(details:any) => {
|
||||||
|
let spt=details.deltaY/100
|
||||||
|
if(spt>0){
|
||||||
|
if(options_model.value>=value_point.value.length-1){
|
||||||
|
options_model.value=0
|
||||||
|
}else{
|
||||||
|
options_model.value++
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(options_model.value<=1){
|
||||||
|
options_model.value=value_point.value.length-1
|
||||||
|
}else{
|
||||||
|
options_model.value--
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 滚轮改变数据
|
||||||
|
*/
|
||||||
|
const details_selsect_val = (details: any, type: string) => {
|
||||||
|
let spt = details.deltaY / 100
|
||||||
|
switch (type) {
|
||||||
|
case 'x':
|
||||||
|
if (spt < 0) {
|
||||||
|
if(now_selsect_projector?.value=='0-0'&&props.col=='2'){
|
||||||
|
if(options_model.value==1||options_model.value==3){
|
||||||
|
value.value[options_model.value].x>allconfig.projector_width?value.value[options_model.value].x = allconfig.projector_width:value.value[options_model.value].x++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(now_selsect_projector?.value=='0-1'&&props.col=='2'){
|
||||||
|
if(options_model.value==0||options_model.value==2){
|
||||||
|
value.value[options_model.value].x <0?value.value[options_model.value].x = 0:value.value[options_model.value].x --
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x--
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x --
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (spt < 0) {
|
||||||
|
value.value[options_model.value].y++
|
||||||
|
} else {
|
||||||
|
value.value[options_model.value].y--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
chang(options_model.value,"","")
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 长按实现
|
||||||
|
* 单击实现
|
||||||
|
*/
|
||||||
|
let loop: NodeJS.Timeout
|
||||||
|
let loop_end: NodeJS.Timeout
|
||||||
|
const handlerTouchstart=(type:string,fun:string)=>{
|
||||||
|
loop_end = setTimeout(() => {
|
||||||
|
loop=setInterval(()=>{
|
||||||
|
if(type=='x'){
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x--
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].y++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].y--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chang(options_model.value,0,'')
|
||||||
|
},10)
|
||||||
|
}, 1000);
|
||||||
|
if(type=='x'){
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x--
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].y++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].y--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chang(options_model.value,0,'')
|
||||||
|
}
|
||||||
|
const handlerTouchend=()=>{
|
||||||
|
clearTimeout(loop_end)
|
||||||
|
clearInterval(loop)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 键盘监听
|
||||||
|
*/
|
||||||
|
const keyDown = () => {
|
||||||
|
document.onkeydown = (e) => {
|
||||||
|
let lock=0;
|
||||||
|
let e1 = e || window.event || arguments.callee.caller.arguments[0]
|
||||||
|
switch (e.code) {
|
||||||
|
case "KeyW":
|
||||||
|
value.value[options_model.value].y++
|
||||||
|
break;
|
||||||
|
case "KeyA":
|
||||||
|
value.value[options_model.value].x--
|
||||||
|
break;
|
||||||
|
case "KeyS":
|
||||||
|
value.value[options_model.value].y--
|
||||||
|
break;
|
||||||
|
case "KeyD":
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
lock=1
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(lock==0)chang(options_model.value,"h", 'h')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const ispad=computed(()=>{
|
||||||
|
let url = window.location.href;
|
||||||
|
return url.indexOf("pad")!=-1
|
||||||
|
})
|
||||||
|
const add_cut=(fun:string,type:string)=>{
|
||||||
|
switch (type) {
|
||||||
|
case 'x':
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].y++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].y--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let loop_start:NodeJS.Timeout
|
||||||
|
let loop_finish:NodeJS.Timeout
|
||||||
|
const input_x_focus=ref(false)
|
||||||
|
const input_y_focus=ref(false)
|
||||||
|
const mousedown = (fun:string,type:string) => {
|
||||||
|
loop_start= setTimeout(() => {
|
||||||
|
loop_finish=setInterval(()=>{
|
||||||
|
switch (type) {
|
||||||
|
case 'x':
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].y++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].y--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
chang(options_model.value,0,'')
|
||||||
|
},30)
|
||||||
|
}, 1000);
|
||||||
|
switch (type) {
|
||||||
|
case 'x':
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].x++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].x--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if(fun=='+'){
|
||||||
|
value.value[options_model.value].y++
|
||||||
|
}else{
|
||||||
|
value.value[options_model.value].y--
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
chang(options_model.value,0,'')
|
||||||
|
}
|
||||||
|
|
||||||
|
const mouseup = () => {
|
||||||
|
clearTimeout(loop_start)
|
||||||
|
clearInterval(loop_finish)
|
||||||
|
}
|
||||||
defineExpose({
|
defineExpose({
|
||||||
options_model,
|
options_model,
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
|
input_x_focus,
|
||||||
|
input_y_focus,
|
||||||
|
mousedown,
|
||||||
|
mouseup,
|
||||||
|
add_cut,
|
||||||
|
now_selsect_projector,
|
||||||
|
details_selsect,
|
||||||
resetall,
|
resetall,
|
||||||
div,
|
div,
|
||||||
max,
|
max,
|
||||||
@ -374,7 +768,13 @@ export default defineComponent({
|
|||||||
reset,
|
reset,
|
||||||
value_point_amount,
|
value_point_amount,
|
||||||
chang_point_amount,
|
chang_point_amount,
|
||||||
options
|
options,
|
||||||
|
details_selsect_val,
|
||||||
|
ipad_chang,
|
||||||
|
url,
|
||||||
|
handlerTouchstart,
|
||||||
|
handlerTouchend,
|
||||||
|
ispad
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -11,15 +11,33 @@
|
|||||||
<q-toggle class="float-right" v-model="array[0].isshow" label="" />
|
<q-toggle class="float-right" v-model="array[0].isshow" label="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<q-input dense filled type="number" :autofocus="group == 0" :bg-color="group == 0 ? 'cyan-1' : ''"
|
<q-input v-show="ispad" dense filled type="number" :autofocus="group == 0"
|
||||||
@focus="group = 0" v-model="array[0].value" :label="$t('upper fusion zone parameters')" lazy-rules
|
:bg-color="group == 0 ? 'cyan-1' : ''" @focus="group = 0" v-model.number="array[0].value"
|
||||||
:rules="[
|
:label="$t('upper fusion zone parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 0 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" :rules="[
|
||||||
(val) =>
|
(val) =>
|
||||||
(val !== null && val !== '') ||
|
(val !== null && val !== '') ||
|
||||||
$t('Please enter a number'),
|
$t('Please enter a number'),
|
||||||
(val) =>
|
(val) =>
|
||||||
(val >= 0 && val < config.height) || $t('Please enter 0-100'),
|
(val >= 0 && val < config.height) || $t('Please enter 0-100'),
|
||||||
]" />
|
]" />
|
||||||
|
<q-input v-show="!ispad" dense filled type="number" :autofocus="group == 0"
|
||||||
|
:bg-color="group == 0 ? 'cyan-1' : ''" @focus="() => { group = 0; input_focus[0] = true }"
|
||||||
|
v-model.number="array[0].value" :label="$t('upper fusion zone parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 0 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" @blur="input_focus[0] = false" :rules="[
|
||||||
|
(val) =>
|
||||||
|
(val !== null && val !== '') ||
|
||||||
|
$t('Please enter a number'),
|
||||||
|
(val) =>
|
||||||
|
(val >= 0 && val < config.height) || $t('Please enter 0-100'),
|
||||||
|
]">
|
||||||
|
<template v-if="input_focus[0]" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="mousedown('+', 0)" @mouseup="mouseup" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="mousedown('-', 0)" @mouseup="mouseup" />
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -30,39 +48,75 @@
|
|||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<q-toggle class="float-right" v-model="array[1].isshow" label="" />
|
<q-toggle class="float-right" @click="group = 1" v-model="array[1].isshow" label="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<q-input dense filled type="number" :autofocus="group == 1" :bg-color="group == 1 ? 'cyan-1' : ''"
|
<q-input v-show="ispad" dense filled type="number" :autofocus="group == 1"
|
||||||
@focus="group = 1" v-model="array[1].value" :label="$t('Left fusion Band Parameters')" lazy-rules
|
:bg-color="group == 1 ? 'cyan-1' : ''" @focus="group = 1" v-model.number="array[1].value"
|
||||||
:rules="[
|
:label="$t('Left fusion Band Parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 1 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" :rules="[
|
||||||
(val) =>
|
(val) =>
|
||||||
(val !== null && val !== '') ||
|
(val !== null && val !== '') ||
|
||||||
$t('Please enter a number'),
|
$t('Please enter a number'),
|
||||||
(val) =>
|
(val) =>
|
||||||
(val >= 0 && val < config.width) || $t('Please enter 0-100'),
|
(val >= 0 && val < config.width) || $t('Please enter 0-100'),
|
||||||
]" />
|
]" />
|
||||||
|
<q-input v-show="!ispad" dense filled type="number" :autofocus="group == 1"
|
||||||
|
:bg-color="group == 1 ? 'cyan-1' : ''" @focus="() => { group = 1; input_focus[1] = true }"
|
||||||
|
v-model.number="array[1].value" :label="$t('Left fusion Band Parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 1 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" @blur="input_focus[1] = false" :rules="[
|
||||||
|
(val) =>
|
||||||
|
(val !== null && val !== '') ||
|
||||||
|
$t('Please enter a number'),
|
||||||
|
(val) =>
|
||||||
|
(val >= 0 && val < config.width) || $t('Please enter 0-100'),
|
||||||
|
]">
|
||||||
|
<template v-if="input_focus[1]" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="mousedown('+', 1)" @mouseup="mouseup" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="mousedown('-', 1)" @mouseup="mouseup" />
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<q-toggle class="float-right" v-model="array[2].isshow" label="" />
|
<q-toggle class="float-right" @click="group = 2" v-model="array[2].isshow" label="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<q-input dense filled type="number" :autofocus="group == 2" :bg-color="group == 2 ? 'cyan-1' : ''"
|
<q-input v-show="ispad" dense filled type="number" :autofocus="group == 2"
|
||||||
@focus="group = 2" v-model="array[2].value" :label="$t('Right fusion Band Parameters')" lazy-rules
|
:bg-color="group == 2 ? 'cyan-1' : ''" @focus="group = 2" v-model.number="array[2].value"
|
||||||
:rules="[
|
:label="$t('Right fusion Band Parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 2 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" :rules="[
|
||||||
(val) =>
|
(val) =>
|
||||||
(val !== null && val !== '') ||
|
(val !== null && val !== '') ||
|
||||||
$t('Please enter a number'),
|
$t('Please enter a number'),
|
||||||
(val) =>
|
(val) =>
|
||||||
(val >= 0 && val < config.width) || $t('Please enter 0-100'),
|
(val >= 0 && val < config.width) || $t('Please enter 0-100'),
|
||||||
]" />
|
]" />
|
||||||
|
<q-input v-show="!ispad" dense filled type="number" :autofocus="group == 2"
|
||||||
|
:bg-color="group == 2 ? 'cyan-1' : ''" @focus="() => { group = 2; input_focus[2] = true }"
|
||||||
|
v-model.number="array[2].value" :label="$t('Right fusion Band Parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 2 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" @blur="input_focus[2] = false" :rules="[
|
||||||
|
(val) =>
|
||||||
|
(val !== null && val !== '') ||
|
||||||
|
$t('Please enter a number'),
|
||||||
|
(val) =>
|
||||||
|
(val >= 0 && val < config.width) || $t('Please enter 0-100'),
|
||||||
|
]">
|
||||||
|
<template v-if="input_focus[2]" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="mousedown('+', 2)" @mouseup="mouseup" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="mousedown('-', 2)" @mouseup="mouseup" />
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3"><span>{{ $t('Whether to operate synchronously') }}</span><q-checkbox
|
<div class="col-3"><span>{{ $t('Whether to operate synchronously') }}</span><q-checkbox
|
||||||
v-model="auto_sync" /></div>
|
v-model="auto_sync" @update:model-value="() => { }" /></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -75,15 +129,33 @@
|
|||||||
<q-toggle class="float-right" v-model="array[3].isshow" label="" />
|
<q-toggle class="float-right" v-model="array[3].isshow" label="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<q-input dense filled type="number" :autofocus="group == 3" :bg-color="group == 3 ? 'cyan-1' : ''"
|
<q-input v-show="ispad" dense filled type="number" :autofocus="group == 3"
|
||||||
@focus="group = 3" v-model="array[3].value" :label="$t('Lower fusion Zone Parameters')" lazy-rules
|
:bg-color="group == 3 ? 'cyan-1' : ''" @focus="group = 3" v-model.number="array[3].value"
|
||||||
:rules="[
|
:label="$t('Lower fusion Zone Parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 3 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" :rules="[
|
||||||
(val) =>
|
(val) =>
|
||||||
(val !== null && val !== '') ||
|
(val !== null && val !== '') ||
|
||||||
$t('Please enter a number'),
|
$t('Please enter a number'),
|
||||||
(val) =>
|
(val) =>
|
||||||
(val >= 0 && val < config.height) || $t('Please enter 0-100'),
|
(val >= 0 && val < config.height) || $t('Please enter 0-100'),
|
||||||
]" />
|
]" />
|
||||||
|
<q-input v-show="!ispad" dense filled type="number" :autofocus="group == 3"
|
||||||
|
:bg-color="group == 3 ? 'cyan-1' : ''" @focus="() => { group = 3; input_focus[3] = true }"
|
||||||
|
v-model.number="array[3].value" :label="$t('Lower fusion Zone Parameters')" lazy-rules
|
||||||
|
@click="() => { url.indexOf('pad') != -1 ? ipad_chang = true : ''; group = 3 }"
|
||||||
|
:readonly="url.indexOf('pad') != -1" @blur="input_focus[3] = false" :rules="[
|
||||||
|
(val) =>
|
||||||
|
(val !== null && val !== '') ||
|
||||||
|
$t('Please enter a number'),
|
||||||
|
(val) =>
|
||||||
|
(val >= 0 && val < config.height) || $t('Please enter 0-100'),
|
||||||
|
]">
|
||||||
|
<template v-if="input_focus[3]" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="handlerTouchstart('+')" @mouseup="handlerTouchend" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="handlerTouchstart('-')" @mouseup="handlerTouchend" />
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -91,20 +163,38 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12" v-if="group != 4">
|
<div class="col-12" v-show="group != 4 || ispad">
|
||||||
<p class="text-center" style="margin: 0 0 8;">{{ $t("Set Fusion Band Parameters") }}</p>
|
<p class="text-center" style="margin: 0 0 8;">{{ $t("Set Fusion Band Parameters") }}</p>
|
||||||
<div style="display: flex; justify-content: space-evenly">
|
<div style="display: flex; justify-content: space-evenly">
|
||||||
<div>
|
<div>
|
||||||
<q-slider v-model="array[group].alpha" :min="0.0" @change="chang('alpha')" :max="1" :step="0.01" color="green"
|
<q-slider v-model="array[group].alpha" v-show="!ispad" :min="0.0" @change="chang('alpha')" :max="1" :step="0.01"
|
||||||
vertical reverse label-always />
|
color="green" vertical reverse label-always />
|
||||||
<div> <q-input dense filled hide-bottom-space type="number" max="1" min="0" step="0.1"
|
<div> <q-input v-show="ispad" dense filled hide-bottom-space type="number" max="1" min="0" step="0.1"
|
||||||
@update:model-value="chang('alpha')" v-model="array[group].alpha" lazy-rules :rules="[
|
@update:model-value="chang('alpha')"
|
||||||
|
@click="() => { now_apg = 'alpha'; ispad ? ipad_chang_input = true : '' }" :readonly="ispad"
|
||||||
|
v-model.number="array[group].alpha" lazy-rules :rules="[
|
||||||
(val) =>
|
(val) =>
|
||||||
(val !== null && val !== '') ||
|
(val !== null && val !== '') ||
|
||||||
$t('Please enter a number'),
|
$t('Please enter a number'),
|
||||||
(val) =>
|
(val) =>
|
||||||
(val >= 0 && val <= 1) || $t('Please enter a value within the range'),
|
(val >= 0 && val <= 1) || $t('Please enter a value within the range'),
|
||||||
]" />
|
]" />
|
||||||
|
<q-input v-show="!ispad" dense filled hide-bottom-space type="number" max="1" min="0" step="0.1"
|
||||||
|
@update:model-value="chang('alpha')"
|
||||||
|
@click="() => { now_apg = 'alpha'; ispad ? ipad_chang_input = true : '' }" :readonly="ispad"
|
||||||
|
@focus="input_focus_apg[0] = true" @blur="input_focus_apg[0] = false" v-model.number="array[group].alpha"
|
||||||
|
lazy-rules :rules="[
|
||||||
|
(val) =>
|
||||||
|
(val !== null && val !== '') ||
|
||||||
|
$t('Please enter a number'),
|
||||||
|
(val) =>
|
||||||
|
(val >= 0 && val <= 1) || $t('Please enter a value within the range'),
|
||||||
|
]">
|
||||||
|
<template v-if="input_focus_apg[0]" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="handlerTouchstart_apg('+')" @mouseup="handlerTouchend_apg" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="handlerTouchstart_apg('-')" @mouseup="handlerTouchend_apg" />
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
<p style="text-align: center;">Alpha</p>
|
<p style="text-align: center;">Alpha</p>
|
||||||
<q-btn style="margin-top: 0.5rem;" color="white" @click="reset('alpha')" text-color="black"
|
<q-btn style="margin-top: 0.5rem;" color="white" @click="reset('alpha')" text-color="black"
|
||||||
:label="$t('reset')" />
|
:label="$t('reset')" />
|
||||||
@ -112,16 +202,32 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<q-slider v-model="array[group].p" :min="0" @change="chang('p')" :max="16" :step="0.01" color="green" vertical
|
<q-slider v-model="array[group].p" v-show="!ispad" :min="0" @change="chang('p')" :max="16" :step="0.01"
|
||||||
reverse label-always />
|
color="green" vertical reverse label-always />
|
||||||
<div> <q-input dense filled hide-bottom-space type="number" max="16" min="0" step="0.1"
|
<div> <q-input v-show="ispad" dense filled hide-bottom-space type="number" max="16" min="0" step="0.1"
|
||||||
@update:model-value="chang('p')" v-model="array[group].p" lazy-rules :rules="[
|
@update:model-value="chang('p')" @click="() => { now_apg = 'p'; ispad ? ipad_chang_input = true : '' }"
|
||||||
|
:readonly="ispad" v-model.number="array[group].p" lazy-rules :rules="[
|
||||||
(val) =>
|
(val) =>
|
||||||
(val !== null && val !== '') ||
|
(val !== null && val !== '') ||
|
||||||
$t('Please enter a number'),
|
$t('Please enter a number'),
|
||||||
(val) =>
|
(val) =>
|
||||||
(val >= 0 && val <= 16) || $t('Please enter a value within the range'),
|
(val >= 0 && val <= 16) || $t('Please enter a value within the range'),
|
||||||
]" />
|
]" />
|
||||||
|
<q-input v-show="!ispad" dense filled hide-bottom-space type="number" max="16" min="0" step="0.1"
|
||||||
|
@focus="input_focus_apg[1] = true" @blur="input_focus_apg[1] = false" @update:model-value="chang('p')"
|
||||||
|
@click="() => { now_apg = 'p'; ispad ? ipad_chang_input = true : '' }" :readonly="ispad"
|
||||||
|
v-model.number="array[group].p" lazy-rules :rules="[
|
||||||
|
(val) =>
|
||||||
|
(val !== null && val !== '') ||
|
||||||
|
$t('Please enter a number'),
|
||||||
|
(val) =>
|
||||||
|
(val >= 0 && val <= 16) || $t('Please enter a value within the range'),
|
||||||
|
]">
|
||||||
|
<template v-if="input_focus_apg[1]" v-slot:append>
|
||||||
|
<q-icon name="arrow_upward" @mousedown="handlerTouchstart_apg('+')" @mouseup="handlerTouchend_apg" />
|
||||||
|
<q-icon name="arrow_downward" @mousedown="handlerTouchstart_apg('-')" @mouseup="handlerTouchend_apg" />
|
||||||
|