公式 - 数据引用和数据筛选

客户管理页面中,可以对所有客户进行展示和编辑。
实际业务中,页面可能要求仅展示重要客户或者我负责的客户等。
那么应该怎么做呢?还记得我们用过的数据引用公式 ds.xx 吗?

ds:页面定义的 数据 ,这里表示所有客户记录的数据集。
ds.手机 : 客户数据集 ds 的 手机字段。
ds.联系人: 客户数据集 ds 的 联系人字段。

所以如果我们想让页面仅按照我们的要求进行筛选的话,那么就想办法让 ds 不代表所有数据,而是按照业务要求筛选后的数据


1.页面数据的定义

我们用 简单列表 模板生成一个客户管理页面,然后打开 页面视图,左下角就是 页面数据 面板。

客户管理的页面数据

可以看到这个模板生成的管理页面定义了两个 页面数据 : ds 和 me ,我们点击 ds 右边的 齿轮 进入数据的配置窗口。

数据ds的定义
  • 名称(ds):数据的名称。公式里通过名称使用这个数据的信息。

  • 类型(数据集):数据的类型。数据的类型包括:

    • 记录:数据表中的一条记录,一般用于编辑或者详情页面。例如编辑页面中的 it 就是客户的记录,表示客户表的一个客户。
    • 数据集:数据表中的多条记录组成的集合,一般用于列表页面。例如本页面中 ds 就是客户的数据集,表示客户表的多个客户。
    • 整数,数值,字符串(文本),是非项(是还是否)等普通类型。
    • 数组:例如[1,3,5]就是由3个数组成的数组。
  • 泛型(客户):数据的类型参数,类型是 记录 或者 数据集 时必须配置的,因为泛型表示究竟是哪个数据表的数据集/记录。例如这里就表示 ds 是客户的数据集。

  • 简单介绍剩下2个参数:用途 :表示数据是用于后端还是前端浏览器中,一般都是后端。保存 :表示这条数据在页面上修改后是否回存数据。

试试看

  • 修改 ds 的名称,改为 ds2 ,看看会发生什么。(答案:页面上的公式ds.xx变成了 ds2.xxquery.ds.xx 变成了 query.ds2.xx
  • 修改 ds 的泛型,改为 用户 ,看看会发生什么,你能把页面上的错误都改掉吗?

2.页面数据的公式

初始化函数(公式)是页面数据最重要的公式。页面数据就是执行这个公式,得到的结果。
在数据集的初始化函数中的参数:

数据集的公式
  • 筛选条件:表示数据表中筛选的条件。
      需要配置一个返回是非项(是还是否,真还是假,true or false)的公式。数据集将由数据表中筛选条件最后判断为true(真)的记录组成。
      筛选条件为空或者为true表示不筛选,获得所有数据。
  • 排序参数:表示数据集按照什么字段排序。
    • ["id"]: 按照id顺序
    • ["-id"]: 按照id逆序
    • ["重要度","性别"]:先按照字典项重要度顺序(一般,重要,非常重要),然后按照性别顺序(男,女)。
    • ["-重要度","性别","-提交时间"]:先按照字典项重要度逆序(非常重要,重要,一般),然后按照性别(男,女),最后按照提交时间逆序(提交时间晚的在前面)

3.系统数据 me

me是系统定义的页面数据,表示用户表中,当前登录的用户的记录。

系统数据me的定义

可以看到筛选条件是去用户表查找 id 等于 参数me_id 的记录。
@me_id是一个系统参数,表示当前登录用户的id。

在格子中写一些me的公式,运行试试:

  • me.id:当前用户的id。
  • me.名称:当前用户的名称。
  • me.部门:当前用户的部门(部门的id)。
  • me.部门.名称:当前用户所在的部门的名称。
  • me.部门.主管:当前用户所在的部门的主管(用户的id)。
  • me.部门.主管.名称:当前用户所在的部门主管的名称。

4.根据需求给 ds 配置筛选条件。

  • 需求:筛选出非常重要的客户。
    筛选条件栏配置为table.客户.重要度==Dict.重要度.非常重要。表示在客户表中,筛选出 字段 **重要度 为 非常重要 的客户

    table.客户.重要度:数据表 客户 的重要度 字段。(和ds.重要度的不同 )
    ==:判断等号左右两边是否相等,注意是“==” 而不是 “=”,这点 和Excel不同。
    Dict.重要度.非常重要:字典项 重要度 非常重要的值。 按照字典项 重要度的 定义,“非常重要”是 3。为什么不直接写3?

    可以通过公式提示来避免记忆出错
    将来如果修改或删除了该项,平台会自动提示。

  • 需求:筛选出我的客户。
    筛选条件栏配置为table.客户.联系人==me.id。表示在客户表中,筛选出 字段 联系人 等于 当前用户的 id

  • 需求:筛选出不是我的客户。
    筛选条件栏配置为table.客户.联系人!=me.id。表示在客户表中,筛选出 字段 联系人 不等于 当前用户的 id

  • 需求:筛选出我所在的部门的客户。
    筛选条件栏配置为table.客户.联系人.部门==me.部门

  • 需求:筛选出我管理的部门的客户。
    筛选条件栏配置为table.客户.联系人.部门==me.部门

  • 需求:筛选出提交时间为今天的客户。
    筛选条件栏配置为table.客户.提交时间 > = Date.today() && table.客户.提交时间 < Date.today().addDay(1)。表示提交时间大于等于当前日期(0点),小于明天(0点)。

    Date.today(): 当前日期(0点)。
    addDay(1): 日期往后一天。

  • 需求:筛选出1个小时内提交的非常重要的客户。
    筛选条件栏配置为table.客户.提交时间 >= Date.now().addHoure(-1) && table.客户.重要度==Dict.重要度.非常重要。表示提交时间大于等于一个小时前,并且重要度是非常重要的客户。

    Date.now(): 当前时间(精确到毫秒)。
    addHour(-1): 时间往前一个小时。
    &&: and 关系,只有当符号左右都为true(真)的时候,才返回true(真)。也就是这两个条件都要满足。


5.看看界面配置背后是什么。

在初始化配置页面的右方,有一个高级按钮,我们点击可以看到,原来我们配置的是一个公式。table.客户.find(table.客户.联系人==me.id,["-id")]。这个公式按照我们配置的筛选条件,产生客户数据集。

table.客户:表示在客户表查询。
table.客户.联系人==me.id是我们刚才配置的筛选条件。
["-id"]是我们配置的排序条件。

所以也直接写公式。特别是一些复杂的,例如使用 if(条件语句)的,就只能直接写公式的。

这一章我们用公式实现数据筛选,初步领略到公式的强大和便捷。想要更好的开发,是离不开公式的,下一章我们将会介绍各种常见公式。

  • 展示相关表的字段,或者根据相关表的字段查询。例如根据联系人所在部门进行查询。

附录:页面数据的其他两个属性的作用(后面会详解)

  • 使用时机(后端):该数据是在后端生成页面的时候用,还是在前端浏览器里使用,除非特殊介绍,一律默认为“后端”。

  • 保存(是):表示页面上展示的数据修改后,是否还要保存回数据库。是表示会回存。(这里因为页面不可编辑,并且没有保存按钮,所以没有实际效果,但编辑页面里我们可以看到 页面数据it 是可以回存的)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,507评论 6 13
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,790评论 2 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 昨天跟朋友打电话,说到了他的某个创业项目和他朋友的创业故事,他再次批评了我懒惰的穷人思维方式。每每说到这些,他的那...
    眷恋一座城阅读 353评论 1 2
  • 刚接触吸引力法则的时候,知道了吸引定律的存在,知道想好的得好的,想不好的也会吸引来不好的! 那段时间真的很惶恐,每...
    吸引力修炼阅读 151评论 0 0