UNPKG

2.33 kBJavaScriptView Raw
1import Model from 'model/Model'
2
3class ModelFunction {
4 constructor (model, onChangeListener, onCollectListener) {
5 this._model = Model.fromSpec(model)
6 this._onChangeListener = onChangeListener
7 this._onCollectListener = onCollectListener
8 }
9
10 getModel () {
11 return this._model
12 }
13
14 listenInput (field) {
15 let self = this
16 return (e) => {
17 self._model[field].setValue(e.target.value)
18 if (self._onChangeListener != null && typeof self._onChangeListener !== 'undefined') {
19 self._onChangeListener(self._model, field, e.target.value, this)
20 }
21 }
22 }
23
24 listenInputOnly (field) {
25 let self = this
26 return (e) => {
27 if (self._onChangeListener != null && typeof self._onChangeListener !== 'undefined') {
28 self._onChangeListener(self._model, field, e.target.value, this)
29 }
30 }
31 }
32
33 listen (field) {
34 let self = this
35 return (value) => {
36 self._model[field].setValue(value)
37 if (self._onChangeListener != null && typeof self._onChangeListener !== 'undefined') {
38 self._onChangeListener(self._model, field, value, this)
39 }
40 }
41 }
42
43 listenOnly (field) {
44 let self = this
45 return (value) => {
46 if (self._onChangeListener != null && typeof self._onChangeListener !== 'undefined') {
47 self._onChangeListener(self._model, field, value, this)
48 }
49 }
50 }
51
52 value (field) {
53 if (this._model[field] != null && typeof this._model[field] !== 'undefined') {
54 return this._model[field].value
55 } else {
56 return null
57 }
58 }
59
60 set (field, value) {
61 if (this._model[field] != null && typeof this._model[field] !== 'undefined') {
62 this._model[field].set(value)
63 }
64 }
65
66 validation (field) {
67 if (this._model[field] != null && typeof this._model[field] !== 'undefined') {
68 return this._model[field].validation
69 } else {
70 return {
71 message: ''
72 }
73 }
74 }
75
76 bind (value) {
77 this._model.bind(value)
78 }
79
80 updateAction () {
81 return {
82 type: '__MODEL_UPDATE__',
83 data: this._model.getValue()
84 }
85 }
86
87 collect () {
88 let self = this
89 return () => {
90 self._onCollectListener(self._model)
91 }
92 }
93
94 static setup (model, onChange, onCollect) {
95 return new ModelFunction(model, onChange, onCollect)
96 }
97}
98
99export default ModelFunction