ListView.prototype = {
addResult:
function
() {
var
data =
this
._model.getFormInput();
this
.createContent(data);
},
createContent:
function
(data) {
var
totalFieldGroup = [];
var
fieldGroup = [];
var
groups = {};
for
(
var
itr = 0; itr < data.length; itr++) {
if
(!totalFieldGroup.includes(data[itr][
"group"
]))
totalFieldGroup.push(data[itr][
"group"
]);
if
(
typeof
data[itr][
"validator"
] ==
"function"
)
this
._validators.push(data[itr][
"validator"
]);
}
var
form = document.createElement(
"form"
);
for
(
var
j = 0; j < totalFieldGroup.length; j++) {
fieldGroup.push(data.filter(
function
(individual) {
if
(individual[
"group"
] == totalFieldGroup[j]) {
return
true
;
}
else
{
return
false
;
}
}));
var
fieldset = document.createElement(
"fieldset"
);
var
legend = document.createElement(
"legend"
);
legend.innerHTML = fieldGroup[0][0][
"group"
];
fieldset.appendChild(legend);
this
.createComponent(fieldGroup, fieldset);
form.appendChild(fieldset);
fieldGroup = [];
}
var
subbtn = data.filter(
function
(individual) {
if
(individual[
"type"
] ==
"button"
) {
return
true
;
}
else
{
return
false
;
}
});
if
(subbtn.length == 0) {
alert(
"no submit button found"
);
return
;
}
var
btn =
this
.addSubmitButton(subbtn, form);
form.appendChild(btn);
form.setAttribute(
"id"
,
"parentForm"
);
document.body.appendChild(form);
},
addSubmitButton:
function
(subbtn, form) {
var
x = document.createElement(
"button"
);
x.setAttribute(
"type"
,
"submit"
);
x.innerHTML =
"Submit"
;
var
self =
this
;
x.addEventListener(
"click"
,
function
() {
for
(
var
i = 0; i < self._validators.length; i++) {
self._validators[i]();
}
subbtn[0][
"handler"
]();
form.submit();
});
return
x;
},
createComponent:
function
(fieldGroup, fieldset) {
var
ret = fieldset;
for
(
var
i = 0; i < fieldGroup.length; i++) {
switch
(fieldGroup[0][i].type) {
case
"text"
:
var
label = document.createElement(
"label"
);
label.innerHTML = fieldGroup[0][i].name;
var
x = document.createElement(
"INPUT"
);
x.setAttribute(
"type"
,
"text"
);
x.setAttribute(
"placeholder"
,
fieldGroup[0][i].placeholder);
x.setAttribute(
"id"
, fieldGroup[0][i].id);
fieldset.append(label);
fieldset.append(x);
break
;
case
"dropdown"
:
var
label = document.createElement(
"label"
);
label.innerHTML = fieldGroup[0][i].name;
var
select = document.createElement(
"select"
);
select.setAttribute(
"id"
, fieldGroup[0][i].id);
for
(
var
k = 0; k < fieldGroup[0][i].values.length; k++) {
var
option = document.createElement(
"option"
);
option.innerHTML = fieldGroup[0][i].values[k];
select.appendChild(option);
}
select.setAttribute(
"placeholder"
,
fieldGroup[0][i].placeholder);
fieldset.append(label);
fieldset.append(select);
break
;
case
"radio"
:
var
label1 = document.createElement(
"label"
);
label1.innerHTML = fieldGroup[0][i].name;
var
label = document.createElement(
"radiogroup"
);
for
(
var
k = 0; k < fieldGroup[0][i].values.length; k++) {
var
radio = document.createElement(
"input"
);
radio.type =
"radio"
;
radio.label = fieldGroup[0][i].values[k];
radio.innerHTML = fieldGroup[0][i].values[k];
radio.value = fieldGroup[0][i].values[k];
label.appendChild(radio);
}
label1.appendChild(label);
fieldset.append(label1);
break
;
}
}
}
};