Merge remote-tracking branch 'upstream/develop' into issue#86
commit
92a8e9dbf5
|
@ -3,12 +3,10 @@
|
||||||
app.controller('RuleController', function($scope, $common, $uibModal, $translate, RuleService, toaster, SweetAlert) {
|
app.controller('RuleController', function($scope, $common, $uibModal, $translate, RuleService, toaster, SweetAlert) {
|
||||||
|
|
||||||
$scope.initExpression = [{
|
$scope.initExpression = [{
|
||||||
"spaceid": 1,
|
"sample_object_id": 1,
|
||||||
"limit": 1000.000,
|
"limit": 1000.000,
|
||||||
"recipients": [{
|
"recipients": [{
|
||||||
"user_id": "1"
|
"user_id": "1"
|
||||||
}, {
|
|
||||||
"user_id": "2"
|
|
||||||
}]
|
}]
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
|
|
@ -100,9 +100,11 @@ function config($translateProvider) {
|
||||||
PRIORITY: 'Priority',
|
PRIORITY: 'Priority',
|
||||||
CHANNEL: 'Channel',
|
CHANNEL: 'Channel',
|
||||||
IS_ENABLED: 'Is Enabled',
|
IS_ENABLED: 'Is Enabled',
|
||||||
|
LAST_RUN_DATETIME: 'Last Run Datetime',
|
||||||
|
NEXT_RUN_DATETIME: 'Next Run Datetime',
|
||||||
EXPRESSION: 'Expression',
|
EXPRESSION: 'Expression',
|
||||||
MESSAGE_TEMPLATE: 'Message Template',
|
MESSAGE_TEMPLATE: 'Message Template',
|
||||||
DES_EXPRESSION: 'Click "Edit" for details',
|
CLICK_EDIT_FOR_DETAILS: 'Click "Edit" for details',
|
||||||
|
|
||||||
SMS_ALARM_LIST: 'SMS Alarm List',
|
SMS_ALARM_LIST: 'SMS Alarm List',
|
||||||
RECIPIENT_NAME: 'Recipient Name',
|
RECIPIENT_NAME: 'Recipient Name',
|
||||||
|
@ -1151,9 +1153,11 @@ function config($translateProvider) {
|
||||||
PRIORITY: '报警优先级',
|
PRIORITY: '报警优先级',
|
||||||
CHANNEL: '报警通道',
|
CHANNEL: '报警通道',
|
||||||
IS_ENABLED: '报警开关',
|
IS_ENABLED: '报警开关',
|
||||||
|
LAST_RUN_DATETIME: '上次运行时间',
|
||||||
|
NEXT_RUN_DATETIME: '下次运行时间',
|
||||||
EXPRESSION: '表达式',
|
EXPRESSION: '表达式',
|
||||||
MESSAGE_TEMPLATE: '消息模板',
|
MESSAGE_TEMPLATE: '消息模板',
|
||||||
DES_EXPRESSION: '点击"修改"查看详情',
|
CLICK_EDIT_FOR_DETAILS: '点击"修改"查看详情',
|
||||||
|
|
||||||
SMS_ALARM_LIST: '短信报警列表',
|
SMS_ALARM_LIST: '短信报警列表',
|
||||||
RECIPIENT_NAME: '接收人',
|
RECIPIENT_NAME: '接收人',
|
||||||
|
@ -2199,9 +2203,11 @@ function config($translateProvider) {
|
||||||
PRIORITY: 'Alarmpriorität',
|
PRIORITY: 'Alarmpriorität',
|
||||||
CHANNEL: 'Alarmkanal',
|
CHANNEL: 'Alarmkanal',
|
||||||
IS_ENABLED: 'Alarmschalter',
|
IS_ENABLED: 'Alarmschalter',
|
||||||
|
LAST_RUN_DATETIME: 'Letzter Lauf Datetime',
|
||||||
|
NEXT_RUN_DATETIME: 'Nächster Lauf Datetime',
|
||||||
EXPRESSION: 'Ausdruck',
|
EXPRESSION: 'Ausdruck',
|
||||||
MESSAGE_TEMPLATE: 'Nachrichtenvorlage',
|
MESSAGE_TEMPLATE: 'Nachrichtenvorlage',
|
||||||
DES_EXPRESSION: 'Klicken Sie auf "Bearbeiten"',
|
CLICK_EDIT_FOR_DETAILS: 'Klicken Sie auf "Bearbeiten"',
|
||||||
|
|
||||||
SMS_ALARM_LIST: 'SMS-Alarmliste',
|
SMS_ALARM_LIST: 'SMS-Alarmliste',
|
||||||
RECIPIENT_NAME: 'Empfänger',
|
RECIPIENT_NAME: 'Empfänger',
|
||||||
|
|
|
@ -11,11 +11,13 @@
|
||||||
<tr>
|
<tr>
|
||||||
<th >{{'SETTING.ID' | translate}}</th>
|
<th >{{'SETTING.ID' | translate}}</th>
|
||||||
<th >{{'SETTING.NAME' | translate}}</th>
|
<th >{{'SETTING.NAME' | translate}}</th>
|
||||||
<th >{{'FDD.FDD_CODE' | translate}}</th>
|
|
||||||
<th >{{'FDD.CATEGORY' | translate}}</th>
|
<th >{{'FDD.CATEGORY' | translate}}</th>
|
||||||
|
<th >{{'FDD.FDD_CODE' | translate}}</th>
|
||||||
<th >{{'FDD.PRIORITY' | translate}}</th>
|
<th >{{'FDD.PRIORITY' | translate}}</th>
|
||||||
<th >{{'FDD.CHANNEL' | translate}}</th>
|
<th >{{'FDD.CHANNEL' | translate}}</th>
|
||||||
<th >{{'FDD.IS_ENABLED' | translate}}</th>
|
<th >{{'FDD.IS_ENABLED' | translate}}</th>
|
||||||
|
<th >{{'FDD.LAST_RUN_DATETIME' | translate}}</th>
|
||||||
|
<th >{{'FDD.NEXT_RUN_DATETIME' | translate}}</th>
|
||||||
<th >{{'FDD.EXPRESSION' | translate}}</th>
|
<th >{{'FDD.EXPRESSION' | translate}}</th>
|
||||||
<th >{{'FDD.MESSAGE_TEMPLATE' | translate}}</th>
|
<th >{{'FDD.MESSAGE_TEMPLATE' | translate}}</th>
|
||||||
<th >{{'SETTING.ACTION' | translate}}</th>
|
<th >{{'SETTING.ACTION' | translate}}</th>
|
||||||
|
@ -26,13 +28,15 @@
|
||||||
<tr ng-repeat="rule in rules">
|
<tr ng-repeat="rule in rules">
|
||||||
<td >{{ rule.id }}</td>
|
<td >{{ rule.id }}</td>
|
||||||
<td >{{ rule.name }}</td>
|
<td >{{ rule.name }}</td>
|
||||||
<td >{{ rule.fdd_code }}</td>
|
|
||||||
<td >{{ rule.category }}</td>
|
<td >{{ rule.category }}</td>
|
||||||
|
<td >{{ rule.fdd_code }}</td>
|
||||||
<td >{{ rule.priority }}</td>
|
<td >{{ rule.priority }}</td>
|
||||||
<td >{{ rule.channel }}</td>
|
<td >{{ rule.channel }}</td>
|
||||||
<td >{{ rule.is_enabled==true?'SETTING.ON':'SETTING.OFF' | translate}}</td>
|
<td >{{ rule.is_enabled==true?'SETTING.ON':'SETTING.OFF' | translate}}</td>
|
||||||
<td > {{'FDD.DES_EXPRESSION' | translate}} </td>
|
<td >{{ rule.last_run_datetime | date:'yyyy-MM-ddTHH:mm:ss'}}</td>
|
||||||
<td class="col-lg-5 col-md-5">{{ rule.message_template }}</td>
|
<td >{{ rule.next_run_datetime | date:'yyyy-MM-ddTHH:mm:ss'}}</td>
|
||||||
|
<td > {{'FDD.CLICK_EDIT_FOR_DETAILS' | translate}} </td>
|
||||||
|
<td > {{'FDD.CLICK_EDIT_FOR_DETAILS' | translate}} </td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<a class="btn btn-primary btn-rounded btn-xs" ng-click="editRule(rule)" >{{'SETTING.EDIT' | translate}}</a>
|
<a class="btn btn-primary btn-rounded btn-xs" ng-click="editRule(rule)" >{{'SETTING.EDIT' | translate}}</a>
|
||||||
<a ng-click="deleteRule(rule)" class="btn btn-danger btn-rounded btn-xs" >{{'SETTING.DELETE' | translate}}</a>
|
<a ng-click="deleteRule(rule)" class="btn btn-danger btn-rounded btn-xs" >{{'SETTING.DELETE' | translate}}</a>
|
||||||
|
|
|
@ -6,42 +6,18 @@
|
||||||
<form role="form" name="form_rule" novalidate class="form-horizontal">
|
<form role="form" name="form_rule" novalidate class="form-horizontal">
|
||||||
<div class="form-group"><label class="col-sm-2 control-label">{{'SETTING.NAME' | translate}}</label>
|
<div class="form-group"><label class="col-sm-2 control-label">{{'SETTING.NAME' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-10"><input ng-model="rule.name" type="text" name="rulename" class="form-control" required="">
|
<div class="col-sm-5"><input ng-model="rule.name" type="text" name="rulename" class="form-control" required="">
|
||||||
<div class="m-t-xs" ng-show="form_rule.rulename.$invalid && form_rule.rulename.$dirty">
|
<div class="m-t-xs" ng-show="form_rule.rulename.$invalid && form_rule.rulename.$dirty">
|
||||||
<small class="text-danger" ng-show="form_rule.rulename.$error.required">{{'SETTING.INPUT_NAME' | translate}}</small>
|
<small class="text-danger" ng-show="form_rule.rulename.$error.required">{{'SETTING.INPUT_NAME' | translate}}</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.FDD_CODE' | translate}}</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<select name="fdd_code" ng-model="rule.fdd_code" class="form-control m-b">
|
|
||||||
<option value="SYSTEM01">SYSTEM01</option>
|
|
||||||
<option value="SYSTEM02">SYSTEM02</option>
|
|
||||||
<option value="SPACE01">SPACE02</option>
|
|
||||||
<option value="SPACE02">SPACE02</option>
|
|
||||||
<option value="METER01">METER01</option>
|
|
||||||
<option value="METER02">METER02</option>
|
|
||||||
<option value="TENANT01">TENANT01</option>
|
|
||||||
<option value="TENANT02">TENANT02</option>
|
|
||||||
<option value="STORE01">STORE01</option>
|
|
||||||
<option value="STORE02">STORE02</option>
|
|
||||||
<option value="SHOPFLOOR01">SHOPFLOOR01</option>
|
|
||||||
<option value="SHOPFLOOR02">SHOPFLOOR02</option>
|
|
||||||
<option value="EQUIPMENT01">EQUIPMENT01</option>
|
|
||||||
<option value="EQUIPMENT02">EQUIPMENT02</option>
|
|
||||||
<option value="COMBINEDEQUIPMENT01">COMBINEDEQUIPMENT01</option>
|
|
||||||
<option value="COMBINEDEQUIPMENT02">COMBINEDEQUIPMENT02</option>
|
|
||||||
</select>
|
|
||||||
<div class="m-t-xs" ng-show="form_rule.fdd_code.$invalid && form_rule.fdd_code.$dirty">
|
|
||||||
<small class="text-danger" ng-show="form_rule.fdd_code.$error.required">-</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.CATEGORY' | translate}}</label>
|
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.CATEGORY' | translate}}</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<select name="category" ng-model="rule.category" class="form-control m-b">
|
<select name="category" ng-model="rule.category" class="form-control m-b">
|
||||||
<option value="SYSTEM">SYSTEM</option>
|
<option value="SYSTEM">SYSTEM</option>
|
||||||
|
<option value="REALTIME">REALTIME</option>
|
||||||
<option value="SPACE">SPACE</option>
|
<option value="SPACE">SPACE</option>
|
||||||
<option value="METER">METER</option>
|
<option value="METER">METER</option>
|
||||||
<option value="TENANT">TENANT</option>
|
<option value="TENANT">TENANT</option>
|
||||||
|
@ -55,8 +31,49 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.FDD_CODE' | translate}}</label>
|
||||||
|
<div class="col-sm-5">
|
||||||
|
<select name="fdd_code" ng-model="rule.fdd_code" class="form-control m-b">
|
||||||
|
<option value="SYSTEM01">SYSTEM01</option>
|
||||||
|
<option value="SYSTEM02">SYSTEM02</option>
|
||||||
|
<option value="REALTIME01">REALTIME01</option>
|
||||||
|
<option value="REALTIME02">REALTIME02</option>
|
||||||
|
<option value="SPACE01">SPACE01</option>
|
||||||
|
<option value="SPACE02">SPACE02</option>
|
||||||
|
<option value="SPACE03">SPACE03</option>
|
||||||
|
<option value="SPACE04">SPACE04</option>
|
||||||
|
<option value="METER01">METER01</option>
|
||||||
|
<option value="METER02">METER02</option>
|
||||||
|
<option value="METER03">METER03</option>
|
||||||
|
<option value="METER04">METER04</option>
|
||||||
|
<option value="TENANT01">TENANT01</option>
|
||||||
|
<option value="TENANT02">TENANT02</option>
|
||||||
|
<option value="TENANT03">TENANT03</option>
|
||||||
|
<option value="TENANT04">TENANT04</option>
|
||||||
|
<option value="STORE01">STORE01</option>
|
||||||
|
<option value="STORE02">STORE02</option>
|
||||||
|
<option value="STORE03">STORE03</option>
|
||||||
|
<option value="STORE04">STORE04</option>
|
||||||
|
<option value="SHOPFLOOR01">SHOPFLOOR01</option>
|
||||||
|
<option value="SHOPFLOOR02">SHOPFLOOR02</option>
|
||||||
|
<option value="SHOPFLOOR03">SHOPFLOOR03</option>
|
||||||
|
<option value="SHOPFLOOR04">SHOPFLOOR04</option>
|
||||||
|
<option value="EQUIPMENT01">EQUIPMENT01</option>
|
||||||
|
<option value="EQUIPMENT02">EQUIPMENT02</option>
|
||||||
|
<option value="EQUIPMENT03">EQUIPMENT03</option>
|
||||||
|
<option value="EQUIPMENT04">EQUIPMENT04</option>
|
||||||
|
<option value="COMBINEDEQUIPMENT01">COMBINEDEQUIPMENT01</option>
|
||||||
|
<option value="COMBINEDEQUIPMENT02">COMBINEDEQUIPMENT02</option>
|
||||||
|
<option value="COMBINEDEQUIPMENT03">COMBINEDEQUIPMENT03</option>
|
||||||
|
<option value="COMBINEDEQUIPMENT04">COMBINEDEQUIPMENT04</option>
|
||||||
|
</select>
|
||||||
|
<div class="m-t-xs" ng-show="form_rule.fdd_code.$invalid && form_rule.fdd_code.$dirty">
|
||||||
|
<small class="text-danger" ng-show="form_rule.fdd_code.$error.required">-</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.PRIORITY' | translate}}</label>
|
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.PRIORITY' | translate}}</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<select name="priority" ng-model="rule.priority" class="form-control m-b">
|
<select name="priority" ng-model="rule.priority" class="form-control m-b">
|
||||||
<option value="CRITICAL">CRITICAL</option>
|
<option value="CRITICAL">CRITICAL</option>
|
||||||
<option value="HIGH">HIGH</option>
|
<option value="HIGH">HIGH</option>
|
||||||
|
@ -69,7 +86,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.CHANNEL' | translate}}</label>
|
<div class="form-group"><label class="col-sm-2 control-label">{{'FDD.CHANNEL' | translate}}</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-5">
|
||||||
<select name="channel" ng-model="rule.channel" class="form-control m-b">
|
<select name="channel" ng-model="rule.channel" class="form-control m-b">
|
||||||
<option value="WEB">WEB</option>
|
<option value="WEB">WEB</option>
|
||||||
<option value="SMS">SMS</option>
|
<option value="SMS">SMS</option>
|
||||||
|
|
|
@ -792,7 +792,7 @@ CREATE INDEX `tbl_meters_index_3` ON `myems_system_db`.`tbl_meters` (`energy_
|
||||||
-- USE `myems_system_db`;
|
-- USE `myems_system_db`;
|
||||||
|
|
||||||
-- INSERT INTO `myems_system_db`.`tbl_meters`
|
-- INSERT INTO `myems_system_db`.`tbl_meters`
|
||||||
-- (`id`, `name`, `uuid`, `energy_category_id`, `is_counted`, `max_hourly_value`, `cost_center_id`, `energy_item_id`, `master_meter_id`, `description`)
|
-- (`id`, `name`, `uuid`, `energy_category_id`, `is_counted`, `hourly_low_limit`, `hourly_high_limit`, `cost_center_id`, `energy_item_id`, `master_meter_id`, `description`)
|
||||||
-- VALUES
|
-- VALUES
|
||||||
-- (1, '示例表1', '5ca47bc5-22c2-47fc-b906-33222191ea40', 1, true, 0.000, 999.999, 1, 1, null, 'meter1'),
|
-- (1, '示例表1', '5ca47bc5-22c2-47fc-b906-33222191ea40', 1, true, 0.000, 999.999, 1, 1, null, 'meter1'),
|
||||||
-- (2, '示例表2', '5ca47bc5-22c2-47fc-b906-33222191ea40', 1, true, 0.000, 999.999, 1, 1, 1, 'meter2'),
|
-- (2, '示例表2', '5ca47bc5-22c2-47fc-b906-33222191ea40', 1, true, 0.000, 999.999, 1, 1, 1, 'meter2'),
|
||||||
|
|
|
@ -143,13 +143,13 @@ class RuleCollection:
|
||||||
description='API.RULE_NAME_IS_ALREADY_IN_USE')
|
description='API.RULE_NAME_IS_ALREADY_IN_USE')
|
||||||
|
|
||||||
add_row = (" INSERT INTO tbl_rules "
|
add_row = (" INSERT INTO tbl_rules "
|
||||||
" (name, uuid, fdd_code, category, priority, "
|
" (name, uuid, category, fdd_code, priority, "
|
||||||
" channel, expression, message_template, is_enabled) "
|
" channel, expression, message_template, is_enabled) "
|
||||||
" VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) ")
|
" VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) ")
|
||||||
cursor.execute(add_row, (name,
|
cursor.execute(add_row, (name,
|
||||||
str(uuid.uuid4()),
|
str(uuid.uuid4()),
|
||||||
fdd_code,
|
|
||||||
category,
|
category,
|
||||||
|
fdd_code,
|
||||||
priority,
|
priority,
|
||||||
channel,
|
channel,
|
||||||
expression,
|
expression,
|
||||||
|
@ -183,7 +183,7 @@ class RuleItem:
|
||||||
cursor = cnx.cursor(dictionary=True)
|
cursor = cnx.cursor(dictionary=True)
|
||||||
|
|
||||||
query = (" SELECT id, name, uuid, "
|
query = (" SELECT id, name, uuid, "
|
||||||
" fdd_code, category, priority, "
|
" category, fdd_code, priority, "
|
||||||
" channel, expression, message_template, "
|
" channel, expression, message_template, "
|
||||||
" is_enabled, last_run_datetime_utc, next_run_datetime_utc "
|
" is_enabled, last_run_datetime_utc, next_run_datetime_utc "
|
||||||
" FROM tbl_rules "
|
" FROM tbl_rules "
|
||||||
|
@ -204,7 +204,7 @@ class RuleItem:
|
||||||
next_run_datetime = row['next_run_datetime_utc'].replace(tzinfo=timezone.utc).timestamp() * 1000
|
next_run_datetime = row['next_run_datetime_utc'].replace(tzinfo=timezone.utc).timestamp() * 1000
|
||||||
|
|
||||||
result = {"id": row['id'], "name": row['name'], "uuid": row['uuid'],
|
result = {"id": row['id'], "name": row['name'], "uuid": row['uuid'],
|
||||||
"fdd_code": row['fdd_code'], "category": row['category'], "priority": row['priority'],
|
"category": row['category'], "fdd_code": row['fdd_code'], "priority": row['priority'],
|
||||||
"channel": row['channel'], "expression": row['expression'],
|
"channel": row['channel'], "expression": row['expression'],
|
||||||
"message_template": row['message_template'].replace("<br>", ""),
|
"message_template": row['message_template'].replace("<br>", ""),
|
||||||
"is_enabled": bool(row['is_enabled']),
|
"is_enabled": bool(row['is_enabled']),
|
||||||
|
@ -342,13 +342,13 @@ class RuleItem:
|
||||||
description='API.RULE_NAME_IS_ALREADY_IN_USE')
|
description='API.RULE_NAME_IS_ALREADY_IN_USE')
|
||||||
|
|
||||||
update_row = (" UPDATE tbl_rules "
|
update_row = (" UPDATE tbl_rules "
|
||||||
" SET name = %s, fdd_code = %s, category = %s, priority = %s, "
|
" SET name = %s, category = %s, fdd_code = %s, priority = %s, "
|
||||||
" channel = %s, expression = %s, message_template = %s, "
|
" channel = %s, expression = %s, message_template = %s, "
|
||||||
" is_enabled = %s "
|
" is_enabled = %s "
|
||||||
" WHERE id = %s ")
|
" WHERE id = %s ")
|
||||||
cursor.execute(update_row, (name,
|
cursor.execute(update_row, (name,
|
||||||
fdd_code,
|
|
||||||
category,
|
category,
|
||||||
|
fdd_code,
|
||||||
priority,
|
priority,
|
||||||
channel,
|
channel,
|
||||||
expression,
|
expression,
|
||||||
|
|
|
@ -204,7 +204,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2) \
|
||||||
|
if reporting_period_data['averages'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
@ -218,7 +219,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2) \
|
||||||
|
if reporting_period_data['averages_per_unit_area'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
@ -267,7 +269,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2) \
|
||||||
|
if reporting_period_data['maximums'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
@ -281,7 +284,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2) \
|
||||||
|
if reporting_period_data['maximums_per_unit_area'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['averages'][i], 2) \
|
||||||
|
if reporting_period_data['averages'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
@ -219,7 +220,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['averages_per_unit_area'][i], 2) \
|
||||||
|
if reporting_period_data['averages_per_unit_area'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
@ -268,7 +270,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['maximums'][i], 2) \
|
||||||
|
if reporting_period_data['maximums'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
@ -282,7 +285,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
||||||
ws[col + str(current_row_number)].font = name_font
|
ws[col + str(current_row_number)].font = name_font
|
||||||
ws[col + str(current_row_number)].alignment = c_c_alignment
|
ws[col + str(current_row_number)].alignment = c_c_alignment
|
||||||
ws[col + str(current_row_number)].border = f_border
|
ws[col + str(current_row_number)].border = f_border
|
||||||
ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2)
|
ws[col + str(current_row_number)] = round(reporting_period_data['maximums_per_unit_area'][i], 2) \
|
||||||
|
if reporting_period_data['maximums_per_unit_area'][i] is not None else 'N/A'
|
||||||
|
|
||||||
current_row_number += 1
|
current_row_number += 1
|
||||||
|
|
||||||
|
|
|
@ -507,19 +507,22 @@ class Reporting:
|
||||||
result['reporting_period']['averages'].append(reporting[energy_category_id]['average'])
|
result['reporting_period']['averages'].append(reporting[energy_category_id]['average'])
|
||||||
result['reporting_period']['averages_increment_rate'].append(
|
result['reporting_period']['averages_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
||||||
base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and
|
base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and
|
||||||
|
base[energy_category_id]['average'] is not None and
|
||||||
base[energy_category_id]['average'] > Decimal(0.0))
|
base[energy_category_id]['average'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
||||||
result['reporting_period']['maximums_increment_rate'].append(
|
result['reporting_period']['maximums_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
||||||
base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and
|
base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and
|
||||||
|
base[energy_category_id]['maximum'] is not None and
|
||||||
base[energy_category_id]['maximum'] > Decimal(0.0))
|
base[energy_category_id]['maximum'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
||||||
result['reporting_period']['factors_increment_rate'].append(
|
result['reporting_period']['factors_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
||||||
base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and
|
base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and
|
||||||
|
base[energy_category_id]['factor'] is not None and
|
||||||
base[energy_category_id]['factor'] > Decimal(0.0))
|
base[energy_category_id]['factor'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
|
|
||||||
|
|
|
@ -500,19 +500,22 @@ class Reporting:
|
||||||
result['reporting_period']['averages'].append(reporting[energy_category_id]['average'])
|
result['reporting_period']['averages'].append(reporting[energy_category_id]['average'])
|
||||||
result['reporting_period']['averages_increment_rate'].append(
|
result['reporting_period']['averages_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
||||||
base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and
|
base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and
|
||||||
|
base[energy_category_id]['average'] is not None and
|
||||||
base[energy_category_id]['average'] > Decimal(0.0))
|
base[energy_category_id]['average'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
||||||
result['reporting_period']['maximums_increment_rate'].append(
|
result['reporting_period']['maximums_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
||||||
base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and
|
base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and
|
||||||
|
base[energy_category_id]['maximum'] is not None and
|
||||||
base[energy_category_id]['maximum'] > Decimal(0.0))
|
base[energy_category_id]['maximum'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
||||||
result['reporting_period']['factors_increment_rate'].append(
|
result['reporting_period']['factors_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
||||||
base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and
|
base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and
|
||||||
|
base[energy_category_id]['factor'] is not None and
|
||||||
base[energy_category_id]['factor'] > Decimal(0.0))
|
base[energy_category_id]['factor'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
|
|
||||||
|
|
|
@ -652,7 +652,7 @@ class Reporting:
|
||||||
(reporting_input[energy_category_id]['subtotal'] -
|
(reporting_input[energy_category_id]['subtotal'] -
|
||||||
base_input[energy_category_id]['subtotal']) /
|
base_input[energy_category_id]['subtotal']) /
|
||||||
base_input[energy_category_id]['subtotal']
|
base_input[energy_category_id]['subtotal']
|
||||||
if base_input[energy_category_id]['subtotal'] > 0.0 else None)
|
if base_input[energy_category_id]['subtotal'] > Decimal(0.0) else None)
|
||||||
|
|
||||||
result['reporting_period_output'] = dict()
|
result['reporting_period_output'] = dict()
|
||||||
result['reporting_period_output']['names'] = list()
|
result['reporting_period_output']['names'] = list()
|
||||||
|
@ -717,7 +717,10 @@ class Reporting:
|
||||||
|
|
||||||
result['reporting_period_efficiency']['cumulations'].append(reporting_cumulation)
|
result['reporting_period_efficiency']['cumulations'].append(reporting_cumulation)
|
||||||
result['reporting_period_efficiency']['increment_rates'].append(
|
result['reporting_period_efficiency']['increment_rates'].append(
|
||||||
((reporting_cumulation - base_cumulation) / base_cumulation if (base_cumulation > Decimal(0.0))
|
((reporting_cumulation - base_cumulation) / base_cumulation
|
||||||
|
if (reporting_cumulation is not None and
|
||||||
|
base_cumulation is not None and
|
||||||
|
base_cumulation > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -524,13 +524,15 @@ class Reporting:
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['averages_increment_rate'].append(
|
result['reporting_period']['averages_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
||||||
base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and
|
base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and
|
||||||
|
base[energy_category_id]['average'] is not None and
|
||||||
base[energy_category_id]['average'] > Decimal(0.0))
|
base[energy_category_id]['average'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
||||||
result['reporting_period']['maximums_increment_rate'].append(
|
result['reporting_period']['maximums_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
||||||
base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and
|
base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and
|
||||||
|
base[energy_category_id]['maximum'] is not None and
|
||||||
base[energy_category_id]['maximum'] > Decimal(0.0))
|
base[energy_category_id]['maximum'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['maximums_per_unit_area'].append(
|
result['reporting_period']['maximums_per_unit_area'].append(
|
||||||
|
@ -542,7 +544,8 @@ class Reporting:
|
||||||
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
||||||
result['reporting_period']['factors_increment_rate'].append(
|
result['reporting_period']['factors_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
||||||
base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and
|
base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and
|
||||||
|
base[energy_category_id]['factor'] is not None and
|
||||||
base[energy_category_id]['factor'] > Decimal(0.0))
|
base[energy_category_id]['factor'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
|
|
||||||
|
|
|
@ -524,13 +524,15 @@ class Reporting:
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['averages_increment_rate'].append(
|
result['reporting_period']['averages_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
(reporting[energy_category_id]['average'] - base[energy_category_id]['average']) /
|
||||||
base[energy_category_id]['average'] if (base[energy_category_id]['average'] is not None and
|
base[energy_category_id]['average'] if (reporting[energy_category_id]['average'] is not None and
|
||||||
|
base[energy_category_id]['average'] is not None and
|
||||||
base[energy_category_id]['average'] > Decimal(0.0))
|
base[energy_category_id]['average'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
result['reporting_period']['maximums'].append(reporting[energy_category_id]['maximum'])
|
||||||
result['reporting_period']['maximums_increment_rate'].append(
|
result['reporting_period']['maximums_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
(reporting[energy_category_id]['maximum'] - base[energy_category_id]['maximum']) /
|
||||||
base[energy_category_id]['maximum'] if (base[energy_category_id]['maximum'] is not None and
|
base[energy_category_id]['maximum'] if (reporting[energy_category_id]['maximum'] is not None and
|
||||||
|
base[energy_category_id]['maximum'] is not None and
|
||||||
base[energy_category_id]['maximum'] > Decimal(0.0))
|
base[energy_category_id]['maximum'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
result['reporting_period']['maximums_per_unit_area'].append(
|
result['reporting_period']['maximums_per_unit_area'].append(
|
||||||
|
@ -542,7 +544,8 @@ class Reporting:
|
||||||
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
result['reporting_period']['factors'].append(reporting[energy_category_id]['factor'])
|
||||||
result['reporting_period']['factors_increment_rate'].append(
|
result['reporting_period']['factors_increment_rate'].append(
|
||||||
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
(reporting[energy_category_id]['factor'] - base[energy_category_id]['factor']) /
|
||||||
base[energy_category_id]['factor'] if (base[energy_category_id]['factor'] is not None and
|
base[energy_category_id]['factor'] if (reporting[energy_category_id]['factor'] is not None and
|
||||||
|
base[energy_category_id]['factor'] is not None and
|
||||||
base[energy_category_id]['factor'] > Decimal(0.0))
|
base[energy_category_id]['factor'] > Decimal(0.0))
|
||||||
else None)
|
else None)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue