diff --git a/src/components/Playground.jsx b/src/components/Playground.jsx index b2e64edc..8a365646 100644 --- a/src/components/Playground.jsx +++ b/src/components/Playground.jsx @@ -28,6 +28,8 @@ import useSWRMutation from 'swr/mutation' import { useCanvasPopupStatusController } from '@/hooks/common/useCanvasPopupStatusController' import { canvasPopupStatusStore } from '@/store/canvasPopupStatusAtom' import { moduleSelectionDataPlanListState } from '@/store/selectedModuleOptions' +import { useRouter } from 'next/navigation' +import { QcastContext } from '@/app/QcastProvider' export default function Playground() { const [useCadFile, setUseCadFile] = useRecoilState(useCadFileState) @@ -56,6 +58,13 @@ export default function Playground() { const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) + const router = useRouter() + const { setIsGlobalLoading } = useContext(QcastContext) + + useEffect(() => { + setIsGlobalLoading(false) + }, []) + useEffect(() => { console.log('textInput:', textInput) }, [textInput]) @@ -891,6 +900,19 @@ export default function Playground() { Test Data insert +
+ +
) diff --git a/src/components/floor-plan/CanvasFrame.jsx b/src/components/floor-plan/CanvasFrame.jsx index 31698b1a..85315a23 100644 --- a/src/components/floor-plan/CanvasFrame.jsx +++ b/src/components/floor-plan/CanvasFrame.jsx @@ -28,7 +28,6 @@ export default function CanvasFrame() { const { currentCanvasPlan } = usePlan() const totalDisplay = useRecoilValue(totalDisplaySelector) // 집계표 표시 여부 const { setIsGlobalLoading } = useContext(QcastContext) - const [moduleStatistics, setModuleStatistics] = useRecoilState(moduleStatisticsState) const reset = useResetRecoilState(moduleStatisticsState) const loadCanvas = () => { if (canvas) { diff --git a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx index 03df0a35..240bc554 100644 --- a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx @@ -354,22 +354,28 @@ export default function CircuitTrestleSetting({ id }) { id: uuidv4(), } }) - const PcsVoltageChkParams = { + const pcsVoltageChkParams = { ...getOptYn(), useModuleItemList: getUseModuleItemList(), roofSurfaceList: getRoofSurfaceList(), pcsItemList: getPcsItemList(), } setSelectedModels(selectedModels) - getPcsVoltageChk(PcsVoltageChkParams).then((res) => {}) + getPcsVoltageChk(pcsVoltageChkParams).then((res) => { + setAllocationType(ALLOCATION_TYPE.PASSIVITY) + }) } else { swalFire({ - title: '파워컨디셔너를 추가해 주세요.', + title: res.result.resultMsg, type: 'alert', + confirmFn: () => { + return + }, }) + return } }) - } else if (pcsCheck.max) { + } else { const moduleStdQty = selectedModels.reduce((acc, model) => { return acc + parseInt(model.moduleStdQty) }, 0) @@ -387,9 +393,9 @@ export default function CircuitTrestleSetting({ id }) { }) return } - } - setAllocationType(ALLOCATION_TYPE.PASSIVITY) + setAllocationType(ALLOCATION_TYPE.PASSIVITY) + } } // StepUp에서 선택된 값들을 처리하는 함수 수정 diff --git a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx index 7cbca2da..aa151d9c 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx @@ -1,6 +1,7 @@ import { GlobalDataContext } from '@/app/GlobalDataProvider' import { POLYGON_TYPE } from '@/common/common' import { useMasterController } from '@/hooks/common/useMasterController' +import { useModule } from '@/hooks/module/useModule' import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' import { canvasState } from '@/store/canvasAtom' @@ -11,37 +12,29 @@ import { useRecoilState, useRecoilValue } from 'recoil' export default function PassivityCircuitAllocation(props) { const { - tabNum, - setTabNum, selectedModels, setSelectedModels, getOptYn: getApiProps, getUseModuleItemList: getSelectedModuleList, getSelectModelList: getSelectModelList, - getRoofSurfaceList, - getModelList, } = props const { swalFire } = useSwal() const { getMessage } = useMessage() const canvas = useRecoilValue(canvasState) const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) const selectedModules = useRecoilValue(selectedModuleState) - const [moduleStatistics, setModuleStatistics] = useRecoilState(moduleStatisticsState) - // const [totalWpout, setTotalWpout] = useState(0) const [selectedPcs, setSelectedPcs] = useState(selectedModels[0]) - // const { header, rows: row } = moduleStatistics - const [header, setHeader] = useState(moduleStatistics.header) - const [rows, setRows] = useState(moduleStatistics.rows) - const [footer, setFooter] = useState(['합계']) + const { header, rows, footer } = useRecoilValue(moduleStatisticsState) const [circuitNumber, setCircuitNumber] = useState(1) const [targetModules, setTargetModules] = useState([]) + const { setModuleStatisticsData } = useModule() const { getPcsManualConfChk } = useMasterController() useEffect(() => { console.log('header, rows', header, rows) console.log('selectedModels', selectedModels) // setSurfaceInfo() - setTableData() + setModuleStatisticsData() if (!managementState) { setManagementState(managementStateLoaded) } @@ -158,7 +151,14 @@ export default function PassivityCircuitAllocation(props) { } const handleCircuitNumberFix = () => { - let uniqueCircuitNumbers = null + let uniqueCircuitNumbers = [ + ...new Set( + canvas + .getObjects() + .filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuitNumber) + .map((obj) => obj.circuitNumber), + ), + ] if (!circuitNumber || circuitNumber === 0) { swalFire({ text: '회로번호를 1 이상입력해주세요.', @@ -174,15 +174,6 @@ export default function PassivityCircuitAllocation(props) { }) return } else if (selectedModels.length > 1) { - uniqueCircuitNumbers = [ - ...new Set( - canvas - .getObjects() - .filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuitNumber) - .map((obj) => obj.circuitNumber), - ), - ] - let result = false uniqueCircuitNumbers.forEach((number) => { if ( @@ -335,7 +326,7 @@ export default function PassivityCircuitAllocation(props) { setTargetModules([]) setCircuitNumber(+circuitNumber + 1) - setTableData() + setModuleStatisticsData() }) } @@ -347,100 +338,6 @@ export default function PassivityCircuitAllocation(props) { } } - const setTableData = () => { - const tempHeader = [ - { name: getMessage('simulator.table.sub1'), prop: 'name' }, - { name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' }, - ...selectedModules.itemList.map((module) => { - return { - name: module.itemNm, - prop: module.itemId, - } - }), - { name: `${getMessage('modal.panel.batch.statistic.power.generation.amount')}(kW)`, prop: 'wpOut' }, - ] - - const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) - const surfaceIds = surfaces.map((surface) => surface.parentId) - const surfaceObjects = {} - const rows = surfaces.map((surface) => { - const moduleObject = {} - surfaceObjects[surface.id] = { - roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText, - circuit: '-', - amount: 0, - wpOut: 0, - circuits: {}, - } - - surface.modules.forEach((module) => { - if (!surfaceObjects[surface.id][module.moduleInfo.itemId]) { - // 지붕면에 모듈 존재 여부 - surfaceObjects[surface.id][module.moduleInfo.itemId] = 0 // 모듈 초기화 - } - - surfaceObjects[surface.id][module.moduleInfo.itemId]++ - surfaceObjects[surface.id].wpOut += +module.moduleInfo.wpOut - if (module.circuit) { - if (!surfaceObjects[surface.id].circuits[module.circuitNumber]) { - surfaceObjects[surface.id].circuits[module.circuitNumber] = { - circuit: module.circuitNumber, - wpOut: 0, - circuits: { wpOut: 0 }, - } - - if (!surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]) { - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId] = 0 - } - } - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]++ - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut += +module.moduleInfo.wpOut - surfaceObjects[surface.id].wpOut -= +module.moduleInfo.wpOut - surfaceObjects[surface.id][module.moduleInfo.itemId]-- - } - }) - }) - console.log('rows', rows) - console.log('surfaceObjects', surfaceObjects) - let tempRows = [] - Object.keys(surfaceObjects).forEach((key) => { - let tempRow = { - name: surfaceObjects[key].roofSurface, - circuit: surfaceObjects[key].circuit, - wpOut: surfaceObjects[key].wpOut, - } - selectedModules.itemList.forEach((module) => { - tempRow[module.itemId] = surfaceObjects[key][module.itemId] - }) - tempRows.push(tempRow) - - Object.keys(surfaceObjects[key].circuits).forEach((circuit) => { - let row = { - name: surfaceObjects[key].roofSurface, - circuit: surfaceObjects[key].circuits[circuit].circuit, - wpOut: surfaceObjects[key].circuits[circuit].circuits.wpOut, - } - selectedModules.itemList.forEach((module) => { - row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId] - }) - tempRows.push(row) - }) - }) - const tempFooter = { - name: '총합', - circuit: '-', - wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0), - } - selectedModules.itemList.forEach((module) => { - tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0) - }) - - setHeader(tempHeader) - setRows(tempRows.filter((row) => row.wpOut !== 0)) - setFooter(tempFooter) - setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter }) - } - const initSelectedPcsCircuitNumber = () => { swalFire({ title: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.init.info'), @@ -516,9 +413,7 @@ export default function PassivityCircuitAllocation(props) { {header.map((header, i) => ( - {typeof footer[header.prop] === 'number' - ? footer[header.prop].toLocaleString('ko-KR', { maximumFractionDigits: 4 }) - : footer[header.prop]} + {footer[header.prop]} ))} diff --git a/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx b/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx index 5bfad3e4..88188887 100644 --- a/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx +++ b/src/components/floor-plan/modal/roofAllocation/ContextRoofAllocationSetting.jsx @@ -45,175 +45,188 @@ export default function ContextRoofAllocationSetting(props) { return (
-
-

{getMessage('plan.menu.estimate.roof.alloc')}

- -
-
-
{getMessage('modal.roof.alloc.info')}
-
- {getMessage('modal.roof.alloc.select.roof.material')} -
- { - // const selected = roofMaterials.find((roofMaterial) => roofMaterial.roofMatlCd === e.id) - setCurrentRoofMaterial(e) - }} - showKey={'roofMatlNm'} - sourceKey={'roofMatlCd'} - targetKey={'roofMatlCd'} - /> + {currentRoofList && ( + <> +
+

{getMessage('plan.menu.estimate.roof.alloc')}

+
- -
-
- {currentRoofList.length > 0 && - currentRoofList.map((roof, index) => { - return ( -
-
- - -
-
-
-
-
- handleChangeRoofMaterial(e, index)} - /> -
- {index === 0 && {getMessage('modal.roof.alloc.default.roof.material')}} - {index !== 0 && } +
+
{getMessage('modal.roof.alloc.info')}
+
+ {getMessage('modal.roof.alloc.select.roof.material')} +
+ { + // const selected = roofMaterials.find((roofMaterial) => roofMaterial.roofMatlCd === e.id) + setCurrentRoofMaterial(e) + }} + showKey={'roofMatlNm'} + sourceKey={'roofMatlCd'} + targetKey={'roofMatlCd'} + /> +
+ +
+
+
+ {currentRoofList.map((roof, index) => { + return ( +
+
+ +
-
-
-
- {getMessage('slope')} -
- { - handleChangeInput(e, currentAngleType === 'slope' ? 'pitch' : 'angle', index) - }} - defaultValue={currentAngleType === 'slope' ? roof.pitch : roof.angle} - /> -
- {pitchText} -
-
- {(roof.widAuth || roof.lenAuth) && ( -
- {roof.widAuth && ( +
+
- W -
- +
+ handleChangeRoofMaterial(e, index)} + />
+ {index === 0 && {getMessage('modal.roof.alloc.default.roof.material')}} + {index !== 0 && ( + + + + )}
- )} - {roof.lenAuth && ( +
+
- L -
- + {getMessage('slope')} +
+ { + handleChangeInput(e, currentAngleType === 'slope' ? 'pitch' : 'angle', index) + }} + defaultValue={currentAngleType === 'slope' ? roof.pitch : roof.angle} + />
+ {pitchText}
- )} -
- )} - {(roof.raftAuth || roof.roofPchAuth) && ( -
- {roof.raftAuth && ( -
-
- {getMessage('modal.placement.initial.setting.rafter')} - {raftCodes.length > 0 && ( -
- +
+ {(roof.widAuth || roof.lenAuth) && ( + <> + {roof.widAuth && ( +
+
+ W +
+ +
- )} -
-
- )} - {roof.roofPchAuth && ( -
-
- {getMessage('hajebichi')} -
-
-
-
+ )} + {roof.lenAuth && ( +
+
+ L +
+ +
+
+
+ )} + )} -
- )} -
-
- - + {(roof.raftAuth || roof.roofPchAuth) && ( + <> + {roof.raftAuth && ( +
+
+ {getMessage('modal.placement.initial.setting.rafter')} + {raftCodes.length > 0 && ( +
+ +
+ )} +
+
+ )} + {roof.roofPchAuth && ( +
+
+ {getMessage('hajebichi')} +
+ +
+
+
+ )} + + )} +
+
+ + +
+
-
-
- ) - })} -
-
- -
-
+ ) + })} +
+
+
+ +
+
+ + )}
diff --git a/src/hooks/module/useModule.js b/src/hooks/module/useModule.js index de64c404..80aa17d7 100644 --- a/src/hooks/module/useModule.js +++ b/src/hooks/module/useModule.js @@ -1,12 +1,14 @@ import { BATCH_TYPE, POLYGON_TYPE } from '@/common/common' import { canvasState } from '@/store/canvasAtom' import { isOverlap, polygonToTurfPolygon, rectToPolygon } from '@/util/canvas-util' -import { useRecoilValue } from 'recoil' +import { useRecoilValue, useSetRecoilState } from 'recoil' import { v4 as uuidv4 } from 'uuid' import * as turf from '@turf/turf' import { useSwal } from '../useSwal' import { useModuleBasicSetting } from './useModuleBasicSetting' import { useMessage } from '../useMessage' +import { selectedModuleState } from '@/store/selectedModuleOptions' +import { moduleStatisticsState } from '@/store/circuitTrestleAtom' export const MODULE_REMOVE_TYPE = { LEFT: 'left', @@ -35,6 +37,8 @@ export function useModule() { const { swalFire } = useSwal() const { getMessage } = useMessage() const { checkModuleDisjointObjects } = useModuleBasicSetting() + const selectedModules = useRecoilValue(selectedModuleState) + const setModuleStatistics = useSetRecoilState(moduleStatisticsState) const moduleMove = (length, direction) => { const selectedObj = canvas.getActiveObjects() //선택된 객체들을 가져옴 @@ -929,6 +933,92 @@ export function useModule() { .filter((obj) => [BATCH_TYPE.OPENING, BATCH_TYPE.TRIANGLE_DORMER, BATCH_TYPE.PENTAGON_DORMER, BATCH_TYPE.SHADOW].includes(obj.name)) } + const setModuleStatisticsData = () => { + const tempHeader = [ + { name: getMessage('simulator.table.sub1'), prop: 'name' }, + { name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' }, + ...selectedModules.itemList.map((module) => { + return { + name: module.itemNm, + prop: module.itemId, + } + }), + { name: `${getMessage('modal.panel.batch.statistic.power.generation.amount')}(kW)`, prop: 'wpOut' }, + ] + const surfaceObjects = {} + const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) + const rows = surfaces.map((surface) => { + surfaceObjects[surface.id] = { + roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText, + circuit: '-', + amount: 0, + wpOut: 0, + circuits: {}, + } + + surface.modules.forEach((module) => { + if (!surfaceObjects[surface.id][module.moduleInfo.itemId]) { + // 지붕면에 모듈 존재 여부 + surfaceObjects[surface.id][module.moduleInfo.itemId] = 0 // 모듈 초기화 + } + + surfaceObjects[surface.id][module.moduleInfo.itemId]++ + surfaceObjects[surface.id].wpOut += +module.moduleInfo.wpOut + if (module.circuit) { + if (!surfaceObjects[surface.id].circuits[module.circuitNumber]) { + surfaceObjects[surface.id].circuits[module.circuitNumber] = { + circuit: module.circuitNumber, + wpOut: 0, + circuits: { wpOut: 0 }, + } + + if (!surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]) { + surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId] = 0 + } + } + surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]++ + surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut += +module.moduleInfo.wpOut + surfaceObjects[surface.id].wpOut -= +module.moduleInfo.wpOut + surfaceObjects[surface.id][module.moduleInfo.itemId]-- + } + }) + }) + let tempRows = [] + Object.keys(surfaceObjects).forEach((key) => { + let tempRow = { + name: surfaceObjects[key].roofSurface, + circuit: surfaceObjects[key].circuit, + wpOut: parseInt((surfaceObjects[key].wpOut / 1000).toFixed(3)), + } + selectedModules.itemList.forEach((module) => { + tempRow[module.itemId] = surfaceObjects[key][module.itemId] + }) + tempRows.push(tempRow) + + Object.keys(surfaceObjects[key].circuits).forEach((circuit) => { + let row = { + name: surfaceObjects[key].roofSurface, + circuit: surfaceObjects[key].circuits[circuit].circuit, + wpOut: parseInt((surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000).toFixed(3)), + } + selectedModules.itemList.forEach((module) => { + row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId] + }) + tempRows.push(row) + }) + }) + + const tempFooter = { + name: getMessage('modal.panel.batch.statistic.total'), + circuit: '-', + wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0), + } + selectedModules.itemList.forEach((module) => { + tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0) + }) + setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter }) + } + return { moduleMove, moduleMultiMove, @@ -942,5 +1032,6 @@ export function useModule() { muduleRowInsert, modulesRemove, alignModule, + setModuleStatisticsData, } } diff --git a/src/hooks/module/useModuleBasicSetting.js b/src/hooks/module/useModuleBasicSetting.js index bf4d4a86..1462fef5 100644 --- a/src/hooks/module/useModuleBasicSetting.js +++ b/src/hooks/module/useModuleBasicSetting.js @@ -2468,7 +2468,7 @@ export function useModuleBasicSetting(tabNum) { ...surface, name: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText, // 지붕면 // powerGeneration: wpOut.toLocaleString('ko-KR', { maximumFractionDigits: 4 }), - wpOut: wpOut, + wpOut: (wpOut / 1000).toFixed(3), } }) @@ -2481,7 +2481,7 @@ export function useModuleBasicSetting(tabNum) { }), { name: `${getMessage('modal.panel.batch.statistic.power.generation.amount')}(kW)`, prop: 'wpOut' }, ] - let footer = ['합계'] + let footer = [getMessage('modal.panel.batch.statistic.total')] let footerData = {} rows.forEach((row) => { Object.keys(moduleInfo).map((key) => { @@ -2492,7 +2492,7 @@ export function useModuleBasicSetting(tabNum) { Object.keys(footerData).forEach((key) => { footer.push(footerData[key]) }) - footer.push(totalWpout) + footer.push((totalWpout / 1000).toFixed(3)) console.log({ header: header, rows, footer: footer }) setModuleStatistics({ header: header, rows, footer: footer }) } diff --git a/src/hooks/module/useTrestle.js b/src/hooks/module/useTrestle.js index 9c580971..fffe27c9 100644 --- a/src/hooks/module/useTrestle.js +++ b/src/hooks/module/useTrestle.js @@ -2,9 +2,10 @@ import { useRecoilValue } from 'recoil' import { canvasState, currentAngleTypeSelector } from '@/store/canvasAtom' import { POLYGON_TYPE } from '@/common/common' import { moduleSelectionDataState } from '@/store/selectedModuleOptions' -import { getDegreeByChon, getTrestleLength } from '@/util/canvas-util' +import { getDegreeByChon } from '@/util/canvas-util' import { v4 as uuidv4 } from 'uuid' import { useMasterController } from '@/hooks/common/useMasterController' +import { basicSettingState } from '@/store/settingAtom' // 회로 및 가대설정 export const useTrestle = () => { @@ -12,6 +13,7 @@ export const useTrestle = () => { const moduleSelectionData = useRecoilValue(moduleSelectionDataState) //다음으로 넘어가는 최종 데이터 const { getQuotationItem } = useMasterController() const currentAngleType = useRecoilValue(currentAngleTypeSelector) + const roofSizeSet = useRecoilValue(basicSettingState).roofSizeSet const apply = () => { try { @@ -1787,6 +1789,16 @@ export const useTrestle = () => { return groups } + // 각도에 따른 길이 반환 + function getTrestleLength(length, degree) { + if (roofSizeSet !== 1) { + // 복시도 입력이 아닌경우 그냥 길이 return + return length + } + const radians = (degree * Math.PI) / 180 + return length * Math.cos(radians) + } + // 견적서 아이템 조회 api parameter 생성 const getTrestleParams = (surface) => { const result = calculateForApi(surface) diff --git a/src/locales/ja.json b/src/locales/ja.json index 47257675..0514e960 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -5,11 +5,11 @@ "header.menus.management": "オブジェクトと図面の管理", "header.menus.management.newStuff": "新規物件登録", "header.menus.management.detail": "物件詳細", - "header.menus.management.stuffList": "物件の現状", + "header.menus.management.stuffList": "見積状況", "header.menus.community": "コミュニティ", "header.menus.community.notice": "お知らせ", "header.menus.community.faq": "FAQ", - "header.menus.community.archive": "ドキュメントダウンロード", + "header.menus.community.archive": "文書ダウンロード", "header.logout": "ログアウト", "header.go": "移動", "header.online.warranty.system": "オンライン保証システム", @@ -17,23 +17,23 @@ "plan.menu.plan.drawing": "物件情報", "plan.menu.placement.surface.initial.setting": "配置面初期設定", "modal.placement.initial.setting.plan.drawing": "図面の作成方法", - "modal.placement.initial.setting.plan.drawing.size.stuff": "寸法入力による品目作成", + "modal.placement.initial.setting.plan.drawing.size.stuff": "寸法入力による物件作成", "modal.placement.initial.setting.size": "寸法入力方法", "modal.placement.initial.setting.size.info": "寸法入力方法案内", - "modal.placement.initial.setting.size.roof": "複視図入力", + "modal.placement.initial.setting.size.roof": "伏図入力", "modal.placement.initial.setting.size.roof.info": "平面の外壁線と立面の屋根勾配に基づいて作画する場合選択", "modal.placement.initial.setting.size.actual": "実測値入力", - "modal.placement.initial.setting.size.actual.info": "現地屋根の外周寸法を入力して作画する場合選択", - "modal.placement.initial.setting.size.none.pitch": "陸上屋根", + "modal.placement.initial.setting.size.actual.info": "屋根の外周寸法を入力して作画する場合選択", + "modal.placement.initial.setting.size.none.pitch": "陸屋根", "modal.placement.initial.setting.size.none.pitch.info": "傾斜のない平面形状の屋根にパネルを配置する場合に選択", - "modal.placement.initial.setting.roof.angle.setting": "屋根角度設定", + "modal.placement.initial.setting.roof.angle.setting": "角度設定", "modal.placement.initial.setting.roof.pitch": "傾斜", "modal.placement.initial.setting.roof.angle": "角度", "modal.placement.initial.setting.roof.material": "屋根材選択(単位mm)", "modal.placement.initial.setting.roof.material.info": "対応可能な屋根材や足場は限定されますので、必ず事前マニュアルをご確認ください。", "modal.placement.initial.setting.rafter": "垂木", "modal.roof.shape.setting": "屋根形状の設定", - "modal.roof.shape.setting.ridge": "龍丸", + "modal.roof.shape.setting.ridge": "棟", "modal.roof.shape.setting.patten.a": "Aパターン", "modal.roof.shape.setting.patten.b": "Bパターン", "modal.roof.shape.setting.side": "別に設定", @@ -42,14 +42,14 @@ "plan.menu.roof.cover.roof.shape.setting": "屋根形状の設定", "plan.menu.roof.cover.roof.shape.passivity.setting": "屋根形状の手動設定", "plan.menu.roof.cover.eaves.kerava.edit": "軒・ケラバ変更", - "plan.menu.roof.cover.movement.shape.updown": "銅線移動・型上げ下り", - "modal.movement.flow.line.move": "銅線の移動", + "plan.menu.roof.cover.movement.shape.updown": "軒線移動・桁上げ下り", + "modal.movement.flow.line.move": "軒線の移動", "modal.movement.flow.line.move.alert": "移動する数ない。", - "modal.movement.flow.line.updown": "型上げ・下り", + "modal.movement.flow.line.updown": "桁上げ・下り", "modal.movement.flow.line.updown.info": "桁の異なる辺を選択し、幅を指定します。", "modal.movement.flow.line.updown.up": "桁を上げる", "modal.movement.flow.line.updown.down": "桁数を下げる", - "modal.movement.flow.line.info": "銅線を選択して移動幅を指定します", + "modal.movement.flow.line.info": "軒線を選択して移動幅を指定します", "modal.movement.flow.line.bottom.left": "高さ変更:下、左", "modal.movement.flow.line.top.right": "高さ変更:上、右", "plan.menu.roof.cover.outline.edit.offset": "外壁の編集とオフセット", @@ -59,17 +59,17 @@ "modal.cover.outline.drawing": "外壁線の作成", "modal.cover.outline": "外壁線", "modal.cover.outline.right.angle": "直角", - "modal.cover.outline2": "イ・グベ", + "modal.cover.outline2": "異勾配", "modal.cover.outline.angle": "角度", "modal.cover.outline.diagonal": "対角線", "modal.cover.outline.setting": "設定", "modal.cover.outline.length": "長さ(mm)", "modal.cover.outline.arrow": "方向(矢印)", "modal.cover.outline.fix": "外壁線確定", - "modal.cover.outline.rollback": "一変戦に戻る", + "modal.cover.outline.rollback": "前に戻る", "modal.cover.outline.finish": "設定完了", "common.setting.finish": "設定完了", - "common.setting.rollback": "一変戦に戻る", + "common.setting.rollback": "前に戻る", "modal.cover.outline.remove": "外壁の取り外し", "modal.cover.outline.select.move": "外壁選択の移動", "plan.menu.placement.surface": "配置面", @@ -77,29 +77,29 @@ "plan.menu.placement.surface.drawing": "配置面の描画", "modal.placement.surface.drawing.straight.line": "直線", "modal.placement.surface.drawing.right.angle": "直角", - "modal.placement.surface.drawing.double.pitch": "イ・グベ", + "modal.placement.surface.drawing.double.pitch": "異勾配", "modal.placement.surface.drawing.angle": "角度", "modal.placement.surface.drawing.diagonal": "対角線", "modal.placement.surface.drawing.fix": "配置面確定", "plan.menu.placement.surface.arrangement": "面形状の配置", - "plan.menu.placement.surface.object": "オブジェクトの配置", + "plan.menu.placement.surface.object": "モジュール配置", "plan.menu.placement.surface.all.remove": "配置面全体を削除", "plan.menu.module.circuit.setting": "モジュール、回路構成", "plan.menu.module.circuit.setting.default": "モジュール/架台設定", "modal.module.basic.setting.orientation.setting": "方位設定", "modal.module.basic.setting.orientation.setting.info": "※シミュレーション計算用方位を指定します。南の方位を設定してください。", - "modal.module.basic.setting.orientation.setting.angle.passivity": "角度を直接入力", + "modal.module.basic.setting.orientation.setting.angle.passivity": "勾配を直接入力", "modal.module.basic.setting.module.roof.material": "屋根材", - "modal.module.basic.setting.module.trestle.maker": "カデメーガー", + "modal.module.basic.setting.module.trestle.maker": "架台メーカー", "modal.module.basic.setting.module.rafter.margin": "垂木の間隔", "modal.module.basic.setting.module.construction.method": "工法", "modal.module.basic.setting.module.under.roof": "屋根の下", "modal.module.basic.setting.module.setting": "モジュールの選択", - "modal.module.basic.setting.module.hajebichi": "マンドンピッチ", + "modal.module.basic.setting.module.hajebichi": "ハゼピッチ", "modal.module.basic.setting.module.setting.info1": "※勾配の範囲には制限があります。屋根傾斜が2.5値未満10値を超える場合は、施工が可能かどうか施工マニュアルを確認してください。", "modal.module.basic.setting.module.setting.info2": "※モジュール配置時は、施工マニュアルに記載されている<モジュール配置条件>を必ずご確認ください。", "modal.module.basic.setting.module.stuff.info": "物件情報", - "modal.module.basic.setting.module.surface.type": "面照度", + "modal.module.basic.setting.module.surface.type": "面粗度区分", "modal.module.basic.setting.module.fitting.height": "設置高さ", "modal.module.basic.setting.module.standard.wind.speed": "基準風速", "modal.module.basic.setting.module.standard.snowfall.amount": "積雪量", @@ -107,33 +107,33 @@ "modal.module.basic.setting.module.enforce.construction": "強化施工", "modal.module.basic.setting.module.multiple.construction": "多設施工", "modal.module.basic.setting.module.eaves.bar.fitting": "軒カバーの設置", - "modal.module.basic.setting.module.blind.metal.fitting": "積雪防止今すぐインストール", + "modal.module.basic.setting.module.blind.metal.fitting": "積雪防止金具設置", "modal.module.basic.setting.module.select": "モジュール/架台選択", "modal.module.basic.setting.module.placement": "モジュールの配置", "modal.module.basic.setting.module.placement.select.fitting.type": "設置形態を選択してください。", - "modal.module.basic.setting.module.placement.waterfowl.arrangement": "水鳥の配置", + "modal.module.basic.setting.module.placement.waterfowl.arrangement": "千鳥配置", "modal.module.basic.setting.module.placement.do": "する", "modal.module.basic.setting.module.placement.do.not": "しない", "modal.module.basic.setting.module.placement.arrangement.standard": "配置基準", "modal.module.basic.setting.module.placement.arrangement.standard.center": "中央", "modal.module.basic.setting.module.placement.arrangement.standard.eaves": "軒", - "modal.module.basic.setting.module.placement.arrangement.standard.ridge": "龍丸", + "modal.module.basic.setting.module.placement.arrangement.standard.ridge": "棟", "modal.module.basic.setting.module.placement.maximum": "最大配置", "modal.module.basic.setting.pitch.module.placement.standard.setting": "配置基準設定", "modal.module.basic.setting.pitch.module.placement.standard.setting.south": "南向き設置", - "modal.module.basic.setting.pitch.module.placement.standard.setting.select": "指定した辺りベースでインストール", + "modal.module.basic.setting.pitch.module.placement.standard.setting.select": "指定した辺を基準に設置", "modal.module.basic.setting.pitch.module.allocation.setting": "割り当て設定", - "modal.module.basic.setting.pitch.module.allocation.setting.info": "※配置パネル種類1種類場合のみ使用する数あります。", + "modal.module.basic.setting.pitch.module.allocation.setting.info": "※配置パネルの種類が1種類の場合のみ使用できます。", "modal.module.basic.setting.pitch.module.row.amount": "単数", "modal.module.basic.setting.pitch.module.row.margin": "上下間隔", - "modal.module.basic.setting.pitch.module.column.amount": "熱水", + "modal.module.basic.setting.pitch.module.column.amount": "列数", "modal.module.basic.setting.pitch.module.column.margin": "左右間隔", - "modal.module.basic.setting.prev": "以前", + "modal.module.basic.setting.prev": "移転", "modal.module.basic.setting.passivity.placement": "手動配置", "modal.module.basic.setting.auto.placement": "設定値に自動配置", "plan.menu.module.circuit.setting.circuit.trestle.setting": "回路設定", "modal.circuit.trestle.setting": "回路設定", - "modal.circuit.trestle.setting.alloc.trestle": "仮代割当", + "modal.circuit.trestle.setting.alloc.trestle": "架台配置", "modal.circuit.trestle.setting.power.conditional.select": "パワーコンディショナーの選択", "modal.circuit.trestle.setting.power.conditional.select.cold.region": "寒冷地仕様", "modal.circuit.trestle.setting.power.conditional.select.name": "名称", @@ -169,7 +169,7 @@ "modal.roof.alloc.default.roof.material": "基本屋根材", "modal.roof.alloc.select.roof.material": "屋根材の選択", "modal.roof.alloc.select.parallel": "並列式", - "modal.roof.alloc.select.stairs": "カスケード", + "modal.roof.alloc.select.stairs": "階段式", "modal.roof.alloc.apply": "選択した屋根材として割り当て", "plan.menu.estimate.docDown": "文書のダウンロード", "plan.menu.estimate.save": "保存", @@ -191,7 +191,7 @@ "common.vertical": "縦", "modal.font.setting.display": "見る", "modal.font.setting.info": "これはOpen Typeフォントです。プリンタや画面でも同じフォントを使用してください。", - "modal.canvas.setting": "Canvasの設定", + "modal.canvas.setting": "作図の設定", "modal.canvas.setting.display": "ディスプレイ設定", "modal.canvas.setting.font.plan": "フォントと図面サイズの設定", "modal.canvas.setting.grid": "グリッド", @@ -252,7 +252,7 @@ "modal.canvas.setting.first.option.image": "画像表示", "modal.canvas.setting.first.option.total": "集計表を表示", "modal.canvas.setting.first.option.dimension": "寸法表示", - "modal.canvas.setting.first.option.corridor.dimension": "廊下寸法表示", + "modal.canvas.setting.first.option.corridor.dimension": "伏せ図寸法表示", "modal.canvas.setting.first.option.real.dimension": "実寸表示", "modal.canvas.setting.first.option.none.dimension": "寸法表示なし", "modal.canvas.setting.first.option.display": "画面表示", @@ -269,7 +269,7 @@ "modal.wallline.offset.setting": "外壁の編集とオフセット", "modal.wallline.offset.setting.wallline.edit": "外壁の編集", "modal.wallline.offset.setting.wallline.edit.info": "辺と始点を選択して長さと方向を指定してください。", - "modal.wallline.offset.setting.wallline.edit.position": "支店", + "modal.wallline.offset.setting.wallline.edit.position": "始点", "modal.wallline.offset.setting.offset": "オフセット", "modal.wallline.offset.setting.offset.info": "オフセットしたい外壁線を選択してください。", "modal.object.setting.type.open.space.placement": "開口部の配置", @@ -282,7 +282,7 @@ "modal.object.setting.height": "縦長", "modal.object.setting.area.cross": "エリア交差", "modal.object.setting.size.setting": "サイズ設定", - "modal.object.setting.agreement.depth": "同意の深さ", + "modal.object.setting.agreement.depth": "棟の長さ・深さ", "modal.object.setting.offset.depth": "出幅(深さ)", "modal.object.setting.offset.width": "出幅(幅)", "modal.object.setting.direction.select": "方向の選択", @@ -330,7 +330,7 @@ "contextmenu.wallline.remove": "外壁の削除", "contextmenu.size.edit": "サイズ変更", "modal.auxiliary.size.edit": "補助線サイズ変更", - "modal.auxiliary.size.edit.point": "支店", + "modal.auxiliary.size.edit.point": "始点", "contextmenu.auxiliary.move": "補助線の移動", "modal.auxiliary.move": "補助線の移動", "modal.auxiliary.move.info": "移動する方向を入力してください。", @@ -361,12 +361,12 @@ "modal.panel.column.insert.type.left": "左挿入", "modal.panel.column.insert.type.right": "右挿入", "modal.image.load.size.rotate": "サイズ変更と回転", - "contextmenu.row.move": "ただし移動", - "contextmenu.row.copy": "単コピー", - "contextmenu.row.remove": "ただし削除", - "modal.row.remove": "ただし削除", + "contextmenu.row.move": "段移動", + "contextmenu.row.copy": "段コピー", + "contextmenu.row.remove": "段削除", + "modal.row.remove": "段削除", "modal.row.remove.info": "削除ステージをどのようにしますか?", - "modal.row.remove.type.up": "違足に減る", + "modal.row.remove.type.up": "上に減らす", "modal.row.remove.type.down": "下向きに減らす", "modal.row.remove.type.side": "両側に減る", "modal.row.remove.type.none": "減らさない", @@ -374,7 +374,7 @@ "modal.row.insert": "段挿入", "modal.row.insert.info": "挿入する方向を選択してください。", "modal.row.insert.type.up": "上部挿入", - "modal.row.insert.type.down": "下の挿入", + "modal.row.insert.type.down": "下部挿入", "modal.move.setting": "移動設定", "modal.move.setting.info": "間隔を設定し、移動方向を選択します。", "modal.copy.setting": "コピー設定", @@ -389,7 +389,7 @@ "modal.display.edit.info": "寸法線に表示する数値を入力してください。", "modal.display.edit.before.length": "既存の長さ", "modal.display.edit.after.length": "変更の長さ", - "modal.display.edit.corner.valley": "コーナー・ゴールケース", + "modal.display.edit.corner.valley": "隅·谷の場合", "modal.display.edit.input.slope": "傾きを入力してください。", "modal.display.edit.input.slope.info": "傾き設定されている場合、入力した数値に傾き計算をした数値が表示されます。", "modal.distance": "距離測定", @@ -466,7 +466,7 @@ "common.message.confirm.confirm": "承認しますか?", "common.message.confirm.request": "承認をリクエストしますか?", "common.message.confirm.delete": "削除しますか?", - "common.message.confirm.close": "閉じるか?", + "common.message.confirm.close": "閉じますか?", "common.message.confirm.unclose": "クローズをキャンセルしますか?", "common.message.confirm.cancel": "キャンセルしますか?", "common.message.confirm.uncancel": "キャンセルをキャンセルしますか?", @@ -497,7 +497,7 @@ "common.message.approved ": "承認されました。", "common.message.errorFieldExist": "エラーフィールドが存在します", "common.message.storeIdExist ": "すでに使用している販売店IDです。", - "common.message.userIdExist ": "すでに使用しているユーザーID。", + "common.message.userIdExist ": "すでに使用しているユーザーIDです。", "common.message.noExists ": "削除された投稿です。", "common.message.emailReqTo": "Email To is required", "common.message.downloadPeriod": "Please select the download search period within {0} days.", @@ -506,9 +506,9 @@ "common.message.writeToConfirm": "作成解除を実行しますか?", "common.message.password.init.success": "パスワード[{0}]に初期化されました。", "common.message.no.edit.save": "このドキュメントは変更できません。", - "common.load": "読み込む", + "common.load": "読込", "common.input.file": "ファイルを読み込む", - "common.input.file.load": "読み込む", + "common.input.file.load": "読込", "common.input.image.load": "画像を読み込む", "common.input.address.load": "アドレスを読み込む", "common.require": "必須", @@ -534,7 +534,7 @@ "color.pink": "ピンク", "color.gold": "黄金色", "color.darkblue": "藍色", - "site.name": "Q.CAST III", + "site.name": "HANASYS設計", "site.sub_name": "太陽光発電システム図面管理サイト", "site.header.link1": "選択してください。", "site.header.link2": "オンライン保証システム", @@ -542,7 +542,7 @@ "board.notice.sub.title": "お知らせ一覧", "board.faq.title": "FAQ", "board.faq.sub.title": "FAQリスト", - "board.archive.title": "素材のダウンロード", + "board.archive.title": "資料のダウンロード", "board.archive.sub.title": "文書一覧", "board.list.header.rownum": "番号", "board.list.header.title": "タイトル", @@ -554,7 +554,7 @@ "board.sub.fileList": "添付ファイル一覧", "board.sub.updDt": "更新", "board.sub.btn.close": "閉じる", - "myinfo.title": "私の情報", + "myinfo.title": "社員情報", "myinfo.info.userId": "ユーザーID", "myinfo.info.nameKana": "担当者名日本語", "myinfo.info.name": "担当者名", @@ -578,7 +578,7 @@ "myinfo.message.password.error": "パスワードが間違っています。", "login": "ログイン", "login.auto.page.text": "自動ログイン中です。", - "login.id.save": "IDセーブ", + "login.id.save": "ID保存", "login.id.placeholder": "IDを入力してください。", "login.password.placeholder": "パスワードを入力してください。", "login.guide.text": "当サイトをご利用の際は事前申請が必要です。", @@ -592,11 +592,11 @@ "login.init_password.complete_message": "パスワードが初期化されました。初期化されたパスワードはIDと同じです。", "login.init_password.id.placeholder": "IDを入力してください。", "login.init_password.email.placeholder": "メールを入力してください。", - "join.title": "Q.CAST3 ログインID発行申請", + "join.title": "HANASYS設計ログインID発行申請", "join.sub1.title": "販売代理店情報", - "join.sub1.comment": "※登録されるリセラーの会社名を入力してください。 (2次店は「○○販売株式会社(2次店:××設備株式会社)」でご記入ください。)", + "join.sub1.comment": "※登録される販売店の会社名を入力してください。 (2次店は「○○販売株式会社(2次店:××設備株式会社)」でご記入ください。)", "join.sub1.storeQcastNm": "販売代理店名", - "join.sub1.storeQcastNm_placeholder": "株式会社エネルギーギアソリューションアンサービス(2次点:山口周期販売有限公司)", + "join.sub1.storeQcastNm_placeholder": "株式会社エネルギーギアソリューションアンサービス(2次点:山口周期販売有限会社)", "join.sub1.storeQcastNmKana": "販売代理店名フリガナ", "join.sub1.storeQcastNmKana_placeholder": "株式会社エネルギーギアソリューション", "join.sub1.postCd": "郵便番号", @@ -611,7 +611,7 @@ "join.sub2.title": "担当者情報", "join.sub2.userNm": "担当者名", "join.sub2.userNmKana": "担当者名ふりがな", - "join.sub2.userId": "アプリケーションID", + "join.sub2.userId": "申請ID", "join.sub2.email": "メールアドレス", "join.sub2.telNo": "電話番号", "join.sub2.telNo_placeholder": "00-0000-0000", @@ -620,18 +620,18 @@ "join.sub2.category": "部署名", "join.btn.login_page": "ログイン画面に移動", "join.btn.approval_request": "ID承認要求", - "join.complete.title": "Q.CAST3ログインID発行申請完了", + "join.complete.title": "HANASYS設計ログインID発行申請完了", "join.complete.contents": "※申請したIDが承認されると、担当者情報に入力したEメールアドレスにログイン関連案内メールが送信されます。", "join.complete.email_comment": "担当者のメールアドレス", "join.validation.check1": "{0}形式を確認してください。", - "join.complete.save.confirm": "Hanwha Japanの担当者にID承認が要求された場合、これ以上情報を修正することはできません。本当にお願いしますか?", + "join.complete.save.confirm": "ハンファジャパンの担当者にID承認が要求された場合、これ以上情報を修正することはできません。申請しますか?", "stuff.gridHeader.lastEditDatetime": "更新日時", - "stuff.gridHeader.objectNo": "品番", + "stuff.gridHeader.objectNo": "物件番号", "stuff.gridHeader.planTotCnt": "プラン数", "stuff.gridHeader.objectName": "商品名", "stuff.gridHeader.saleStoreId": "代理店ID", "stuff.gridHeader.saleStoreName": "代理店名", - "stuff.gridHeader.address": "商品アドレス", + "stuff.gridHeader.address": "物件住所", "stuff.gridHeader.dispCompanyName": "見積もり", "stuff.gridHeader.receiveUser": "担当者", "stuff.gridHeader.specificationConfirmDate": "仕様確認日", @@ -651,9 +651,9 @@ "stuff.temp.subTitle": "商品情報", "stuff.temp.subTitle2": "作図", "stuff.detail.header.notExistObjectNo": "存在しないものです。", - "stuff.detail.header.successCopy": "商品番号がコピーされました。", - "stuff.detail.header.failCopy": "商品番号のコピーに失敗しました。", - "stuff.detail.header.objectNo": "品番", + "stuff.detail.header.successCopy": "物件番号がコピーされました。", + "stuff.detail.header.failCopy": "物件番号のコピーに失敗しました。", + "stuff.detail.header.objectNo": "物件番号", "stuff.detail.header.specificationConfirmDate": "仕様確認日", "stuff.detail.header.lastEditDatetime": "更新日時", "stuff.detail.header.createDatetime": "登録日", @@ -662,9 +662,9 @@ "stuff.detail.receiveUser": "担当者", "stuff.detail.objectStatusId": "物品区分/物件名", "stuff.detail.objectStatus0": "新築", - "stuff.detail.objectStatus1": "基軸", + "stuff.detail.objectStatus1": "既築", "stuff.detail.objectNameOmit": "敬称", - "stuff.detail.objectNameKana": "物名フリガナ", + "stuff.detail.objectNameKana": "フリガナ", "stuff.detail.saleStoreId": "一次販売店名/ID", "stuff.detail.otherSaleStoreId": "二次販売店名/ID", "stuff.detail.zipNo": "郵便番号", @@ -676,9 +676,9 @@ "stuff.detail.standardWindSpeedId": "基準風速", "stuff.detail.standardWindSpeedIdSpan": "m/s以下", "stuff.detail.btn.windSpeedPop": "風速選択", - "stuff.detail.verticalSnowCover": "垂直説説", + "stuff.detail.verticalSnowCover": "垂直積雪量", "stuff.detail.coldRegionFlg": "寒冷地対策施行", - "stuff.detail.surfaceType": "綿調道", + "stuff.detail.surfaceType": "面粗度", "stuff.detail.saltAreaFlg": "塩害地域用アイテムの使用", "stuff.detail.installHeight": "設置高さ", "stuff.detail.conType": "契約条件", @@ -687,7 +687,7 @@ "stuff.detail.remarks": "メモ", "stuff.detail.tooltip.saleStoreId": "販売代理店または販売代理店IDを1文字以上入力してください", "stuff.detail.tooltip.surfaceType": "塩害地域の定義は各メーカーの設置マニュアルをご確認ください", - "stuff.detail.tempSave.message1": "一時保存されました。商品番号を取得するには、必須項目をすべて入力してください。", + "stuff.detail.tempSave.message1": "一時保存されました。物件番号を取得するには、必須項目をすべて入力してください。", "stuff.detail.tempSave.message2": "担当者名は10桁以下で入力してください。", "stuff.detail.tempSave.message3": "二次販売店を選択してください。", "stuff.detail.confirm.message1": "販売店情報を変更すると、設計依頼文書番号が削除されます。変更しますか?", @@ -695,7 +695,7 @@ "stuff.detail.planList.title": "プランリスト", "stuff.detail.planList.cnt": "全体", "stuff.detail.planList.help": "ヘルプ", - "stuff.detail.planList.guide1": "1.発注は同一品番基準1件のみ可能です。", + "stuff.detail.planList.guide1": "1.発注は同一物件番号基準1件のみ可能です。", "stuff.detail.planList.guide2": "2. [Excelダウンロード]は見積書図面シミュレーション結果をExcelファイルとして一度にダウンロードします。", "stuff.detail.planList.guide3": "3. プラン情報をダブルクリックすると図面作成画面に移動します。", "stuff.detail.btn.delete": "物の削除", @@ -705,7 +705,7 @@ "stuff.detail.save": "保存しました", "stuff.detail.tempSave": "一時保存されました", "stuff.detail.noChgData": "変更内容はありません", - "stuff.detail.save.valierror1": "垂直説説は0より大きい値を入力してください", + "stuff.detail.save.valierror1": "垂直積雪量は0より大きい値を入力してください", "stuff.detail.save.valierror2": "設置高さ0より大きい値を入力してください", "stuff.detail.save.valierror3": "{0} 必須入力項目です。", "stuff.detail.save.valierror4": "二次販売店名は必須オプションです。", @@ -739,7 +739,7 @@ "stuff.search.btn.register": "新規物件登録", "stuff.search.btn.search": "照会", "stuff.search.btn.reset": "初期化", - "stuff.search.schObjectNo": "品番", + "stuff.search.schObjectNo": "物件番号", "stuff.search.schSaleStoreName": "販売代理店名", "stuff.search.schAddress": "商品アドレス", "stuff.search.schObjectName": "商品名", @@ -784,7 +784,7 @@ "output": "出力", "slope": "傾斜", "eaves.offset": "軒の幅", - "gable.offset": "ケラバ出爆", + "gable.offset": "ケラバ", "offset": "出幅", "width": "幅", "size": "寸法", @@ -794,9 +794,9 @@ "gable": "ケラバ", "gable.left": "ケラバ左", "gable.right": "ケラバ右", - "ridge": "龍丸", - "oneside.flow.ridge": "片側の流れ", - "yosemune": "ヨセムネ", + "ridge": "棟", + "oneside.flow.ridge": "片流れの棟側", + "yosemune": "寄棟", "valley": "谷", "l.abandon.valley": "Lの捨て渓谷", "mansard": "メンサード", @@ -807,30 +807,30 @@ "wall.merge.flow.left": "壁取り(流れ左)", "wall.merge.flow.right": "壁取り(流れ右)", "no.setting": "設定なし", - "hajebichi": "ハゼビーチ", + "hajebichi": "ハゼピッチ", "straight.line": "直線", "right.angle": "直角", - "double.pitch": "イ・グベ", + "double.pitch": "異勾配", "angle": "角度", "diagonal": "対角線", - "hipandgable": "八作屋根", - "hipandgable.width": "八作屋根の幅", - "jerkinhead": "半折", + "hipandgable": "入母屋造", + "hipandgable.width": "入母屋造の幅", + "jerkinhead": "半切妻", "shed": "片側の流れ", "apply": "適用", "module": "モジュール", "legend": "凡例", "has.sleeve": "袖あり", "has.not.sleeve": "袖なし", - "jerkinhead.width": "半折先幅", - "jerkinhead.slope": "半折先傾斜", + "jerkinhead.width": "半切妻幅", + "jerkinhead.slope": "半切妻傾斜", "shed.width": "片流幅", - "windage": "漂流", - "windage.width": "漂流の出幅", + "windage": "片流れ", + "windage.width": "片流れの出幅", "write": "作成", "main.storeId": "販売店ID", "main.storeName": "販売店名", - "main.objectNo": "品番", + "main.objectNo": "物件番号", "main.faq": "FAQ", "main.content.objectList.noData1": "登録された商品情報はありません。", "main.content.objectList.noData2": "下のボタンをクリックして商品情報を登録してください。", @@ -839,7 +839,7 @@ "main.content.download1": "操作マニュアル", "main.content.download2": "屋根の説明書", "main.content.noBusiness": "Hanwha Japanにお問い合わせください", - "main.content.alert.noFile": "資料が準備中です", + "main.content.alert.noFile": "資料準備中です", "main.popup.login.popupTitle": "パスワード変更", "main.popup.login.newPassword1": "新しいパスワードを入力", "main.popup.login.newPassword2": "新しいパスワードの再入力", @@ -860,7 +860,7 @@ "surface.shape.validate.size.3to4": "③長さは④より大きい値を入れてください。", "surface.shape.validate.size.4to5": "④長さは⑤より大きい値を入れてください。", "estimate.detail.header.title": "基本情報", - "estimate.detail.objectNo": "品番", + "estimate.detail.objectNo": "物件番号", "estimate.detail.docNo": "見積書番号", "estimate.detail.drawingEstimateCreateDate": "登録日", "estimate.detail.lastEditDatetime": "変更日時", @@ -877,7 +877,6 @@ "estimate.detail.roofCns": "屋根材・仕様施工", "estimate.detail.remarks": "備考", "estimate.detail.fileFlg": "後日資料提出", - "estimate.detail.dragFileGuide": "(※北面設置の場合、ファイル添付が必須です.)", "estimate.detail.header.fileList1": "ファイル添付", "estimate.detail.fileList.btn": "ファイル選択", "estimate.detail.fileList.extCheck": "画像ファイルのみ添付可能です。", @@ -905,17 +904,17 @@ "estimate.detail.showPrice.delItem": "製品の削除", "estimate.detail.itemTableHeader.dispOrder": "No.", "estimate.detail.itemTableHeader.itemId": "品番", - "estimate.detail.itemTableHeader.itemNo": "兄弟", + "estimate.detail.itemTableHeader.itemNo": "型名", "estimate.detail.itemTableHeader.amount": "数量", "estimate.detail.itemTableHeader.unit": "単位", "estimate.detail.itemTableHeader.salePrice": "単価", - "estimate.detail.itemTableHeader.saleTotPrice": "金額(税別別)", - "estimate.detail.docPopup.title": "ドキュメントダウンロードオプションの設定", + "estimate.detail.itemTableHeader.saleTotPrice": "金額(税別)", + "estimate.detail.docPopup.title": "文章ダウンロードオプションの設定", "estimate.detail.docPopup.explane": "ダウンロードする文書オプションを選択し、[文書のダウンロード]ボタンをクリックします。", "estimate.detail.docPopup.schUnitPriceFlg": "ダウンロードファイル", - "estimate.detail.docPopup.schUnitPriceFlg.excelFlg0": "見積もりExcel", + "estimate.detail.docPopup.schUnitPriceFlg.excelFlg0": "仕切用Excel", "estimate.detail.docPopup.schUnitPriceFlg.excelFlg1": "定価用Excel", - "estimate.detail.docPopup.schUnitPriceFlg.pdfFlg0": "見積もりPDF", + "estimate.detail.docPopup.schUnitPriceFlg.pdfFlg0": "仕切用PDF", "estimate.detail.docPopup.schUnitPriceFlg.pdfFlg1": "定価用PDF", "estimate.detail.docPopup.schDisplayFlg": "見積提出書の表示名", "estimate.detail.docPopup.schDisplayFlg.schDisplayFlg0": "販売店名", @@ -928,13 +927,13 @@ "estimate.detail.docPopup.schDrawingFlg.schDrawingFlg0": "含まない", "estimate.detail.docPopup.close": "閉じる", "estimate.detail.docPopup.docDownload": "文書のダウンロード", - "estimate.detail.estimateCopyPopup.title": "見積もり", + "estimate.detail.estimateCopyPopup.title": "見積コピー", "estimate.detail.estimateCopyPopup.explane": "見積書をコピーする販売店を設定します。見積書は定価でコピーされます。", "estimate.detail.estimateCopyPopup.label.saleStoreId": "一次販売店名/ID", "estimate.detail.estimateCopyPopup.label.otherSaleStoreId": "二次販売店名/ID", "estimate.detail.estimateCopyPopup.label.receiveUser": "担当者", "estimate.detail.estimateCopyPopup.close": "閉じる", - "estimate.detail.estimateCopyPopup.copyBtn": "見積もり", + "estimate.detail.estimateCopyPopup.copyBtn": "見積コピー", "estimate.detail.estimateCopyPopup.copy.alertMessage": "見積書がコピーされました。コピーした商品情報に移動します。", "estimate.detail.productFeaturesPopup.title": "製品特異事項", "estimate.detail.productFeaturesPopup.close": "閉じる", @@ -943,7 +942,6 @@ "estimate.detail.save.alertMsg": "保存されました。見積書で製品を変更すると、図面や回路には反映されません。", "estimate.detail.copy.alertMsg": "コピーされました。", "estimate.detail.save.requiredFileUpload": "ファイル添付が必須のアイテムがあります。ファイルを添付するか、後日添付をチェックしてください。", - "estimate.detail.save.requiredNorthArrangementFileUpload": "北面にモジュールを配置した場合、北面配置許可書を必ず添付する必要があります.", "estimate.detail.save.requiredItem": "製品は1つ以上登録する必要があります。", "estimate.detail.save.requiredCharger": "担当者は必須です。", "estimate.detail.save.requiredObjectName": "案件名は必須です。", @@ -953,14 +951,14 @@ "estimate.detail.save.requiredAmount": "数量は0より大きい値を入力してください。", "estimate.detail.save.requiredSalePrice": "単価は0より大きい値を入力してください。", "estimate.detail.reset.alertMsg": "初期化されました。", - "estimate.detail.reset.confirmMsg": "手書き変更(保存)した見積情報が初期化され、最近保存された図面情報が反映されます。本当に初期化しますか?", + "estimate.detail.reset.confirmMsg": "保存した見積情報が初期化され、最近保存された図面情報が反映されます。本当に初期化しますか?", "estimate.detail.lock.alertMsg": "見積もりを[ロック]すると変更できません。
見積もりを修正するには、ロックを解除してください。", "estimate.detail.unlock.alertMsg": "[ロック解除]すると、見積書を編集できます。
解除しますか?", "estimate.detail.unlock.confirmBtnName": "解放", "estimate.detail.alert.delFile": "添付ファイルを完全に削除するには、[保存]ボタンをクリックしてください。", "estimate.detail.alert.selectDelItem": "削除する商品を選択してください。", "estimate.menu.move.valid1": "回路を分割していないため、見積もりを呼び出すことはできません。", - "simulator.title.sub1": "品番", + "simulator.title.sub1": "物件番号", "simulator.title.sub2": "作成日", "simulator.title.sub3": "システム容量", "simulator.title.sub4": "年間予測発電量", diff --git a/src/locales/ko.json b/src/locales/ko.json index 7249b0f5..507f5415 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -50,8 +50,8 @@ "modal.movement.flow.line.updown.up": "자릿수를 올리다", "modal.movement.flow.line.updown.down": "자릿수를 낮추다", "modal.movement.flow.line.info": "동선을 선택하고 이동 폭을 지정하십시오", - "modal.movement.flow.line.bottom.left": "높이 변경: 아래, 왼쪽", - "modal.movement.flow.line.top.right": "높이 변경: 위, 오른쪽", + "modal.movement.flow.line.bottom.left": "높이변경 : 아래, 왼쪽", + "modal.movement.flow.line.top.right": "높이변경 : 위, 오른쪽", "plan.menu.roof.cover.outline.edit.offset": "외벽선 편집 및 오프셋", "plan.menu.roof.cover.roof.surface.alloc": "지붕면 할당", "plan.menu.roof.cover.roof.shape.edit": "지붕형상 편집", @@ -84,13 +84,13 @@ "plan.menu.placement.surface.arrangement": "면형상 배치", "plan.menu.placement.surface.object": "오브젝트 배치", "plan.menu.placement.surface.all.remove": "배치면 전체 삭제", - "plan.menu.module.circuit.setting": "모듈·회로 구성", - "plan.menu.module.circuit.setting.default": "모듈·가대설정", + "plan.menu.module.circuit.setting": "모듈, 회로 구성", + "plan.menu.module.circuit.setting.default": "모듈/가대설정", "modal.module.basic.setting.orientation.setting": "방위 설정", "modal.module.basic.setting.orientation.setting.info": "※시뮬레이션 계산용 방위를 지정합니다. 남쪽의 방위를 설정해주세요.", "modal.module.basic.setting.orientation.setting.angle.passivity": "각도를 직접 입력", "modal.module.basic.setting.module.roof.material": "지붕재", - "modal.module.basic.setting.module.trestle.maker": "가대메이커", + "modal.module.basic.setting.module.trestle.maker": "가대메이거", "modal.module.basic.setting.module.rafter.margin": "서까래 간격", "modal.module.basic.setting.module.construction.method": "공법", "modal.module.basic.setting.module.under.roof": "지붕밑바탕", @@ -634,7 +634,7 @@ "stuff.gridHeader.address": "물건주소", "stuff.gridHeader.dispCompanyName": "견적처", "stuff.gridHeader.receiveUser": "담당자", - "stuff.gridHeader.specificationConfirmDate": "사양확정일", + "stuff.gridHeader.specificationConfirmDate": "사양확인일", "stuff.gridHeader.createDatetime": "등록일", "stuff.gridData.tempObjectNo": "임시저장물건", "stuff.message.periodError": "최대1년 조회 가능합니다.", @@ -877,7 +877,6 @@ "estimate.detail.roofCns": "지붕재・사양시공", "estimate.detail.remarks": "비고", "estimate.detail.fileFlg": "후일자료제출", - "estimate.detail.dragFileGuide": "(※ 북면설치인 경우, 파일 첨부가 필수입니다.)", "estimate.detail.header.fileList1": "파일첨부", "estimate.detail.fileList.btn": "파일선택", "estimate.detail.fileList.extCheck": "이미지 파일만 첨부 가능합니다.", @@ -943,7 +942,6 @@ "estimate.detail.save.alertMsg": "저장되었습니다. 견적서에서 제품을 변경할 경우 도면 및 회로에 반영되지 않습니다.", "estimate.detail.copy.alertMsg": "복사되었습니다.", "estimate.detail.save.requiredFileUpload": "파일첨부가 필수인 아이템이 있습니다. 파일을 첨부하거나 후일첨부를 체크해주십시오.", - "estimate.detail.save.requiredNorthArrangementFileUpload": "북면에 모듈을 배치한 경우, 북면배치허가서를 반드시 첨부해야 합니다.", "estimate.detail.save.requiredItem": "제품은 1개이상 등록해야 됩니다.", "estimate.detail.save.requiredCharger": "담당자는 필수값 입니다.", "estimate.detail.save.requiredObjectName": "안건명은 필수값 입니다.", diff --git a/src/store/circuitTrestleAtom.js b/src/store/circuitTrestleAtom.js index ea54835a..d1477e13 100644 --- a/src/store/circuitTrestleAtom.js +++ b/src/store/circuitTrestleAtom.js @@ -40,7 +40,10 @@ export const moduleStatisticsState = atom({ { name: `발전량(kW)`, prop: 'amount' }, ], rows: [], - footer: ['합계', '0'], + footer: [ + { name: '-', prop: 'name' }, + { name: 0, prop: 'amount' }, + ], }, dangerouslyAllowMutability: true, }) diff --git a/src/util/canvas-util.js b/src/util/canvas-util.js index 2204eaec..a0442d9f 100644 --- a/src/util/canvas-util.js +++ b/src/util/canvas-util.js @@ -1031,8 +1031,3 @@ export function calculateVisibleModuleHeight(sourceWidth, sourceHeight, angle, d height: Number(visibleHeight.toFixed(1)), // 소수점 두 자리로 고정 } } - -export function getTrestleLength(length, degree) { - const radians = (degree * Math.PI) / 180 - return length * Math.cos(radians) -}