/**
 * @file    signals.js
 * @brief   信号管理页面 — out / in / yk / ao (统一渲染)
 */


/* ---- Out ---- */
Router.register('#out', function(c) {
	c.innerHTML = renderSignalPage('out',
		['<input type="checkbox" style="pointer-events:none;opacity:0">', I18n.t('signal.saddr'), I18n.t('signal.desc'), I18n.t('signal.type')],
		function(s) { return td(esc(s.type || '?'), 'cell-mono'); },
		function(s) {
			return '<div class="btn-group">'
				+ '<button class="btn btn-sm" onclick="SignalActions.set(\'out\',\'' + esc(s.saddr) + '\')">' + Icon.get('edit') + ' ' + I18n.t('signal.set') + '</button>'
				+ '<button class="btn btn-danger btn-sm" onclick="SignalActions.del(\'out\',\'' + esc(s.saddr) + '\')">' + Icon.get('trash') + '</button>'
				+ '</div>';
		}
	);
	[].slice.call(document.querySelectorAll('#tbody-out tr')).forEach(function(tr) {
		var saddr = (tr.querySelector('.cell-mono') || {}).textContent || '';
		tr.dataset.saddr = saddr;
		tr.querySelector('td:first-child').innerHTML = '<input type="checkbox">';
	});
});

/* ---- In ---- */
Router.register('#in', function(c) {
	c.innerHTML = renderSignalPage('in',
		['<input type="checkbox" style="pointer-events:none;opacity:0">', I18n.t('signal.saddr'), I18n.t('signal.desc'), I18n.t('signal.link'), I18n.t('signal.type')],
		function(s) { return td(esc(s.link_saddr || '\u2014'), 'cell-mono') + td(esc(s.type || '?'), 'cell-mono'); },
		function(s) {
			return '<button class="btn btn-danger btn-sm" onclick="SignalActions.del(\'in\',\'' + esc(s.saddr) + '\')">' + Icon.get('trash') + '</button>';
		}
	);
	[].slice.call(document.querySelectorAll('#tbody-in tr')).forEach(function(tr) {
		var saddr = (tr.querySelector('.cell-mono') || {}).textContent || '';
		tr.dataset.saddr = saddr;
		tr.querySelector('td:first-child').innerHTML = '<input type="checkbox">';
	});
});

/* ---- YK ---- */
Router.register('#yk', function(c) {
	c.innerHTML = renderSignalPage('yk',
		[I18n.t('signal.saddr'), I18n.t('signal.desc'), I18n.t('signal.type'), I18n.t('signal.ctrl')],
		function(s) { return td(esc(s.type || '?'), 'cell-mono') + td(s.ctrl_type == 1 ? I18n.t('signal.ctrl_sbo') : I18n.t('signal.ctrl_direct'), 'cell-mono'); },
		function(s) {
			return '<div class="btn-group">'
				+ '<button class="btn btn-sm" onclick="SignalActions.set(\'yk\',\'' + esc(s.saddr) + '\')">' + Icon.get('edit') + ' ' + I18n.t('signal.set') + '</button>'
				+ '<button class="btn btn-danger btn-sm" onclick="SignalActions.del(\'yk\',\'' + esc(s.saddr) + '\')">' + Icon.get('trash') + '</button>'
				+ '</div>';
		}
	);
});

/* ---- AO ---- */
Router.register('#ao', function(c) {
	c.innerHTML = renderSignalPage('ao',
		[I18n.t('signal.saddr'), I18n.t('signal.desc'), I18n.t('signal.type'), I18n.t('signal.ctrl')],
		function(s) { return td(esc(s.type || '?'), 'cell-mono') + td(s.ctrl_type == 1 ? I18n.t('signal.ctrl_sbo') : I18n.t('signal.ctrl_direct'), 'cell-mono'); },
		function(s) {
			return '<div class="btn-group">'
				+ '<button class="btn btn-sm" onclick="SignalActions.set(\'ao\',\'' + esc(s.saddr) + '\')">' + Icon.get('edit') + ' ' + I18n.t('signal.set') + '</button>'
				+ '<button class="btn btn-danger btn-sm" onclick="SignalActions.del(\'ao\',\'' + esc(s.saddr) + '\')">' + Icon.get('trash') + '</button>'
				+ '</div>';
		}
	);
});
