0

我正在尝试制作一个应用程序,我需要根据“严重性”、红色、黄色或绿色制作的“报告”来更改某些图像的背景颜色。

视图(index.html):

欢迎 {{=auth.user.first_name}}

{{对于报告中的报告:}}

type="text/css">.eq_img {background-color:{{=bg_color(reports.severity)} (在样式标签中)

带有图像类 = eq_img 的表

控制器(default.py):

定义设备():

报告 = db().select(db.repo.ALL)

返回本地人()

模型(db.py):

db.define_table('repo',

字段('body','text',requires=IS_LENGTH(500,1),label="report"),

字段('严重性',需要=IS_IN_SET(['绿色','黄色','红色'])),

字段('posted_on','datetime',可读=假,可写=假),

Field('posted_by','reference auth_user', writable=False),

def bg_c​​olor(严重性):

如果严重性 == “红色”:

返回“红色”

elif 严重性 == “黄色”:

返回“黄色”

别的:

返回“绿色”

现在它总是返回列表中最后一个报告的颜色。我需要它来找到最严重的报告,如果不是红色,然后是黄色,然后是绿色。非常感谢任何帮助。

4

1 回答 1

0

目前尚不完全清楚您要做什么,但如果您想将 .eq_img 类的背景颜色设置为查询返回的所有记录中存在的最高严重性的值,您可以执行以下操作:

在模型中:

severities = ['Green', 'Yellow', 'Red']

db.define_table('repo',
    Field('body','text',requires=IS_LENGTH(500,1),label="report"),
    Field('severity', requires=IS_IN_SET(severities)),
    Field('posted_on','datetime', readable=False, writable=False),
    Field('posted_by','reference auth_user', writable=False))

在控制器中:

def equipment():
    reported = db().select(db.repo.ALL)
    max_severity = max([severities.index(r.severity) for r in reported])
    severity_color = severities[max_severity].lower()
    return dict(reported=reported, severity_color=severity_color)

上面,max_severity是一个整数(0、1 或 2),对应于记录中发现的最大严重性级别。

鉴于:

.eq_img {background-color:{{=severity_color}};}

请注意,上述内容不应像您的原始代码那样在 for 循环中。

于 2013-11-09T20:25:27.060 回答