PageSourceSearch

https://thai-mecc.go.th/share/js/utils/ColumnValueUtils.js

js thai-mecc.go.th collected 2026-10-09 03:35:22 UTC 7,180 bytes, 181 lines download raw bytes

1 async function getColumnValue(object, column, data) {
2	let type = column.typeName;
3	if (data == undefined) return value;
4	if (type == "EnumSelect") return getSelectColumnValue(column, data);
5	else if(type == "Select") return getSelectColumnValue(column, data);
6	else if (type == "EnumCheckBox") return getSelectColumnValue(column, data);
7	else if (type == "Enable") return getEnableColumnValue(column, data);
8	else if (type == "Radio") return getRadioColumnValue(column, data);
9	else if (type == "EnumRadio") return getRadioColumnValue(column, data);
10	else if (type == "ReferenceRadio") return getRadioColumnValue(column, data);
11	else if (type == "ReferenceSelect")  return getReferenceRadioColumnValue(column, data);
12	else if (type == "PrerequisiteReferenceSelect") return await getPrerequisiteColumnValue(object, column, data);
13	else if (type == "AutoComplete") return await getAutoCompleteColumnValue(column, data);
14	else if(type == "Fraction")  return getFractionColumnValue(column, data);
15	else if (type == "Currency")  return getCurrencyColumnValue(column, data);
16	else if (type == "Number") return new Intl.NumberFormat('th-TH', {}).format(data[column.columnName]);
17	else if (type == "FileMatrix")  return JSON.parse(data[column.columnName]);
18	else if (type == "Color") return `<input style="width:100%;" type="color" disabled value="${data[column.columnName]}"/>`
19	else if (type == "Status") return getStatusColumnValue(column, data);
20	else if (type == "Image") return await getImageColumnValue(column, data);
21	else if (type == "Date") return getDateColumnValue(column, data);
22	else if (type == "DateTime") return getDateTimeColumnValue(column, data);
23	else if (column.optionMap != undefined) return data[column.columnName];
24	else return data[column.columnName];
25}
26
27function getRadioColumnValue(column, data) {
28	let value = data[column.columnName];
29	for (let j in column.option) {
30		if (column.option[j].value == value) return column.option[j].label;
31	}
32	return value
33}
34
35function getReferenceRadioColumnValue(column, data){
36	if (column.option != undefined) {
37		column.optionMap = {}
38		for (let option of column.option) {
39			column.optionMap[option.value] = option.label;
40		}
41	}
42	if (column.optionMap == undefined) return "-";
43	if (column.optionMap[data[column.columnName]] == undefined) return "-";
44	if (column.optionMap[data[column.columnName]] != undefined){
45		return column.optionMap[data[column.columnName]];
46	}
47	return "";
48}
49
50function getSelectColumnValue(column, data){
51	let value = data[column.columnName];
52	for (let j in column.option) {
53		if (column.option[j].value == value) return column.option[j].label;
54	}
55	return value
56}
57
58function getEnableColumnValue(column, data){
59	let value = data[column.columnName];
60	if (value) value = 'Enable';
61	else value = 'Disable';
62	return value;
63}
64
65function getReferenceSelectColumnValue(column, data){
66	if (column.option != undefined) {
67		column.optionMap = {}
68		for (let option of column.option) {
69			column.optionMap[option.value] = option.label;
70		}
71	}
72	if (column.optionMap == undefined) return "-";
73	if (column.optionMap[data[column.columnName]] == undefined) return "-";
74	if (column.optionMap[data[column.columnName]] != undefined){
75		return column.optionMap[data[column.columnName]];
76	}
77	return "";
78}
79
80async function getPrerequisiteColumnValue(object, column, data){
81	if (column.tableURL) return '-';
82	let value = data[column.columnName];
83	let prerequisite = column.prerequisite.split('.');
84	prerequisite = data[prerequisite[prerequisite.length-1]];
85	if (prerequisite != undefined && prerequisite != -1) {
86		let results;
87		if (object.prerequisiteCache[column.url+prerequisite] == undefined) {
88			let response = await GET(column.url+prerequisite, undefined, 'json', true);
89			if (!response.isSuccess) return "-";
90			results = response.results;
91			if (response.result != undefined) results = response.result;
92			object.prerequisiteCache[column.url+prerequisite] = {time: Date.now(), results: results};
93		} else if (object.prerequisiteCache[column.url+prerequisite].time - Date.now() > 5000){
94			let response = await GET(column.url+prerequisite, undefined, 'json', true);
95			if (!response.isSuccess) return "-";
96			results = response.results;
97			if (response.result != undefined) results = response.result;
98			object.prerequisiteCache[column.url+prerequisite] = {time: Date.now(), results: results};
99		} else {
100			results = object.prerequisiteCache[column.url+prerequisite].results;
101		}
102		let valueMap = {};
103		try {
104			valueMap = results.reduce((a, v) => ({ ...a, [v.value]: v.label}), {});
105		} catch (error) {
106			// console.error(error);
107		}
108		if (valueMap[value] == undefined){
109			return "-"
110		}
111		value = valueMap[value];
112	} else {
113		return '-'
114	}
115	return value;
116}
117
118async function getAutoCompleteColumnValue(column, data){
119	let value = "";
120	if (column.tableURL) return '-';
121	if(data[column.columnName] == '') return value;
122	let response = await POST(`${column.url}/by/reference`, {'reference': data[column.columnName]}, undefined, 'json', true);
123	if (response == undefined) return value;
124	if (response.isSuccess) return response.label;
125	return "";
126}
127
128function getFractionColumnValue(column, data){
129	let fraction = data[column.columnName];
130	let value = (new Fraction(fraction)).toString();
131	value = new Intl.NumberFormat('th-TH', {}).format(value);
132	return value;
133}
134
135function getCurrencyColumnValue(column, data){
136	let value = "";
137	let currency = data[column.columnName];
138	if (typeof currency != 'object') {
139		value = new Intl.NumberFormat('th-TH', { style: 'currency', currency: 'THB'}).format(currency);
140	} else {
141		value = new Intl.NumberFormat('th-TH', { style: 'currency', currency: currency.originCurrency}).format(currency.originValue);
142	}
143	return value;
144}
145
146function getStatusColumnValue(column, data){
147	let item = data[column.columnName];
148	let classList = item.classList != undefined ? item.classList.join(" "): "";
149	let color = item.color != undefined ? item.color: '';
150	if (column.option) {
151		let option = column.option[data[column.columnName]];
152		if (option != undefined) {
153			color = option.color;
154			item = option;
155		}
156	}
157	let style = color != '' ? `style="background:${color} !important;"`: '';
158	return `<div ${style} class="status_flag ${classList}"><span class="tooltiptext" localize>${item.label}</span></div>`;
159}
160
161async function getImageColumnValue(column, data){
162	let item = data[column.columnName];
163	let icon = await CREATE_SVG_ICON("Image");
164	return `<div class="flex center">
165				<div class="abstract_operation_button " rel="view" onclick="">${icon.icon}</div>
166			</div>`
167}
168
169function getDateColumnValue(column, data){
170	if (data[column.columnName] != undefined && data[column.columnName] != 0) {
171		return new Intl.DateTimeFormat(LANGUAGE, {day: "2-digit", month: "2-digit", year: "numeric"}).format(new Date(data[column.columnName]))
172	}
173	return "";
174}
175
176function getDateTimeColumnValue(column, data){
177	if (data[column.columnName] != undefined && data[column.columnName] != 0) {
178		return new Intl.DateTimeFormat(LANGUAGE, {day: "2-digit", month: "2-digit", year: "numeric", hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false}).format(new Date(data[column.columnName]))
179	}
180	return "";
181}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.