30일차 특이사항
1. spring mybatis의 역할을 nexacro가 한다.
2. 넥사크로가 자꾸 하다가 꺼지는 현상이 있다. 메모리 때문이라는데 내 컴퓨터의 메모리는 16GB다. 메모리 문제가 아닌 것 같은데?
3. 버튼을 클릭하면 데이터가 각 컬럼에 추가되도록 해줬다. setColumn을 사용하면 된다. 일단 할 수 있는 것부터 해보자. 내가 정말 원하는 것은 버튼을 클릭했을 때 edit 창에 입력했던 값이 데이터셋에 들어가면 된다.
this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
this.Dataset00.setColumn(0, "이름", "고길동");
this.Dataset00.setColumn(0, "학번", "5230273");
this.Dataset00.setColumn(0, "성별", "남자");
this.Dataset00.setColumn(0, "연락처", "01038278272");
this.Dataset00.setColumn(0, "합계", "387");
this.Dataset00.setColumn(0, "평균", "76");
this.Dataset00.setColumn(0, "학점", "A");
};
4. '추가'버튼 누르면 row가 만들어지고, 데이터가 추가 된다. 삭제버튼 누르면 1행씩 삭제된다.
5. 문제 : 디자인을 만들어줬다. 그러나 디자인 안에 있는 edit에 데이터를 입력하고 버튼을 누르면 dataset에 데이터가 들어가야 하는데 어떻게 할지 모르겠다.
6. 고통 끝에 결국 해결했다. 데이터 바인딩을 하는 것이 아니었다. 각각의 edit값의 value값을 새로운 변수에 저장하고 그 데이터값을 Dataset에 추가하는 것이 핵심이다.
NEXACRO Source, script 코드
1) Source
<?xml version="1.0" encoding="utf-8"?>
<FDL version="2.1">
<Form id="CalculateProgram" width="1280" height="720" titletext="New Form">
<Layouts>
<Layout height="720" width="1280">
<Button id="Button00" taborder="0" text="추가" left="20" top="22" width="131" height="48" onclick="Button00_onclick"/>
<Button id="Button01" taborder="1" text="삭제" left="176" top="23" width="129" height="47" onclick="Button01_onclick"/>
<Grid id="Grid00" taborder="2" left="20" top="92" width="560" height="398" binddataset="Dataset00">
<Formats>
<Format id="default">
<Columns>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
<Column size="80"/>
</Columns>
<Rows>
<Row band="head" size="24"/>
<Row size="24"/>
</Rows>
<Band id="head">
<Cell text="이름"/>
<Cell col="1" text="학번"/>
<Cell col="2" text="성별"/>
<Cell col="3" text="연락처"/>
<Cell col="4" text="합계"/>
<Cell col="5" text="평균"/>
<Cell col="6" text="학점"/>
</Band>
<Band id="body">
<Cell text="bind:이름"/>
<Cell col="1" text="bind:학번"/>
<Cell col="2" text="bind:성별"/>
<Cell col="3" text="bind:연락처"/>
<Cell col="4" text="bind:합계"/>
<Cell col="5" text="bind:평균"/>
<Cell col="6" text="bind:학점"/>
</Band>
</Format>
</Formats>
</Grid>
<Static id="Static00" taborder="3" text="이름 :" left="615" top="103" width="31" height="14" onclick="Static00_onclick"/>
<Edit id="Edit00" taborder="4" left="668" top="90" width="252" height="30"/>
<Static id="Static00_00" taborder="5" text="학번 :" left="615" top="146" width="31" height="14" onclick="Static00_onclick"/>
<Edit id="Edit00_00" taborder="6" left="668" top="140" width="252" height="30" onchanged="Edit00_00_onchanged"/>
<Static id="Static00_00_00" taborder="7" text="성별 :" left="615" top="192" width="31" height="14" onclick="Static00_onclick"/>
<Radio id="Radio00" taborder="8" left="671" top="180" width="247" height="39" onitemchanged="Radio00_onitemchanged" innerdataset="innerdataset" codecolumn="codecolumn" datacolumn="datacolumn" direction="vertical">
<Dataset id="innerdataset">
<ColumnInfo>
<Column id="codecolumn" size="256"/>
<Column id="datacolumn" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="codecolumn">남자</Col>
<Col id="datacolumn">남자</Col>
</Row>
<Row>
<Col id="codecolumn">여자</Col>
<Col id="datacolumn">여자</Col>
</Row>
</Rows>
</Dataset>
</Radio>
<Static id="Static00_00_00_00" taborder="9" text="연락처 :" left="615" top="223" width="43" height="14" onclick="Static00_onclick"/>
<Combo id="Combo00" taborder="10" text="Combo00" left="664" top="217" width="106" height="36" onitemchanged="Combo00_onitemchanged" innerdataset="innerdataset" codecolumn="codecolumn" datacolumn="datacolumn">
<Dataset id="innerdataset">
<ColumnInfo>
<Column id="codecolumn" size="256"/>
<Column id="datacolumn" size="256"/>
</ColumnInfo>
<Rows>
<Row>
<Col id="codecolumn">010</Col>
<Col id="datacolumn">010</Col>
</Row>
<Row>
<Col id="codecolumn">017</Col>
<Col id="datacolumn">016</Col>
</Row>
<Row>
<Col id="codecolumn">019</Col>
<Col id="datacolumn">019</Col>
</Row>
</Rows>
</Dataset>
</Combo>
<Static id="Static01" taborder="11" text="-" left="794" top="228" width="5" height="14"/>
<Edit id="Edit01" taborder="12" left="810" top="217" width="100" height="39"/>
<Edit id="Edit01_00" taborder="13" left="950" top="219" width="100" height="39"/>
<Static id="Static01_00" taborder="14" text="-" left="930" top="226" width="5" height="14"/>
<CheckBox id="CheckBox00" taborder="15" text="국어" left="608" top="283" width="52" height="37" onclick="CheckBox00_onclick"/>
<CheckBox id="CheckBox00_00" taborder="16" text="수학" left="607" top="313" width="52" height="37" onclick="CheckBox00_00_onclick"/>
<CheckBox id="CheckBox00_00_00" taborder="17" text="영어" left="607" top="343" width="52" height="37" onclick="CheckBox00_00_00_onclick"/>
<CheckBox id="CheckBox00_00_00_00" taborder="18" text="컴퓨터" left="603" top="374" width="55" height="37" onclick="CheckBox00_00_00_00_onclick"/>
<Edit id="Edit02" taborder="19" left="659" top="290" width="399" height="27" onchanged="Edit02_onchanged"/>
<Edit id="Edit02_00" taborder="20" left="660" top="322" width="400" height="21" onchanged="Edit02_00_onchanged"/>
<Edit id="Edit02_01" taborder="21" left="661" top="349" width="399" height="25" onchanged="Edit02_01_onchanged"/>
<Edit id="Edit02_02" taborder="22" left="661" top="380" width="397" height="32" onchanged="Edit02_02_onchanged"/>
</Layout>
</Layouts>
<Objects>
<Dataset id="Dataset00">
<ColumnInfo>
<Column id="이름" type="STRING" size="256"/>
<Column id="학번" type="STRING" size="256"/>
<Column id="성별" type="STRING" size="256"/>
<Column id="연락처" type="STRING" size="256"/>
<Column id="합계" type="STRING" size="256"/>
<Column id="평균" type="STRING" size="256"/>
<Column id="학점" type="STRING" size="256"/>
</ColumnInfo>
</Dataset>
</Objects>
</Form>
</FDL>
2) script
this.Button00_onclick = function(obj:nexacro.Button, e:nexacro.ClickEventInfo)
{
// 입력한 데이터 가져오기
var inputData1 = this.Edit00.value;
var inputData2 = this.Edit00_00.value;
var inputData3 = this.Radio00.value;
var inputData4 = this.Combo00.value;
var inputData5 = this.Edit01.value;
var inputData6 = this.Edit01_00.value;
var inputData7 = parseInt(this.Edit02.value, 10);
var inputData8 = parseInt(this.Edit02_00.value, 10);
var inputData9 = parseInt(this.Edit02_01.value, 10);
var inputData10 = parseInt(this.Edit02_02.value, 10);
var contact = inputData4 + inputData5 + inputData6;
var total = inputData7 + inputData8 + inputData9 + inputData10;
// 입력된 과목 수 계산
var subjectCount = 0;
if (!isNaN(inputData7)) subjectCount++;
if (!isNaN(inputData8)) subjectCount++;
if (!isNaN(inputData9)) subjectCount++;
if (!isNaN(inputData10)) subjectCount++;
// 평균 계산
var avg = subjectCount > 0 ? total / subjectCount : 0;
// 등급 계산
var grade = calculateGrade(avg);
// 데이터를 Dataset에 추가
var nRow = this.Dataset00.addRow();
this.Dataset00.setColumn(nRow, "이름", inputData1);
this.Dataset00.setColumn(nRow, "학번", inputData2);
this.Dataset00.setColumn(nRow, "성별", inputData3);
this.Dataset00.setColumn(nRow, "연락처", contact);
this.Dataset00.setColumn(nRow, "합계", total);
this.Dataset00.setColumn(nRow, "평균", avg);
this.Dataset00.setColumn(nRow, "학점", grade);
// 입력값 초기화
this.Edit00.set_value("");
this.Edit00_00.set_value("");
this.Radio00.set_value("");
this.Combo00.set_value("");
this.Edit01.set_value("");
this.Edit01_00.set_value("");
this.Edit02.set_value("");
this.Edit02_00.set_value("");
this.Edit02_01.set_value("");
this.Edit02_02.set_value("");
// Dataset 내용 확인 (예를 들어, 콘솔에 출력)
trace(this.Dataset00.saveXML());
};
//삭제 버튼
this.Button01_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var nRow = this.Dataset00.rowposition;
this.Dataset00.deleteRow(nRow);
};
function calculateGrade(average) {
if (average >= 90) {
return "A+";
} else if (average >= 80) {
return "A";
} else if (average >= 70) {
return "B";
} else if (average >= 60) {
return "C";
} else {
return "F";
}
};
1. edit, radio, combo에 입력된 값을 모두 가져온다.
2. 과목 평균, 등급을 구하기 위해 과목수를 저장한다.
3. 가져온 데이터를 Dataset에 추가한다(추가 버튼 클릭시)
4. row를 추가하기 위해 버튼 클릭 후 입력된 데이터값을 초기화 한다.
5. row 삭제버튼 구현
6. 과목 평균별 등급을 구하기 위해 if문 추가
느낀 점
1. 체크박스를 활용하지 못함. 어떻게 해야할까? 지금도 기능에는 문제가 없으나 체크박스 체크한 과목만 계산되도록 하면 더 좋을 것 같다. 추후 보완 예정.
2. 처음에는 어렵게 느껴졌는데 javascript 코드 짠다고 생각하니 쉬워졌다. 디자인을 만들어 놓고 script 문을 수정하면 된다.
3. javascript를 잘 다룰줄 알면 모든 것이 해결된다. 익숙해지면 해결된다. 자꾸 해보면 좋아진다.
4. 엉성해도 해낸 것이 중요하다. 더 좋아질 것이다.
'일경험' 카테고리의 다른 글
[국민취업지원제도 일경험프로그램 32일차] 넥사크로(NEXACRO) Spring 연결하기 (0) | 2023.09.14 |
---|---|
[국민취업지원제도 일경험프로그램 31일차] 넥사크로(NEXACRO) 체크박스에 값 설정하기 (0) | 2023.09.13 |
[국민취업지원제도 일경험프로그램 29일차] 넥사크로(NEXACRO) (0) | 2023.09.11 |
[국민취업지원제도 일경험프로그램 28일차] 게시판 엑셀 다운로드 (0) | 2023.09.08 |
[국민취업지원제도 일경험프로그램 27일차] 게시판 이미지 다운로드 기능 완료, 넥사크로(NEXACRO) 시작 (0) | 2023.09.07 |