加入 投影机最大数量限制

This commit is contained in:
shefengchun 2023-02-22 17:44:43 +08:00
parent 966fe44583
commit 740ff764e5
4 changed files with 82 additions and 38 deletions

View File

@ -894,13 +894,13 @@ export default defineComponent({
add_control_points(Number(now_amount.value), tmp); add_control_points(Number(now_amount.value), tmp);
} }
/** /**
* 滚轮切换 * 滚轮切换
* @param details * @param details
*/ */
const details_selsect_v=(details:any) => { const details_selsect_v=(details:any) => {
let spt=details.deltaY/100 let spt=details.deltaY/100
if(spt>0){ if(spt<0){
if(options_model_v.value>=value_v_point.value.length-1){ if(options_model_v.value>=value_v_point.value.length-1){
options_model_v.value=0 options_model_v.value=0
}else{ }else{
@ -916,7 +916,7 @@ export default defineComponent({
} }
const details_selsect_h=(details:any) => { const details_selsect_h=(details:any) => {
let spt=details.deltaY/100 let spt=details.deltaY/100
if(spt>0){ if(spt<0){
if(options_model_h.value>=value_h_point.value.length-1){ if(options_model_h.value>=value_h_point.value.length-1){
options_model_h.value=0 options_model_h.value=0
}else{ }else{
@ -939,7 +939,7 @@ export default defineComponent({
let spt = details.deltaY / 100 let spt = details.deltaY / 100
switch (type) { switch (type) {
case 'v': case 'v':
if (spt > 0) { if (spt < 0) {
value_v.value[options_model_v.value].y++ value_v.value[options_model_v.value].y++
} else { } else {
value_v.value[options_model_v.value].y-- value_v.value[options_model_v.value].y--
@ -947,7 +947,7 @@ export default defineComponent({
chang(options_model_v.value,value_v.value[options_model_v.value].y,"v") chang(options_model_v.value,value_v.value[options_model_v.value].y,"v")
break; break;
default: default:
if (spt > 0) { if (spt < 0) {
value_h.value[options_model_h.value].x++ value_h.value[options_model_h.value].x++
} else { } else {
value_h.value[options_model_h.value].x-- value_h.value[options_model_h.value].x--

View File

@ -364,7 +364,7 @@ export default defineComponent({
*/ */
const details_selsect=(details:any) => { const details_selsect=(details:any) => {
let spt=details.deltaY/100 let spt=details.deltaY/100
if(spt>0){ if(spt<0){
if(options_model.value>=value_point.value.length-1){ if(options_model.value>=value_point.value.length-1){
options_model.value=0 options_model.value=0
}else{ }else{
@ -387,14 +387,14 @@ export default defineComponent({
let spt = details.deltaY / 100 let spt = details.deltaY / 100
switch (type) { switch (type) {
case 'x': case 'x':
if (spt > 0) { if (spt < 0) {
value.value[options_model.value].x++ value.value[options_model.value].x++
} else { } else {
value.value[options_model.value].x-- value.value[options_model.value].x--
} }
break; break;
default: default:
if (spt > 0) { if (spt < 0) {
value.value[options_model.value].y++ value.value[options_model.value].y++
} else { } else {
value.value[options_model.value].y-- value.value[options_model.value].y--

View File

@ -637,13 +637,13 @@ export default defineComponent({
options_model.value = 1 options_model.value = 1
} }
/** /**
* 滚轮切换 * 滚轮切换
* @param details * @param details 鼠标返回对象
*/ */
const details_selsect=(details:any) => { const details_selsect=(details:any) => {
let spt=details.deltaY/100 let spt=details.deltaY/100
if(spt>0){ if(spt<0){
if(options_model.value>=value_point.value.length-1){ if(options_model.value>=value_point.value.length-1){
options_model.value=0 options_model.value=0
}else{ }else{
@ -666,14 +666,14 @@ export default defineComponent({
let spt = details.deltaY / 100 let spt = details.deltaY / 100
switch (type) { switch (type) {
case 'x': case 'x':
if (spt > 0) { if (spt < 0) {
value.value[options_model.value].x++ value.value[options_model.value].x++
} else { } else {
value.value[options_model.value].x-- value.value[options_model.value].x--
} }
break; break;
default: default:
if (spt > 0) { if (spt < 0) {
value.value[options_model.value].y++ value.value[options_model.value].y++
} else { } else {
value.value[options_model.value].y-- value.value[options_model.value].y--

View File

@ -33,15 +33,25 @@
<div class="col-2" style="border-right: 1px solid #b0bec5"> <div class="col-2" style="border-right: 1px solid #b0bec5">
<p class="text-center">{{ $t("Projector") }}</p> <p class="text-center">{{ $t("Projector") }}</p>
<!-- row 在前col在后 --> <!-- row 在前col在后 -->
<div v-for="(item, index_row) in config.row"> <!-- <div v-for="(item, index_row) in config.row">
<projector-item v-for="(item, index_col) in config.col" class="w-100" :llabel="
$t('Projector') + (index_row * config.col + index_col + 1)
" :lvalue="index_row + '/' + index_col"
@click="currently_selected_projector(index_row + '-' + index_col)"></projector-item>
</div> -->
<div v-for="(item, index_row) in projectors_that_can_display.row">
<projector-item v-for="(item, index_col) in config.col" class="w-100" :llabel=" <projector-item v-for="(item, index_col) in config.col" class="w-100" :llabel="
$t('Projector') + (index_row * config.col + index_col + 1) $t('Projector') + (index_row * config.col + index_col + 1)
" :lvalue="index_row + '/' + index_col" " :lvalue="index_row + '/' + index_col"
@click="currently_selected_projector(index_row + '-' + index_col)"></projector-item> @click="currently_selected_projector(index_row + '-' + index_col)"></projector-item>
</div> </div>
<div>
<projector-item v-for="(item, index_col) in projectors_that_can_display.remain" class="w-100" :llabel="
$t('Projector') + (projectors_that_can_display.row * config.col + index_col + 1)
" :lvalue="projectors_that_can_display.row + '/' + index_col"
@click="currently_selected_projector(projectors_that_can_display.row + '-' + index_col)"></projector-item>
</div>
<div class="col-12" style="text-align: center"> <div class="col-12" style="text-align: center">
{{ {{
$t("Enable projection mode") $t("Enable projection mode")
@ -57,22 +67,7 @@
<div class="col-10"> <div class="col-10">
<div class="q-ta-md"> <div class="q-ta-md">
<q-btn-toggle :disable="!$store.state.enablefusion" no-caps v-model="options" toggle-color="primary" <q-btn-toggle :disable="!$store.state.enablefusion" no-caps v-model="options" toggle-color="primary"
:options="[ :options="btn_options" />
{ label: $t('FusionLocale'), value: 'FusionLocale' },
{
label: $t('FourPointCalibration'),
value: 'FourPointCalibration',
},
{
label: $t('SurfaceCorrection'),
value: 'SurfaceCorrection',
},
{
label: $t('DensityCorrection'),
value: 'DensityCorrection',
},
{ label: $t('GridSettings'), value: 'GridSettings' },
]" />
<q-btn-toggle v-show="isdebug" no-caps v-model="options" toggle-color="primary" :options="[ <q-btn-toggle v-show="isdebug" no-caps v-model="options" toggle-color="primary" :options="[
{ label: $t('debugging'), value: 'Debugging' } { label: $t('debugging'), value: 'Debugging' }
]" /> ]" />
@ -98,7 +93,7 @@
<q-btn color="white" @click="resetall" text-color="black" :label="$t('resetall config')" /> <q-btn color="white" @click="resetall" text-color="black" :label="$t('resetall config')" />
<div class="q-space" data-v-39efcd1f=""></div> <div class="q-space" data-v-39efcd1f=""></div>
<q-btn flat :label="$t('Select saved configuration')" no-caps color="primary" <q-btn flat :label="$t('Select saved configuration')" no-caps color="primary"
@click="select_configuration = true; get_scenes()" /> @click="select_configuration = true;select_configuration_name=''; get_scenes()" />
<q-btn flat :label="$t('Cancel')" no-caps color="primary" v-close-popup <q-btn flat :label="$t('Cancel')" no-caps color="primary" v-close-popup
@click="$store.commit('setSelectedProjector', '0/0');" /> @click="$store.commit('setSelectedProjector', '0/0');" />
<q-btn flat :label="$t('save config')" no-caps color="primary" @click="save" /> <q-btn flat :label="$t('save config')" no-caps color="primary" @click="save" />
@ -210,6 +205,7 @@ import GridSettings from "src/components/FusionSettings/GridSettings.vue";
import SurfaceCorrection from "src/components/FusionSettings/SurfaceCorrection.vue"; import SurfaceCorrection from "src/components/FusionSettings/SurfaceCorrection.vue";
import DensityCorrection from "src/components/FusionSettings/DensityCorrection.vue"; import DensityCorrection from "src/components/FusionSettings/DensityCorrection.vue";
import Debugging from "src/components/FusionSettings/Debugging.vue"; import Debugging from "src/components/FusionSettings/Debugging.vue";
import { number } from "yargs";
export default defineComponent({ export default defineComponent({
name: "ComponentFusionSettingsDialog", name: "ComponentFusionSettingsDialog",
@ -234,6 +230,7 @@ export default defineComponent({
}; };
const select_configuration = ref(false) const select_configuration = ref(false)
const del_dialog = ref(false) const del_dialog = ref(false)
const config_projectors=ref(null)
const select_configuration_name = ref("") const select_configuration_name = ref("")
const send_disable_blending_params = () => { const send_disable_blending_params = () => {
set?.SetBlendingOption(disable_blending_params_id.value, disable_blending_params.value ? "1" : "0"); set?.SetBlendingOption(disable_blending_params_id.value, disable_blending_params.value ? "1" : "0");
@ -430,6 +427,7 @@ export default defineComponent({
const save = () => { const save = () => {
medium.value = true medium.value = true
save_cover_name.value=''
// //
get_scenes() get_scenes()
}; };
@ -474,6 +472,7 @@ export default defineComponent({
setTimeout(() => { setTimeout(() => {
set?.GetBlendingConfig("").then((res) => { set?.GetBlendingConfig("").then((res) => {
let tmp = JSON.parse(res ? res.config : ""); let tmp = JSON.parse(res ? res.config : "");
config_projectors.value=tmp
let local_options = [ let local_options = [
[disable_blending_params_id, disable_blending_params], [disable_blending_params_id, disable_blending_params],
[show_blending_grids_id, show_blending_grids] [show_blending_grids_id, show_blending_grids]
@ -505,14 +504,17 @@ export default defineComponent({
allconfig = {resolution: [{width: tmp.projector_width,height: tmp.projector_height}]}; allconfig = {resolution: [{width: tmp.projector_width,height: tmp.projector_height}]};
now_resolution.value=0 now_resolution.value=0
} }
for (let index = 0; index < projectorlayout.length; index++) {
let arr = projectorlayout[index].label.split('x');
if(tmp.col==Number(arr[0])&&tmp.row==Number(arr[1])){
now_select_projectorlayout.value=index
}
}
}); });
get_scenes() get_scenes()
set?.SetBlendingOption("blending_grids_select_ui", "blending") set?.SetBlendingOption("blending_grids_select_ui", "blending")
optionsstr.value = "FusionLocale"; optionsstr.value = "FusionLocale";
}, 1000); }, 1000);
// setTimeout(() => {
// }, 1000);
}); });
const save_cover_name = ref("") const save_cover_name = ref("")
const plan_list = [ const plan_list = [
@ -529,6 +531,19 @@ export default defineComponent({
config.value.col = tmp.col; config.value.col = tmp.col;
config.value.row = tmp.row; config.value.row = tmp.row;
$store.commit("setfusion_configuration", res?.config); $store.commit("setfusion_configuration", res?.config);
allconfig = tmp
for (let index = 0; index < options_resolution.value.length; index++) {
let arr = options_resolution.value[index].label.split('*');
if(tmp.projector_width==Number(arr[0])&&tmp.projector_height==Number(arr[1])){
now_resolution.value=index
}
}
for (let index = 0; index < projectorlayout.length; index++) {
let arr = projectorlayout[index].label.split('x');
if(tmp.row==Number(arr[0])&&tmp.col==Number(arr[1])){
now_select_projectorlayout.value=index
}
}
}); });
let tmp = options.value let tmp = options.value
@ -574,6 +589,8 @@ export default defineComponent({
const dialog_del_scenes = () => { const dialog_del_scenes = () => {
set?.DeleteBlendingScene(name_to_be_deleted.value); set?.DeleteBlendingScene(name_to_be_deleted.value);
plan_list.splice(plan_list.findIndex(item => item === name_to_be_deleted.value), 1) plan_list.splice(plan_list.findIndex(item => item === name_to_be_deleted.value), 1)
name_to_be_deleted.value=''
select_configuration_name.value=''
} }
const now_selsect_projector=ref("0-0") const now_selsect_projector=ref("0-0")
const currently_selected_projector = (value: string) => { const currently_selected_projector = (value: string) => {
@ -607,6 +624,31 @@ export default defineComponent({
getconfig() getconfig()
}) })
} }
const btn_options = computed(() => {
let tmp=[]
if(now_select_projectorlayout.value!=0){
tmp.push({ label: $t.t('FusionLocale'), value: 'FusionLocale' })
}else{
optionsstr.value = "FourPointCalibration";
}
tmp.push({label: $t.t('FourPointCalibration'), value: 'FourPointCalibration'})
tmp.push({label: $t.t('SurfaceCorrection'),value: 'SurfaceCorrection',})
tmp.push({label: $t.t('DensityCorrection'),value: 'DensityCorrection',})
tmp.push({ label: $t.t('GridSettings'), value: 'GridSettings' })
return tmp
})
/**
* 计算可以显示的投影机数量
*/
const projectors_that_can_display=computed(()=>{
let allconfig = JSON.parse($store.state.fusion_configuration);
let max = allconfig.max_projector_count
let row = max/allconfig.row|0
let remain=max%allconfig.row
// config_projectors
return {row,remain}
})
return { return {
currently_selected_projector, currently_selected_projector,
name_to_be_deleted, name_to_be_deleted,
@ -646,7 +688,9 @@ export default defineComponent({
set_resolution, set_resolution,
send_projectorlayout, send_projectorlayout,
now_select_projectorlayout, now_select_projectorlayout,
projectorlayout projectorlayout,
btn_options,
projectors_that_can_display
}; };
}, },
}); });