summaryrefslogblamecommitdiffstats
path: root/modules-available/eventlog/templates/page-filters-edit-rule.html
blob: a9251f53b5ba3f1af2957ee2cc04e31479c56121 (plain) (tree)
1
2
3
4
5
6
7
8
9








                                                                 

                                                                                                                              





















                                                                                                              


                                                     
                                                                   













                                                                                                                                     



                                                                      









                                                                                                                           





                                                                                                        

                                   




                                           



                                         

                                                                                              






























                                                                                                                              
                                                    



                                                                                                     
































                                                                                               
                                      







                                                                    



                                                                                


















                                                                                    

           
<h2>{{title}}</h2>


<form method="post" action="?do=eventlog&amp;show=rules">
	<input type="hidden" name="token" value="{{token}}">
	<input type="hidden" name="id" value="{{ruleid}}">
	<div class="form-group row">
		<div class="col-md-4">
			<label for="i-type">{{lang_type}}</label>
			<input autocomplete="off" id="i-type" list="i-types" class="form-control" name="type" value="{{type}}"
					 required>
			<datalist id="i-types">
				{{#types}}
				<option value="{{.}}">{{lang_typeExample}}: {{.}}</option>
				{{/types}}
			</datalist>
		</div>
		<div class="col-md-8">
			<label for="i-title">{{lang_title}}</label>
			<input id="i-title" class="form-control" name="title" value="{{title}}" required>
		</div>
	</div>
	<div class="form-group row">
		<div class="col-md-12">
			<label for="i-transports">{{lang_transports}}</label>
			<select multiple name="transports[]" id="i-transports" class="form-control multilist">
				{{#transports}}
				<option value="{{transportid}}" {{selected}}>{{title}}</option>
				{{/transports}}
			</select>
		</div>
	</div>
	{{#filter}}
	<div class="form-group row">
		<div class="col-md-1 col-sm-3">
			<label>{{lang_index}}</label>
			<span class="form-control">{{index}}</span>
		</div>
		<div class="col-md-2 col-sm-9">
			<label for="key-{{index}}">
				{{lang_filterPath}}
			</label>
			<input id="key-{{index}}" class="form-control filter-key" name="filter[{{index}}][path]" value="{{path}}"
					 list="filter-keys"
					 autocomplete="off" data-index="{{index}}">
		</div>
		<div class="col-md-1 col-sm-6">
			<label for="op-{{index}}">
				{{lang_filterOp}}
			</label>
			<select id="op-{{index}}" class="form-control op-select" name="filter[{{index}}][op]" data-index="{{index}}">
				{{#operators}}
				<option {{selected}}>{{name}}</option>
				{{/operators}}
			</select>
		</div>
		<div class="col-md-3 col-sm-6">
			<label for="arg-{{index}}">
				{{lang_filterArg}}
			</label>
			<input id="arg-{{index}}" class="form-control op-arg" name="filter[{{index}}][arg]" value="{{arg}}"
					 data-index="{{index}}">
		</div>
		<div class="col-md-5 col-sm-12 small" id="sample-{{index}}" style="word-break:break-all">
		</div>
		<!--label>
			{{lang_filterResult}}
			<input class="form-control" name="filter[{{index}}][result]" value="{{result}}">
		</label-->
	</div>
	{{/filter}}
	<datalist id="filter-keys">
	</datalist>
	<datalist id="machine-filter-keys">
		{{#machine_keys}}
		<option>{{.}}</option>
		{{/machine_keys}}
	</datalist>
	<div>
		<p>{{lang_hintRegex}}</p>
	</div>
	<div class="form-group">
		<label for="i-subject">{{lang_subject}}</label>
		<input id="i-subject" class="form-control" name="subject" value="{{subject}}">
	</div>
	<div class="form-group">
		<label for="msg-txt">
			{{lang_messageTemplate}}
		</label>
		<textarea required id="msg-txt" name="message" class="form-control" rows="10" cols="80">{{message}}</textarea>
		<p>
			{{lang_messageTemplateHelp}} Platzhalter %zeile.n%, blabla....
		</p>
	</div>
	<div class="buttonbar text-right">
		<a class="btn btn-default" href="?do=eventlog&amp;show=rules">
			{{lang_cancel}}
		</a>
		<button class="btn btn-primary" type="submit" name="action" value="save-filter">
			<span class="glyphicon glyphicon-floppy-disk"></span>
			{{lang_save}}
		</button>
	</div>
</form>

<script>
	document.addEventListener('DOMContentLoaded', function () {
		var $multilists = $("select.multilist");
		if ($multilists.multiselect) {
			$multilists.multiselect({
				includeSelectAllOption: true,
				buttonWidth: '100%',
				buttonClass: 'form-control'
			});
		}
		$('.op-select').change(function () {
			var $t = $(this);
			var disabled = $t.val() === '*';
			$('.op-arg[data-index=' + $t.data('index') + ']').prop('disabled', disabled);
		}).change();
		var currentType = {};
		var typeSamples = {};
		var typeChanged = true;
		var $type = $('#i-type');
		var $list = $('#filter-keys');
		var $fkInputs = $('.filter-key');
		// Flag if type changed
		$type.change(function () {
			typeChanged = true;
		});
		// If type changed, fetch sample data, or use cached, and populate autocomplete
		$fkInputs.focus(function () {
			if (!typeChanged)
				return;
			typeChanged = false;
			var typeVal = $type.val();
			if (typeSamples[typeVal]) {
				setAutocomplete(typeVal);
				return;
			}
			$.ajax('?do=eventlog&show=rules', {
				data: {type: typeVal, token: TOKEN},
				method: 'POST',
				dataType: 'json'
			}).done(function (data) {
				typeSamples[typeVal] = data;
				setAutocomplete(typeVal);
			});
		});

		// Population function
		function setAutocomplete(type) {
			var t = typeSamples[type];
			var m = false;
			$list.empty();
			if (!t)
				return;
			currentType = t;
			for (var k in t) {
				if (!t.hasOwnProperty(k))
					continue;
				$list.append($('<option>').text(k));
				if (k === 'machineuuid') m = true;
			}
			if (m) {
				$list.append($('#machine-filter-keys').clone());
			}
		}

		// Display sample data
		var chFn = function () {
			var $this = $(this);
			var wat = currentType[$this.val()];
			if (wat) {
				wat = wat.replace("\r", "\\r").replace("\n", "\\n");
				if (wat.length > 180) {
					wat = wat.substr(0, 180) + '...';
				}
			} else {
				wat = '';
			}
			var index = $this.data('index');
			$('#sample-' + index).text(wat);
		};
		$fkInputs.on('input', chFn).change(chFn).change();
	});
</script>