@jswf/core
Version:
JavaScript Window Framework
287 lines • 12.4 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable @typescript-eslint/class-name-casing */
/* eslint-disable @typescript-eslint/interface-name-prefix */
var BaseView_1 = require("./BaseView");
var CalendarView_1 = require("./CalendarView");
require("../scss/TableFormView.scss");
/**
*入力用ウインドウ
*
* @export
* @class TableFormView
* @extends {BaseView}
*/
var TableFormView = /** @class */ (function (_super) {
__extends(TableFormView, _super);
function TableFormView(params) {
var _this = _super.call(this, params) || this;
_this.setJwfStyle("TableFormView");
var clientArea = document.createElement("div");
_this.getClient().appendChild(clientArea);
var table = document.createElement("div");
clientArea.appendChild(table);
var items = document.createElement("div");
_this.items = items;
table.appendChild(items);
var footer = document.createElement("div");
_this.footer = footer;
clientArea.appendChild(footer);
return _this;
}
TableFormView.prototype.addItem = function (params) {
var _this = this;
//配列ならば分解し再入力
if (Array.isArray(params)) {
for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {
var item = params_1[_i];
this.addItem(item);
}
return null;
}
if (params.type === "submit") {
var button = document.createElement("button");
if (params.label)
button.textContent = params.label;
if (params.name)
button.name = params.name;
this.footer.appendChild(button);
if (params.events) {
var events = params.events;
for (var key in events) {
button.addEventListener(key, events[key]);
}
}
return button;
}
else {
var that_1 = this;
var row = document.createElement(params.type === "checkbox" ? "label" : "div");
var label = document.createElement("div");
row.appendChild(label);
if (params.label)
label.innerText = params.label;
var data = document.createElement("div");
row.appendChild(data);
if (params.events) {
var events = params.events;
for (var key in events) {
data.addEventListener(key, events[key]);
}
}
var input_1;
var tag = void 0;
var date = void 0;
switch (params.type) {
case "date":
input_1 = document.createElement("input");
input_1.type2 = params.type;
input_1.readOnly = true;
input_1.type = "text";
input_1.size = 14;
input_1.name = params.name || "";
date = new Date(params.value);
input_1.value = params.value ? date.toLocaleDateString() : "-";
input_1.value2 = date;
data.appendChild(input_1);
input_1.addEventListener("click", function () {
var calendar = new CalendarView_1.CalendarView({ frame: true });
calendar.setPos();
if (input_1 instanceof HTMLInputElement && input_1.value2)
calendar.setSelect(input_1.value2, true);
calendar.addEventListener("date", function (e) {
input_1.value = e.date.toLocaleDateString();
if (input_1 instanceof HTMLInputElement)
input_1.value2 = e.date;
calendar.close();
_this.callEvent("itemChange", input_1);
});
});
break;
case "number":
input_1 = document.createElement("input");
input_1.type2 = params.type;
input_1.type = "number";
input_1.name = params.name || "";
input_1.value = params.value
? parseInt(params.value.toString()).toString()
: "";
data.appendChild(input_1);
break;
case "image":
input_1 = document.createElement("img");
if (params.image)
input_1.src = params.image;
input_1.type2 = params.type;
input_1.name = params.name || "";
if (params.image_width)
input_1.style.width = params.image_width;
data.appendChild(input_1);
break;
case "textarea":
input_1 = document.createElement("textarea");
input_1.type2 = params.type;
input_1.name = params.name || "";
input_1.value = params.value || "";
if (params.styles) {
var styles = params.styles;
for (var _a = 0, _b = Object.keys(styles); _a < _b.length; _a++) {
var key = _b[_a];
input_1.style.setProperty(key, styles[key]);
}
}
data.appendChild(input_1);
break;
case "string":
case "password":
input_1 = document.createElement("input");
input_1.type2 = params.type;
input_1.type = params.type === "string" ? "text" : "password";
input_1.name = params.name || "";
input_1.value = params.value || "";
data.appendChild(input_1);
break;
case "checkbox":
input_1 = document.createElement("input");
input_1.type2 = params.type;
input_1.type = "checkbox";
input_1.name = params.name || "";
input_1.checked = params.value == true;
data.appendChild(input_1);
break;
case "select":
input_1 = document.createElement("select");
input_1.type2 = params.type;
input_1.name = params.name || "";
input_1.addEventListener("change", function () {
that_1.callEvent("itemChange", this);
});
if (params.options) {
for (var _c = 0, _d = params.options; _c < _d.length; _c++) {
var o = _d[_c];
var option = document.createElement("option");
option.textContent = o.name;
option.value = o.value;
input_1.appendChild(option);
}
}
data.appendChild(input_1);
break;
default:
if (params.link) {
tag = document.createElement("a");
tag.target = "_blank";
tag.href = params.link;
}
else {
tag = document.createElement("div");
}
if (params.image) {
var image = document.createElement("img");
image.src = params.image;
if (params.image_width)
image.style.width = params.image_width;
tag.appendChild(image);
}
else {
tag.innerText = params.value;
}
data.appendChild(tag);
break;
}
this.items.appendChild(row);
return row;
}
};
TableFormView.prototype.getItem = function (name) {
var node = this.getClient().querySelector("[name=\"" + name + "\"]");
return node;
};
TableFormView.prototype.getParams = function () {
var values = {};
var nodes = this.items.querySelectorAll("select,input,img,textarea");
for (var length_1 = nodes.length, i = 0; i < length_1; ++i) {
var v = nodes[i];
if (v instanceof HTMLSelectElement) {
var name_1 = v.name;
var value = v.value;
values[name_1] = value;
}
else if (v instanceof HTMLInputElement) {
var vnode = v;
var name_2 = v.name;
var value = void 0;
switch (v.type2) {
case "checkbox":
value = v.checked;
break;
case "number":
value = parseInt(v.value);
break;
case "date":
if (v.value2)
value = new Date(v.value2).toDateString();
break;
default:
value = vnode.value2 ? vnode.value2 : v.value;
break;
}
values[name_2] = value;
}
else if (v instanceof HTMLImageElement) {
values[v.name] = v.value;
}
else if (v instanceof HTMLTextAreaElement) {
values[v.name] = v.value;
}
}
return values;
};
TableFormView.prototype.setParams = function (params) {
var nodes = this.items.querySelectorAll("select,input,textarea");
for (var length_2 = nodes.length, i = 0; i < length_2; ++i) {
var v = nodes[i];
if (v instanceof HTMLSelectElement || v instanceof HTMLTextAreaElement) {
var value = params[v.name];
if (value != null)
v.value = value.toString();
}
else if (v instanceof HTMLInputElement) {
var value = params[v.name];
if (value != null) {
switch (v.type2) {
case "checkbox":
v.checked = value;
break;
case "number":
v.value = parseInt(value).toString();
break;
case "date":
v.value = new Date(value.toString()).toLocaleDateString();
v.value2 = new Date(value.toString());
break;
default:
v.value = value.toString();
break;
}
}
}
}
};
return TableFormView;
}(BaseView_1.BaseView));
exports.TableFormView = TableFormView;
//# sourceMappingURL=TableFormView.js.map