UNPKG

4.11 kBJavaScriptView Raw
1/**
2 * Module : kero dataTable ref
3 * Author : liuyk(liuyk@yonyou.com)
4 * Date : 2016-08-01 14:34:01
5 */
6
7const refSelectedRows = function () {
8 return ko.pureComputed({
9 read: function () {
10 var ins = this.selectedIndices() || []
11 var rs = this.rows()
12 var selectedRows = []
13 for (var i = 0; i < ins.length; i++) {
14 selectedRows.push(rs[i])
15 }
16 return selectedRows
17 }, owner: this
18 })
19}
20
21
22/**
23 * 绑定字段值
24 * @param {Object} fieldName
25 */
26const ref = function (fieldName) {
27 this.createField(fieldName);
28 if (!this.valueChange[fieldName])
29 this.valueChange[fieldName] = ko.observable(1);
30 return ko.pureComputed({
31 read: function () {
32 this.valueChange[fieldName]();
33 this.currentRowChange();
34 var row = this.getCurrentRow()
35 if (row) {
36 return row.getChildValue(fieldName)
37 }
38 else
39 return ''
40 },
41 write: function (value) {
42 var row = this.getCurrentRow()
43 if (row)
44 row.setChildValue(fieldName, value);
45 },
46 owner: this
47 })
48}
49
50const refByRow = function(obj){
51 var fieldName = obj.fieldName,
52 fullField = obj.fullField;
53 this.createField(fieldName);
54 if (!this.valueChange[fieldName])
55 this.valueChange[fieldName] = ko.observable(1);
56 return ko.pureComputed({
57 read: function () {
58 this.valueChange[fieldName]();
59 this.currentRowChange();
60 var row,index = obj.index + '';
61 var childRowObj = {
62 fullField: fullField,
63 index: index
64 }
65 row = this.getChildRow(childRowObj);
66
67 if (row) {
68 return row.getChildValue(fieldName)
69 }
70 else
71 return ''
72 },
73 write: function (value) {
74 var row;
75 if(obj.index > -1)
76 row = this.getRow(obj.index)
77 if (row)
78 row.setChildValue(fieldName, value);
79 },
80 owner: this
81 })
82}
83/**
84 * 绑定字段属性
85 * @param {Object} fieldName
86 * @param {Object} key
87 */
88const refMeta = function (fieldName, key) {
89 if (!this.metaChange[fieldName + '.' + key])
90 this.metaChange[fieldName + '.' + key] = ko.observable(1);
91 return ko.pureComputed({
92 read: function () {
93 this.metaChange[fieldName + '.' + key]();
94 this.currentRowChange();
95 return this.getMeta(fieldName, key)
96 },
97 write: function (value) {
98 this.setMeta(fieldName, key, value)
99 },
100 owner: this
101 })
102}
103
104const refRowMeta = function (fieldName, key) {
105 if (!this.metaChange[fieldName + '.' + key])
106 this.metaChange[fieldName + '.' + key] = ko.observable(1);
107 return ko.pureComputed({
108 read: function () {
109 this.metaChange[fieldName + '.' + key]();
110 this.currentRowChange();
111 var row = this.getCurrentRow()
112 if (row)
113 return row.getMeta(fieldName, key)
114 else
115 return this.getMeta(fieldName, key)
116 },
117 write: function (value) {
118 var row = this.getCurrentRow()
119 if (row)
120 row.setMeta(fieldName, value)
121 },
122 owner: this
123 })
124}
125
126
127const refEnable = function (fieldName) {
128 return ko.pureComputed({
129 //enable优先级: dataTable.enable > row上的enable > field中的enable定义
130 read: function () {
131 this.enableChange();
132 if (!fieldName)
133 return this.enable;
134 var fieldEnable = this.getRowMeta(fieldName, 'enable')
135 if (typeof fieldEnable == 'undefined' || fieldEnable == null)
136 fieldEnable = true;
137 return fieldEnable && this.enable
138 },
139 owner: this
140 })
141}
142
143export {
144 refSelectedRows,
145 ref,
146 refMeta,
147 refRowMeta,
148 refEnable,
149 refByRow,
150}
\No newline at end of file