지반 단면도 및 편의성 개선

master
thkim 2025-06-23 00:08:03 +09:00
parent 2c9d79f447
commit 94fc429640
269 changed files with 34635 additions and 22 deletions

View File

@ -6,3 +6,10 @@ src\main\resources\egovframework\mapper\sgis\board\PostMapper.xml
src\main\webapp\WEB-INF\jsp\sgis\com\board\boardView.jsp src\main\webapp\WEB-INF\jsp\sgis\com\board\boardView.jsp
src\main\webapp\WEB-INF\jsp\sgis\com\board\boardWrite.jsp src\main\webapp\WEB-INF\jsp\sgis\com\board\boardWrite.jsp
src\main\resources\egovframework\mapper\sgis\board\MemberMapper.xml src\main\resources\egovframework\mapper\sgis\board\MemberMapper.xml
src\main\webapp\com\js\main.map.js
src\main\webapp\WEB-INF\jsp\sgis\map\mapMain.jsp
src\main\webapp\WEB-INF\jsp\tiles\attribute\app.submenu.jsp
src\main\webapp\WEB-INF\jsp\sgis\map\mapInformation\sichudanNew.jsp
src\main\webapp\com\css\cross-section.css
src\main\webapp\com\js\cross-section.js
src\main\resources\egovframework\mapper\sgis\map\MapMainMapper.xml

View File

@ -2,13 +2,51 @@ package sgis.map.mapper;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import egovframework.rte.psl.dataaccess.mapper.Mapper; import egovframework.rte.psl.dataaccess.mapper.Mapper;
import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.psl.dataaccess.util.EgovMap;
@Mapper("MapMainMapper") @Mapper("mapMainMapper")
public interface MapMainMapper { public interface MapMainMapper {
EgovMap selectMapInfoList(HashMap<String, Object> params) throws Exception; EgovMap selectMapInfoList(HashMap<String, Object> params) throws Exception;
EgovMap selectHoleCount(Map<String, Object> params) throws Exception;
List<EgovMap> selectHoleList(Map<String, Object> params) throws Exception;
List<EgovMap> selectItems(Map<String, Object> params) throws Exception;
List<EgovMap> selectDistrict() throws Exception;
List<EgovMap> selectGrid1(Map<String, Object> params) throws Exception;
List<EgovMap> selectDistrictSgg(Map<String, Object> params) throws Exception;
List<EgovMap> selectOldItems(Map<String, Object> params) throws Exception;
List<EgovMap> get3dSido(Map<String, Object> params) throws Exception;
List<EgovMap> get3dGugun(Map<String, Object> params) throws Exception;
List<EgovMap> get3dDong(Map<String, Object> params) throws Exception;
List<EgovMap> get3dDetail(Map<String, Object> params) throws Exception;
EgovMap getGeneralData(Map<String, Object> params) throws Exception;
List<EgovMap> getLinkLayerData(Map<String, Object> params) throws Exception;
List<EgovMap> getSPTData(Map<String, Object> params) throws Exception;
List<EgovMap> getSampleData(Map<String, Object> params) throws Exception;
EgovMap selectInfoLastPage(Map<String, Object> params) throws Exception;
List<EgovMap> selectInfoItems(Map<String, Object> params) throws Exception;
EgovMap selectWebDownloadLog(Map<String, Object> params) throws Exception; // dhlee 사용자별 다운로드 요청한 개수를 얻어온다.
List<EgovMap> selectProjectList(Map<String, Object> params) throws Exception;
} }

View File

@ -2,6 +2,7 @@ package sgis.map.service;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.psl.dataaccess.util.EgovMap;
import sgis.map.vo.MapInfoVO; import sgis.map.vo.MapInfoVO;
@ -10,4 +11,43 @@ public interface MapMainService {
EgovMap selectMapInfoList(HashMap<String, Object> params) throws Exception; EgovMap selectMapInfoList(HashMap<String, Object> params) throws Exception;
EgovMap selectHoleCount(Map<String, Object> params) throws Exception;
List<EgovMap> selectHoleList(Map<String, Object> params) throws Exception;
List<EgovMap> selectItems(Map<String, Object> params) throws Exception;
List<EgovMap> selectDistrict() throws Exception;
List<EgovMap> selectGrid1(Map<String, Object> params) throws Exception;
List<EgovMap> selectDistrictSgg(Map<String, Object> params) throws Exception;
List<EgovMap> selectOldItems(Map<String, Object> params) throws Exception;
List<EgovMap> get3dSido(Map<String, Object> params) throws Exception;
List<EgovMap> get3dGugun(Map<String, Object> params) throws Exception;
List<EgovMap> get3dDong(Map<String, Object> params) throws Exception;
List<EgovMap> get3dDetail(Map<String, Object> params) throws Exception;
EgovMap getGeneralData(Map<String, Object> params) throws Exception;
List<EgovMap> getLinkLayerData(Map<String, Object> params) throws Exception;
List<EgovMap> getSPTData(Map<String, Object> params) throws Exception;
List<EgovMap> getSampleData(Map<String, Object> params) throws Exception;
EgovMap selectInfoLastPage(Map<String, Object> params) throws Exception;
List<EgovMap> selectInfoItems(Map<String, Object> params) throws Exception;
EgovMap selectWebDownloadLog(Map<String, Object> params) throws Exception; // dhlee 사용자별 다운로드 요청한 개수를 얻어온다.
List<EgovMap> selectProjectList(Map<String, Object> params) throws Exception; // dhlee
} }

View File

@ -2,6 +2,7 @@ package sgis.map.service.impl;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -14,12 +15,106 @@ import sgis.map.service.MapMainService;
public class MapMainServiceImpl implements MapMainService { public class MapMainServiceImpl implements MapMainService {
@Autowired @Autowired
private MapMainMapper MapMainMapper; private MapMainMapper mapMainMapper;
@Override @Override
public EgovMap selectMapInfoList(HashMap<String, Object> params) throws Exception { public EgovMap selectMapInfoList(HashMap<String, Object> params) throws Exception {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return MapMainMapper.selectMapInfoList(params); return mapMainMapper.selectMapInfoList(params);
} }
@Override
public EgovMap selectHoleCount(Map<String, Object> params) throws Exception {
return mapMainMapper.selectHoleCount(params);
}
@Override
public List<EgovMap> selectHoleList(Map<String, Object> params) throws Exception {
return mapMainMapper.selectHoleList(params);
}
@Override
public List<EgovMap> selectItems(Map<String, Object> params) throws Exception {
return mapMainMapper.selectItems(params);
}
@Override
public List<EgovMap> selectDistrict() throws Exception {
return mapMainMapper.selectDistrict();
}
@Override
public List<EgovMap> selectGrid1(Map<String, Object> params) throws Exception {
return mapMainMapper.selectGrid1(params);
}
@Override
public List<EgovMap> selectDistrictSgg(Map<String, Object> params) throws Exception {
return mapMainMapper.selectDistrictSgg(params);
}
@Override
public List<EgovMap> selectOldItems(Map<String, Object> params) throws Exception {
return mapMainMapper.selectOldItems(params);
}
@Override
public List<EgovMap> get3dSido(Map<String, Object> params) throws Exception {
return mapMainMapper.get3dSido(params);
}
@Override
public List<EgovMap> get3dGugun(Map<String, Object> params) throws Exception {
return mapMainMapper.get3dGugun(params);
}
@Override
public List<EgovMap> get3dDong(Map<String, Object> params) throws Exception {
return mapMainMapper.get3dDong(params);
}
@Override
public List<EgovMap> get3dDetail(Map<String, Object> params) throws Exception {
return mapMainMapper.get3dDetail(params);
}
@Override
public EgovMap getGeneralData(Map<String, Object> params) throws Exception {
return mapMainMapper.getGeneralData(params);
}
@Override
public List<EgovMap> getLinkLayerData(Map<String, Object> params) throws Exception {
return mapMainMapper.getLinkLayerData(params);
}
@Override
public List<EgovMap> getSPTData(Map<String, Object> params) throws Exception {
return mapMainMapper.getSPTData(params);
}
@Override
public List<EgovMap> getSampleData(Map<String, Object> params) throws Exception {
return mapMainMapper.getSampleData(params);
}
@Override
public EgovMap selectInfoLastPage(Map<String, Object> params) throws Exception {
return mapMainMapper.selectInfoLastPage(params);
}
@Override
public List<EgovMap> selectInfoItems(Map<String, Object> params) throws Exception {
return mapMainMapper.selectInfoItems(params);
}
@Override
public EgovMap selectWebDownloadLog(Map<String, Object> params) throws Exception {
return mapMainMapper.selectWebDownloadLog(params);
}
@Override
public List<EgovMap> selectProjectList(Map<String, Object> params) throws Exception {
return mapMainMapper.selectProjectList(params);
}
} }

View File

@ -5,18 +5,21 @@ import java.io.File;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody; // Add this import
import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.psl.dataaccess.util.EgovMap;
import sgis.app.service.AppInstrumentService; import sgis.app.service.AppInstrumentService;
@ -28,6 +31,7 @@ import sgis.map.service.AppPredictService;
import sgis.map.service.MapMainService; import sgis.map.service.MapMainService;
import sgis.map.vo.MapInfoVO; import sgis.map.vo.MapInfoVO;
/** /**
* @FileName : MapMainController.java * @FileName : MapMainController.java
* @Date : 2022. 05. 10 * @Date : 2022. 05. 10
@ -38,7 +42,7 @@ import sgis.map.vo.MapInfoVO;
public class MapMainController extends BaseController { public class MapMainController extends BaseController {
@Resource(name ="MapMainService") @Resource(name ="MapMainService")
private MapMainService MapMainService; private MapMainService mapMainService;
//입력시스템 서비스 //입력시스템 서비스
@Resource(name ="AppMainService") @Resource(name ="AppMainService")
@ -363,4 +367,120 @@ public class MapMainController extends BaseController {
}; };
@RequestMapping(value = "/map/sichudanNew.do")
public String sichudanNew(ModelMap model, HttpServletRequest request, HttpServletResponse response, @RequestParam Map<String, Object> params) throws Exception {
String code = String.valueOf(params.get("code"));
String data = "";
try {
String[] hCodes = code.split(",");
for (int i = 0; i < hCodes.length; i++) {
data = data + hCodes[i].trim() + ",";
}
data = data.substring(0, data.length() - 1);
} catch (NumberFormatException e) {
//logger.debug("error", e);
data = "";
} catch (IndexOutOfBoundsException e) {
//logger.debug("error", e);
data = "";
} catch (Exception e) {
//logger.debug("error", e);
data = "";
}
model.put("data", data);
return "/sgis/map/mapInformation/sichudanNew";
}
@RequestMapping(value = "/map/getSichudanData.do", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE })
@ResponseBody
public JSONObject getSichudanData(ModelMap model, HttpServletRequest request, HttpServletResponse response, @RequestParam Map<String, Object> params) throws Exception {
StringBuffer sb = request.getRequestURL();
String url = sb.substring(0, sb.lastIndexOf("/"));
String code = String.valueOf(params.get("code"));
JSONObject responseJson = new JSONObject();
responseJson.put("jsonView", getSectionData(code));
return responseJson;
}
public JSONObject getSectionData(String code) throws Exception {
code = code.trim();
Map<String, Object> params = new HashMap<String, Object>();
String[] bussinessNHoleCode = code.split("\\|\\|");
params.put("businessCode", bussinessNHoleCode[0]);
params.put("holeCode", bussinessNHoleCode[1]);
EgovMap general = mapMainService.getGeneralData(params);
String[] values = String.valueOf(general.get("vlu")).split("\\|");
JSONObject resultJson = new JSONObject();
resultJson.put("PCODE", values[0]);
resultJson.put("ALTITUDE", values[1]);
resultJson.put("DEPTH", values[2]);
JSONObject position = new JSONObject();
position.put("X", values[3]);
position.put("Y", values[4]);
resultJson.put("TM", position);
position = new JSONObject();
position.put("X", values[5]);
position.put("Y", values[6]);
resultJson.put("LL", position);
resultJson.put("PNAME", values[7]);
resultJson.put("WATER", values[8]);
if (values.length == 10) {
resultJson.put("PCOM", values[9]);
} else {
resultJson.put("PCOM", "");
}
JSONObject generalData = resultJson;
generalData.put("HCODE", code);
List<EgovMap> linkLayerData = mapMainService.getLinkLayerData(params);
//generalData.put("LAYER", listmap_to_json_string(linkLayerData));
generalData.put("LAYER", linkLayerData);
List<EgovMap> SPTData = mapMainService.getSPTData(params);
//generalData.put("SPT", listmap_to_json_string(SPTData));
generalData.put("SPT", SPTData);
List<EgovMap> sampleData = mapMainService.getSampleData(params);
//generalData.put("SAMPLE", listmap_to_json_string(sampleData));
generalData.put("SAMPLE", sampleData);
return generalData;
}
public String listmap_to_json_string(List<EgovMap> list) {
JSONArray json_arr = new JSONArray();
for (Map<String, Object> map : list) {
JSONObject json_obj = new JSONObject();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
json_obj.put(key, value);
}
json_arr.add(json_obj);
}
return json_arr.toString();
}
} }

View File

@ -54,4 +54,464 @@
ORDER BY HOL_COD ORDER BY HOL_COD
]]> ]]>
</select> </select>
<select id="selectHoleCount" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT
COUNT(HOLE_CODE) AS CNT
FROM TBL_HEADER
]]>
<choose>
<when test="areaHcodeArray != null and areaHcodeArray != '' and areaHcodeArray != 'undefiend'">
<![CDATA[
where NVL(USE_YN,' ') <> 'N' AND HOLE_CODE IN
]]>
<foreach collection="areaHcodeArray" item="hole" index="index" open="(" close=")" separator=",">
#{hole}
</foreach>
</when>
<otherwise>
<![CDATA[
WHERE NVL(USE_YN,' ') <> 'N' AND HOLE_LOCATION_TM_X >= #{minX} AND HOLE_LOCATION_TM_X <= #{maxX}
AND HOLE_LOCATION_TM_Y >= #{minY} AND HOLE_LOCATION_TM_Y <= #{maxY}
]]>
</otherwise>
</choose>
</select>
<select id="selectHoleList" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT
HOLE_CODE
FROM TBL_HEADER
]]>
<choose>
<when test="areaHcodeArray != null and areaHcodeArray != ''and areaHcodeArray != 'undefiend'">
<![CDATA[
where NVL(USE_YN,' ') <> 'N' AND HOLE_CODE IN
]]>
<foreach collection="areaHcodeArray" item="hole" index="index" open="(" close=")" separator=",">
#{hole}
</foreach>
</when>
<otherwise>
<![CDATA[
WHERE NVL(USE_YN,' ') <> 'N' AND HOLE_LOCATION_TM_X >= #{minX} AND HOLE_LOCATION_TM_X <= #{maxX}
AND HOLE_LOCATION_TM_Y >= #{minY} AND HOLE_LOCATION_TM_Y <= #{maxY}
]]>
</otherwise>
</choose>
</select>
<select id="selectItems" parameterType="map" resultType="egovMap">
SELECT
HOLE_CODE,B.PROJECT_NAME,
(SELECT USCS_NAME FROM TBL_SCIENCE_LAYER_TB WHERE A.LAYER_CLASS_CODE = USCS_CODE) LAYER,
A.HOLE_TOTAL_DEPTH DEPTH,A.HOLE_EL EL,A.HOLE_WL WL, A.HOLE_DATE_FROM SDATE, A.HOLE_DATE_TO EDATE
FROM
TBL_HEADER A, TBL_PROJECT_INFO B
WHERE
<![CDATA[
NVL(A.USE_YN,' ') <> 'N' AND NVL(B.USE_YN,' ') <> 'N' AND
]]>
A.PROJECT_CODE = B.PROJECT_CODE
AND A.HOLE_CODE IN
<foreach collection="holeCode" item="hole" index="index" open="(" close=")" separator=",">
#{hole}
</foreach>
ORDER BY
HOLE_CODE
</select>
<select id="selectDistrict" parameterType="map" resultType="egovMap">
SELECT
'L_DIS' CODE, LD_ID CODE_VALUE, LD_DISTRICTCODE CODE_TEXT, 'L_DIS' PARENT_CODE, LD_ID PARENT_CODE_VALUE
FROM TBL_L_DISTRICT
</select>
<select id="selectDistrictSgg" parameterType="map" resultType="egovMap">
SELECT
'M_DIS' CODE, MD_ID CODE_VALUE, MD_DISTRICTCODE CODE_TEXT, 'L_DIS' PARENT_CODE, MD_LARGEDISTRICTID RARENT_CODE
FROM TBL_M_DISTRICT
WHERE MD_LARGEDISTRICTID = #{code}
ORDER BY CODE_TEXT
</select>
<select id="selectGrid1" parameterType="map" resultType="EgovMap">
SELECT SA.*
, (SELECT CRWD_ID FROM S3D_CROWD_ANAL OA WHERE OA.PROJECT_CODE = SA.PROJECT_CODE AND ROWNUM=1) AS CRWD_ID
, (SELECT SEPARATOR FROM S3D_CROWD_ANAL OA WHERE OA.PROJECT_CODE = SA.PROJECT_CODE AND ROWNUM=1) AS SEPARATOR
, 'fault_model' as FAULT_MODEL
, 'spt_model' as SPT_MODEL
, 'analysis_model' as ANALYSIS_MODEL
, 'layer_model' as LAYER_MODEL
, 'gw_model' as GW_MODEL
, 'no' as CAD
, 'no' as SHAPE
FROM (
SELECT
A.PROJECT_CODE
, replace(replace(A.PROJECT_NAME ,chr(10),' '),chr(13),' ') PROJECT_NAME
, COUNT(B.HOLE_CODE) HOLE_CNT
FROM
TBL_PROJECT_INFO A
, TBL_HEADER B
WHERE
<![CDATA[
NVL(A.USE_YN,' ') <> 'N' AND NVL(B.USE_YN,' ') <> 'N' AND
]]>
A.PROJECT_CODE = B.PROJECT_CODE
<choose>
<when test="sido != '' and sido != null">
<![CDATA[
AND SUBSTR(A.PROJECT_START_SPOT, 1, 3) = #{sido}
]]>
</when>
<when test="gugun != '' and gugun != null">
<![CDATA[
AND SUBSTR(A.PROJECT_START_SPOT, 1, 6) = #{sido+gugun}
]]>
</when>
</choose>
GROUP
BY A.PROJECT_CODE, A.PROJECT_NAME
) SA
WHERE EXISTS (SELECT 1
FROM S3D_CROWD_ANAL S2A
WHERE S2A.PROJECT_CODE = SA.PROJECT_CODE)
</select>
<select id="selectOldItems" parameterType="map" resultType="EgovMap">
SELECT
C.S3D_DISTRICT_CODE,
C.S3D_DISTRICT_NAME,
C.S3D_SEQUENCE,
C.S3D_PREFIX,
B.S3D_DISTRICT_SUB_CODE,
B.S3D_DISTRICT_SUB_NAME,
A.S3D_REGION_NAME,
A.S3D_CODE,
A.S3D_MAP_IMAGE
FROM
S3D_MASTER A,
S3D_DISTRICT_SUB B,
S3D_DISTRICT C
WHERE
A.S3D_DISTRICT_SUB = B.S3D_DISTRICT_SUB_CODE
AND A.S3D_DISTRICT = C.S3D_DISTRICT_CODE
<if test="sido != null and sido != '' and sido != 'all'">
<![CDATA[
AND C.S3D_DISTRICT_CODE = #{sido}
]]>
</if>
<if test="gugun != null and gugun != '' and gugun != 'all'">
<![CDATA[
AND B.S3D_DISTRICT_SUB_CODE = #{gugun}
]]>
</if>
<if test="dong != null and dong != '' and dong != 'all'">
<![CDATA[
AND A.S3D_MAP_IMAGE LIKE #{dong} || '%'
]]>
</if>
ORDER BY
C.S3D_DISTRICT_CODE, C.S3D_SEQUENCE, B.S3D_DISTRICT_SUB_CODE, A.S3D_CODE
</select>
<select id="get3dSido" parameterType="map" resultType="egovMap">
select
s3d_district_code, s3d_district_name, s3d_sequence, s3d_prefix
from s3d_district
where
s3d_district_yn = '1'
</select>
<select id="get3dGugun" parameterType="map" resultType="egovMap">
select s3d_district, s3d_district_sub_name, s3d_district_sub_code from s3d_district_sub
where s3d_district = #{doCd}
</select>
<select id="get3dDong" parameterType="map" resultType="egovMap">
select
s3d_region, s3d_link_code, s3d_button_name, s3d_link_address, s3d_link_x, s3d_link_y
from
s3d_detail
where
s3d_district = #{sido} and
s3d_district_sub = #{gugun}
order by
s3d_link_code asc
</select>
<select id="get3dDetail" parameterType="map" resultType="egovMap">
select
DISTINCT de.s3d_region, de.s3d_link_code, ma.s3d_district, de.s3d_button_name
from
s3d_detail de, s3d_master ma
where
de.s3d_district = ma.s3d_district and
ma.s3d_map_image = #{adong1} and
de.s3d_region= #{aid}
order by
de.s3d_link_code asc
</select>
<select id="getGeneralData" parameterType="map" resultType="egovMap">
SELECT
(
COALESCE(t_project.project_code, '')
|| '|' || COALESCE(t_hole.hole_elevation, '') -- HOLE_ELV -> hole_elevation
|| '|' || COALESCE(t_hole.hole_drilling_depth, '') -- 시추심도
|| '|' || COALESCE(t_hole.hole_x, '')
|| '|' || COALESCE(t_hole.hole_y, '')
|| '|' || COALESCE(ST_Y(t_hole.hole_point)::text, '')
|| '|' || COALESCE(ST_X(t_hole.hole_point)::text, '')
|| '|' || COALESCE(t_business.business_name, '')
|| '|' || COALESCE(t_hole.hole_water_level, '') -- HOLE_WL -> hole_water_level
|| '|' || COALESCE(t_hole.hole_location_sd, '') || COALESCE(t_hole.hole_location_sgg, '') || COALESCE(t_hole.hole_location_emd, '') || COALESCE(t_hole.hole_location_detail, '')
) AS VLU
FROM
public.apptb_hole01 t_hole
LEFT JOIN
public.apptb_saup01 t_business ON t_hole.business_code = t_business.business_code
LEFT JOIN
public.apptb_proj01 t_project ON t_business.project_code = t_project.project_code
WHERE
t_hole.business_code = #{businessCode}
AND t_hole.hole_code = #{holeCode}
</select>
<select id="getLinkLayerData" parameterType="map" resultType="egovMap">
SELECT
a1.layer_depth_from AS "FROM",
a1.layer_depth_to AS "TO",
a1.layer_science_name AS "USCS",
COALESCE(a1.layer_eng_name, '') AS "NAME",
COALESCE(a1.layer_soil_color, '') AS "COLOR",
REPLACE(REPLACE(a1.layer_desc, CHR(10), ' '), CHR(13), ' ') AS "DESC"
FROM
public.apptb_layr01 a1
WHERE
a1.business_code = #{businessCode}
AND a1.hole_code = #{holeCode}
ORDER BY a1.layer_depth_from
</select>
<select id="getSPTData" parameterType="map" resultType="egovMap">
SELECT
depth_spt,
spt_n
FROM
public.apptb_spt01
WHERE
hole_code = #{holeCode}
AND
business_code = #{businessCode}
ORDER BY
depth_spt
</select>
<select id="getSampleData" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT
(t.CODE || '|' || t.DEPTH_FROM || '|' || t.DEPTH_TO || '|' || t.YN || '|' || t.SHAPE) AS VAL
FROM
(
SELECT
'0' AS CODE,
t1.rjoint_depth_from::numeric AS DEPTH_FROM,
t1.rjoint_depth_to::numeric AS DEPTH_TO,
'0' AS YN,
'0' AS SHAPE
FROM
public.apptb_josh01 t1
WHERE
t1.hole_code = #{holeCode}
AND t1.business_code = #{businessCode}
UNION ALL
SELECT
'0' AS CODE,
t2.depth_from::numeric AS DEPTH_FROM,
t2.depth_to::numeric AS DEPTH_TO,
'0' AS YN,
'0' AS SHAPE
FROM
public.apptb_polo01 t2
WHERE
t2.hole_code = #{holeCode}
AND t2.business_code = #{businessCode}
UNION ALL
SELECT
'0' AS CODE,
t3.rtri_depth_from::numeric AS DEPTH_FROM,
t3.rtri_depth_to::numeric AS DEPTH_TO,
'0' AS YN,
'0' AS SHAPE
FROM
public.apptb_rtri01 t3
WHERE
t3.hole_code = #{holeCode}
AND t3.business_code = #{businessCode}
UNION ALL
SELECT
'0' AS CODE,
t4.runi_depth_from::numeric AS DEPTH_FROM,
t4.runi_depth_to::numeric AS DEPTH_TO,
'0' AS YN,
'0' AS SHAPE
FROM
public.apptb_runi01 t4
WHERE
t4.hole_code = #{holeCode}
AND t4.business_code = #{businessCode}
UNION ALL
SELECT
t5.sample_code AS CODE,
t5.sample_depth_from::numeric AS DEPTH_FROM,
t5.sample_depth_to::numeric AS DEPTH_TO,
'0' AS YN,
t5.sample_shape AS SHAPE
FROM
public.apptb_smpl01 t5
WHERE
t5.hole_code = #{holeCode}
AND t5.business_code = #{businessCode}
AND (
(SELECT COUNT(*) FROM public.apptb_cons02 WHERE sample_code = t5.sample_code) > 0 OR
(SELECT COUNT(*) FROM public.apptb_stri01 WHERE sample_code = t5.sample_code) > 0 OR
(SELECT COUNT(*) FROM public.apptb_suni01 WHERE sample_code = t5.sample_code) > 0 OR
(SELECT COUNT(*) FROM public.apptb_clas01 WHERE sample_code = t5.sample_code) > 0 OR
(SELECT COUNT(*) FROM public.apptb_cbr01 WHERE sample_code = t5.sample_code) > 0
)
) AS t
WHERE
t.DEPTH_FROM IS NOT NULL
AND t.DEPTH_TO IS NOT NULL
]]>
</select>
<select id="selectInfoLastPage" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT CEIL(MAX(ROWNUM)/ 15 ) AS LASTPAGE
FROM (
SELECT HOLE_CODE,
B.PROJECT_NAME,
(SELECT USCS_NAME
FROM TBL_SCIENCE_LAYER_TB
WHERE A.LAYER_CLASS_CODE = USCS_CODE) LAYER,
A.HOLE_TOTAL_DEPTH DEPTH,
A.HOLE_EL EL,
A.HOLE_WL WL,
A.HOLE_DATE_FROM SDATE,
A.HOLE_DATE_TO EDATE
FROM
TBL_HEADER A,
TBL_PROJECT_INFO B
WHERE
NVL(A.USE_YN,' ') <> 'N' AND NVL(B.USE_YN,' ') <> 'N' AND
A.PROJECT_CODE = B.PROJECT_CODE
AND A.HOLE_CODE IN
]]>
<choose>
<when test="areaHcodeArray != null and areaHcodeArray != ''">
<foreach collection="areaHcodeArray" item="hole" index="index" open="(" close=")" separator=",">
#{hole}
</foreach>
</when>
<otherwise>
<![CDATA[
(
SELECT TRIM(HOLE_CODE)
FROM TBL_HEADER A
WHERE NVL(A.USE_YN,' ') <> 'N' AND HOLE_LOCATION_TM_X >= #{minX} AND HOLE_LOCATION_TM_X <= #{maxX}
AND HOLE_LOCATION_TM_Y >= #{minY} AND HOLE_LOCATION_TM_Y <= #{maxY}
)
]]>
</otherwise>
</choose>
<![CDATA[
ORDER BY HOLE_CODE )
]]>
</select>
<select id="selectInfoItems" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT *
FROM (SELECT ROWNUM RNK,
Z.*
FROM (SELECT HOLE_CODE,
B.PROJECT_NAME,
B.PROJECT_CODE,
(SELECT USCS_NAME
FROM TBL_SCIENCE_LAYER_TB
WHERE A.LAYER_CLASS_CODE = USCS_CODE) LAYER,
A.HOLE_TOTAL_DEPTH DEPTH,
A.HOLE_EL EL,
A.HOLE_WL WL,
A.HOLE_DATE_FROM SDATE,
A.HOLE_DATE_TO EDATE
FROM TBL_HEADER A,
TBL_PROJECT_INFO B
WHERE
NVL(A.USE_YN,' ') <> 'N' AND NVL(B.USE_YN,' ') <> 'N' AND
A.PROJECT_CODE = B.PROJECT_CODE
AND A.HOLE_CODE IN
]]>
<choose>
<when test="areaHcodeArray != null and areaHcodeArray != ''">
<foreach collection="areaHcodeArray" item="hole" index="index" open="(" close=")" separator=",">
#{hole}
</foreach>
</when>
<otherwise>
<![CDATA[
(
SELECT TRIM(HOLE_CODE)
FROM
TBL_HEADER A
WHERE
NVL(USE_YN,' ') <> 'N' AND HOLE_LOCATION_TM_X >= #{minX} AND HOLE_LOCATION_TM_X <= #{maxX}
AND HOLE_LOCATION_TM_Y >= #{minY} AND HOLE_LOCATION_TM_Y <= #{maxY}
)
]]>
</otherwise>
</choose>
<![CDATA[
ORDER BY HOLE_CODE ) Z )
WHERE RNK > #{firstRow} AND RNK <= #{lastRow}
]]>
</select>
<select id="selectWebDownloadLog" parameterType="map" resultType="egovMap">
<![CDATA[
SELECT
(sysdate-min(ENDDATE)) as ENDDATE,
COUNT(*) AS CNT
FROM WEB_DOWNLOAD_LOG
WHERE USERID = #{userId}
AND DOWNYN IN ('W','N','R')
]]>
</select>
<select id="selectProjectList" parameterType="map" resultType="egovMap">
SELECT
*
FROM
TBL_PROJECT_INFO
WHERE
<![CDATA[
NVL(USE_YN,' ') <> 'N' AND
]]>
TRIM(PROJECT_CODE) IN
<foreach collection="projectList" item="project" index="index" open="(" close=")" separator=",">
#{project}
</foreach>
</select>
</mapper> </mapper>

View File

@ -0,0 +1,358 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>스마트지반정보관리 시스템</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name = "viewport" content = "user-scalable=no, width=device-width">
<meta name="author" content="해양수산부">
<!-- description -->
<meta name="description" content="스마트지반정보관리">
<!-- keywords -->
<meta name="keywords" content="">
<!-- favicon -->
<link rel="shortcut icon" href="${pageContext.request.contextPath}/com/img/common/icon/favicon.ico">
<script src="${pageContext.request.contextPath}/com/plugins/kendo-ui/js/jquery.js"></script>
<script src="${pageContext.request.contextPath}/com/plugins/bootstrap.min.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/com/plugins/bootstrap.min.css" />
<script src="${pageContext.request.contextPath}/com/plugins/css-element-queries/ResizeSensor.js"></script>
<script src="${pageContext.request.contextPath}/com/plugins/css-element-queries/ElementQueries.js"></script>
<script src="${pageContext.request.contextPath}/com/js/app.js"></script>
<script src="${pageContext.request.contextPath}/com/js/cross-section.js"></script>
<!-- 스타일 css -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/com/css/style.css" />
<link rel="stylesheet" href="${pageContext.request.contextPath}/com/css/common.v2.0.css" />
<link rel="stylesheet" href="${pageContext.request.contextPath}/com/css/cross-section.css" />
<link rel="stylesheet" href="${pageContext.request.contextPath}/com/plugins/openlayers/theme/default/style.css" type="text/css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/com/plugins/proj4js/proj4js-compressed.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/com/plugins/openlayers/OpenLayers.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/com/js/map/sichudan/js/json2.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/com/js/map/main/section.js" charset="UTF-8"></script>
<script type="text/javascript">
// --------------------------------
// 시스템 변수
// --------------------------------
var geoSection = null;
// --------------------------------
// 어플리케이션 로딩
// --------------------------------
addLoadEvent(initApp);
function initApp() {
showProgress();
if (geoSection == null) {
geoSection = new GeoSection("map");
}
var data = "${data}";
geoSection.show(data);
hideProgress();
}
// --------------------------------
// 함수 : 지반 단면도 보기 이벤트 컨트롤
// --------------------------------
var isShowAltitude = false;
var isShowDistance = false;
var isShowSPT = false;
var isShowLink = false;
var isShowWater = false;
function zoomToExtent() {
geoSection.zoomToExtent();
}
function zoomIn() {
geoSection.zoomIn();
}
function zoomOut() {
geoSection.zoomOut();
}
function toggleAltitude() {
if (isShowAltitude) {
isShowAltitude = false;
geoSection.hideHoleAltitude();
} else {
isShowAltitude = true;
geoSection.showHoleAltitude();
}
}
function toggleDistance() {
if (isShowDistance) {
isShowDistance = false;
geoSection.hideHoleDistance();
} else {
isShowDistance = true;
geoSection.showHoleDistance();
}
}
function toggleSPT() {
if (isShowSPT) {
isShowSPT = false;
geoSection.hideHoleSPT();
} else {
isShowSPT = true;
geoSection.showHoleSPT();
}
}
function toggleLink() {
if (isShowLink) {
isShowLink = false;
geoSection.hideHoleLink();
} else {
isShowLink = true;
geoSection.showHoleLink();
}
}
function toggleWater() {
if (isShowWater) {
isShowWater = false;
geoSection.hideHoleWater();
} else {
isShowWater = true;
geoSection.showHoleWater();
}
}
// --------------------------------
// 함수 : Process 패널 보이기 & 숨기기
// --------------------------------
var proWin = null;
function showProgress() {
var over = document.getElementById("over");
if (over != null) {
over.style.display = "block";
}
}
function hideProgress() {
var over = document.getElementById("over");
if (over != null) {
over.style.display = "none";
}
}
</script>
</head>
<body class="map-service cross-section">
<!-- 페이지 컨테이너 시작 -->
<section class="page-container">
<div class="page-content-wrapper">
<!-- 컨텐츠 시작 -->
<div class="page-content">
<div class="page-content-inner">
<div class="page-title-wrapper">
<h1 class="cross-section-title"><span>지반 단면도</span></h1>
</div>
<div class="cross-section-wrapper">
<div class="cross-contents-panel">
<!-- <div id="map" class="cross-contents-map" style="background-color: white; border: 1px solid black; padding: 0px;">
</div>
<div id="over" align="center" style="position: absolute; top: 120px; left: 400px; width: 751px; height: 517px;">
<img src="/com/img/map-service/sichudan/loading.gif" style="position: relative; top: 130px;">
</div> -->
<div id="map" style="width: 100%; height: calc(100vh - 296px); background-color: white; border: 1px solid black; padding: 0px;"></div>
<div id="over" align="center" style="position: absolute; top: calc(100vh - 85%); left: auto; width: 100%; height: calc(100vh - 296px);">
<img src="/com/img/map-service/sichudan/loading.gif" style="position: relative; top: auto;">
</div>
<div class="cross-contents-option">
<div class="cross-option-box">
<div class="cross-option-col cross-option-ex">
<ul>
<li class="option-mouse"><span class="option-title">이동</span>마우스 왼쪽 드래그, <span class="option-title">확대</span>L-Shift + 마우스 왼쪽 드래그</li>
<li class="option-ex ex-sample">시료를 채취한 부분으로 실내시험 결과를 확인 할 수 있습니다.</li>
<li class="option-ex ex-jusang">지반주상도 정보를 확인 하실 수 있습니다.</li>
<li class="option-ex ex-info">지반단면도에 대한 XML 데이터를 보실 수 있습니다.</li>
</ul>
</div>
<div class="cross-option-col cross-btn-group">
<ul>
<li>
<button type="button" class="btn btn-small btn-rounded5 btn-ske-blue btn-icon-left btn-icon-zoom-all" onclick="zoomToExtent();" onfocus="this.blur();"><span>전체</span></button>
<button type="button" class="btn btn-small btn-rounded5 btn-ske-blue btn-icon-left btn-icon-zoom-plus" onclick="zoomIn();" onfocus="this.blur();"><span>확대</span></button>
<button type="button" class="btn btn-small btn-rounded5 btn-ske-blue btn-icon-left btn-icon-zoom-minus" onclick="zoomOut();" onfocus="this.blur();"><span>축소</span></button>
</li>
<li>
<button type="button" class="btn btn-small btn-rounded5 btn-dark-gray btn-icon-left btn-icon-nextB" onclick="toggleAltitude();" onfocus="this.blur();"><span>표고정보보기</span></button>
<button type="button" class="btn btn-small btn-rounded5 btn-dark-gray btn-icon-left btn-icon-nextB" onclick="toggleDistance();" onfocus="this.blur();"><span>시추공사이거리보기</span></button>
</li>
<li>
<button type="button" class="btn btn-small btn-rounded5 btn-dark-gray btn-icon-left btn-icon-nextB" onclick="toggleSPT();" onfocus="this.blur();"><span>SPT보기</span></button>
<button type="button" class="btn btn-small btn-rounded5 btn-dark-gray btn-icon-left btn-icon-nextB" onclick="toggleLink();" onfocus="this.blur();"><span>지층연결</span></button>
<button type="button" class="btn btn-small btn-rounded5 btn-dark-gray btn-icon-left btn-icon-nextB" onclick="toggleWater();" onfocus="this.blur();"><span>지하수위보기</span></button>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="cross-legend-panel">
<h2 class="page-title-1depth"><span>지층 색상표</span></h2>
<div class="table-scrollable color-palette">
<table class="table table-bordered">
<colgroup>
<col style="width:40px;">
<col style="width:60px;">
<col style="width:40px;">
<col style="width:auto;">
</colgroup>
<thead>
<th>색상</th>
<th>USCS분류</th>
<th colspan="2">지층명</th>
</thead>
<tbody>
<tr class="palette-tr-g">
<td rowspan="4" class="palette-td-g"></td>
<td>GW</td>
<td rowspan="4">자갈</td>
<td class="t-left">입도 좋은 자갈</td>
</tr>
<tr class="palette-tr-g">
<td>GP</td>
<td class="t-left">입도 나쁜 자갈</td>
</tr>
<tr class="palette-tr-g">
<td>GM</td>
<td class="t-left">실트질 자갈</td>
</tr>
<tr class="palette-tr-g">
<td>GC</td>
<td class="t-left">점토질 자갈</td>
</tr>
<tr class="palette-tr-s">
<td rowspan="4" class="palette-td-s"></td>
<td>SW</td>
<td rowspan="4">모래</td>
<td class="t-left">입도 좋은 모래</td>
</tr>
<tr class="palette-tr-s">
<td>SP</td>
<td class="t-left">입도 나쁜 모래</td>
</tr>
<tr class="palette-tr-s">
<td>SM</td>
<td class="t-left">실트질 모래</td>
</tr>
<tr class="palette-tr-s">
<td>SC</td>
<td class="t-left">점토질 모래</td>
</tr>
<tr class="palette-tr-mc">
<td rowspan="4" class="palette-td-mc"></td>
<td>ML</td>
<td rowspan="2">실트</td>
<td class="t-left">무기질 실트, 극세사</td>
</tr>
<tr class="palette-tr-mc">
<td>MH</td>
<td class="t-left">무기질 실트</td>
</tr>
<tr class="palette-tr-mc">
<td>CL</td>
<td rowspan="2">점토</td>
<td class="t-left">무기질, 자갈질 점토</td>
</tr>
<tr class="palette-tr-mc">
<td>CH</td>
<td class="t-left">고소성 무기질 점토</td>
</tr>
<tr class="palette-tr-op">
<td rowspan="3" class="palette-td-op"></td>
<td>OH</td>
<td colspan="2" class="t-left">중소성 유기질 점토</td>
</tr>
<tr class="palette-tr-op">
<td>OL</td>
<td colspan="2" class="t-left">유기질 실트</td>
</tr>
<tr class="palette-tr-op">
<td>PT</td>
<td colspan="2" class="t-left">이탄 및 고유기질토</td>
</tr>
<tr class="palette-tr-wr">
<td class="palette-td-wr"></td>
<td>WR</td>
<td colspan="2" class="t-left">풍화암</td>
</tr>
<tr class="palette-tr-sr">
<td class="palette-td-sr"></td>
<td>SR</td>
<td colspan="2" class="t-left">연암</td>
</tr>
<tr class="palette-tr-mr">
<td class="palette-td-mr"></td>
<td>MR</td>
<td colspan="2" class="t-left">보통암</td>
</tr>
<tr class="palette-tr-hr">
<td class="palette-td-hr"></td>
<td>HR</td>
<td colspan="2" class="t-left">경암</td>
</tr>
<tr class="palette-tr-xr">
<td class="palette-td-xr"></td>
<td>XR</td>
<td colspan="2" class="t-left">극경암</td>
</tr>
<tr class="palette-tr-et">
<td class="palette-td-et"></td>
<td>ET</td>
<td colspan="2" class="t-left">기타</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- 컨텐츠 끝 -->
</div>
</section>
<!-- 페이지 컨테이너 끝 -->
</body>
</html>

View File

@ -181,7 +181,7 @@
} }
$(document).ready(function () { $(document).ready(function () {
$("#projectStartDate").kendoDatePicker({ $("#projectStartDate").kendoDatePicker({
value : new Date(), value : new Date("1990-01-01T00:00:00.000+09:00"),
culture: "ko-KR", culture: "ko-KR",
format : "yyyy-MM-dd" format : "yyyy-MM-dd"
}); });
@ -256,7 +256,7 @@
var business_process_data = ${codeJson_business_process_code}; // 사업 공정 코드 var business_process_data = ${codeJson_business_process_code}; // 사업 공정 코드
$(document).ready(function () { $(document).ready(function () {
$("#inputYmdTo").kendoDatePicker({ $("#inputYmdTo").kendoDatePicker({
value : new Date(), value : new Date("1990-01-01T00:00:00.000+09:00"),
culture: "ko-KR", culture: "ko-KR",
format : "yyyy-MM-dd" format : "yyyy-MM-dd"
}); });
@ -368,17 +368,34 @@
<input type="radio" name="sichuSelect" id="polygon" autocomplete="off" onchange="changeInteraction('areaClick');" > 영역선택 <input type="radio" name="sichuSelect" id="polygon" autocomplete="off" onchange="changeInteraction('areaClick');" > 영역선택
</label> </label>
</div> </div>
</li> </li>
<li style="width: 400px;"> <li style="width: 400px;">
<button type="button" id="searchInfo" class="btn btn-ske-blue btn-icon-left btn-icon-search" ><span>정보조회</span></button> <button type="button" id="searchInfo" class="btn btn-ske-blue btn-icon-left btn-icon-search" ><span>정보조회</span></button>
<a href="javascript:void(0);" id="mapDemSearch" class="btn btn-single-toggle" data-toggle="button" aria-pressed="false" autocomplete="off" ><span>DEM 시계열 조회</span></a> <a href="javascript:void(0);" id="mapDemSearch" class="btn btn-single-toggle" data-toggle="button" aria-pressed="false" autocomplete="off" ><span>DEM 시계열 조회</span></a>
<script> <script>
$('#mapDemSearch').click(function(){ $('#mapDemSearch').click(function(){
$(".calendar-group").toggleClass('active'); $(".calendar-group").toggleClass('active');
$(".map-bottom-control-wrapper").toggleClass('active'); $(".map-bottom-control-wrapper").toggleClass('active');
}); });
</script> </script>
</li> </li>
<li style="width: 400px;">
<a href="javascript:showSichudan();" id="borehole-profile" class="btn btn-ske-blue btn-icon-left btn-icon-search" autocomplete="off" ><span>지반단면도</span></a>
<a href="javascript:showSichudan();" id="borehole-log" class="btn btn-ske-blue btn-icon-left btn-icon-search" autocomplete="off" ><span>지반주상도</span></a>
<script>
function showSichudan() {
var codes = getSelectHoleInfo();
if (codes == "") {
alert("시추공을 선택해주세요.");
return;
}
var sichuWin = window.open("/map/sichudanNew.do?code=" + codes, "sichuWin", "scrollbars=no,titlebar=no,width=1024,height=740,left=0,top=0", true);
sichuWin.focus();
}
</script>
</li>
<li> <li>
<div class="form-inline calendar-group"> <div class="form-inline calendar-group">
<div class="input-group"> <div class="input-group">

View File

@ -330,7 +330,7 @@
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$("#inputYmdTo").kendoDatePicker({ $("#inputYmdTo").kendoDatePicker({
value : new Date(), value : new Date("1990-01-01T00:00:00.000+09:00"),
culture: "ko-KR", culture: "ko-KR",
format : "yyyy-MM-dd" format : "yyyy-MM-dd"
}); });

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,86 @@
/* ----------------------------------
Name : cross-section.js
Categorie : 스마트 지반정보 관리시스템
Author : 이상혁
Version : v.1.0
Created : 2022-03-28
Last update : 2022-03-28
-------------------------------------*/
/*==============================================================*/
// 메뉴 사이즈 및 포지션 체크 시작
/*==============================================================*/
// 메뉴 & 컨텐츠 높이값
function setSidebarAndContentHeight() {
var body = $('html');
var crossContentsPanel = $('.cross-contents-panel');
var crossContentsMap = $('.cross-contents-map');
var pageTitleWrapperHeight = $('.page-title-wrapper').outerHeight();
var contentHeight = $('.page-content-inner').height();
var crossContentsPanelHeight = $('.cross-contents-panel').height();
var crossContentsOptionHeight = $('.cross-contents-option').outerHeight();
var viewPortHeight = App.getViewPort().height;
var crossSectionWrapperHeight = contentHeight - pageTitleWrapperHeight;
var crossContentsMapHeight = crossContentsPanelHeight - crossContentsOptionHeight;
crossContentsPanel.css('height', crossSectionWrapperHeight);
crossContentsMap.css('height', crossContentsMapHeight);
}
/*==============================================================*/
// 메뉴 사이즈 및 포지션 체크 끝
/*==============================================================*/
/*==============================================================*/
// RESIZE 될때마다 함수적용 시작
/*==============================================================*/
function setResizeContent() {
setSidebarAndContentHeight();
}
/*==============================================================*/
// RESIZE 될때마다 함수적용 시작
/*==============================================================*/
/*==============================================================*/
// RESIZE 시작
/*==============================================================*/
$(window).resize(function (event) {
setTimeout(function () {
setResizeContent();
}, 0);
event.preventDefault();
});
/*==============================================================*/
// RESIZE 끝
/*==============================================================*/
/*==============================================================*/
// READY 시작
/*==============================================================*/
$(document).ready(function () {
setResizeContent();
// 컨텐츠 div 크기 변경 감지 https://marcj.github.io/css-element-queries/
new ResizeSensor(jQuery('.page-content-inner'), function(){
setSidebarAndContentHeight();
});
});
/*==============================================================*/
// READY 끝
/*==============================================================*/

View File

@ -56,7 +56,8 @@ var instrumentationGraphInfoPopupData;
var predictionGraphInfoPopup; var predictionGraphInfoPopup;
var predictionGraphInfoPopupData; var predictionGraphInfoPopupData;
//var url = 'http://210.120.6.116:9999'; //var url = 'http://210.120.6.116:9999';
var GEOSERVER_URL = 'https://geoserver.smart.dbnt.co.kr'; //var GEOSERVER_URL = 'https://geoserver.smart.dbnt.co.kr';
var GEOSERVER_URL = 'http://localhost:9000';
$(document).ready(function(){ $(document).ready(function(){
// 지도 서비스 실행 // 지도 서비스 실행
@ -1210,6 +1211,7 @@ function addInteraction2(){
} }
function selectFeatureInfo(){ function selectFeatureInfo(){
debugger; //thkim
var businessCode = document.mapForm.businessCode.value; var businessCode = document.mapForm.businessCode.value;
var holeCode = document.mapForm.holeCode.value; var holeCode = document.mapForm.holeCode.value;
var consCode = document.mapForm.consCode.value; var consCode = document.mapForm.consCode.value;
@ -3816,3 +3818,35 @@ function makePredictionData(){
}); });
} }
} }
function getSelectHoleInfo() {
var businessCode = document.mapForm.businessCode.value;
var holeCode = document.mapForm.holeCode.value;
var consCode = document.mapForm.consCode.value;
var searchType = document.mapForm.searchType.value;
var surSetCode = document.mapForm.surSetCode.value;
var verIncCode = document.mapForm.verIncCode.value;
var setExtCode = document.mapForm.setExtCode.value;
var watPreCode = document.mapForm.watPreCode.value;
var watLevCode = document.mapForm.watLevCode.value;
var resultData;
var resultArea = [];
var data = "";
if(document.mapForm.searchType.value == "EachSelect"){
data = businessCode + "%7C%7C" + holeCode;
} else {
resultData = selectFeatures.getArray();
for(var i =0; i<selectFeatures.getLength(); i++){
if( i !== 0 ) {
data += ",";
}
data += resultData[i].A.business_code + "%7C%7C" + resultData[i].A.hole_code;
}
}
return data;
}

View File

@ -0,0 +1,347 @@
/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
* @requires OpenLayers/Control.js
* @requires OpenLayers/Feature/Vector.js
*/
/**
* Class: OpenLayers.Control.DrawFeature
* The DrawFeature control draws point, line or polygon features on a vector
* layer when active.
*
* Inherits from:
* - <OpenLayers.Control>
*/
OpenLayers.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control, {
/**
* Property: layer
* {<OpenLayers.Layer.Vector>}
*/
layer: null,
/**
* Property: callbacks
* {Object} The functions that are sent to the handler for callback
*/
callbacks: null,
/**
* APIProperty: events
* {<OpenLayers.Events>} Events instance for listeners and triggering
* control specific events.
*
* Register a listener for a particular event with the following syntax:
* (code)
* control.events.register(type, obj, listener);
* (end)
*
* Supported event types (in addition to those from <OpenLayers.Control.events>):
* featureadded - Triggered when a feature is added
*/
/**
* APIProperty: multi
* {Boolean} Cast features to multi-part geometries before passing to the
* layer. Default is false.
*/
multi: false,
/**
* APIProperty: featureAdded
* {Function} Called after each feature is added
*/
second : false,
featureAdded: function() {},
/**
* APIProperty: handlerOptions
* {Object} Used to set non-default properties on the control's handler
*/
/**
* Constructor: OpenLayers.Control.DrawFeature
*
* Parameters:
* layer - {<OpenLayers.Layer.Vector>}
* handler - {<OpenLayers.Handler>}
* options - {Object}
*/
/* initialize: function(layer, handler, options) {
console.log("원테스트..111");
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.callbacks = OpenLayers.Util.extend(
{
done: this.drawFeature,
modify: function(vertex, feature) {
this.layer.events.triggerEvent(
"sketchmodified", {vertex: vertex, feature: feature}
);
},
create: function(vertex, feature) {
this.layer.events.triggerEvent(
"sketchstarted", {vertex: vertex, feature: feature}
);
}
},
this.callbacks
);
this.layer = layer;
this.handlerOptions = this.handlerOptions || {};
this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
this.handlerOptions.layerOptions, {
renderers: layer.renderers, rendererOptions: layer.rendererOptions
}
);
if (!("multi" in this.handlerOptions)) {
this.handlerOptions.multi = this.multi;
}
var sketchStyle = this.layer.styleMap && this.layer.styleMap.styles.temporary;
if(sketchStyle) {
this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
this.handlerOptions.layerOptions,
{styleMap: new OpenLayers.StyleMap({"default": sketchStyle})}
);
}
this.handler = new handler(this, this.callbacks, this.handlerOptions);
},*/
/**
* Constructor: OpenLayers.Control.DrawFeature
*
* Parameters:
* layer - {<OpenLayers.Layer.Vector>}
* handler - {<OpenLayers.Handler>}
* options - {Object}
*/
initialize: function(layer, handler, options, second) {
if(second){
this.seconde = second;
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.callbacks = OpenLayers.Util.extend(
{
done: this.drawFeature,
modify: function(vertex, feature) {
this.layer.events.triggerEvent(
"sketchmodified", {vertex: vertex, feature: feature}
);
},
create: function(vertex, feature) {
this.layer.events.triggerEvent(
"sketchstarted", {vertex: vertex, feature: feature}
);
}
},
this.callbacks
);
this.layer = layer;
this.handlerOptions = this.handlerOptions || {};
this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
this.handlerOptions.layerOptions, {
renderers: layer.renderers, rendererOptions: layer.rendererOptions
}
);
if (!("multi" in this.handlerOptions)) {
this.handlerOptions.multi = this.multi;
}
var sketchStyle = this.layer.styleMap && this.layer.styleMap.styles.temporary;
if(sketchStyle) {
this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
this.handlerOptions.layerOptions,
{styleMap: new OpenLayers.StyleMap({"default": sketchStyle})}
);
}
this.handler = new handler(this, this.callbacks, this.handlerOptions);
}
else{
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.callbacks = OpenLayers.Util.extend(
{
done: this.drawFeature,
modify: function(vertex, feature) {
this.layer.events.triggerEvent(
"sketchmodified", {vertex: vertex, feature: feature}
);
},
create: function(vertex, feature) {
this.layer.events.triggerEvent(
"sketchstarted", {vertex: vertex, feature: feature}
);
}
},
this.callbacks
);
this.layer = layer;
this.handlerOptions = this.handlerOptions || {};
this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
this.handlerOptions.layerOptions, {
renderers: layer.renderers, rendererOptions: layer.rendererOptions
}
);
if (!("multi" in this.handlerOptions)) {
this.handlerOptions.multi = this.multi;
}
var sketchStyle = this.layer.styleMap && this.layer.styleMap.styles.temporary;
if(sketchStyle) {
this.handlerOptions.layerOptions = OpenLayers.Util.applyDefaults(
this.handlerOptions.layerOptions,
{styleMap: new OpenLayers.StyleMap({"default": sketchStyle})}
);
}
this.handler = new handler(this, this.callbacks, this.handlerOptions);
}
},
/**
* Method: drawFeature
*/
drawFeature: function(geometry) {
var feature = new OpenLayers.Feature.Vector(geometry);
var proceed = this.layer.events.triggerEvent(
"sketchcomplete", {feature: feature}
);
if(proceed !== false) {
feature.state = OpenLayers.State.INSERT;
this.layer.addFeatures([feature]);
this.featureAdded(feature);
this.events.triggerEvent("featureadded",{feature : feature});
}
},
/**
* Method: drawFeature
*/
drawFeature2: function(evt,size) {
this.handler.activate();
this.handler.fixedRadius = !!(this.handler.radius);
var maploc = this.handler.layer.getLonLatFromViewPortPx(evt.xy);
this.handler.origin = new OpenLayers.Geometry.Point(maploc.lon, maploc.lat);
// create the new polygon
if(!this.handler.fixedRadius || this.handler.irregular) {
// smallest radius should not be less one pixel in map units
// VML doesn't behave well with smaller
this.handler.radius = this.handler.map.getResolution();
}
if(this.handler.persist) {
this.handler.clear();
}
this.handler.clear();
this.handler.feature = new OpenLayers.Feature.Vector();
this.handler.radius = size;
this.handler.createGeometry();
this.handler.callback("create", [this.handler.origin, this.handler.feature]);
this.handler.layer.addFeatures([this.handler.feature], {silent: true});
this.handler.layer.drawFeature(this.handler.feature, this.handler.style);
},drawFeatureSize : function(size){
this.handler.radius = size;
},
/**
* APIMethod: insertXY
* Insert a point in the current sketch given x & y coordinates.
*
* Parameters:
* x - {Number} The x-coordinate of the point.
* y - {Number} The y-coordinate of the point.
*/
insertXY: function(x, y) {
if (this.handler && this.handler.line) {
this.handler.insertXY(x, y);
}
},
/**
* APIMethod: insertDeltaXY
* Insert a point given offsets from the previously inserted point.
*
* Parameters:
* dx - {Number} The x-coordinate offset of the point.
* dy - {Number} The y-coordinate offset of the point.
*/
insertDeltaXY: function(dx, dy) {
if (this.handler && this.handler.line) {
this.handler.insertDeltaXY(dx, dy);
}
},
/**
* APIMethod: insertDirectionLength
* Insert a point in the current sketch given a direction and a length.
*
* Parameters:
* direction - {Number} Degrees clockwise from the positive x-axis.
* length - {Number} Distance from the previously drawn point.
*/
insertDirectionLength: function(direction, length) {
if (this.handler && this.handler.line) {
this.handler.insertDirectionLength(direction, length);
}
},
/**
* APIMethod: insertDeflectionLength
* Insert a point in the current sketch given a deflection and a length.
* The deflection should be degrees clockwise from the previously
* digitized segment.
*
* Parameters:
* deflection - {Number} Degrees clockwise from the previous segment.
* length - {Number} Distance from the previously drawn point.
*/
insertDeflectionLength: function(deflection, length) {
if (this.handler && this.handler.line) {
this.handler.insertDeflectionLength(deflection, length);
}
},
/**
* APIMethod: undo
* Remove the most recently added point in the current sketch geometry.
*
* Returns:
* {Boolean} An edit was undone.
*/
undo: function() {
return this.handler.undo && this.handler.undo();
},
/**
* APIMethod: redo
* Reinsert the most recently removed point resulting from an <undo> call.
* The undo stack is deleted whenever a point is added by other means.
*
* Returns:
* {Boolean} An edit was redone.
*/
redo: function() {
return this.handler.redo && this.handler.redo();
},
/**
* APIMethod: finishSketch
* Finishes the sketch without including the currently drawn point.
* This method can be called to terminate drawing programmatically
* instead of waiting for the user to end the sketch.
*/
finishSketch: function() {
this.handler.finishGeometry();
},
/**
* APIMethod: cancel
* Cancel the current sketch. This removes the current sketch and keeps
* the drawing control active.
*/
cancel: function() {
this.handler.cancel();
},
CLASS_NAME: "OpenLayers.Control.DrawFeature"
});

View File

@ -0,0 +1,892 @@
/* Copyright 2011-2015 Xavier Mamano, http://github.com/jorix/OL-DynamicMeasure
* Published under MIT license. */
/**
* @requires OpenLayers/Control/Measure.js
* @requires OpenLayers/Rule.js
* @requires OpenLayers/StyleMap.js
*/
/**
* Class: OpenLayers.Control.DynamicMeasure
* Allows for drawing of features for measurements.
*
* Inherits from:
* - <OpenLayers.Control.Measure>
*/
OpenLayers.Control.DynamicMeasure = OpenLayers.Class(
OpenLayers.Control.Measure, {
/**
* APIProperty: accuracy
* {Integer} Digits measurement accuracy, default is 5.
*/
accuracy: 5,
/**
* APIProperty: persist
* {Boolean} Keep the temporary measurement after the
* measurement is complete. The measurement will persist until a new
* measurement is started, the control is deactivated, or <cancel> is
* called. Default is true.
*/
persist: true,
/**
* APIProperty: styles
* {Object} Alterations of the default styles of the points lines poligons
* and labels text, could use keys: "Point", "Line",
* "Polygon", "labelSegments", "labelHeading", "labelLength" and
* "labelArea". Default is <OpenLayers.Control.DynamicMeasure.styles>.
*/
styles: null,
/**
* APIProperty: positions
* {Object} Alterations of the default position of the labels, could use
* keys: "labelSegments" & "labelHeading", with values "start" "middle"
* and "end" refered of the current segment; and keys: "labelLength" &
* "labelArea" with additional values "center" (of the feature) and
* "initial" (initial point of the feature) and also mentioned previus
* values. Default is
* <OpenLayers.Control.DynamicMeasure.positions>.
*/
positions: null,
/**
* APIProperty: maxSegments
* {Integer|Null} Maximum number of visible segments measures, default is 1.
*
* To avoid soiling the track is desirable to reduce the number of visible
* segments.
*/
maxSegments: 1,
/**
* APIProperty: maxHeadings
* {Integer|Null} Maximum number of visible headings measures, default is 1.
*
* To avoid soiling the track is desirable to reduce the number of visible
* segments.
*/
maxHeadings: 1,
/**
* APIProperty: layerSegmentsOptions
* {Object} Any optional properties to be set on the
* layer of <layerSegments> of the lengths of the segments. If set to
* null the layer does not act.
*
* If `styleMap` options is set then the key "labelSegments" of the
* `styles` option is ignored.
*/
layerSegmentsOptions: undefined,
/**
* APIProperty: layerHeadingOptions
* {Object} Any optional properties to be set on the
* layer of <layerHeading> of the angle of the segments. If set to
* null the layer does not act. Default is null, set to {} to use a
* <layerHeading> to show headings.
*
* If `styleMap` options is set then the key "labelHeading" of the
* `styles` option is ignored.
*/
layerHeadingOptions: null,
/**
* APIProperty: layerLengthOptions
* {Object} Any optional properties to be set on the
* layer of <layerLength> of the total length. If set to null the layer
* does not act.
*
* If `styleMap` option is set then the key "labelLength" of the
* `styles` option is ignored.
*/
layerLengthOptions: undefined,
/**
* APIProperty: layerAreaOptions
* {Object} Any optional properties to be set on the
* layer of <layerArea> of the total area. If set to null the layer does
* not act.
*
* If `styleMap` is set then the key "labelArea" of the `styles` option
* is ignored.
*/
layerAreaOptions: undefined,
/**
* APIProperty: drawingLayer
* {<OpenLayers.Layer.Vector>} Drawing layer to store the drawing when
* finished.
*/
drawingLayer: null,
/**
* APIProperty: multi
* {Boolean} Cast features to multi-part geometries before passing to the
* drawing layer, only used if declared a <drawingLayer>.
* Default is false.
*/
multi: false,
/**
* Property: layerSegments
* {<OpenLayers.Layer.Vector>} The temporary drawing layer to show the
* length of the segments.
*/
layerSegments: null,
/**
* Property: layerLength
* {<OpenLayers.Layer.Vector>} The temporary drawing layer to show total
* length.
*/
layerLength: null,
/**
* Property: layerArea
* {<OpenLayers.Layer.Vector>} The temporary drawing layer to show total
* area.
*/
layerArea: null,
/**
* Property: dynamicObj
* {Object} Internal use.
*/
dynamicObj: null,
/**
* Property: isArea
* {Boolean} Internal use.
*/
isArea: null,
handler2 : null,
/**
* Constructor: OpenLayers.Control.Measure
*
* Parameters:
* handler - {<OpenLayers.Handler>}
* options - {Object}
*
* Valid options:
* accuracy - {Integer} Digits measurement accuracy, default is 5.
* styles - {Object} Alterations of the default styles of the points lines
* poligons and labels text, could use keys: "Point",
* "Line", "Polygon", "labelSegments", "labelLength", "labelArea".
* positions - {Object} Alterations of the default position of the labels.
* handlerOptions - {Object} Used to set non-default properties on the
* control's handler. If `layerOptions["styleMap"]` is set then the
* keys: "Point", "Line" and "Polygon" of the `styles` option
* are ignored.
* layerSegmentsOptions - {Object} Any optional properties to be set on the
* layer of <layerSegments> of the lengths of the segments. If
* `styleMap` is set then the key "labelSegments" of the `styles` option
* is ignored. If set to null the layer does not act.
* layerLengthOptions - {Object} Any optional properties to be set on the
* layer of <layerLength> of the total length. If
* `styleMap` is set then the key "labelLength" of the `styles` option
* is ignored. If set to null the layer does not act.
* layerAreaOptions - {Object} Any optional properties to be set on the
* layer of <layerArea> of the total area. If
* `styleMap` is set then the key "labelArea" of the `styles` option
* is ignored. If set to null the layer does not act.
* layerHeadingOptions - {Object} Any optional properties to be set on the
* layer of <layerHeading> of the angle of the segments. If
* `styleMap` is set then the key "labelHeading" of the `styles` option
* is ignored. If set to null the layer does not act.
* drawingLayer - {<OpenLayers.Layer.Vector>} Optional drawing layer to
* store the drawing when finished.
* multi - {Boolean} Cast features to multi-part geometries before passing
* to the drawing layer
*/
initialize: function(handler, options) {
this.handler2 = handler;
// Manage options
options = options || {};
// handlerOptions: persist & multi
options.handlerOptions = OpenLayers.Util.extend(
{persist: !options.drawingLayer}, options.handlerOptions
);
if (options.drawingLayer && !('multi' in options.handlerOptions)) {
options.handlerOptions.multi = options.multi;
}
// * styles option
if (options.drawingLayer) {
var sketchStyle = options.drawingLayer.styleMap &&
options.drawingLayer.styleMap.styles.temporary;
if (sketchStyle) {
options.handlerOptions
.layerOptions = OpenLayers.Util.applyDefaults(
options.handlerOptions.layerOptions, {
styleMap: new OpenLayers.StyleMap({
'default': sketchStyle
})
}
);
}
}
var optionsStyles = options.styles || {};
options.styles = optionsStyles;
var defaultStyles = OpenLayers.Control.DynamicMeasure.styles;
// * * styles for handler layer.
if (!options.handlerOptions.layerOptions ||
!options.handlerOptions.layerOptions.styleMap) {
// use the style option for layerOptions of the handler.
var style = new OpenLayers.Style(null, {rules: [
new OpenLayers.Rule({symbolizer: {
'Point': OpenLayers.Util.applyDefaults(
optionsStyles.Point, defaultStyles.Point),
'Line': OpenLayers.Util.applyDefaults(
optionsStyles.Line, defaultStyles.Line),
'Polygon': OpenLayers.Util.applyDefaults(
optionsStyles.Polygon, defaultStyles.Polygon)
}})
]});
options.handlerOptions = options.handlerOptions || {};
options.handlerOptions.layerOptions =
options.handlerOptions.layerOptions || {};
options.handlerOptions.layerOptions.styleMap =
new OpenLayers.StyleMap({'default': style});
}
// * positions option
options.positions = OpenLayers.Util.applyDefaults(
options.positions,
OpenLayers.Control.DynamicMeasure.positions
);
// force some handler options
options.callbacks = options.callbacks || {};
if (options.drawingLayer) {
OpenLayers.Util.applyDefaults(options.callbacks, {
create: function(vertex, feature) {
this.callbackCreate(vertex, feature);
this.drawingLayer.events.triggerEvent(
'sketchstarted', {vertex: vertex, feature: feature}
);
},
modify: function(vertex, feature) {
this.callbackModify(vertex, feature);
this.drawingLayer.events.triggerEvent(
'sketchmodified', {vertex: vertex, feature: feature}
);
},
done: function(geometry) {
this.callbackDone(geometry);
this.drawFeature(geometry);
}
});
}
OpenLayers.Util.applyDefaults(options.callbacks, {
create: this.callbackCreate,
point: this.callbackPoint,
cancel: this.callbackCancel,
done: this.callbackDone,
modify: this.callbackModify,
redo: this.callbackRedo,
undo: this.callbackUndo
});
// do a trick with the handler to avoid blue background in freehand.
var _self = this;
var oldOnselectstart = document.onselectstart ?
document.onselectstart : OpenLayers.Function.True;
var handlerTuned = OpenLayers.Class(handler, {
down: function(evt) {
document.onselectstart = OpenLayers.Function.False;
return handler.prototype.down.apply(this, arguments);
},
up: function(evt) {
document.onselectstart = oldOnselectstart;
return handler.prototype.up.apply(this, arguments);
},
move: function(evt) {
if (!this.mouseDown) {
document.onselectstart = oldOnselectstart;
}
return handler.prototype.move.apply(this, arguments);
},
move2: function(evt) {
document.onselectstart = oldOnselectstart;
return handler.prototype.move.apply(this, arguments);
},
mouseout: function(evt) {
if (OpenLayers.Util.mouseLeft(evt, this.map.viewPortDiv)) {
if (this.mouseDown) {
document.onselectstart = oldOnselectstart;
}
}
return handler.prototype.mouseout.apply(this, arguments);
},
finalize: function() {
document.onselectstart = oldOnselectstart;
handler.prototype.finalize.apply(this, arguments);
}
}, {
undo: function() {
var undone = handler.prototype.undo.call(this);
if (undone) {
this.callback('undo',
[this.point.geometry, this.getSketch(), true]);
}
return undone;
},
redo: function() {
var redone = handler.prototype.redo.call(this);
if (redone) {
this.callback('redo',
[this.point.geometry, this.getSketch(), true]);
}
return redone;
}
});
// ... and call the constructor
OpenLayers.Control.Measure.prototype.initialize.call(
this, handlerTuned, options);
this.isArea = handler.prototype.polygon !== undefined; // duck typing
},
/**
* APIMethod: destroy
*/
destroy: function() {
this.deactivate();
OpenLayers.Control.Measure.prototype.destroy.apply(this, arguments);
},
/**
* Method: draw
* This control does not have HTML component, so this method should
* be empty.
*/
draw: function() {},
/**
* APIMethod: activate
*/
activate: function() {
var response = OpenLayers.Control.Measure.prototype.activate.apply(
this, arguments);
if (response) {
// Create dynamicObj
this.dynamicObj = {};
// Create layers
var _optionsStyles = this.styles || {},
_defaultStyles = OpenLayers.Control.DynamicMeasure.styles,
_self = this;
var _create = function(styleName, initialOptions) {
if (initialOptions === null) {
return null;
}
var options = OpenLayers.Util.extend({
displayInLayerSwitcher: false,
calculateInRange: OpenLayers.Function.True
// ?? ,wrapDateLine: this.citeCompliant
}, initialOptions);
if (!options.styleMap) {
var style = _optionsStyles[styleName];
options.styleMap = new OpenLayers.StyleMap({
'default': OpenLayers.Util.applyDefaults(style,
_defaultStyles[styleName])
});
}
var layer = new OpenLayers.Layer.Vector(
_self.CLASS_NAME + ' ' + styleName, options);
_self.map.addLayer(layer);
return layer;
};
this.layerSegments =
_create('labelSegments', this.layerSegmentsOptions);
this.layerHeading =
_create('labelHeading', this.layerHeadingOptions);
this.layerLength = _create('labelLength', this.layerLengthOptions);
if (this.isArea) {
this.layerArea = _create('labelArea', this.layerAreaOptions);
}
}
return response;
},
/**
* APIMethod: deactivate
*/
deactivate: function() {
var response = OpenLayers.Control.Measure.prototype.deactivate.apply(
this, arguments);
if (response) {
if (this.layerSegments) {
this.layerSegments.destroy();
}
if (this.layerLength) {
this.layerLength.destroy();
}
if (this.layerHeading) {
this.layerHeading.destroy();
}
if (this.layerArea) {
this.layerArea.destroy();
}
this.dynamicObj = null;
this.layerSegments = null;
this.layerLength = null;
this.layerHeading = null;
this.layerArea = null;
}
return response;
},
/**
* APIMethod: setImmediate
* Sets the <immediate> property. Changes the activity of immediate
* measurement.
*/
setImmediate: function(immediate) {
this.immediate = immediate;
},
/**
* Method: callbackCreate
*/
callbackCreate: function() {
var dynamicObj = this.dynamicObj;
dynamicObj.drawing = false;
dynamicObj.freehand = false;
dynamicObj.fromIndex = 0;
dynamicObj.countSegments = 0;
},
/**
* Method: callbackCancel
*/
callbackCancel: function() {
this.destroyLabels();
},
/**
* Method: callbackDone
* Called when the measurement sketch is done.
*
* Parameters:
* geometry - {<OpenLayers.Geometry>}
*/
callbackDone: function(geometry) {
this.measureComplete(geometry);
if (!this.persist) {
this.destroyLabels();
}
},
/**
* Method: drawFeature
*/
drawFeature: function(geometry) {
var feature = new OpenLayers.Feature.Vector(geometry);
var proceed = this.drawingLayer.events.triggerEvent(
'sketchcomplete', {feature: feature}
);
if (proceed !== false) {
feature.state = OpenLayers.State.INSERT;
this.drawingLayer.addFeatures([feature]);
if (this.featureAdded) {
// for compatibility
this.featureAdded(feature);
}
this.events.triggerEvent('featureadded', {feature: feature});
}
},
/**
* Method: callbackCancel
*/
destroyLabels: function() {
if (this.layerSegments) {
this.layerSegments.destroyFeatures(null, {silent: true});
}
if (this.layerLength) {
this.layerLength.destroyFeatures(null, {silent: true});
}
if (this.layerHeading) {
this.layerHeading.destroyFeatures(null, {silent: true});
}
if (this.layerArea) {
this.layerArea.destroyFeatures(null, {silent: true});
}
},
/**
* Method: callbackPoint
*/
callbackPoint: function(point, geometry) {
var dynamicObj = this.dynamicObj;
if (!dynamicObj.drawing) {
this.destroyLabels();
}
if (!this.handler.freehandMode(this.handler.evt)) {
dynamicObj.fromIndex = this.handler.getCurrentPointIndex() - 1;
dynamicObj.freehand = false;
dynamicObj.countSegments++;
} else if (!dynamicObj.freehand) {
// freehand has started
dynamicObj.fromIndex = this.handler.getCurrentPointIndex() - 1;
dynamicObj.freehand = true;
dynamicObj.countSegments++;
}
this.measurePartial(point, geometry);
dynamicObj.drawing = true;
},
/**
* Method: callbackUndo
*/
callbackUndo: function(point, feature) {
var _self = this,
undoLabel = function(layer) {
if (layer) {
var features = layer.features,
lastSegmentIndex = features.length - 1,
lastSegment = features[lastSegmentIndex],
lastSegmentFromIndex = lastSegment.attributes.from,
lastPointIndex = _self.handler.getCurrentPointIndex();
if (lastSegmentFromIndex >= lastPointIndex) {
var dynamicObj = _self.dynamicObj;
layer.destroyFeatures(lastSegment);
lastSegment = features[lastSegmentIndex - 1];
dynamicObj.fromIndex = lastSegment.attributes.from;
dynamicObj.countSegments = features.length;
}
}
};
undoLabel(this.layerSegments);
undoLabel(this.layerHeading);
this.callbackModify(point, feature, true);
},
/**
* Method: callbackRedo
*/
callbackRedo: function(point, feature) {
var line = this.handler.line.geometry,
currIndex = this.handler.getCurrentPointIndex();
var dynamicObj = this.dynamicObj;
this.showLabelSegment(
dynamicObj.countSegments,
dynamicObj.fromIndex,
line.components.slice(dynamicObj.fromIndex, currIndex)
);
dynamicObj.fromIndex = this.handler.getCurrentPointIndex() - 1;
dynamicObj.countSegments++;
this.callbackModify(point, feature, true);
},
/**
* Method: callbackModify
*/
callbackModify: function(point, feature, drawing) {
if (this.immediate) {
this.measureImmediate(point, feature, drawing);
}
var dynamicObj = this.dynamicObj;
if (dynamicObj.drawing === false) {
return;
}
var line = this.handler.line.geometry,
currIndex = this.handler.getCurrentPointIndex();
if (!this.handler.freehandMode(this.handler.evt) &&
dynamicObj.freehand) {
// freehand has stopped
dynamicObj.fromIndex = currIndex - 1;
dynamicObj.freehand = false;
dynamicObj.countSegments++;
}
// total measure
var totalLength = this.getBestLength(line);
if (!totalLength[0]) {
return;
}
var positions = this.positions,
positionGet = {
center: function() {
var center = feature.geometry.getBounds().clone();
center.extend(point);
center = center.getCenterLonLat();
return [center.lon, center.lat];
},
initial: function() {
var initial = line.components[0];
return [initial.x, initial.y];
},
start: function() {
var start = line.components[dynamicObj.fromIndex];
return [start.x, start.y];
},
middle: function() {
var start = line.components[dynamicObj.fromIndex];
return [(start.x + point.x) / 2, (start.y + point.y) / 2];
},
end: function() {
return [point.x, point.y];
}
};
if (this.layerLength) {
this.showLabel(
this.layerLength, 1, 0, totalLength,
positionGet[positions.labelLength](), 1);
}
if (this.isArea) {
if (this.layerArea) {
var totalArea = this.getBestArea(feature.geometry);
if (totalArea[0] || this.layerArea.features.length) {
this.showLabel(this.layerArea, 1, 0,
totalArea, positionGet[positions.labelArea](), 1);
}
}
if (this.showLabelSegment(
1, 0, [line.components[currIndex], line.components[0]])) {
dynamicObj.countSegments++;
}
}
this.showLabelSegment(
dynamicObj.countSegments,
dynamicObj.fromIndex,
line.components.slice(dynamicObj.fromIndex, currIndex + 1)
);
},
/**
* Function: showLabelSegment
*
* Parameters:
* labelsNumber- {Integer} Number of the labels to be on the label layer.
* fromIndex - {Integer} Index of the last point on the measured feature.
* points - Array({<OpenLayers.Geometry.Point>})
*
* Returns:
* {Boolean}
*/
showLabelSegment: function(labelsNumber, fromIndex, _points) {
var layerSegments = this.layerSegments,
layerHeading = this.layerHeading;
if (!layerSegments && !layerHeading) {
return false;
}
// clone points
var points = [],
pointsLen = _points.length;
for (var i = 0; i < pointsLen; i++) {
points.push(_points[i].clone());
}
var segmentLength =
this.getBestLength(new OpenLayers.Geometry.LineString(points));
if (segmentLength[0] == 0) {
return false;
}
var positions = this.positions,
from = points[0],
to = points[pointsLen - 1],
positionGet = {
start: function() {
return [from.x, from.y];
},
middle: function() {
return [(from.x + to.x) / 2, (from.y + to.y) / 2];
},
end: function() {
return [to.x, to.y];
}
},
created = false;
if (layerSegments) {
created = this.showLabel(layerSegments, labelsNumber, fromIndex,
segmentLength,
positionGet[positions.labelSegments](),
this.maxSegments);
}
if (layerHeading) {
var heading = Math.atan2(to.y - from.y, to.x - from.x),
bearing = 90 - heading * 180 / Math.PI;
if (bearing < 0) {
bearing += 360;
}
created = this.showLabel(layerHeading,
labelsNumber, fromIndex,
[bearing, '°'],
positionGet[positions.labelHeading](),
this.maxHeadings) || created;
}
return created;
},
/**
* Function: showLabel
*
* Parameters:
* layer - {<OpenLayers.Layer.Vector>} Layer of the labels.
* labelsNumber- {Integer} Number of the labels to be on the label layer.
* fromIndex - {Integer} Index of the last point on the measured feature.
* measure - Array({Float|String}) Measure provided by OL Measure control.
* points - Array({Fload}) Array of x and y of the point to draw the label.
* maxSegments - {Integer|Null} Maximum number of visible segments measures
*
* Returns:
* {Boolean}
*/
showLabel: function(
layer, labelsNumber, fromIndex, measure, xy, maxSegments) {
var featureLabel, featureAux,
features = layer.features;
if (features.length < labelsNumber) {
// add a label
featureLabel = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(xy[0], xy[1]),
{from: fromIndex}
);
this.setMesureAttributes(featureLabel.attributes, measure);
layer.addFeatures([featureLabel]);
if (maxSegments !== null) {
var hide = (features.length - maxSegments) - 1;
if (hide >= 0) {
featureAux = features[hide];
featureAux.style = {display: 'none'};
layer.drawFeature(featureAux);
}
}
return true;
} else {
// update a label
featureLabel = features[labelsNumber - 1];
var geometry = featureLabel.geometry;
geometry.x = xy[0];
geometry.y = xy[1];
geometry.clearBounds();
this.setMesureAttributes(featureLabel.attributes, measure);
layer.drawFeature(featureLabel);
if (maxSegments !== null) {
var show = (features.length - maxSegments);
if (show >= 0) {
featureAux = features[show];
if (featureAux.style) {
delete featureAux.style;
layer.drawFeature(featureAux);
}
}
}
return false;
}
},
/**
* Method: setMesureAttributes
* Format measure[0] with digits of <accuracy>. Could internationalize the
* format customizing <OpenLayers.Number.thousandsSeparator> and
* <OpenLayers.Number.decimalSeparator>
*
* Parameters:
* attributes - {object} Target attributes.
* measure - Array({*})
*/
setMesureAttributes: function(attributes, measure) {
attributes.measure = OpenLayers.Number.format(
Number(measure[0].toPrecision(this.accuracy)), null);
attributes.units = measure[1];
},
CLASS_NAME: 'OpenLayers.Control.DynamicMeasure'
});
/**
* Constant: OpenLayers.Control.DynamicMeasure.styles
* Contains the keys: "Point", "Line", "Polygon",
* "labelSegments", "labelHeading", "labelLength" and
* "labelArea" as a objects with style keys.
*/
OpenLayers.Control.DynamicMeasure.styles = {
'Point': {
pointRadius: 4,
graphicName: 'square',
fillColor: 'white',
fillOpacity: 1,
strokeWidth: 1,
strokeOpacity: 1,
strokeColor: '#333333'
},
'Line': {
strokeWidth: 2,
strokeOpacity: 1,
strokeColor: '#666666',
strokeDashstyle: 'dash'
},
'Polygon': {
strokeWidth: 2,
strokeOpacity: 1,
strokeColor: '#666666',
strokeDashstyle: 'solid',
fillColor: 'white',
fillOpacity: 0.3
},
labelSegments: {
label: '${measure} ${units}',
fontSize: '11px',
fontColor: '#800517',
fontFamily: 'Verdana',
labelOutlineColor: '#dddddd',
labelAlign: 'cm',
labelOutlineWidth: 2
},
labelLength: {
label: '${measure} ${units}\n',
fontSize: '11px',
fontWeight: 'bold',
fontColor: '#800517',
fontFamily: 'Verdana',
labelOutlineColor: '#dddddd',
labelAlign: 'lb',
labelOutlineWidth: 3
},
labelArea: {
label: '${measure}\n${units}2\n',
fontSize: '11px',
fontWeight: 'bold',
fontColor: '#800517',
fontFamily: 'Verdana',
labelOutlineColor: '#dddddd',
labelAlign: 'cm',
labelOutlineWidth: 3
},
labelHeading: {
label: '${measure} ${units}',
fontSize: '11px',
fontColor: '#800517',
fontFamily: 'Verdana',
labelOutlineColor: '#dddddd',
labelAlign: 'cm',
labelOutlineWidth: 3
}
};
/**
* Constant: OpenLayers.Control.DynamicMeasure.positions
* Contains the keys: "labelSegments", "labelHeading",
* "labelLength" and "labelArea" as a strings with values 'start',
* 'middle' and 'end' allowed for all keys (refered of last segment) and
* 'center' and 'initial' (refered of the measured feature and only allowed
* for "labelLength" and "labelArea" keys)
*/
OpenLayers.Control.DynamicMeasure.positions = {
labelSegments: 'middle',
labelLength: 'end',
labelArea: 'center',
labelHeading: 'start'
};

View File

@ -0,0 +1,288 @@
// +---------------------------------------------------------------+
// | DO NOT REMOVE THIS |
// +---------------------------------------------------------------+
// | DynamicTree 1.5.2 |
// | Author: Cezary Tomczak [www.gosu.pl] |
// | Free for any use as long as all copyright messages are intact |
// +---------------------------------------------------------------+
function DynamicTree(id) {
this.foldersAsLinks = false;
this.path = "/images/map/";
this.img = {
"branch": "tree-branch.gif",
"doc": "tree-doc.gif",
"folder": "tree-folder.gif",
"folderOpen": "tree-folder-open.gif",
"leaf": "tree-leaf.gif",
"leafEnd": "tree-leaf-end.gif",
"node": "tree-node.gif",
"nodeEnd": "tree-node-end.gif",
"nodeOpen": "tree-node-open.gif",
"nodeOpenEnd": "tree-node-open-end.gif" };
this.cookiePath = "";
this.cookieDomain = "";
this.init = function() {
var p, img;
for (p in this.img) {
this.img[p] = this.path + this.img[p];
}
for (p in this.img) {
this.imgObjects.push(new Image());
this.imgObjects.getLast().src = this.img[p];
this.img[p] = this.imgObjects.getLast().src;
}
this.parse(document.getElementById(this.id).childNodes, this.tree, 1);
//this.loadState();
if (window.addEventListener) { window.addEventListener("unload", function(e) { self.saveState(); }, false); }
else if (window.attachEvent) { window.attachEvent("onunload", function(e) { self.saveState(); }); }
this.updateHtml();
};
this.parse = function(nodes, tree) {
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].nodeType == 1) {
if (!nodes[i].className) { continue; }
if (!nodes[i].id) {
nodes[i].id = this.id + "-" + (++this.count);
}
var node = new Node();
node.id = nodes[i].id;
if (nodes[i].firstChild) {
if (nodes[i].firstChild.tagName == "A") {
var a = nodes[i].firstChild;
if (a.firstChild) {
node.text = a.firstChild.nodeValue.trim();
}
if (a.href) {
node.href = a.href;
}
if (a.title) {
node.title = a.title;
}
if (a.target) {
node.target = a.target;
}
} else {
node.text = nodes[i].firstChild.nodeValue.trim();
}
}
node.parentNode = tree;
node.childNodes = (nodes[i].className == "folder" ? new Array() : null);
node.isDoc = (nodes[i].className == "doc");
node.isFolder = (nodes[i].className == "folder");
tree.childNodes.push(node);
this.allNodes[node.id] = node;
}
if (nodes[i].nodeType == 1 && nodes[i].childNodes) {
this.parse(nodes[i].childNodes, tree.childNodes.getLast());
}
}
};
this.nodeClick = function(id) {
var el = document.getElementById(id+"-section");
var node = document.getElementById(id+"-node");
var icon = document.getElementById(id+"-icon");
if (el.style.display == "block") {
el.style.display = "none";
if (this.allNodes[id].isLast()) { node.src = this.img.nodeEnd; }
else { node.src = this.img.node; }
icon.src = this.img.folder;
this.opened.removeByValue(id);
} else {
el.style.display = "block";
if (this.allNodes[id].isLast()) { node.src = this.img.nodeOpenEnd; }
else { node.src = this.img.nodeOpen; }
icon.src = this.img.folderOpen;
this.opened.push(id);
}
/* fix ie bug - images not showing */
if (node.outerHTML) { node.outerHTML = node.outerHTML; }
if (icon.outerHTML) { icon.outerHTML = icon.outerHTML; }
};
this.toHtml = function() {
var s = "";
var nodes = this.tree.childNodes;
for (var i = 0; i < nodes.length; i++) {
s += nodes[i].toHtml();
}
return s;
};
this.updateHtml = function() {
document.getElementById(this.id).innerHTML = this.toHtml();
};
this.loadState = function() {
var opened = this.cookie.get("opened");
if (opened) {
this.opened = opened.split("|");
this.opened.filter(function(id) { return self.allNodes[id] && self.allNodes[id].isFolder && self.allNodes[id].childNodes.length; });
}
};
this.saveState = function() {
if (this.opened.length) {
this.cookie.set("opened", this.opened.join("|"), 3600*24*30, this.cookiePath, this.cookieDomain);
} else {
this.clearState();
}
};
this.clearState = function() {
this.cookie.del("opened");
};
function Node(id, text, parentNode, childNodes, isDoc, isFolder) {
this.id = id;
this.text = text;
this.parentNode = parentNode;
this.childNodes = childNodes;
this.isDoc = isDoc;
this.isFolder = isFolder;
this.href = "";
this.title = "";
this.target = "";
this.isLast = function() {
if (this.parentNode) {
return this.parentNode.childNodes.getLast().id == this.id;
}
throw "DynamicTree.Node.isLast() failed, this func cannot be called for the root element";
};
this.toHtml = function() {
var s = '<div class="?" id="?">'.format((this.isFolder ? "folder" : "doc"), this.id);
if (this.isFolder) {
var nodeIcon;
if (this.childNodes.length) {
nodeIcon = (self.opened.contains(this.id) ? (this.isLast() ? self.img.nodeOpenEnd : self.img.nodeOpen) : (this.isLast() ? self.img.nodeEnd : self.img.node));
} else {
nodeIcon = (this.isLast() ? self.img.leafEnd : self.img.leaf);
}
var icon = ((self.opened.contains(this.id) && this.childNodes.length) ? self.img.folderOpen : self.img.folder);
if (this.childNodes.length) { s += '<a href="javascript:void(0)" onclick="?.nodeClick(\'?\')">'.format(self.id, this.id); }
s += '<img id="?-node" src="?" width="18" height="18" alt="" />'.format(this.id, nodeIcon);
if (this.childNodes.length) { s += '</a>'; }
s += '<img id="?-icon" src="?" width="18" height="18" alt="" />'.format(this.id, icon);
if (self.foldersAsLinks) {
s += '<a href="?"??>?</a>'.format(this.href, (this.title ? ' title="?"'.format(this.title) : ""), (this.target ? ' target="?"'.format(this.target) : ""), this.text);
} else {
s += this.text;
}
if (this.childNodes.length) {
s += '<div class="section?" id="?-section"'.format((this.isLast() ? " last" : ""), this.id);
if (self.opened.contains(this.id)) {
s += ' style="display: block;"'; }
s += '>';
for (var i = 0; i < this.childNodes.length; i++) {
s += this.childNodes[i].toHtml();
}
s += '</div>';
}
}
if (this.isDoc) {
//s += '<img src="?" width="18" height="18" alt="" /><img src="?" width="18" height="18" alt="" />'.format((this.isLast() ? self.img.leafEnd : self.img.leaf), self.img.doc);
s += '<img src="?" width="18" height="18" alt="" />'.format((this.isLast() ? self.img.leafEnd : self.img.leaf));
//s += '<input type="checkbox" name="consolidation1" style="width:15; height:15;">';
s += '<a href="?"??>?</a>'.format(this.href, (this.title ? ' title="?"'.format(this.title) : ""), (this.target ? ' target="?"'.format(this.target) : ""), this.text);
}
s += '</div>';
return s;
};
}
function Cookie() {
this.get = function(name) {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; ++i) {
var a = cookies[i].split("=");
if (a.length == 2) {
a[0] = a[0].trim();
a[1] = a[1].trim();
if (a[0] == name) {
return unescape(a[1]);
}
}
}
return "";
};
this.set = function(name, value, seconds, path, domain, secure) {
var cookie = (name + "=" + escape(value));
if (seconds) {
var date = new Date(new Date().getTime()+seconds*1000);
cookie += ("; expires="+date.toGMTString());
}
cookie += (path ? "; path="+path : "");
cookie += (domain ? "; domain="+domain : "");
cookie += (secure ? "; secure" : "");
document.cookie = cookie;
};
this.del = function(name) {
document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
};
}
var self = this;
this.id = id;
this.tree = new Node("tree", "", null, new Array(), false, true);
this.allNodes = {}; // id => object
this.opened = []; // opened folders
this.active = ""; // active node, text clicked
this.cookie = new Cookie();
this.imgObjects = [];
this.count = 0;
}
/* Check whether array contains given string */
if (!Array.prototype.contains) {
Array.prototype.contains = function(s) {
for (var i = 0; i < this.length; ++i) {
if (this[i] === s) { return true; }
}
return false;
};
}
/* Remove elements with such value (mutates) */
if (!Array.prototype.removeByValue) {
Array.prototype.removeByValue = function(value) {
var i, indexes = [];
for (i = 0; i < this.length; ++i) {
if (this[i] === value) { indexes.push(i); }
}
for (i = indexes.length - 1; i >= 0; --i) {
this.splice(indexes[i], 1);
}
};
}
/* Remove elements judged 'false' by the passed function (mutates) */
if (!Array.prototype.filter) {
Array.prototype.filter = function(func) {
var i, indexes = [];
for (i = 0; i < this.length; ++i) {
if (!func(this[i])) { indexes.push(i); }
}
for (i = indexes.length - 1; i >= 0; --i) {
this.splice(indexes[i], 1);
}
};
}
/* Get the last element from the array */
if (!Array.prototype.getLast) {
Array.prototype.getLast = function() {
return this[this.length-1];
};
}
/* Strip whitespace from the beginning and end of a string */
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s*|\s*$/g, "");
};
}
/* Replace ? tokens with variables passed as arguments in a string */
String.prototype.format = function() {
if (!arguments.length) { throw "String.format() failed, no arguments passed, this = "+this; }
var tokens = this.split("?");
if (arguments.length != (tokens.length - 1)) { throw "String.format() failed, tokens != arguments, this = "+this; }
var s = tokens[0];
for (var i = 0; i < arguments.length; ++i) {
s += (arguments[i] + tokens[i + 1]);
}
return s;
};

View File

@ -0,0 +1,29 @@
/*************************************************************************************************
* µðÀÚÀΰü·Ã ½ºÅ©¸³Æ®
* 2006-10-23 ljy
*************************************************************************************************/
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

View File

@ -0,0 +1,2 @@
//download.js v3.1, by dandavis; 2008-2015. [CCBY2] see http://danml.com/download.html for tests/usage
(function(f,a){"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?module.exports=a():f.download=a()})(this,function(){return function(f,a,b){function n(l){var a=l.split(/[:;,]/);l=a[1];var a=("base64"==a[2]?atob:decodeURIComponent)(a.pop()),c=a.length,b=0,d=new Uint8Array(c);for(b;b<c;++b)d[b]=a.charCodeAt(b);return new g([d],{type:l})}function k(a,b){if("download"in d)return d.href=a,d.setAttribute("download",m),d.innerHTML="downloading...",h.body.appendChild(d),setTimeout(function(){d.click(),h.body.removeChild(d),!0===b&&setTimeout(function(){e.URL.revokeObjectURL(d.href)},250)},66),!0;if("undefined"!=typeof safari)return a="data:"+a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream"),!window.open(a)&&confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")&&(location.href=a),!0;var c=h.createElement("iframe");h.body.appendChild(c),b||(a="data:"+a.replace(/^data:([\w\/\-\+]+)/,"application/octet-stream")),c.src=a,setTimeout(function(){h.body.removeChild(c)},333)}var e=window;b=b||"application/octet-stream";var c=f,h=document,d=h.createElement("a");f=function(a){return String(a)};var g=e.Blob||e.MozBlob||e.WebKitBlob||f,g=g.call?g.bind(e):Blob,m=a||"download";"true"===String(this)&&(c=[c,b],b=c[0],c=c[1]);if(String(c).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/))return navigator.msSaveBlob?navigator.msSaveBlob(n(c),m):k(c);a=c instanceof g?c:new g([c],{type:b});if(navigator.msSaveBlob)return navigator.msSaveBlob(a,m);if(e.URL)k(e.URL.createObjectURL(a),!0);else{if("string"==typeof a||a.constructor===f)try{return k("data:"+b+";base64,"+e.btoa(a))}catch(p){return k("data:"+b+","+encodeURIComponent(a))}b=new FileReader,b.onload=function(a){k(this.result)},b.readAsDataURL(a)}return!0}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,439 @@
/**
* 지역검색, 사업검색, 좌표검색
*/
function getGuList() {
var sub_cd = $("#cmb_sido").val().substring(0, 4);
var params = new Object();
params.do_cd = sub_cd;
$("#cmb_gungu").load("/map/getGugun.do", params);
}
function getDongList() {
var sub_cd = $("#cmb_gungu").val().substring(0, 4);
var params = new Object();
params.gungu_cd = sub_cd;
$("#cmb_dong").load("/map/getDong.do", params);
}
var waitWin;
function openWaitWin() {
var leftVal = (screen.availWidth / 2) - 100;
var topVal = (screen.availHeight / 2) - 100;
waitWin = window.open("/map/mapWait.do", 'waitWin', 'scrollbars=no,titlebar=no,width=300,height=130,left=' + leftVal + ',top=' + topVal, true);
}
function closeWaitWin() {
if (waitWin != null) {
waitWin.close();
}
if (parent.waitWin != null) {
parent.waitWin.close();
}
if (parent.parent.waitWin != null) {
parent.parent.waitWin.close();
}
}
// ########################### #####################
// ##################### 기존소스 #####################
// ########################### #####################
/** 시추공검색 실행 * */
function onSichCheck() {
var bound;
// if(searchSichuForm.areaSearch.checked == false){
// openWaitWin();
openWaitWin();
/** 전국검색 * */
var sido = $("#cmb_sido").val();
var gugun = $("#cmb_gungu").val();
var dong = $("#cmb_dong").val();
// alert(gugun);
searchSichuForm.sido.value = sido;
searchSichuForm.gugun.value = gugun;
searchSichuForm.dong.value = dong;
if (sido != "all") {
bound = sido.split("^");
searchSichuForm.minx.value = bound[1];
searchSichuForm.maxx.value = bound[2];
searchSichuForm.miny.value = bound[3];
searchSichuForm.maxy.value = bound[4];
if (gugun != "all") {
bound = gugun.split("^");
searchSichuForm.minx.value = bound[1];
searchSichuForm.maxx.value = bound[2];
searchSichuForm.miny.value = bound[3];
searchSichuForm.maxy.value = bound[4];
if (dong != "all") {
bound = dong.split("^");
searchSichuForm.minx.value = bound[1];
searchSichuForm.maxx.value = bound[2];
searchSichuForm.miny.value = bound[3];
searchSichuForm.maxy.value = bound[4];
}
}
}
/** 영역검색 * */
searchSichuForm.isArea.value = "0";
}
/** 사업검색 실행 * */
function onSaupCheck() {
openWaitWin();
searchSaupForm.sDate.value = yearFrame2.yearForm.startDate.value;
searchSaupForm.eDate.value = yearFrame2.yearForm.endDate.value;
}
function onSaupCheck_nosession() {
openWaitWin();
searchSaupForm.sDate.value = yearFrame2.yearForm.startDate.value;
searchSaupForm.eDate.value = yearFrame2.yearForm.endDate.value;
}
function onLocateCheck() {
openWaitWin();
}
// 좌표검색 클릭시
function resultxyForm() {
var f = searchLocateForm;
if (f.tawon.value == 0) {
alert("타원체를 선택해주세요");
f.tawon.focus();
return;
} else if (f.tuyung.value == 0) {
alert("투영방법을 선택해주세요");
f.tawon.focus();
return;
}
if (f.tuyung.value == 1) {
if (searchLocateForm.doo.value == "") {
alert("경도 좌표값을 입력해 주십시요");
f.doo.focus();
} else if (searchLocateForm.doo2.value == "") {
alert("위도 좌표값을 입력해 주십시요");
f.doo2.focus();
} else {
if (f.tuyung.value == 3) {
calculate();
}
openWaitWin();
f.action = "/map/coordSearch.do";
f.target = "ResultLocateFrame"
f.submit();
}
} else {
if (searchLocateForm.tmx.value == "") {
alert("X 좌표값을 입력해 주십시요");
f.tmx.focus();
} else if (searchLocateForm.tmy.value == "") {
alert("Y 좌표값을 입력해 주십시요");
f.tmy.focus();
} else {
if (f.tuyung.value == 3) {
calculate();
}
openWaitWin();
f.action = "/map/coordSearch.do";
f.target = "ResultLocateFrame"
f.submit();
}
}
}
/** 페이지이동 * */
function goPage(page) {
listForm.page.value = page;
listForm.submit();
}
function goPage_area(page) {
listForm.page.value = page;
listForm.submit();
}
function goPagePop(page) {
listForm.page.value = page;
listForm.submit();
}
function checkValue() {
}
/** 실내시험 체크여부 * */
function controlCheck() {
if (searchSaupForm.sample.checked == true) {
searchSaupForm.tree1.checked = true;
searchSaupForm.tree2.checked = true;
searchSaupForm.tree3.checked = true;
searchSaupForm.tree4.checked = true;
searchSaupForm.test1.checked = true;
searchSaupForm.tcr.checked = true;
searchSaupForm.dsf.checked = true;
searchSaupForm.slickenside.checked = true;
searchSaupForm.q.checked = true;
searchSaupForm.rmr.checked = true;
searchSaupForm.classification9.checked = true;
searchSaupForm.consolidation9.checked = true;
searchSaupForm.cbr.checked = true;
searchSaupForm.unconfined9.checked = true;
searchSaupForm.triaxialcu.checked = true;
// searchSaupForm.triaxialuu.checked = true;
searchSaupForm.test2.checked = true;
searchSaupForm.waterpressure.checked = true;
searchSaupForm.permeability.checked = true;
searchSaupForm.pointload.checked = true;
searchSaupForm.jointshear.checked = true;
searchSaupForm.rockuniaxial.checked = true;
searchSaupForm.rocktriaxial.checked = true;
} else {
searchSaupForm.tree1.checked = false;
searchSaupForm.tree2.checked = false;
searchSaupForm.tree3.checked = false;
searchSaupForm.tree4.checked = false;
searchSaupForm.test1.checked = false;
searchSaupForm.tcr.checked = false;
searchSaupForm.dsf.checked = false;
searchSaupForm.slickenside.checked = false;
searchSaupForm.q.checked = false;
searchSaupForm.rmr.checked = false;
searchSaupForm.classification9.checked = false;
searchSaupForm.consolidation9.checked = false;
searchSaupForm.cbr.checked = false;
searchSaupForm.unconfined9.checked = false;
searchSaupForm.triaxialcu.checked = false;
// searchSaupForm.triaxialuu.checked = false;
searchSaupForm.test2.checked = false;
searchSaupForm.waterpressure.checked = false;
searchSaupForm.permeability.checked = false;
searchSaupForm.pointload.checked = false;
searchSaupForm.jointshear.checked = false;
searchSaupForm.rockuniaxial.checked = false;
searchSaupForm.rocktriaxial.checked = false;
}
}
/** 영역검색 체크여부 * */
function areaCheck() {
if (searchSichuForm.areaSearch.checked == true) {
uscsFrame.cmb_uscs.disabled = false;
searchSichuForm.sample.disabled = false;
searchSichuForm.toDepth.disabled = false;
searchSichuForm.fromDepth.disabled = false;
searchSichuForm.fromN.disabled = false;
searchSichuForm.toN.disabled = false;
} else {
uscsFrame.cmb_uscs.disabled = true;
searchSichuForm.sample.disabled = true;
searchSichuForm.toDepth.disabled = true;
searchSichuForm.fromDepth.disabled = true;
searchSichuForm.fromN.disabled = true;
searchSichuForm.toN.disabled = true;
}
}
/** 주상도 * */
function viewJuSang(hcode) {
var jusang = window.open("/jusangdo/jusangdoNew.do?code=" + hcode, "_blank", "toolbars=no,menubar=no,addressbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=no,width=880,height=800", true);
jusang.focus();
}
function downloadMisc(hcode, aUUID, aKind) {
if (aKind == "dwg") {
hiddenFrame.location.href = "/body/sichudan/SichudanDWG.jsp?holecode=" + hcode + "&uuid=" + aUUID;
} else if (aKind == "xls") {
hiddenFrame.location.href = "/body/sichudan/SichudanXLS.jsp?holecode=" + hcode + "&uuid=" + aUUID;
} else {
var jusang = window.open("/body/sichudan/jusangdo_new.jsp?code=" + hcode, "_blank", "toolbars=no,menubar=no,addressbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=no,width=880,height=800", true);
jusang.focus();
}
}
/** 사업상세정보 팝업창 * */
function openDetail(pcode) {
if (pcode != "") {
openWaitWin();
detailProject = window.open("/map/detailProject.do?pcode=" + pcode, 'detailProject', 'scrollbars=yes,titlebar=no,width=550,height=450,left=0,top=0', true);
//detailProject.focus();
}
}
/** 사업상세정보 팝업창 * */
//function openDetailProject(pcode) {
// if (pcode != "") {
// openWaitWin();
// detailProject = window.open("/body/map/detailProject.jsp?pcode=" + pcode, 'detailProject', 'scrollbars=yes,titlebar=no,width=350,height=350,left=0,top=0', true);
// detailProject.focus();
// }
//}
/** 물리시험정보 팝업창 * */
function openDetailPhysicalInfo(pcode) {
if (pcode != "") {
opener.openWaitWin();
detailProject = window.open("/body/map/detailPhysicalInfo.jsp?pcode=" + pcode, 'detailPhysicalInfo', 'scrollbars=yes,titlebar=no,width=900,height=600,left=0,top=0', true);
detailProject.focus();
}
}
/* 사업검색 수정 */
function openDetailparam(pcode, popupParam) {
if (pcode != "") {
openWaitWin();
detailProject = window.open("/body/map/detailProjectsaup.jsp?pcode=" + pcode + "&popupParam=" + popupParam, 'detailProject', 'scrollbars=yes,titlebar=no,width=550,height=450,left=0,top=0', true);
detailProject.focus();
}
}
/* 좌표검색 */
function openDetailxy(pcode, hole_code) {
if (pcode != "") {
var tmxTemp = document.listForm.tmxTemp.value;
var tmyTemp = document.listForm.tmyTemp.value;
openWaitWin();
detailProject = window.open("/map/detailProject.do?pcode=" + pcode + "&tmxTemp=" + tmxTemp + "&tmyTemp=" + tmyTemp + "&holeCode=" + hole_code, 'detailProject', 'scrollbars=yes,titlebar=no,width=550,height=450,left=0,top=0', true);
detailProject.focus();
}
}
/** 대표층분포 검색 * */
function openUscs() {
var areaRect = parent.GeoInfo2005.OnGetAreaBound.split("^");
var minx = areaRect[0];
var maxx = areaRect[1];
var miny = areaRect[2];
var maxy = areaRect[3];
if (minx == 0 || minx == null) {
alert('영역을 먼저 설정하세요');
return false;
}
parent.GeoInfo2005.OnDisplayClassColor();
uscsWin = window.open("/body/map/uscs.html", 'uscsWin', 'scrollbars=no,titlebar=no,width=228,height=513,left=0,top=0', true);
uscsWin.focus();
}
/** 정보분석 * */
function WebBaseOrder(str) {
// 통계처리
if (str == 1) {
var areaRect = parent.GeoInfo2005.OnGetAreaBound.split("^");
var x1 = areaRect[0];
var x2 = areaRect[1];
var y1 = areaRect[2];
var y2 = areaRect[3];
if (x1 == 0 || x2 == null) {
alert('영역을 먼저 설정하세요');
return false;
}
var vwidth = screen.width - 695;
orderWin1 = window.open("/body/Web_Based_Order/Search_Hole.jsp?sel=" + str + "&x1=" + x1 + "&y1=" + y1 + "&x2=" + x2 + "&y2=" + y2, 'orderWin1', 'scrollbars=auto,titlebar=no,width=687,height=590,left=' + vwidth + ',top=0', true);
orderWin1.focus();
}
// 설계정수
else {
var vwidth = screen.width - 575;
orderWin2 = window.open("/body/Web_Based_Order/Design/select_fnum.htm", 'orderWin2', 'scrollbars=auto,titlebar=no,width=570,height=700,left=' + vwidth + ',top=0', true);
orderWin2.focus();
}
}
function getComList() {
searchSaupForm.com_class.value = comFrame.cmb_com.value;
// alert(searchSichuForm.com_class.value);
}
function getCalsList() {
searchSaupForm.lclass.value = classFrame.cmb_class.value;
}
// utm->degree
function calculate() {
var f = searchLocateForm;
var ll = UTMtoLL(f.tmx.value, f.tmy.value, 52);
var long = Math.round(ll[0] * 1000000) / 1000000;
var lat = Math.round(ll[1] * 1000000) / 1000000;
f.long.value = long;
f.lat.value = lat;
var long_deg = Math.floor(long);
if (long < 0)
long_deg = Math.floor(long) + 1;
var long_min = Math.floor((long - long_deg) * 60);
if (long < 0)
long_min = Math.floor((long - long_deg) * 60 + 1) * -1;
var long_sec = Math.round((((long - long_deg) * 60) - Math.floor(((long - long_deg) * 60))) * 60 * 1000) / 1000;
if (long < 0)
long_sec = Math.round((((long - long_deg) * 60) - Math.floor(((long - long_deg) * 60 + 1))) * 60 * 1000) / 1000 * -1;
var doo = long_deg;
var bun = long_min;
var cho = long_sec;
var lat_deg = Math.floor(lat);
if (lat < 0)
lat_deg = Math.floor(lat) + 1;
var lat_min = Math.floor((lat - lat_deg) * 60);
if (lat < 0)
lat_min = Math.floor((lat - lat_deg) * 60 + 1) * -1;
var lat_sec = Math.round((((lat - lat_deg) * 60) - Math.floor(((lat - lat_deg) * 60))) * 60 * 10000) / 10000;
if (lat < 0)
lat_sec = Math.round((((lat - lat_deg) * 60) - Math.floor(((lat - lat_deg) * 60 + 1))) * 60 * 1000) / 1000 * -1;
var doo2 = lat_deg;
var bun2 = lat_min;
var cho2 = lat_sec;
}
function UTMtoLL(f, f1, j) {
var d = 0.99960000000000004;
var d1 = 6378137;
var d2 = 0.0066943799999999998;
var d4 = (1 - Math.sqrt(1 - d2)) / (1 + Math.sqrt(1 - d2));
var d15 = f1 - 500000;
var d16 = f;
var d11 = ((j - 1) * 6 - 180) + 3;
var d3 = d2 / (1 - d2);
var d10 = d16 / d;
var d12 = d10 / (d1 * (1 - d2 / 4 - (3 * d2 * d2) / 64 - (5 * Math.pow(d2, 3)) / 256));
var d14 = d12 + ((3 * d4) / 2 - (27 * Math.pow(d4, 3)) / 32) * Math.sin(2 * d12) + ((21 * d4 * d4) / 16 - (55 * Math.pow(d4, 4)) / 32) * Math.sin(4 * d12) + ((151 * Math.pow(d4, 3)) / 96) * Math.sin(6 * d12);
var d13 = d14 * 180 / Math.PI;
var d5 = d1 / Math.sqrt(1 - d2 * Math.sin(d14) * Math.sin(d14));
var d6 = Math.tan(d14) * Math.tan(d14);
var d7 = d3 * Math.cos(d14) * Math.cos(d14);
var d8 = (d1 * (1 - d2)) / Math.pow(1 - d2 * Math.sin(d14) * Math.sin(d14), 1.5);
var d9 = d15 / (d5 * d);
var d17 = d14 - ((d5 * Math.tan(d14)) / d8) * (((d9 * d9) / 2 - (((5 + 3 * d6 + 10 * d7) - 4 * d7 * d7 - 9 * d3) * Math.pow(d9, 4)) / 24) + (((61 + 90 * d6 + 298 * d7 + 45 * d6 * d6) - 252 * d3 - 3 * d7 * d7) * Math.pow(d9, 6)) / 720);
d17 = d17 * 180 / Math.PI;
var d18 = ((d9 - ((1 + 2 * d6 + d7) * Math.pow(d9, 3)) / 6) + (((((5 - 2 * d7) + 28 * d6) - 3 * d7 * d7) + 8 * d3 + 24 * d6 * d6) * Math.pow(d9, 5)) / 120) / Math.cos(d14);
d18 = d11 + d18 * 180 / Math.PI;
return [ d18, d17 ];
}
function openDetailSubsidence(sagoNo){
if(sagoNo != ""){
detailSubsidence = window.open("/map/detailSubsidenceInfo.do?sagoNo=" + sagoNo, 'detailSubsidence', 'scrollbars=yes,titlebar=no,width=550,height=450,left=0,top=0', true);
}
}

View File

@ -0,0 +1,400 @@
// ============================================================================================
// 정보 열람 기능 관련
// ============================================================================================
function showSichudan() {
var codes = getSelectHoleInfo();
if (codes == "") {
alert("시추공을 선택해주세요!!");
return;
}
var sichuWin = window.open("/map/sichudanNew.do?code=" + codes, "sichuWin", "scrollbars=no,titlebar=no,width=1024,height=740,left=0,top=0", true);
sichuWin.focus();
}
// 시추주상도
function showJusangdo() {
var codes = getSelectHoleInfo();
if (codes == "") {
alert("시추공을 선택해주세요!!");
return;
}
var spCode = codes.split(",");
var jusang = window.open("/jusangdo/jusangdoNew.do?code=" + spCode, "_blank", "toolbars=no,menubar=no,addressbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=880,height=800", true);
jusang.focus();
}
// dhlee 시추주상도
function showJusangdoSichu(spCode) {
var jusang = window.open("/jusangdo/jusangdoNew.do?code=" + spCode, "_blank", "toolbars=no,menubar=no,addressbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,width=880,height=800", true);
jusang.focus();
}
// 정보보기
function showSichuInfo() {
var sichuInfo = getSelectAreaInfo2();
if (sichuInfo == null || sichuInfo == undefined) {
var codes = getSelectHoleInfo();
if (codes != "") {
sichuInfo = "";
var values = codes.split(",");
for (var i = 0; i < values.length; i++) {
sichuInfo = sichuInfo + "" + values[i] + "";
if (i != values.length - 1) {
sichuInfo = sichuInfo + ","
}
}
openWaitWin();
var detailSichu = window.open("/map/detailSichuDownCh.do?areaHcode="+sichuInfo, 'detailSichu', 'scrollbars=yes,titlebar=no,width=1024,height=740,left=300,top=0', true);
detailSichu.focus();
return;
}
} else {
openWaitWin();
var selectHolde = HOLE_SELECT.addFeatures;
var featuresHole = "";
for(var i = 0; i<HOLE_SELECT.features.length; i++ ){
if(i == 0){
featuresHole = HOLE_SELECT.features[i].attributes.CODE;
}else{
featuresHole += ","+HOLE_SELECT.features[i].attributes.CODE;
}
}
var detailSichu = window.open("/map/detailSichuS.do?areaHcode="+featuresHole+"&"+sichuInfo, 'detailSichu', 'scrollbars=yes,titlebar=no,width=685,height=285,left=300,top=0', true);
detailSichu.focus();
return;
}
alert("시추공을 선택해주세요!!");
}
//정보보기 누를 때, 사업별 시추공 상세정보가 나타나도록 한다.
function showSichuInfoDetail() {
var sichuInfo = getSelectAreaInfo2();
if (sichuInfo == null || sichuInfo == undefined) {
var codes = getSelectHoleInfo();
if (codes != "") {
sichuInfo = "";
var values = codes.split(",");
for (var i = 0; i < values.length; i++) {
sichuInfo = sichuInfo + "" + values[i] + "";
if (i != values.length - 1) {
sichuInfo = sichuInfo + ","
}
}
const arrSichuInfoComma = String(sichuInfo).split(',');
const regex = /([a-zA-Z]+\d+).*/;
let foundProjectCode = null;
let isMultipleProject = false;
for(i = 0; i < arrSichuInfoComma.length; i++) {
const found = arrSichuInfoComma[i].match(regex);
if( found && found.length === 2 ) {
if( foundProjectCode != null && foundProjectCode !== found[1] ) {
isMultipleProject = true;
}
foundProjectCode = found[1];
}
}
if( popupDataOpen && foundProjectCode ) {
if( isMultipleProject ) {
alert('가장 마지막에 선택된 하나의 프로젝트만 조회됩니다.');
}
popupDataOpen(foundProjectCode);
}
return;
}
} else {
openWaitWin();
var selectHolde = HOLE_SELECT.addFeatures;
var featuresHole = "";
for(var i = 0; i<HOLE_SELECT.features.length; i++ ){
if(i == 0){
featuresHole = HOLE_SELECT.features[i].attributes.CODE;
}else{
featuresHole += ","+HOLE_SELECT.features[i].attributes.CODE;
}
}
var detailSichu = window.open("/map/detailSichuS.do?areaHcode="+featuresHole+"&"+sichuInfo, 'detailSichu', 'scrollbars=yes,titlebar=no,width=685,height=285,left=300,top=0', true);
detailSichu.focus();
return;
}
alert("시추공을 선택해주세요!!");
}
function onSearchJiban() {
var sichuInfo = getSelectAreaInfo();
openWaitWin();
var detailSichu = window.open("/map/CmModelViewerEx.do?modelName=A02&hjdCde=1111000000", 'detailSichu', 'scrollbars=yes,titlebar=no,width=1400,height=760,top=0', true);
detailSichu.focus();
return;
alert("시추공을 선택해주세요!!");
}
//시추공 다운로드
function showSichuDownload() {
var sichuInfo = getSelectAreaInfo();
var sichuValue = 0;
// 개별 시추공 선택일 경우,
if (sichuInfo == null || sichuInfo == undefined) {
var codes = getSelectHoleInfo();
var pwidth = 350;
var pheight = 140;
var scrollYN = 'no';
var resizeYN = 'no';
var winL = (screen.width-pwidth)/2;
var winT = (screen.height-pheight)/2;
var spec = 'toolbar=no,'; // 도구메뉴
spec += 'status=no,'; // 상태바
spec += 'location=no,'; // 주소관련메뉴
spec += 'height='+pheight+','; // 높이
spec += 'width='+pwidth+','; // 너비
spec += 'top='+winT+','; // 세로위치
spec += 'left='+winL+','; // 가로위치
spec += 'scrollbars='+(scrollYN == undefined ? "no" : scrollYN)+','; // 스크롤바 여부(기본)
spec += 'resizable='+(resizeYN == undefined ? "no" : resizeYN); // 창크기조정 여부
if (codes != "") {
sichuInfo = "";
var values = codes.split(",");
//if( values.length > 50 ){
// alert("최대 50개까지의 시추공 선택이 가능합니다. ");
// return;
//}
for (var i = 0; i < values.length; i++) {
sichuInfo = sichuInfo + "" + values[i] + "";
if (i != values.length - 1) {
sichuInfo = sichuInfo + ","
}
}
sichuValue = values.length;
var url = "/map/sichuDownload.do?hcode=" + sichuInfo + "&sichuValue=" + sichuValue ;
var detailSichu = window.open(url,'sichuDownload', spec,true);
detailSichu.focus();
return;
}
// 영역단위의 선택일 경우,
} else {
var url = "/map/sichuDownload.do?" + sichuInfo + "&sichuValue=" + sichuValue;
var detailSichu = window.open(url ,'sichuDownload','scrollbars=yes,titlebar=no,width=350,height=140,left=300,top=0',true);
detailSichu.focus();
return;
}
alert("시추공을 선택해주세요!!");
}
// 3차원
function web3dPopup() {
var web3d = window.open('/body/map/web3d/web3d.html', 'web3d', 'scrollbars=yes,width=1280,height=1024,left=0,top=0', true);
web3d.focus();
}
function show3dProject() {
if (document.search_frame.location.href.indexOf("popupSimulation") > -1) {
document.search_frame.location.href = "/map/mapLeft.do";
} else {
document.search_frame.location.href = "/map/popupSimulation.do";
}
}
// ============================================================================================
// 지도 제어 기능 관련
// ============================================================================================
// 선택
function onSearchHole() {
if (isSelectHole()) {
offSelectHole();
} else {
onSelectHole();
}
}
// 영역선택
function onSearchArea() {
if (isSelectArea()) {
offSelectArea();
} else {
onSelectArea();
}
}
//사업 선택
function onSearchProject() {
if(isSelectProject()) {
offSelectProject();
} else {
onSelectProject();
}
}
// 영역검색
function onAreaSearch() {
var sichuInfo = getSelectAreaInfo();
if (sichuInfo == null || sichuInfo == undefined) {
alert("시추공을 선택해주세요!!");
return;
}
var polygonType;
var sichuPolyon = "";
if($('#circle').is(':checked')){
polygonType = 'circle';
}else if($('#polygon').is(':checked')){
polygonType = 'polygon';
var polygonSize = HOLE_AREA.features[0].geometry.components[0].components.length;
/*var polygoncomponents = HOLE_AREA.features[0].geometry.components[0].components;*/
var polygoncomponents = HOLE_AREA.features[0].geometry.components[0].transform("EPSG:3857", "EPSG:5186");
sichuPolyon = "&pSize="+polygonSize;
for(var i =0; i < polygonSize; i++){
var componentsX = polygoncomponents.components[i].x;
var componentsY = polygoncomponents.components[i].y;
sichuPolyon += "&pX"+i+"="+componentsX+"&pY"+i+"="+componentsY;
}
}else{
polygonType = 'circle';
}
var sichuWin = window.open("/map/detailSichuDownCh.do?" +"areaHcode="+areaHcode(), "sichuWin", "scrollbars=no,titlebar=no,width=1024,height=740,left=0,top=0", true);
/*var sichuWin = window.open("/map/sichuInfoMini.do?" + sichuInfo+"&polygonType="+polygonType+sichuPolyon, "sichuWin", "scrollbars=no,titlebar=no,width=1024,height=740,left=0,top=0", true);*/
sichuWin.focus();
}
// 거리측정
function onCalDistance() {
if (isMeasurePath()) {
offMeasurePath();
} else {
onMeasurePath();
}
}
// 면적측정
function onCalArea() {
if (isMeasureArea()) {
offMeasureArea();
} else {
onMeasureArea();
}
}
// 인덱스맵
function onIndexMap() {
if (isOverviewMap()) {
offOverviewMap();
} else {
onOverviewMap();
}
}
//지반모델 선택
function onSearchJiban() {
if (isSelectJiban()) {
offSelectJiban();
removeTooltip();
} else {
onSelectJiban();
removeTooltip();
}
}
//test
function jibanModelDownload() {
if(HOLE_SELECT2.features[0] == null || HOLE_SELECT2.features[0] =='undefined'){
alert("지반모델을 선택해주세요!!");
}else{
var sichuWin = window.open("/map/geotechnicalDown.do?" +"hjdCde="+HOLE_SELECT2.features[0].attributes.CODE, "sichuWin", 'height=' + screen.height + ',width=' + screen.width + 'fullscreen=yes', true);
/*var sichuWin = window.open("/map/geotechnicalDown.do?" +"hjdCde="+"1120000000", "sichuWin", 'height=' + screen.height + ',width=' + screen.width + 'fullscreen=yes', true);*/
/*var sichuWin = window.open("/map/sichuInfoMini.do?" + sichuInfo+"&polygonType="+polygonType+sichuPolyon, "sichuWin", "scrollbars=no,titlebar=no,width=1024,height=740,left=0,top=0", true);*/
sichuWin.focus();
}
}
// 범례보기
function onLegendInfo() {
var vwidth = screen.availWidth - 300;
var legendWin = window.open("/map/layerControl.do", "legendWin", "scrollbars=yes,titlebar=no,width=100,height=380,left=" + vwidth + ",top=20", true);
legendWin.focus();
}
// ============================================================================================
// 프레임 디자인 관련
// ============================================================================================
// -------------------------------
// 지도 페이지 창 조정
// -------------------------------
function fullScreen() {
window.moveTo(0, 0);
window.resizeTo(screen.availWidth, screen.availHeight);
}
// -------------------------------
// 지도 페이지 검색창 펴기/접기
// -------------------------------
function frameResize() {
if (document.all.arrow.name == "off") {
// 검색창 열기
document.all.search_frame.style.width = "220px";
document.all.search_frame.style.visibility = "visible";
document.all.arrow.name = "on";
document.all.arrow.src = "/images/map/arrow.png"
} else {
// 검색창 닫기
document.all.search_frame.style.width = 0;
document.all.search_frame.style.visibility = "hidden";
document.all.arrow.name = "off";
document.all.arrow.src = "/images/map/arrowb.png"
}
}
//액상화 위험지도
function showLiqInfo(sggCode,cls) {
openWaitWin();
var locationShow = window.open("/map/liqListView.do?sggCode="+sggCode+"&cls="+cls ,"locationShow","'scrollbars=yes,titlebar=no,width=750,height=750,top=0", true);0
locationShow.focus();
return;
}
//액상화 범례보기
function liqDownload(sggCode,cls) {
var vwidth = screen.availWidth - 300;
var liqWin = window.open("/map/liqMapControl.do?sggCode="+sggCode+"&cls="+cls, "liqWin", "scrollbars=yes,titlebar=no,width=100,height=380,left=" + vwidth + ",top=20", true); liqWin.focus();
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,366 @@
/*******************************************************************************
* 지반정보 검색 결과관련 스크립트 2006-10-23 ljy
******************************************************************************/
function openDetail(pcode) {
detailWin = window.open("detail.jsp?metadataId=" + pcode, 'detailWin', 'scrollbars=no,titlebar=no,width=720,height=100', true);
}
/** 선택한 데이터리스트 다운로드 * */
function downloadData(totalCnt) {
var mId = "";
var tmp;
var projectName;
var fName = "";
var projectTmp;
if (totalCnt == 1) {
tmp = listForm.selectData.value.split(",");
projectTmp = listForm.selectProject.value.split(",");
mId = tmp[0];
fName = tmp[1];
projectName = projectTmp[0];
// download(mId, fName, userId);
} else {
for (i = 0; i < listForm.selectData.length; i++) {
if (listForm.selectData[i].checked) {
tmp = listForm.selectData[i].value.split(",");
projectTmp = listForm.selectProject[i].value.split(",");
if (mId == "") {
mId = tmp[0];
fName = tmp[1];
projectName = projectTmp[0];
} else {
mId = mId + "," + tmp[0];
fName = fName + "," + tmp[1];
projectName = projectName + "," + projectTmp[0];
}
}
}
}
if (mId == "") {
alert("다운로드 할 데이터를 선택하십시요");
} else {
var left = (screen.width) / 2 - 300;
var top = (screen.height) / 2 - 250;
// 다운로드 목적 추가(수정)
downloadWin = window.open("/map/downloadPurpose.do?mId=" + mId +"&fName=" + fName + "&projectName=" + projectName + "&folder=service", "downloadWin", "title=yes,toolbar=no,scrollbars=no,width=793,height=600,left=" + left + ",top=" + top);
downloadWin.focus();
}
}
/** 데이터 다운로드(개별) * */
/*function download(mId, fName) {
var left = (screen.width) / 2 - 300;
var top = (screen.height) / 2 - 250;
// 다운로드 목적 추가(수정)
downloadWin = window.open("/map/downloadPurpose.do?mId=" + mId + "&fName=" + fName + "&folder=service", "downloadWin", "title=yes,toolbar=no,scrollbars=no,width=793,height=600,left=" + left + ",top=" + top);
downloadWin.focus();
}*/
// 2019-06-07. 유통자료 다운로드 수정
function download(mId, fName) {
var left = (screen.width) / 2 - 300;
var top = (screen.height) / 2 - 250;
// 다운로드 목적 추가(수정)
downloadWin = window.open("/map/downloadPurposeNew.do?mId=" + mId + "&fName=" + fName + "&folder=service", "downloadWin", "title=yes,toolbar=no,scrollbars=no,width=793,height=600,left=" + left + ",top=" + top);
downloadWin.focus();
}
/** 데이터 전체 선택 * */
function allSelect(totalCnt) {
totalCnt = listForm.selectData.length;
if (totalCnt == 1) {
listForm.selectData.checked = true;
} else {
for (i = 0; i < listForm.selectData.length; i++) {
listForm.selectData[i].checked = true;
}
}
}
/** 데이터 전체 선택해제 * */
function allDeSelect(totalCnt) {
totalCnt = listForm.selectData.length;
if (totalCnt == 1) {
listForm.selectData.checked = false;
} else {
for (i = 0; i < listForm.selectData.length; i++) {
listForm.selectData[i].checked = false;
}
}
}
/** 미리보기 * */
function preView(mId) {
preViewWin = window.open("/map/preview.do?mId=" + mId, "preViewWin", "title=no,toolbar=no,scrollbars=no,width=484,height=520,left=0,top=0");
preViewWin.focus();
}
/** 측선 좌표 미리보기 * */
function preView2(mId) {
preViewWin = window.open("/map/locationPreview.do?mId=" + mId, "preViewWin", "title=no,toolbar=no,scrollbars=no,width=850,height=850,left=0,top=0");
preViewWin.focus();
}
/** 장바구니 담기 * */
function addCart(userId, totalCnt) {
var sido = listForm.sido.value;
var gugun = listForm.gugun.value;
var dong = listForm.dong.value;
// alert(sido);
var mId = "";
var tmp;
if (totalCnt == 1) {
if (listForm.selectData.checked) {
mId = listForm.selectData.value;
}
} else {
for (i = 0; i < listForm.selectData.length; i++) {
if (listForm.selectData[i].checked) {
tmp = listForm.selectData[i].value.split(",");
if (mId == "") {
mId = tmp[0];
} else {
mId = mId + "^" + tmp[0];
}
}
}
}
if (mId == "") {
alert("장바구니에 담을 데이터를 선택하십시요");
} else {
hiddenFrame.location.href = "/body/mypage/addcart.jsp?mId=" + mId + "&userId=" + userId + "&sido=" + sido + "&gugun=" + gugun + "&dong=" + dong;
}
}
// 사업검색 장바구니
function addCart_sa(userId, totalCnt) {
var f = document.listForm;
var sDate = f.sDate.value;
var eDate = f.eDate.value;
var pname = f.pname.value;
var test1 = f.test1.value;
var tcr = f.tcr.value;
var dsf = f.dsf.value;
var slickenside = f.slickenside.value;
var q = f.q.value;
var rmr = f.rmr.value;
var classification9 = f.classification9.value;
var consolidation9 = f.consolidation9.value;
var cbr = f.cbr.value;
var unconfined9 = f.unconfined9.value;
var triaxialcu = f.triaxialcu.value;
var test2 = f.test2.value;
var waterpressure = f.waterpressure.value;
var permeability = f.permeability.value;
var pointload = f.pointload.value;
var jointshear = f.jointshear.value;
var rockuniaxial = f.rockuniaxial.value;
var rocktriaxial = f.rocktriaxial.value;
var andor = f.andor.value;
var com_class = f.com_class.value;
var lclass = f.lclass.value;
// alert(andor);
var mId = "";
var tmp;
if (totalCnt == 1) {
if (listForm.selectData.checked) {
mId = listForm.selectData.value;
}
} else {
for (i = 0; i < listForm.selectData.length; i++) {
if (listForm.selectData[i].checked) {
tmp = listForm.selectData[i].value.split(",");
if (mId == "") {
mId = tmp[0];
} else {
mId = mId + "^" + tmp[0];
}
}
}
}
if (mId == "") {
alert("장바구니에 담을 데이터를 선택하십시요");
} else {
hiddenFrame.location.href = "/body/mypage/addcart_sa.jsp?mId=" + mId + "&userId=" + userId + "&sDate=" + sDate + "&eDate=" + eDate + "&pname=" + pname + "&test1=" + test1 + "&tcr=" + tcr + "&dsf=" + dsf + "&slickenside=" + slickenside + "&q=" + q + "&classification9=" + classification9 + "&consolidation9=" + consolidation9 + "&cbr=" + cbr + "&unconfined9=" + unconfined9 + "&triaxialcu=" + triaxialcu + "&test2=" + test2 + "&waterpressure=" + waterpressure + "&permeability="
+ permeability + "&pointload=" + pointload + "&jointshear=" + jointshear + "&rockuniaxial=" + rockuniaxial + "&rocktriaxial=" + rocktriaxial + "&andor=" + andor + "&com_class=" + com_class + "&lclass=" + lclass;
}
}
// 영역검색 장바구니
function addCart_area(userId, totalCnt) {
var f = document.listForm;
var minx = f.minx.value;
var maxx = f.maxx.value;
var miny = f.miny.value;
var maxy = f.maxy.value;
// alert(andor);
var mId = "";
var tmp;
if (totalCnt == 1) {
if (listForm.selectData.checked) {
mId = listForm.selectData.value;
}
} else {
for (i = 0; i < listForm.selectData.length; i++) {
if (listForm.selectData[i].checked) {
tmp = listForm.selectData[i].value.split(",");
if (mId == "") {
mId = tmp[0];
} else {
mId = mId + "^" + tmp[0];
}
}
}
}
if (mId == "") {
alert("장바구니에 담을 데이터를 선택하십시요");
} else {
hiddenFrame.location.href = "/body/mypage/addcart_area.jsp?mId=" + mId + "&userId=" + userId + "&minx=" + minx + "&maxx=" + maxx + "&miny=" + miny + "&maxy=" + maxy;
}
}
//영역검색결과 장바구니 담기
function addCart_region(userId, totalCnt) {
var f = document.listForm;
var minx = f.minx.value;
var maxx = f.maxx.value;
var miny = f.miny.value;
var maxy = f.maxy.value;
// alert(andor);
var mId = "";
var tmp;
if (totalCnt == 1) {
if (listForm.selectData.checked) {
mId = listForm.selectData.value.split(",");
mId = mId[0];
}
} else {
for (i = 0; i < listForm.selectData.length; i++) {
if (listForm.selectData[i].checked) {
tmp = listForm.selectData[i].value.split(",");
if (mId == "") {
mId = tmp[0];
} else {
mId = mId + "," + tmp[0];
}
}
}
}
if (mId == "") {
alert("장바구니에 담을 데이터를 선택하십시요");
} else {
var checkUrl = "/map/checkProjectFileInfo.do?mId=" + mId;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var resultJson = JSON.parse(this.responseText);
var existInfo = resultJson[0].existInfo;
var notExistInfo = resultJson[0].notExistInfo;
var msg = "";
if(notExistInfo.cnt > 0){
var projectCodeArr = notExistInfo.projectCode.split("^");
var projectNameArr = notExistInfo.projectName.split("^");
for(var i=0; i<projectCodeArr.length; i++){
msg += "["+projectCodeArr[i]+"] "+projectNameArr[i]+"\r\n";
}
msg += "상기 프로젝트는 제공 데이터가 없습니다.\r\n계속 장바구니에 담겠습니까?";
}
if(confirm(msg)){
hiddenFrame.location.href = "/map/addcartRegion.do?mId=" + mId + "&userId=" + userId + "&minx=" + minx + "&maxx=" + maxx + "&miny=" + miny + "&maxy=" + maxy;
}
}
};
xhttp.open("GET", checkUrl, true);
xhttp.send();
}
}
// 정보보기 장바구니
function addCart_down(userId, totalCnt) {
var f = document.listForm;
var areaHcode = f.areaHcode.value;
// alert(holeCode);
var mId = areaHcode.substr(0,5);
var selectCode = "";
var tmp;
if (totalCnt == 1) {
if (listForm.selectData.checked) {
selectCode = listForm.selectData.value.split(",");
selectCode = mId[0];
}
} else {
for (i = 0; i < listForm.selectData.length; i++) {
if (listForm.selectData[i].checked) {
tmp = listForm.selectData[i].value.split(",");
if (selectCode == "") {
selectCode = tmp[0];
} else {
selectCode = selectCode + "," + tmp[0];
}
}
}
}
var minx = f.minx.value;
var maxx = f.maxx.value;
var miny = f.miny.value;
var maxy = f.maxy.value;
if (mId == "") {
alert("장바구니에 담을 데이터를 선택하십시요");
} else {
hiddenFrame.location.href = "/map/addcartInfo.do?mId=" + mId + "&hcode=" + selectCode+"&areaHcode="+areaHcode
+ "&selectCode=" + selectCode+ "&minx=" + minx+ "&maxx=" + maxx+ "&miny=" + miny+ "&maxy=" + maxy + "&userId=" + userId;
}
}
/** 메타데이터 조회 * */
function openMetadata(mId) {
metadataWin = window.open("/map/metaDataView.do?mid=" + mId, "metadataWin", "title=no,toolbar=no,scrollbars=auto,width=600,height=600,left=0,top=0");
metadataWin.focus();
}
//일괄다운로드
function downloadSichu(userId){
var left = (screen.width)/2 -300;
var top = (screen.height)/2 -140;
var mid = new Array();
var fname = new Array();
var selectData = document.listForm.selectData;
for (i = 0; i < selectData.length; i++) {
var isChecked = selectData[i].checked;
if(isChecked){
var valueArr = (selectData[i].value).split(',');
mid.push(valueArr[0]);
fname.push(valueArr[1]);
}
}
var midStr = "";
var fnameStr = "";
for(var i=0; i<mid.length; i++){
if(i+1 == mid.length){
midStr += mid[i];
fnameStr += fname[i];
}else{
midStr += mid[i]+"^";
fnameStr += fname[i]+"^";
}
}
downloadWin = window.open("/map/downloadPurpose.do?mId=" + midStr + "&fName=" + fnameStr + "&folder=service", "downloadWin", "title=yes,toolbar=no,scrollbars=no,width=600,height=550,left=" + left + ",top=" + top);
downloadWin.focus();
/*if(downloadWin)
this.close();*/
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
SichudanViewControl.ocx=SichudanViewControl.ocx
mfc42.dll=mfc42.dll
;need DLL
[mfc42.dll]
FileVersion=4,2,0,6256
hook=mfc42installer
[mfc42installer]
file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab
run=%EXTRACT_DIR%\mfc42.exe
[SichudanViewControl.ocx]
file-win32-x86=thiscab
clsid={C1FCC803-0250-4C0B-B077-9D0DA1477C5F}
FileVersion=3,0,0,4
RegisterServer=yes
;end of INF file

Binary file not shown.

View File

@ -0,0 +1,85 @@
a:link
{
color:#3f3f3f;
text-decoration:none
}
a:visited
{
color:#3f3f3f;
text-decoration:none
}
a:active
{
color:#BCBCBC;
text-decoration:none
}
a:hover
{
color:#047FDE;
text-decoration:underline
}
font
{
font-size:9pt;
font-family:"µ¸¿ò"
}
td
{
font-size:9pt;
color:#454545;
line-height:18px;
font-family:"µ¸¿ò"
}
BODY
{
scrollbar-face-color:#ffffff;
scrollbar-shadow-color:#DEDEDE;
scrollbar-highlight-color:#CBCBCB;
scrollbar-3dlight-color:#EFEFEF;
scrollbar-darkshadow-color:#EFEFEF;
scrollbar-track-color:#EFEFEF;
scrollbar-arrow-color:#CBCBCB
}
input {
BORDER-RIGHT: 1px solid;
BORDER-TOP: 1px solid;
BORDER-LEFT: 1px solid;
BORDER-BOTTOM: 1px solid;
FONT-SIZE: 9pt;
COLOR: #959595;
FONT-FAMILY: "µ¸¿ò";
BACKGROUND-COLOR: #F8F8F8;
}
.input1 {
BORDER-RIGHT: 1px solid;
BORDER-TOP: 1px solid;
BORDER-LEFT: 1px solid;
BORDER-BOTTOM: 1px solid;
FONT-SIZE: 9pt;
COLOR: #535353;
BORDER-COLOR: #59A9B7;
FONT-FAMILY: "µ¸¿ò";
BACKGROUND-COLOR: #ffffff;
}
select {
color:#ffffff;
font-family : "µ¸¿ò";
font-size : 9pt;
color : #393939;
background-color : #FFFFFF;
onmouseover backgroundColor : #D4D4D4;
onmouseover backgroundColor : #F7F7F7;
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Some files were not shown because too many files have changed in this diff Show More