<!-- ++ BEGIN ++ DNSCrypt Proxy ++ logsview.htm ++ -->
<%-
	local values = self:formvalue(section)
	if not values then
		values = self:cfgvalue(section) or {self.default}
	end

	local function serialize_json(x, cb)
		local rv, push = nil, cb
		if not push then
			rv = { }
			push = function(tok) rv[#rv+1] = tok end
		end

		if x == nil then
			push("null")
		elseif type(x) == "table" then
			push("[")
			for k = 1, #x do
				if k > 1 then
					push(",")
				end
				serialize_json(x[k], push)
			end
			push("]")
		else
			push('"%s"' % tostring(x):gsub('["%z\1-\31\\]',
				function(c) return '\\u%04x' % c:byte(1) end))
		end

		if not cb then
			return table.concat(rv, "")
		end
	end
-%>
<%+cbi/valueheader%>
<select class="cbi-input-select" onchange="onclick_logview(this, false)"
	<%=
	attr("name", cbid) .. attr("id", cbid) .. attr("value", self.default) .. ifattr(self.size, "size")
	%>
></select>
<script type="text/javascript">//<![CDATA[
	(function() {
		//var values = <%=serialize_json(values)%>;
		var keylist = <%=serialize_json(self.keylist)%>;
		var vallist = <%=serialize_json(self.vallist)%>;
		var parent = document.getElementById("<%=cbid%>");
			for (var j = 0; j < keylist.length; j++) {
				var opt = document.createElement("option");
				opt.value = keylist[j];
				if (j == 0) {
					opt.selected = "selected";
				}
				opt.appendChild(document.createTextNode(vallist[j]));
				parent.appendChild(opt);
			}
	}());
//]]></script>
<script type="text/javascript">//<![CDATA[
	function onclick_logview(id, bottom)  {
		// get elements
		var txt = document.getElementById("<%=cbid%>.txt");	// TextArea
		if ( !txt ) { return; }	// security check
	txt.value= "Reading: " +  document.getElementById("<%=cbid%>").value
		XHR.get('<%=luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy", "fileread")%>', {lfile: document.getElementById("<%=cbid%>").value} ,
			function(x, rv) {
			if(x.readyState === 4 ) {
			if(x.status === 200) {try{res = JSON.parse(x.responseText);}catch(e){res=null;}
			if(res !==null && typeof(res) === "object") txt.value = res[0]; if (bottom) txt.scrollTop = txt.scrollHeight; else txt.scrollTop = 0; txt.scrollLeft = 0;
			} else {
			txt.value = "XHR.get(<%=luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy", "fileread")%>) Failed!";
			}}});
			return false;
	}
//]]></script>

<%
-- one button on top, one at the buttom
%>
<br /><br />
<input class="cbi-button cbi-input-button" style="align: center; width: 100%" type="button" onclick='onclick_logview(this, false)'
<%=
attr("name", section) .. attr("id", cbid .. ".btn1") .. attr("value", self.inputtitle)
%> />

<br /><br />

<%
-- set a readable style taken from openwrt theme for textarea#syslog
-- in openwrt theme there are problems with a width of 100 so we check for theme and set to lower value
%>
<textarea style="width: <%if media == "/luci-static/openwrt.org" then%>98.7%<%else%>100%<%end%> ; min-height: 200px; border: 3px solid #cccccc; padding: 5px; font-family: monospace; resize: none;" wrap="off" readonly="readonly"
<%=
attr("name", cbid .. ".txt") .. attr("id", cbid .. ".txt") .. ifattr(self.rows, "rows")
%> >
<%-=pcdata(self:cfgvalue(section))-%>
</textarea>
<br /><br />

<%
-- one button on top, one at the buttom
%>
<input class="cbi-button cbi-input-button" style="align: center; width: 100%" type="button" onclick='onclick_logview(this, true)'
<%= attr("name", section) .. attr("id", cbid .. ".btn2") .. attr("value", self.inputtitle) %> />
<br /><br />
<%+cbi/valuefooter%>
<!-- ++ END ++ DNSCrypt Proxy ++ logsview.htm ++ -->
