注:本文需要结合这篇文章 SAP Fiori Elements List Report Smart Table 列项目宽度计算的奥妙 来阅读。
执行上下文:SmartTable.prototype._onMetadataInitialised
当前 SmartTable 的所有属性:
总共从 model 里取出了 36 个字段:
其中 lineItem 即列项目备选项有 6 个:
支持导出成 excel:
遍历每一个字段:
这三个字段默认 visible:
这个宽度是什么时候计算出来的?
关于 importance 的计算:
宽度的自动计算:
return oColumn.setWidth(this._calcColumnWidth(oField) + "rem");
Calculates the column width from the metadata attributes.
基于元数据里的属性计算宽度。
The optimal column width is calculated with creating the longest possible sample of the created model type.
最优的宽度是基于字段类型最大可能的长度
Afterwards it is formatted to string while taking the constraints and format options into account, and then measured over canvas.
计算完毕后,被转换成字符串格式
参数1:@param {object} oField OData metadata for the table field
字段在 OData 元数据中的属性
参数2:@param {boolean} [bAdditionalProperty=false] Whether the calcuation of additional or leading property
计算时是否需要考虑额外的属性
参数3:@param {object} [mConfig] The configuration object
参数4:@param {int} [mConfig.min=2] The minimum content width of the column in rem
列的最小宽度,单位为 rem
参数5:@param {int} [mConfig.max=19] The maximum content width of the column in rem
列的最大宽度,单位为 rem
@param {boolean} [mConfig.label=true] Whether the column label should be taken into account as minimum column width or not
列的最小宽度是否应该将列标签考虑在内
语义:计算 w 重复出现 40 次,在当前浏览器环境下,渲染出来需要的宽度。
更多Jerry的原创文章,尽在:"汪子熙":