(41) Aeroo 模板设计基础教程
1. 理论基础
注:我采用libreoffice5.2设计讲解
1.1. 定义模板指令
模板指令的语法和Genshi 模板语言相兼容,可以用Libreoffice( Write, Calc)来设计
1.1.1. 文本占位字段
我们可以在odt 文件中,通过“插入”->“字段”->“更多字段”->“功能”
类型选择“占位符”,格式选择“文字”,占位符写点位字符串,引用写指令,
最后点“插入”,这时在光标处就完成文本点位字段的定义
1.1.2. 超链接
通过“插入”->“超链接”
在URL 写上模板指令 要以“python://” 开头
文本,写上显示的文字
1.1.3. 输入字段
这个是我们用的最多,通过“插入”->“字段”->“更多字段”->“功能”
类型选择“输入字段”,然后在参照写上模板指令,点“插入”,再写上标识的名称
完成输入字段的定义
1.1.4. 框架
我们有时要在文档中放入图片,比如产品图,这时就要用到框
通过“插入”->框架->框架, 然后选择“选择”标签,在“名称” 框那里输入模板指令
必须以 image: 开头 如: image: asimage(user.company_id.logo)
1.2. 取回数据
前面一节讲了如何在模板中定义容器,这时就要把真实的数据填入其中
当我胶用默认的解析器,创建任何一个模型的报表时,有些预定义的变量
l objects :当创建报表时,它是对象的一个列表,当你想得到你所选的所有数据,你就要对这个变量做循环处理
l o: 如查你只选择了一个对象,你就可以直接用这个变量,没必要创建循环
l data: 来自向导的数据
l user: 请求生成报表时的用户
l time: 基于python库操作时间
以合作伙伴对象为例来说明
你想得到你选择第一个客户的名称
<objects[0].name>
你可以得到 erp系统中”设置”->“技术”->”数据结构”->模型 里面所有模型的数据
得到当前用户公司的币种
<user.company_id.currency_id.code>
这个获取方法和系统代码获取数据一样的方式,通过面向对象的“.”
1.3. 条件部分
在现实生活也有很多的判断,这个报表也有。
通过<if> </if> 一对一对出现
如:
<if test="objects[0].customer">
This text is being printed when partner is a customer.
</if>
如果合作伙伴是客户,就打印中间那段话
因为要成对出现,可以看出,至少要定义两个独立的容器
当多重判断时,我们用choose 来定义
<choose>
<when test="objects[0].customer">
This text is being printed when partner is a customer.
</when>
<when test="objects[0].supplier">
This text is being printed when partner is a supplier.
</when>
<otherwise>
This text is being printed in all the other occasions.
</otherwise>
</choose>
如果是客户,就打印客户那段话,若是供应商,就打印供应商那段话,那两个都不是,就打印 otherwise 中间那段话
1.4. 循环部分
这个在系统中还是用的很,当你选择了多个对象时。或你在一个订单里面加入多个产品时,
这些数据要呈现出来都要用到循环。
通过成对的<for> </for>来实现
<for each="one_partner in objects">
<if test="one_partner.customer">
<one_partner.name>
</if>
</for>
上面用了for来循环,同时中间还有一个条件语句
上面功能是把你所选的合作伙伴,只会是客户类型的,才会打印出来
one_partner 这个面对不同的对象,自己可以取一个对应的名字,用来在内部循环用
1.5. 附加方法
为了方便操作,定义一系列的方法
1.5.1. 语言相关的方法
l getLang: 为模板设定默认语言
l gettext: 为给定的文件获得译文
l _: 功能和gettext一样
l getLang: 得到当前影响 模板的语言
l currency_to_text: 转换货币浮点格式
1.5.2. 数学相关的方法
l sum_field:得到列表中对象的命名字段的和
l sumif: 得到所选择的列表中对象指定条件的命名字段的和
1.5.3. 统计方法
l average: 得到所有列表对象字段的平均数
l count:得到列表中对象的总数
l count_blank: 得到字段命名为空的列表中对象的数目
l countif: 得到指定条件的列表中对象的数目
l larger:得到列表对象最大值 k-th
l max_field: 得到列表对象最大值
l min_field: 得到列表对象最小值
l small: 得到列表对象最小值 k-th
1.5.4. 时间相关方法
l dec_to_time: 把时间转换为 hh:min 格式
l time: 得到操作时间
1.5.5. 条形码相关方法
l barcode: 转换数字为条形码
1.5.6. 帮助方法
l asarray: 得到所有对象的命名字段为一个列表
l asimages: 转换二进制数据为图片
l bool_as_icon: 翻译布尔值 为 文本
l browse: 得到对象列表
l chunks: 把对象列表拆分成组
l debugit: 帮助调试模板
l erp2_gw: 插入EPL v2’gw’ 命令
l field_accuracy: 得到对象字段的精度
l field_size: 得到对象字段的最大范围
l get_attachments:得到对象的附件
l get_label:得到字段名称的译文
l get_name: 得到对象的表术文
l get_selection_item: 得到下接人工设定的字符
l html_embed_image:得到html文档中插入的图片
l html_escape: 过滤html文档中不安全的字符
l html_builduri: 从字典中组合成uri字符串
l html_prettyuri: 转换成安全的uri字符串
l insert-subreport: 插入字报表
l itemize:
l safe:得到安全的表达式
l search:在对象列表中做搜索
l search_ids: 只在列表对象的id中做搜索
(41) Aeroo 模板设计基础教程的更多相关文章
- iOS10 UI设计基础教程
iOS10 UI设计基础教程 介绍:本教程针对iOS初级开发人员,基于iOS 10系统,使用Swift 3.0语言讲解如何进行UI设计.本教程内容涵盖UI基础构成.UI元素.自动布局.自适应UI.UI ...
- 《开源网店系统iWebShop2.0模板开发教程》的说明
<开源网店系统iWebShop2.0模板开发教程>是网上广为流传的一个文档,有点问题. 其中的第4章: ========================================== ...
- GIS案例学习笔记-CAD数据分层导入现有模板实例教程
GIS案例学习笔记-CAD数据分层导入现有模板实例教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 1. 原始数据: CAD数据 目标模板 2. 任务:分5个图层 ...
- phpcms v9模板制作教程
phpcms v9模板制作教程(转载) 第一节 1.首先下载phpcms v9的集成安装包并安装,这里就不详细说明了. 2.本地调试建议大家使用APMserver,或者wampserver等,可以到P ...
- phpcms新建模板页教程
phpcms新建模板页教程1 直接去template文件夹里的复制的模板页 比方说list1.html2 去后台 界面模板风格 default 默认模板 点击详情列表 找到list1.htm 设置中文 ...
- (42) Aeroo 模板实战
用writer设计一个采购单的模板 我用的是libreoffice 5.2.x 对于这个表格是通过工具栏上的插入指定的表格行和列完成,然后排版 对于单号po00001 这这样插入的 这样就完成一个订单 ...
- phpwind9.0模板制作教程——制作论坛风格
由于论坛模板机制和门户等模板机制不同,所以今天我就先重点讲讲论坛模板制作的大概过程. 一.先来熟悉下phpwind9.0的论坛模板机制. 其实phpwind9.0的模板机制和discuzx2.5差不多 ...
- phpcms v9模板制作教程(转载)
第一节 1.首先下载phpcms v9的集成安装包并安装,这里就不详细说明了. 2.本地调试建议大家使用APMserver,或者wampserver等,可以到PHPCMS吧官方网站首页链接下载.安装好 ...
- ASP.NET CMS模板培训教程
注意:此文档中出现所有的类,都是公司内部的,也就是说,只是给公司内部人员培训的一篇文章而已,如果其他的人看到了, 看不懂里面的类,那是因为这都是我公司内部的框架. 首先是进入我们的系统的后台,然后选择 ...
随机推荐
- WebSocket IO和后端建立长连接,即时接受后端消息
https://github.com/TooTallNate/Java-WebSocket ant得到java_websocket.jar改名为WebSocket.jar放到 https://gith ...
- Vcenter server 5.5上传ISO镜像
1.摘要 --- 浏览要上传的硬盘. 2.创建一个文件夹专业门存放ISO镜像. 3.选择上传文件. 4.选择文件上传即可.
- 查看IIS哪个应用程序池占用CPU过高
1. 进入cmd 2. %systemroot%\system32\inetsrv\AppCmd.exe list wp 这样就能找到活动的应用程序池的PID了 3. 对照资源管理器的PI ...
- 使用Karma 来进行 JavaScript 测试
最近接触了一些新的前端开发知识,主要是利用AngularJS做single page application.我也借这个机会,花了几天时间了解了如何对javascript进行测试. 这里将介绍一些使用 ...
- Echarts 地图(map)插件之 鼠标HOVER和tooltip自定义提示框
[自行修改 "引号"] 一.鼠标HOVER时的事件: 参照官方文档解释, 可以看出这款插件有丰富的鼠标事件可供选择: 调用鼠标HOVER事件的方法很简单,只需把以下代码放到char ...
- 2Sigma OA prepare: Longest Chain
DP use HashMap: 根据string的长度sort,然后维护每个string的longest chain,default为1,如果删除某个char生成的string能提供更长的chain, ...
- c/c++ 数据结构 链表插入数据代码(一)
链表插入数据,有两种方法,链表头定义为指针. 1.指针传递 #include <stdio.h> #include <stdlib.h> typedef struct LNod ...
- 【Selenium】2.安装Selenium IDE和 FireBug
本文供学习交流之用,没有商业用途,没有盈利. 完全是我自己为督促自己学习而翻译的.翻译的不好,见谅.来源于:http://www.guru99.com/install-selenuim-ide.htm ...
- org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 421. occured resuming VM.
环境: 导入excel的时候,会根据路径,读取EXCEL的数据. 原因: 电脑上的防火墙关闭
- VS2013 密钥
MXS&Vincene ─╄OvЁ &0000017─╄OvЁ MXS&Vincene MXS&Vincene ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...