/**
 * 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>
 * ```
 */

    
Top