var fnObj = {};
var ACTIONS = axboot.actionExtend(fnObj, {
PAGE_SEARCH: function (caller, act, data) {
axboot.ajax({
type: "GET",
url: ["product"],
data: caller.searchView.getData(),
callback: function (res) {
//중복기능추가용: 조회할때 기존 조회건인지를 확인하기 위해 __searched__ 속성을 더 붙여준다.
for ( var i = 0; i < res.list.length; i++) {
res.list[i].__searched__= true;
}
caller.gridView01.setData(res);
}
});
return false;
},
PAGE_SAVE: function (caller, act, data) {
var saveList = [].concat(caller.gridView01.getData("modified"));
saveList = saveList.concat(caller.gridView01.getData("deleted"));
axboot.ajax({
type: "PUT",
url: ["product"],
data: JSON.stringify(saveList),
callback: function (res) {
ACTIONS.dispatch(ACTIONS.PAGE_SEARCH);
axToast.push(LANG("onsave"));
},
options: {
onError: function(err){
//{"message":"신규로 추가하신 [제품코드]코드는 이미 등록된 제품코드입니다."}
axDialog.alert({
title: "Error",
theme: "primary",
width:450,
msg: err.message
});
}
}
});
},
ITEM_ADD: function (caller, act, data) {
caller.gridView01.addRow();
},
ITEM_DEL: function (caller, act, data) {
caller.gridView01.delRow("selected");
}
});
var CODE = {}; //추가
// fnObj 기본 함수 스타트와 리사이즈
fnObj.pageStart = function () {
//
var _this = this;
axboot
.call({
type: "GET", url: "/api/v1/commonCodes", data: {groupCd: "ORIGIN"},
callback: function (res) {
var originList = [];
res.list.forEach(function (n) {
originList.push({
CD: n.code, NM: n.name + "(" + n.code + ")"
});
});
this.originList = originList;
}
})
.done(function () {
CODE = this; // this는 call을 통해 수집된 데이터들.
//위쪽 추가
_this.pageButtonView.initView(); // this --> _this 로 변경
_this.searchView.initView(); // this --> _this 로 변경
_this.gridView01.initView(); // this --> _this 로 변경
ACTIONS.dispatch(ACTIONS.PAGE_SEARCH);
}); //추가
};
fnObj.pageResize = function () {
};
fnObj.pageButtonView = axboot.viewExtend({
initView: function () {
axboot.buttonClick(this, "data-page-btn", {
"search": function () {
ACTIONS.dispatch(ACTIONS.PAGE_SEARCH);
},
"save": function () {
ACTIONS.dispatch(ACTIONS.PAGE_SAVE);
}
});
}
});
//== view 시작
/**
* searchView
*/
fnObj.searchView = axboot.viewExtend(axboot.searchView, {
initView: function () {
this.target = $(document["searchView0"]);
this.target.attr("onsubmit", "return ACTIONS.dispatch(ACTIONS.PAGE_SEARCH);");
this.filter = $("#filter");
},
getData: function () {
return {
pageNumber: this.pageNumber,
pageSize: this.pageSize,
filter: this.filter.val()
}
}
});
/**
* gridView
*/
var list = [];
fnObj.gridView01 = axboot.viewExtend(axboot.gridView, {
initView: function () {
var _this = this;
this.originList = CODE.originList; //추가
this.target = axboot.gridBuilder({
showRowSelector: true,
frozenColumnIndex: 0,
sortable: true,
multipleSelect: true,
target: $('[data-ax5grid="grid-view-01"]'),
columns: [
{key: "prdtCd", label: "제품코드", width: 100, align: "center", editor: "text"},
{key: "prdtNm", label: "제품명", width: 200, align: "center", editor: "text"},
{
key: "origin", label: "원산지", width: 100,align: "center", editor: {
type: "select", config: {
columnKeys: {
optionValue: "CD", optionText: "NM"
},
options: this.originList //추가
/*
[
{"CD":"KR","NM":"한국(KR)"},
{"CD":"US","NM":"미국(US)"},
{"CD":"JP","NM":"일본(JP)"}
]
*/
}
}
},
{key: "purchasePrice", label: "매입가격", width: 150, align: "right", editor: "number"},
{key: "salesPrice", label: "판매가격", width: 150, align: "right", editor: "number"}
],
body: {
onClick: function () {
this.self.select(this.dindex, {selectedClear: true});
}
}
});
axboot.buttonClick(this, "data-grid-view-01-btn", {
"add": function () {
ACTIONS.dispatch(ACTIONS.ITEM_ADD);
},
"delete": function () {
ACTIONS.dispatch(ACTIONS.ITEM_DEL);
}
});
},
getData: function (_type) {
var _list = this.target.getList(_type);
if (_type == "modified" || _type == "deleted") {
list = ax5.util.filter(_list, function () {
return this.prdtCd ;
});
} else {
list = _list;
}
return list;
},
addRow: function () {
this.target.addRow({__created__: true, origin: "KR"}, "last");
},
delRow: function delRow(_type) {
this.target.deleteRow(_type); //여기서 무조건 deleteList에 추가해주고 있는것 같다.
//그렇다보니 기존 조회된 데이터가 아닌 신규로 추가한 후 삭제해도 추가되기 때문에
//저장시 안넘어가도 되는 데이터(화면상에서만 행추가후 삭제시)까지 날라간다.
//중복기능추가시: 조회된것이 아닌경우 deleteList에서 빼준다.
for(i=0;i<this.target.deletedList.length ;i++)
{
if(this.target.deletedList[i].__searched__==undefined)
{
this.target.deletedList[i]=null;
}
}
}
}); |