/**
* listview 是一个重要的组件,用于有滚动上拉下拉刷新的数据列表容器组件,根据业务的需要只需配置简单的参数,即可到达业务需求,包括:
* <ul>
* <li>上拉下拉刷新组件</li>
* <li>左右上下数据列表联动滚动组件</li>
* <li>内容滚动组件</li>
* </ul>
* @module listview
*/
/**
* 可上拉请求数据,下拉刷新当前页面数据的垂直滚动容器,主要应用场景:<br>
* 在列表数据展现时,可根据需要分页展示数据列表,并能实现根据上拉和下拉手势对当前页面展示的数据进行刷新、增加处理
* @class listView
* @namespace cmp
* @constructor
* @param {String} container 列表容器标识,querySelector能定位的css选择器均可,比如:id、.class等,如:"#id"、".class"(必须符合以上两种形式的查询)
* @param {Object} [opts] 配置上拉下拉参数,如果没有定义,则该容器是一个普通列表,不会有分页、上拉下拉特征
* @param {Object} [opts.config] 数据刷新、分页数量等参数的配置(组件提供了默认值)
* @param {Number} [opts.config.captionType] 下拉上拉控件显示类型<br>
* <ul>
* <li>0:不显示条数,只显示文字</li>
* <li>1:显示条数和文字(默认)</li>
* </ul>
* @param {Number} [opts.config.pageSize] 分页大小(默认:20)
* @param {Number} [opts.config.height] 下拉刷新的高度(默认:60)
* @param {Object|Array} opts.config.params 上拉下拉刷新请求函数需要的参数,格式:{ticket: "luodx"}
* @param {Function} opts.config.dataFunc 上拉下拉刷新请求数据的函数
* @param {Function} opts.config.renderFunc 下拉上拉刷新数据请求完毕渲染列表的函数
* @param {Boolean} opts.config.isClear 是否在进行使用同一个listview时,在进行面包屑或页签切换时重新向服务器请求数据(而不缓存数据)<br>
* <ul>
* <li>true:重新请求;</li>
* <li>false:不重新请求(默认)</li>
* </ul>
* @param {Boolean} opts.config.clearCache 当isClear为false的时候,页面跳转后回到当前页面,是否需要清空之前的缓存,
* <ul>
* <li>true:需要清空</li>
* <li>false:不清空(默认)</li>
* </ul>
* @param{Number} opts.config.crumbsID 面包屑/页签id,用于区分同一个listview对象时,有面包屑/页签时,对数据进行缓存,避免重复向服务器请求已经请求过的数据,以及页面跳转后缓存前一个页面最后一次所在的面包屑/页签数据
* @param {Number} opts.config.purpose 列表用作的方式,应用场景当首次请求无数据时,以一个开发者自定义的html来展示.<br/>
* <ul>
* <li>1:普通内容展示;</li>
* <li>2:搜索内容展示</li>
* <li>以后进行扩展</li>
* <li>-1:开发者自己渲染无数据的页面,还是要走开发者定义的渲染方法,只是返回的数据为空</li>
* </ul>
* @param {Number} opts.config.onePageMaxNum 一屏最大数据条数,用于上一页下一页的切换显示,默认:80条
* @param {Function} opts.config.customScrollMoveEvent 自定义滚动到顶部的事件,如果开发着定义该值,将滚动的y值返回给开发者
* @param {Object} [opts.down] 下拉控件的文字、数据数量配置
* @param {String} [opts.down.contentdown] 在下拉可刷新状态时,下拉刷新控件上显示的标题内容(默认:"下拉可以刷新")
* @param {String} [opts.down.contentover] 在释放可刷新状态时,下拉刷新控件上显示的标题内容(默认:"释放立即刷新")
* @param {String} [opts.down.contentrefresh] 正在刷新状态时,下拉刷新控件上显示的标题内容(默认:"正在刷新...")
* @param {String} [opts.down.contentprepage] 请求数据条数超过一屏了,需要显示【上一页】的文字
* @param {Object} [opts.up] 上拉控件的文字、数据数量配置
* @param {String} [opts.up.contentdown] 在上拉可刷新状态时,上拉刷新控件上显示的标题内容(默认:"上拉显示更多")
* @param {String} [opts.up.contentrefresh] 正在加载状态时,上拉加载控件上显示的标题内容(默认:"正在加载...")
* @param {String} [opts.up.contentnomore] 请求完毕若没有更多数据时显示的提醒内容(默认:"没有更多数据了")
* @param {String} [opts.up.contentnextpage] 请求数据条数满一屏了,需要显示【下一页】的文字
* @param {Boolean} [opts.imgCache] 是否进行列表中图片的缓存和懒加载<br/>
* <ul>
* <li>true:进行缓存;</li>
* <li>false:不缓存;</li>
* <li>默认:未定义</li>
* </ul>
* @param {Object} [opts.offset] 当开启列表图片缓存和懒加载时,如果是有弹出层的情况,需要设置该值,<br>
* <ul>
* <li>x:页面X坐标开始检测图片的懒加载位置(默认:0,即页面最左边)</li>
* <li>x:页面Y坐标开始检测图片的懒加载位置(默认:0,即页面最上面边,比如:选人组件是从页面底部弹出的,那么Y坐标的检测位置应该从window.innerHeight开始检测)</li>
* </ul>
* @demo cmp-listview.html
*
* @returns {Object} 返回一个scroll对象:<br>
* 对象提供调用方法
* <ul>
* <li>refresh:刷新列表(当容器html内容有增减改变时,需要开发者调用此方法,容器重新计算高度)<br>cmp.listView("container").refresh()</li>
* <li>scrollTo:滚动到容器指定位置<br>cmp.listView("container").scrollTo(x,y)</li>
* </ul>
*/
/**
* 上下左右联动滚动容器组件
* <br>类似于excel的布局风格,滚动内容区域时:左右滚动时,左边的行列表不会滚动头部导航栏可以滚动;上下滚动时,头部导航栏不滚动,左边行列表滚动,目前提供两组风格,开发者可自行配置<br>
* <ul>
* <li>纯列表展示(左边行列表是数字)</li>
* <li>可选进行选择的数据展示(左边行列表有选择框)</li>
* </ul>
* @namespace cmp
* @class tableList
* @constructor
* @param {String} container 列表容器标识,querySelector能定位的css选择器均可,比如:id、.class等,如:"#id"、".class"(必须符合以上两种形式的查询)
* @param {Object} options 配置参数
* @param {Object} options.fields 用于头部导航栏显示的显示内容,格式如:<br>
* {"key1":"计划表","key2":"姓名"}<br>
* key:代表的是对应列数据关键字,key的值代表的是对应导航栏展示的文字
* @param {Number} options.type 列表数据是否是可选择的<br>
* <ul>
* <li>1:默认不可选择(数字排序)</li>
* <li>2,可进行选择的</li>
* </ul>
* @param {Boolean} options.radio 是否只能进行单选 true 只能单选,false进行多选(默认:false)
* @param {Object} options.params 上拉下拉刷新请求函数需要的参数,格式:{ticket: "luodx"}
* @param {Number} [options.pageSize] 分页数,默认20
* @param {String} [options.theme] 主题颜色,默认#449aba
* @param {Number} [options.captionType] 下拉上拉控件显示类型<br>
* <ul>
* <li>0:不显示条数,只显示文字</li>
* <li>1:显示条数和文字(默认)</li>
* </ul>
* @param {Number} [options.purpose] 列表用作的方式,应用场景当首次请求无数据时,以一个开发者自定义的html来展示.<br/>
* <ul>
* <li>1:普通内容展示;</li>
* <li>2:搜索内容展示</li>
* <li>以后进行扩展</li>
* <li>-1:开发者自己渲染无数据的页面,还是要走开发者定义的渲染方法,只是返回的数据为空</li>
* </ul>
* @param {Function} options.dataFunc 上拉下拉刷新请求数据的函数
* @param {Boolean} [options.multiLevel] 是否是多级查看 <br> true 会出现一个向右的按钮,可进行到下一级的回调函数,false:不会出现向右的按钮
* @param {Boolean} [options.multiLevelCallback] 如果可进行下一级查看 进入下一级的回调函数
* @param {Object} [options.down] 下拉控件的文字、数据数量配置
* @param {String} [options.down.contentdown] 在下拉可刷新状态时,下拉刷新控件上显示的标题内容(默认:"下拉可以刷新")
* @param {String} [options.down.contentover] 在释放可刷新状态时,下拉刷新控件上显示的标题内容(默认:"释放立即刷新")
* @param {String} [options.down.contentrefresh] 正在刷新状态时,下拉刷新控件上显示的标题内容(默认:"正在刷新...")
* @param {String} [options.down.contentprepage] 请求数据条数超过一屏了,需要显示【上一页】的文字
* @param {Object} [options.up] 上拉控件的文字、数据数量配置
* @param {String} [options.up.contentdown] 在上拉可刷新状态时,上拉刷新控件上显示的标题内容(默认:"上拉显示更多")
* @param {String} [options.up.contentrefresh] 正在加载状态时,上拉加载控件上显示的标题内容(默认:"正在加载...")
* @param {String} [options.up.contentnomore] 请求完毕若没有更多数据时显示的提醒内容(默认:"没有更多数据了")
* @param {String} [options.up.contentnextpage] 请求数据条数满一屏了,需要显示【下一页】的文字
* @param {Function} [options.callback] 点击列表数据回调函
* @demo cmp-tableList.html
* @demo cmp-tableList2.html
*/
/**
* 盒滚动容器<br>
* 当html内容的高度和宽度大于手机屏幕大小时,需要进行左右上下滚动查看内容,可将html内容置于此容器实现滚动查看效果
* @class scrollBox
* @namespace cmp
* @constructor
* @param {String} container 列表容器标识,querySelector能定位的css选择器均可,比如:id、.class等,如:"#id"、".class"(必须符合以上两种形式的查询)
* @example
* ```
* <script>
* cmp.scrollBox("#container");
* </script>
* ```
*/