'use strict';
'require view';
'require uci';
'require rpc';
'require fs';
'require ui';

return view.extend({
	callServiceList: rpc.declare({
		object: 'service',
		method: 'list',
		params: [ 'name' ],
		expect: { 'apinger': {} }
	}),

	callApingerUpdateGraphs: rpc.declare({
		object: 'apinger',
		method: 'update_graphs',
		expect: { '': {} }
	}),

	load: function() {
		return Promise.all([
			this.callServiceList('apinger'),
			this.callApingerUpdateGraphs(),
		]);
	},

	render: function(res) {
		var running = Object.keys(res[0].instances || {}).length > 0;
		var script = res[1]['rrdcgi'];

		if (!running) {
			return ui.addNotification(null, E('h3', _('Service is not running'), 'danger'));
		}

		return fs.stat(script).then(function(res) {
			if ((res.type == "file") && (res.size > 100)) {
				return E([
					E('h3', _('Apinger Targets RRD Graph')),
					E('br'),
					E('div', [
						E('iframe', {
							src: script.replace(/^\/www/g, ''),
							scrolling: 'yes',
							style : 'width: 85vw; height: 100vh; border: none;'
						})
					])
				]);
			} else {
				return ui.addNotification(null, E('h3', _('No data available'), 'danger'));
			}
		}).catch(function(err) {
			return ui.addNotification(null, E('h3', _('No access to server file'), 'danger'));
		});
	},

	handleSaveApply: null,
	handleSave: null,
	handleReset: null
});