152 lines
10 KiB
HTML
152 lines
10 KiB
HTML
<div class="inmodal">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title">{{operation | translate}}</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
<div class="col-sm-4 b-r">
|
|
<form role="form" name="form_virtualmeter" novalidate class="form-horizontal">
|
|
<div class="form-group"><label class="col-sm-5 control-label">{{'SETTING.NAME' | translate}}</label>
|
|
|
|
<div class="col-sm-7"><input ng-model="virtualmeter.name" type="text" name="virtualmetername" class="form-control" required="">
|
|
<div class="m-t-xs" ng-show="form_virtualmeter.virtualmetername.$invalid && form_virtualmeter.virtualmetername.$dirty">
|
|
<small class="text-danger" ng-show="form_virtualmeter.virtualmetername.$error.required">{{'SETTING.INPUT_NAME' | translate}}</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hr-line-dashed"></div>
|
|
<div class="form-group"><label class="col-sm-5 control-label">{{'SETTING.EXPRESSION' | translate}}</label>
|
|
|
|
<div class="col-sm-7">
|
|
<textarea ng-model="virtualmeter.expression.equation" type="text" rows="2" name="virtualmeterexpression" class="form-control" required=""></textarea>
|
|
<div class="m-t-xs" ng-show="form_virtualmeter.virtualmeterexpression.$invalid && form_virtualmeter.virtualmeterexpression.$dirty">
|
|
<small class="text-danger" ng-show="form_virtualmeter.virtualmeterexpression.$error.required">{{'SETTING.INPUT_EXPRESSION' | translate}}</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hr-line-dashed"></div>
|
|
<div class="form-group"><label class="col-sm-5 control-label">{{'SETTING.CATEGORY' | translate}}</label>
|
|
<div class="col-sm-7">
|
|
<ui-select ng-model="virtualmeter.energy_category.id" name="virtualmeter.energy_category_id" theme="bootstrap" required>
|
|
<ui-select-match placeholder="{{'COMMON.PLACEHOLDER' | translate}}">{{$select.selected.name}}</ui-select-match>
|
|
<ui-select-choices repeat="category.id as category in categories | filter: $select.search">
|
|
<div ng-bind-html="category.name | highlight: $select.search"></div>
|
|
</ui-select-choices>
|
|
</ui-select>
|
|
<div class="m-t-xs" ng-show="form_virtualmeter.virtualmeter.energy_category_id.$invalid && form_virtualmeter.virtualmeter.energy_category_id.$dirty">
|
|
<small class="text-danger" ng-show="form_virtualmeter.virtualmeter.energy_category_id.$error.required">{{'SETTING.SELECT_CATEGORY' | translate}}</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hr-line-dashed"></div>
|
|
<div class="form-group"><label class="col-sm-5 control-label">{{'SETTING.IS_INPUT_COUNTED' | translate}}</label>
|
|
<div class="col-sm-7">
|
|
<div class="checkbox checkbox-success">
|
|
<input id="chk_virtualmeter_iscounted" type="checkbox" ng-model="virtualmeter.is_counted" ng-checked="virtualmeter.is_counted">
|
|
<label for="chk_virtualmeter_iscounted">{{'SETTING.IS_INPUT_COUNTED' | translate}}</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hr-line-dashed"></div>
|
|
<div class="form-group"><label class="col-sm-5 control-label">{{'SETTING.COSTCENTER' | translate}}</label>
|
|
<div class="col-sm-7">
|
|
<ui-select ng-model="virtualmeter.cost_center.id" theme="bootstrap" required>
|
|
<ui-select-match allow-clear="false" placeholder="{{'COMMON.PLACEHOLDER' | translate}}">{{$select.selected.name}}</ui-select-match>
|
|
<ui-select-choices repeat="costcenter.id as costcenter in costcenters | filter: $select.search">
|
|
<div ng-bind-html="costcenter.name | highlight: $select.search"></div>
|
|
</ui-select-choices>
|
|
</ui-select>
|
|
</div>
|
|
</div>
|
|
<div class="hr-line-dashed"></div>
|
|
<div class="form-group"><label class="col-sm-5 control-label">{{'SETTING.ENERGY_ITEM' | translate}} ({{'SETTING.OPTIONAL' | translate}})</label>
|
|
<div class="col-sm-7">
|
|
<ui-select ng-model="virtualmeter.energy_item.id" name="virtualmeter.energy_item_id" theme="bootstrap">
|
|
<ui-select-match allow-clear="true" placeholder="{{'COMMON.PLACEHOLDER' | translate}}">{{$select.selected.name}}</ui-select-match>
|
|
<ui-select-choices repeat="energyitem.id as energyitem in energyitems | filter: $select.search">
|
|
<div ng-bind-html="energyitem.name | highlight: $select.search"></div>
|
|
</ui-select-choices>
|
|
</ui-select>
|
|
<div class="m-t-xs" ng-show="form_virtualmeter.virtualmeter.energy_item_id.$invalid && form_virtualmeter.virtualmeter.energy_item_id.$dirty">
|
|
<small class="text-danger" ng-show="form_virtualmeter.virtualmeter.energy_item_id.$error.required">{{'SETTING.SELECT_ENERGY_ITEM' | translate}}</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hr-line-dashed"></div>
|
|
<div class="form-group"><label class="col-sm-5 control-label">{{'METER.DESCRIPTION' | translate}} ({{'SETTING.OPTIONAL' | translate}})</label>
|
|
<div class="col-sm-7">
|
|
<input ng-model="virtualmeter.description" type="text" name="virtualmeterdescription" class="form-control" >
|
|
<div class="m-t-xs" ng-show="form_virtualmeter.meterdescription.$invalid && form_virtualmeter.virtualmeterdescription.$dirty">
|
|
<small class="text-danger" ng-show="form_virtualmeter.virtualmeterdescription.$error.required">{{'METER.INPUT_DESCRIPTION' | translate}}</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="col-sm-8">
|
|
<table id="variablesTable" class="footable table table-bordered table-hover" data-sort="false" data-page-size="20" >
|
|
<thead>
|
|
<tr>
|
|
<th class="text-center">{{'SETTING.VARIABLE_NAME' | translate}}</th>
|
|
<th class="text-center">{{'SETTING.METER_TYPE' | translate}}</th>
|
|
<th class="text-center">{{'SETTING.METER_NAME' | translate}}</th>
|
|
<th class="text-center">{{'SETTING.ACTION' | translate}}</th>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td class="text-center sm ">
|
|
Auto
|
|
</td>
|
|
<td class="text-center sm">
|
|
<ui-select on-select="changeMeterType($item, $model)" ng-model="currentMeterType.selected" theme="bootstrap">
|
|
<ui-select-match placeholder="{{'COMMON.PLACEHOLDER' | translate}}">{{$select.selected.name | translate}}</ui-select-match>
|
|
<ui-select-choices repeat="metertype in metertypes | filter: $select.search">
|
|
<div ng-bind-html="metertype.name | translate | highlight: $select.search"></div>
|
|
</ui-select-choices>
|
|
</ui-select>
|
|
</td>
|
|
<td class="text-center sm">
|
|
<ui-select on-select="changeMeter($item, $model)" ng-model="currentMeter.selected" theme="bootstrap">
|
|
<ui-select-match placeholder="{{'COMMON.PLACEHOLDER' | translate}}">{{$select.selected.name}}</ui-select-match>
|
|
<ui-select-choices repeat="currentMeter in currentmeters | filter: $select.search">
|
|
<div ng-bind-html="currentMeter.name | highlight: $select.search"></div>
|
|
</ui-select-choices>
|
|
</ui-select>
|
|
</td>
|
|
|
|
<td class="text-center sm">
|
|
<a class="btn btn-primary btn-rounded btn-xs" ng-click="add()" >{{'SETTING.ADD' | translate}}</a>
|
|
</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<tr ng-repeat="variable in virtualmeter.expression.variables">
|
|
<td class="text-center sm">{{ variable.name }}</td>
|
|
<td class="text-center sm">{{ metertypemap[variable.meter_type] | translate }}</td>
|
|
<td class="text-center sm">{{ variable.meter_name }}</td>
|
|
|
|
<td class="text-center sm">
|
|
<a ng-click="delete($index)" class="btn btn-danger btn-rounded btn-xs" >{{'SETTING.DELETE' | translate}}</a>
|
|
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
<tfoot class="hide-if-no-paging">
|
|
<tr>
|
|
<td colspan="7">
|
|
<ul class="pagination pull-right"></ul>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-white" ng-click="cancel()">{{'SETTING.CANCEL' | translate}}</button>
|
|
<button type="button" ng-disabled="form_virtualmeter.$invalid" class="btn btn-primary" ng-click="ok()">{{'SETTING.SAVE' | translate}}</button>
|
|
</div>
|
|
</div>
|