fluentd-ui 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of fluentd-ui might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ChangeLog +9 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +4 -1
- data/app/assets/javascripts/vue/fluent_log.js +4 -4
- data/app/assets/javascripts/vue/in_tail_format.js +43 -49
- data/app/assets/javascripts/{alert.js → vue/notification.js} +21 -7
- data/app/assets/javascripts/vue/settings.js +121 -0
- data/app/assets/javascripts/vue/treeview.js +3 -3
- data/app/assets/stylesheets/common.css.scss +7 -1
- data/app/controllers/api/settings_controller.rb +55 -0
- data/app/controllers/api_controller.rb +6 -2
- data/app/controllers/concerns/setting_concern.rb +2 -2
- data/app/controllers/fluentd/settings_controller.rb +17 -2
- data/app/models/fluentd/setting/config.rb +39 -0
- data/app/views/api/settings/_element.json.jbuilder +6 -0
- data/app/views/api/settings/index.json.jbuilder +3 -0
- data/app/views/api/settings/show.json.jbuilder +1 -0
- data/app/views/fluentd/settings/edit.html.haml +3 -0
- data/app/views/fluentd/settings/source_and_output.html.haml +19 -2
- data/app/views/layouts/application.html.erb +1 -30
- data/app/views/shared/vue/_in_tail_format.html.erb +11 -36
- data/app/views/shared/vue/_notification.html.erb +31 -0
- data/app/views/shared/vue/_setting.html.erb +23 -0
- data/app/views/shared/vue/_treeview.html.erb +2 -2
- data/bower.json +1 -1
- data/config/application.rb +1 -0
- data/config/locales/translation_en.yml +11 -7
- data/config/locales/translation_ja.yml +4 -0
- data/config/routes.rb +2 -0
- data/lib/fluentd-ui/version.rb +1 -1
- data/spec/features/fluentd/setting/source_and_output_spec.rb +157 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/javascript_macro.rb +21 -0
- data/vendor/assets/javascripts/bower/vue/.bower.json +7 -7
- data/vendor/assets/javascripts/bower/vue/LICENSE +1 -1
- data/vendor/assets/javascripts/bower/vue/dist/vue.js +7822 -4768
- data/vendor/assets/javascripts/bower/vue/dist/vue.min.js +7 -7
- data/vendor/assets/javascripts/bower/vue/src/api/child.js +53 -0
- data/vendor/assets/javascripts/bower/vue/src/api/data.js +161 -0
- data/vendor/assets/javascripts/bower/vue/src/api/dom.js +211 -0
- data/vendor/assets/javascripts/bower/vue/src/api/events.js +176 -0
- data/vendor/assets/javascripts/bower/vue/src/api/global.js +146 -0
- data/vendor/assets/javascripts/bower/vue/src/api/lifecycle.js +144 -0
- data/vendor/assets/javascripts/bower/vue/src/batcher.js +52 -32
- data/vendor/assets/javascripts/bower/vue/src/cache.js +112 -0
- data/vendor/assets/javascripts/bower/vue/src/compiler/compile.js +549 -0
- data/vendor/assets/javascripts/bower/vue/src/compiler/transclude.js +163 -0
- data/vendor/assets/javascripts/bower/vue/src/config.js +74 -14
- data/vendor/assets/javascripts/bower/vue/src/directive.js +179 -219
- data/vendor/assets/javascripts/bower/vue/src/directives/attr.js +32 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/class.js +18 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/cloak.js +12 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/component.js +214 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/el.js +13 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/html.js +30 -34
- data/vendor/assets/javascripts/bower/vue/src/directives/if.js +77 -46
- data/vendor/assets/javascripts/bower/vue/src/directives/index.js +22 -129
- data/vendor/assets/javascripts/bower/vue/src/directives/model/checkbox.js +25 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/default.js +123 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/index.js +56 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/radio.js +26 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/model/select.js +166 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/on.js +51 -50
- data/vendor/assets/javascripts/bower/vue/src/directives/partial.js +36 -42
- data/vendor/assets/javascripts/bower/vue/src/directives/ref.js +24 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/repeat.js +477 -226
- data/vendor/assets/javascripts/bower/vue/src/directives/show.js +8 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/style.js +49 -37
- data/vendor/assets/javascripts/bower/vue/src/directives/text.js +15 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/transition.js +12 -0
- data/vendor/assets/javascripts/bower/vue/src/directives/with.js +38 -41
- data/vendor/assets/javascripts/bower/vue/src/filters/array-filters.js +87 -0
- data/vendor/assets/javascripts/bower/vue/src/filters/index.js +135 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/compile.js +71 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/events.js +122 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/init.js +76 -0
- data/vendor/assets/javascripts/bower/vue/src/instance/scope.js +217 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/array.js +90 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/dep.js +50 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/index.js +235 -0
- data/vendor/assets/javascripts/bower/vue/src/observer/object.js +75 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/directive.js +159 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/expression.js +226 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/path.js +300 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/template.js +246 -0
- data/vendor/assets/javascripts/bower/vue/src/parsers/text.js +178 -0
- data/vendor/assets/javascripts/bower/vue/src/transition/css.js +189 -0
- data/vendor/assets/javascripts/bower/vue/src/transition/index.js +151 -0
- data/vendor/assets/javascripts/bower/vue/src/transition/js.js +43 -0
- data/vendor/assets/javascripts/bower/vue/src/util/debug.js +50 -0
- data/vendor/assets/javascripts/bower/vue/src/util/dom.js +176 -0
- data/vendor/assets/javascripts/bower/vue/src/util/env.js +74 -0
- data/vendor/assets/javascripts/bower/vue/src/util/filter.js +72 -0
- data/vendor/assets/javascripts/bower/vue/src/util/index.js +8 -0
- data/vendor/assets/javascripts/bower/vue/src/util/lang.js +175 -0
- data/vendor/assets/javascripts/bower/vue/src/util/merge-option.js +258 -0
- data/vendor/assets/javascripts/bower/vue/src/vue.js +84 -0
- data/vendor/assets/javascripts/bower/vue/src/watcher.js +240 -0
- metadata +65 -20
- data/app/assets/javascripts/setting_format.js +0 -15
- data/vendor/assets/javascripts/bower/vue/src/binding.js +0 -103
- data/vendor/assets/javascripts/bower/vue/src/compiler.js +0 -1037
- data/vendor/assets/javascripts/bower/vue/src/deps-parser.js +0 -65
- data/vendor/assets/javascripts/bower/vue/src/directives/model.js +0 -174
- data/vendor/assets/javascripts/bower/vue/src/directives/view.js +0 -56
- data/vendor/assets/javascripts/bower/vue/src/emitter.js +0 -97
- data/vendor/assets/javascripts/bower/vue/src/exp-parser.js +0 -190
- data/vendor/assets/javascripts/bower/vue/src/filters.js +0 -191
- data/vendor/assets/javascripts/bower/vue/src/fragment.js +0 -67
- data/vendor/assets/javascripts/bower/vue/src/main.js +0 -188
- data/vendor/assets/javascripts/bower/vue/src/observer.js +0 -446
- data/vendor/assets/javascripts/bower/vue/src/template-parser.js +0 -46
- data/vendor/assets/javascripts/bower/vue/src/text-parser.js +0 -96
- data/vendor/assets/javascripts/bower/vue/src/transition.js +0 -228
- data/vendor/assets/javascripts/bower/vue/src/utils.js +0 -326
- data/vendor/assets/javascripts/bower/vue/src/viewmodel.js +0 -190
@@ -0,0 +1,90 @@
|
|
1
|
+
var _ = require('../util')
|
2
|
+
var arrayProto = Array.prototype
|
3
|
+
var arrayMethods = Object.create(arrayProto)
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Intercept mutating methods and emit events
|
7
|
+
*/
|
8
|
+
|
9
|
+
;[
|
10
|
+
'push',
|
11
|
+
'pop',
|
12
|
+
'shift',
|
13
|
+
'unshift',
|
14
|
+
'splice',
|
15
|
+
'sort',
|
16
|
+
'reverse'
|
17
|
+
]
|
18
|
+
.forEach(function (method) {
|
19
|
+
// cache original method
|
20
|
+
var original = arrayProto[method]
|
21
|
+
_.define(arrayMethods, method, function mutator () {
|
22
|
+
// avoid leaking arguments:
|
23
|
+
// http://jsperf.com/closure-with-arguments
|
24
|
+
var i = arguments.length
|
25
|
+
var args = new Array(i)
|
26
|
+
while (i--) {
|
27
|
+
args[i] = arguments[i]
|
28
|
+
}
|
29
|
+
var result = original.apply(this, args)
|
30
|
+
var ob = this.__ob__
|
31
|
+
var inserted
|
32
|
+
switch (method) {
|
33
|
+
case 'push':
|
34
|
+
inserted = args
|
35
|
+
break
|
36
|
+
case 'unshift':
|
37
|
+
inserted = args
|
38
|
+
break
|
39
|
+
case 'splice':
|
40
|
+
inserted = args.slice(2)
|
41
|
+
break
|
42
|
+
}
|
43
|
+
if (inserted) ob.observeArray(inserted)
|
44
|
+
// notify change
|
45
|
+
ob.notify()
|
46
|
+
return result
|
47
|
+
})
|
48
|
+
})
|
49
|
+
|
50
|
+
/**
|
51
|
+
* Swap the element at the given index with a new value
|
52
|
+
* and emits corresponding event.
|
53
|
+
*
|
54
|
+
* @param {Number} index
|
55
|
+
* @param {*} val
|
56
|
+
* @return {*} - replaced element
|
57
|
+
*/
|
58
|
+
|
59
|
+
_.define(
|
60
|
+
arrayProto,
|
61
|
+
'$set',
|
62
|
+
function $set (index, val) {
|
63
|
+
if (index >= this.length) {
|
64
|
+
this.length = index + 1
|
65
|
+
}
|
66
|
+
return this.splice(index, 1, val)[0]
|
67
|
+
}
|
68
|
+
)
|
69
|
+
|
70
|
+
/**
|
71
|
+
* Convenience method to remove the element at given index.
|
72
|
+
*
|
73
|
+
* @param {Number} index
|
74
|
+
* @param {*} val
|
75
|
+
*/
|
76
|
+
|
77
|
+
_.define(
|
78
|
+
arrayProto,
|
79
|
+
'$remove',
|
80
|
+
function $remove (index) {
|
81
|
+
if (typeof index !== 'number') {
|
82
|
+
index = this.indexOf(index)
|
83
|
+
}
|
84
|
+
if (index > -1) {
|
85
|
+
return this.splice(index, 1)[0]
|
86
|
+
}
|
87
|
+
}
|
88
|
+
)
|
89
|
+
|
90
|
+
module.exports = arrayMethods
|
@@ -0,0 +1,50 @@
|
|
1
|
+
var uid = 0
|
2
|
+
|
3
|
+
/**
|
4
|
+
* A dep is an observable that can have multiple
|
5
|
+
* directives subscribing to it.
|
6
|
+
*
|
7
|
+
* @constructor
|
8
|
+
*/
|
9
|
+
|
10
|
+
function Dep () {
|
11
|
+
this.id = ++uid
|
12
|
+
this.subs = []
|
13
|
+
}
|
14
|
+
|
15
|
+
var p = Dep.prototype
|
16
|
+
|
17
|
+
/**
|
18
|
+
* Add a directive subscriber.
|
19
|
+
*
|
20
|
+
* @param {Directive} sub
|
21
|
+
*/
|
22
|
+
|
23
|
+
p.addSub = function (sub) {
|
24
|
+
this.subs.push(sub)
|
25
|
+
}
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Remove a directive subscriber.
|
29
|
+
*
|
30
|
+
* @param {Directive} sub
|
31
|
+
*/
|
32
|
+
|
33
|
+
p.removeSub = function (sub) {
|
34
|
+
if (this.subs.length) {
|
35
|
+
var i = this.subs.indexOf(sub)
|
36
|
+
if (i > -1) this.subs.splice(i, 1)
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Notify all subscribers of a new value.
|
42
|
+
*/
|
43
|
+
|
44
|
+
p.notify = function () {
|
45
|
+
for (var i = 0, l = this.subs.length; i < l; i++) {
|
46
|
+
this.subs[i].update()
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
module.exports = Dep
|
@@ -0,0 +1,235 @@
|
|
1
|
+
var _ = require('../util')
|
2
|
+
var config = require('../config')
|
3
|
+
var Dep = require('./dep')
|
4
|
+
var arrayMethods = require('./array')
|
5
|
+
var arrayKeys = Object.getOwnPropertyNames(arrayMethods)
|
6
|
+
require('./object')
|
7
|
+
|
8
|
+
var uid = 0
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Type enums
|
12
|
+
*/
|
13
|
+
|
14
|
+
var ARRAY = 0
|
15
|
+
var OBJECT = 1
|
16
|
+
|
17
|
+
/**
|
18
|
+
* Augment an target Object or Array by intercepting
|
19
|
+
* the prototype chain using __proto__
|
20
|
+
*
|
21
|
+
* @param {Object|Array} target
|
22
|
+
* @param {Object} proto
|
23
|
+
*/
|
24
|
+
|
25
|
+
function protoAugment (target, src) {
|
26
|
+
target.__proto__ = src
|
27
|
+
}
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Augment an target Object or Array by defining
|
31
|
+
* hidden properties.
|
32
|
+
*
|
33
|
+
* @param {Object|Array} target
|
34
|
+
* @param {Object} proto
|
35
|
+
*/
|
36
|
+
|
37
|
+
function copyAugment (target, src, keys) {
|
38
|
+
var i = keys.length
|
39
|
+
var key
|
40
|
+
while (i--) {
|
41
|
+
key = keys[i]
|
42
|
+
_.define(target, key, src[key])
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Observer class that are attached to each observed
|
48
|
+
* object. Once attached, the observer converts target
|
49
|
+
* object's property keys into getter/setters that
|
50
|
+
* collect dependencies and dispatches updates.
|
51
|
+
*
|
52
|
+
* @param {Array|Object} value
|
53
|
+
* @param {Number} type
|
54
|
+
* @constructor
|
55
|
+
*/
|
56
|
+
|
57
|
+
function Observer (value, type) {
|
58
|
+
this.id = ++uid
|
59
|
+
this.value = value
|
60
|
+
this.active = true
|
61
|
+
this.deps = []
|
62
|
+
_.define(value, '__ob__', this)
|
63
|
+
if (type === ARRAY) {
|
64
|
+
var augment = config.proto && _.hasProto
|
65
|
+
? protoAugment
|
66
|
+
: copyAugment
|
67
|
+
augment(value, arrayMethods, arrayKeys)
|
68
|
+
this.observeArray(value)
|
69
|
+
} else if (type === OBJECT) {
|
70
|
+
this.walk(value)
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
Observer.target = null
|
75
|
+
|
76
|
+
var p = Observer.prototype
|
77
|
+
|
78
|
+
/**
|
79
|
+
* Attempt to create an observer instance for a value,
|
80
|
+
* returns the new observer if successfully observed,
|
81
|
+
* or the existing observer if the value already has one.
|
82
|
+
*
|
83
|
+
* @param {*} value
|
84
|
+
* @return {Observer|undefined}
|
85
|
+
* @static
|
86
|
+
*/
|
87
|
+
|
88
|
+
Observer.create = function (value) {
|
89
|
+
if (
|
90
|
+
value &&
|
91
|
+
value.hasOwnProperty('__ob__') &&
|
92
|
+
value.__ob__ instanceof Observer
|
93
|
+
) {
|
94
|
+
return value.__ob__
|
95
|
+
} else if (_.isArray(value)) {
|
96
|
+
return new Observer(value, ARRAY)
|
97
|
+
} else if (
|
98
|
+
_.isPlainObject(value) &&
|
99
|
+
!value._isVue // avoid Vue instance
|
100
|
+
) {
|
101
|
+
return new Observer(value, OBJECT)
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
/**
|
106
|
+
* Walk through each property and convert them into
|
107
|
+
* getter/setters. This method should only be called when
|
108
|
+
* value type is Object. Properties prefixed with `$` or `_`
|
109
|
+
* and accessor properties are ignored.
|
110
|
+
*
|
111
|
+
* @param {Object} obj
|
112
|
+
*/
|
113
|
+
|
114
|
+
p.walk = function (obj) {
|
115
|
+
var keys = Object.keys(obj)
|
116
|
+
var i = keys.length
|
117
|
+
var key, prefix
|
118
|
+
while (i--) {
|
119
|
+
key = keys[i]
|
120
|
+
prefix = key.charCodeAt(0)
|
121
|
+
if (prefix !== 0x24 && prefix !== 0x5F) { // skip $ or _
|
122
|
+
this.convert(key, obj[key])
|
123
|
+
}
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
/**
|
128
|
+
* Try to carete an observer for a child value,
|
129
|
+
* and if value is array, link dep to the array.
|
130
|
+
*
|
131
|
+
* @param {*} val
|
132
|
+
* @return {Dep|undefined}
|
133
|
+
*/
|
134
|
+
|
135
|
+
p.observe = function (val) {
|
136
|
+
return Observer.create(val)
|
137
|
+
}
|
138
|
+
|
139
|
+
/**
|
140
|
+
* Observe a list of Array items.
|
141
|
+
*
|
142
|
+
* @param {Array} items
|
143
|
+
*/
|
144
|
+
|
145
|
+
p.observeArray = function (items) {
|
146
|
+
var i = items.length
|
147
|
+
while (i--) {
|
148
|
+
this.observe(items[i])
|
149
|
+
}
|
150
|
+
}
|
151
|
+
|
152
|
+
/**
|
153
|
+
* Convert a property into getter/setter so we can emit
|
154
|
+
* the events when the property is accessed/changed.
|
155
|
+
*
|
156
|
+
* @param {String} key
|
157
|
+
* @param {*} val
|
158
|
+
*/
|
159
|
+
|
160
|
+
p.convert = function (key, val) {
|
161
|
+
var ob = this
|
162
|
+
var childOb = ob.observe(val)
|
163
|
+
var dep = new Dep()
|
164
|
+
if (childOb) {
|
165
|
+
childOb.deps.push(dep)
|
166
|
+
}
|
167
|
+
Object.defineProperty(ob.value, key, {
|
168
|
+
enumerable: true,
|
169
|
+
configurable: true,
|
170
|
+
get: function () {
|
171
|
+
// Observer.target is a watcher whose getter is
|
172
|
+
// currently being evaluated.
|
173
|
+
if (ob.active && Observer.target) {
|
174
|
+
Observer.target.addDep(dep)
|
175
|
+
}
|
176
|
+
return val
|
177
|
+
},
|
178
|
+
set: function (newVal) {
|
179
|
+
if (newVal === val) return
|
180
|
+
// remove dep from old value
|
181
|
+
var oldChildOb = val && val.__ob__
|
182
|
+
if (oldChildOb) {
|
183
|
+
var oldDeps = oldChildOb.deps
|
184
|
+
oldDeps.splice(oldDeps.indexOf(dep), 1)
|
185
|
+
}
|
186
|
+
val = newVal
|
187
|
+
// add dep to new value
|
188
|
+
var newChildOb = ob.observe(newVal)
|
189
|
+
if (newChildOb) {
|
190
|
+
newChildOb.deps.push(dep)
|
191
|
+
}
|
192
|
+
dep.notify()
|
193
|
+
}
|
194
|
+
})
|
195
|
+
}
|
196
|
+
|
197
|
+
/**
|
198
|
+
* Notify change on all self deps on an observer.
|
199
|
+
* This is called when a mutable value mutates. e.g.
|
200
|
+
* when an Array's mutating methods are called, or an
|
201
|
+
* Object's $add/$delete are called.
|
202
|
+
*/
|
203
|
+
|
204
|
+
p.notify = function () {
|
205
|
+
var deps = this.deps
|
206
|
+
for (var i = 0, l = deps.length; i < l; i++) {
|
207
|
+
deps[i].notify()
|
208
|
+
}
|
209
|
+
}
|
210
|
+
|
211
|
+
/**
|
212
|
+
* Add an owner vm, so that when $add/$delete mutations
|
213
|
+
* happen we can notify owner vms to proxy the keys and
|
214
|
+
* digest the watchers. This is only called when the object
|
215
|
+
* is observed as an instance's root $data.
|
216
|
+
*
|
217
|
+
* @param {Vue} vm
|
218
|
+
*/
|
219
|
+
|
220
|
+
p.addVm = function (vm) {
|
221
|
+
(this.vms = this.vms || []).push(vm)
|
222
|
+
}
|
223
|
+
|
224
|
+
/**
|
225
|
+
* Remove an owner vm. This is called when the object is
|
226
|
+
* swapped out as an instance's $data object.
|
227
|
+
*
|
228
|
+
* @param {Vue} vm
|
229
|
+
*/
|
230
|
+
|
231
|
+
p.removeVm = function (vm) {
|
232
|
+
this.vms.splice(this.vms.indexOf(vm), 1)
|
233
|
+
}
|
234
|
+
|
235
|
+
module.exports = Observer
|
@@ -0,0 +1,75 @@
|
|
1
|
+
var _ = require('../util')
|
2
|
+
var objProto = Object.prototype
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Add a new property to an observed object
|
6
|
+
* and emits corresponding event
|
7
|
+
*
|
8
|
+
* @param {String} key
|
9
|
+
* @param {*} val
|
10
|
+
* @public
|
11
|
+
*/
|
12
|
+
|
13
|
+
_.define(
|
14
|
+
objProto,
|
15
|
+
'$add',
|
16
|
+
function $add (key, val) {
|
17
|
+
var ob = this.__ob__
|
18
|
+
if (!ob) {
|
19
|
+
this[key] = val
|
20
|
+
return
|
21
|
+
}
|
22
|
+
if (_.isReserved(key)) {
|
23
|
+
_.warn('Refused to $add reserved key: ' + key)
|
24
|
+
return
|
25
|
+
}
|
26
|
+
if (this.hasOwnProperty(key)) return
|
27
|
+
ob.convert(key, val)
|
28
|
+
if (ob.vms) {
|
29
|
+
var i = ob.vms.length
|
30
|
+
while (i--) {
|
31
|
+
var vm = ob.vms[i]
|
32
|
+
vm._proxy(key)
|
33
|
+
vm._digest()
|
34
|
+
}
|
35
|
+
} else {
|
36
|
+
ob.notify()
|
37
|
+
}
|
38
|
+
}
|
39
|
+
)
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Deletes a property from an observed object
|
43
|
+
* and emits corresponding event
|
44
|
+
*
|
45
|
+
* @param {String} key
|
46
|
+
* @public
|
47
|
+
*/
|
48
|
+
|
49
|
+
_.define(
|
50
|
+
objProto,
|
51
|
+
'$delete',
|
52
|
+
function $delete (key) {
|
53
|
+
var ob = this.__ob__
|
54
|
+
if (!ob) {
|
55
|
+
delete this[key]
|
56
|
+
return
|
57
|
+
}
|
58
|
+
if (_.isReserved(key)) {
|
59
|
+
_.warn('Refused to $add reserved key: ' + key)
|
60
|
+
return
|
61
|
+
}
|
62
|
+
if (!this.hasOwnProperty(key)) return
|
63
|
+
delete this[key]
|
64
|
+
if (ob.vms) {
|
65
|
+
var i = ob.vms.length
|
66
|
+
while (i--) {
|
67
|
+
var vm = ob.vms[i]
|
68
|
+
vm._unproxy(key)
|
69
|
+
vm._digest()
|
70
|
+
}
|
71
|
+
} else {
|
72
|
+
ob.notify()
|
73
|
+
}
|
74
|
+
}
|
75
|
+
)
|