UNPKG

@jswf/core

Version:

JavaScript Window Framework

287 lines 12.4 kB
"use strict"; 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