| OLD | NEW |
| 1 | 1 |
| 2 | 2 |
| 3 (function() { | 3 (function() { |
| 4 | 4 |
| 5 // monostate data | 5 // monostate data |
| 6 var metaDatas = {}; | 6 var metaDatas = {}; |
| 7 var metaArrays = {}; | 7 var metaArrays = {}; |
| 8 | 8 |
| 9 Polymer.IronMeta = Polymer({ | 9 Polymer.IronMeta = Polymer({ |
| 10 | 10 |
| 11 is: 'iron-meta', | 11 is: 'iron-meta', |
| 12 | 12 |
| 13 properties: { | 13 properties: { |
| 14 | 14 |
| 15 /** | 15 /** |
| 16 * The type of meta-data. All meta-data of the same type is stored | 16 * The type of meta-data. All meta-data of the same type is stored |
| 17 * together. | 17 * together. |
| 18 * | |
| 19 * @attribute type | |
| 20 * @type String | |
| 21 * @default 'default' | |
| 22 */ | 18 */ |
| 23 type: { | 19 type: { |
| 24 type: String, | 20 type: String, |
| 25 value: 'default', | 21 value: 'default', |
| 26 observer: '_typeChanged' | 22 observer: '_typeChanged' |
| 27 }, | 23 }, |
| 28 | 24 |
| 29 /** | 25 /** |
| 30 * The key used to store `value` under the `type` namespace. | 26 * The key used to store `value` under the `type` namespace. |
| 31 * | |
| 32 * @attribute key | |
| 33 * @type String | |
| 34 * @default '' | |
| 35 */ | 27 */ |
| 36 key: { | 28 key: { |
| 37 type: String, | 29 type: String, |
| 38 observer: '_keyChanged' | 30 observer: '_keyChanged' |
| 39 }, | 31 }, |
| 40 | 32 |
| 41 /** | 33 /** |
| 42 * The meta-data to store or retrieve. | 34 * The meta-data to store or retrieve. |
| 43 * | |
| 44 * @attribute value | |
| 45 * @type * | |
| 46 * @default this | |
| 47 */ | 35 */ |
| 48 value: { | 36 value: { |
| 49 type: Object, | 37 type: Object, |
| 50 notify: true, | 38 notify: true, |
| 51 observer: '_valueChanged' | 39 observer: '_valueChanged' |
| 52 }, | 40 }, |
| 53 | 41 |
| 54 /** | 42 /** |
| 55 * If true, `value` is set to the iron-meta instance itself. | 43 * If true, `value` is set to the iron-meta instance itself. |
| 56 * | |
| 57 * @attribute self | |
| 58 * @type Boolean | |
| 59 * @default false | |
| 60 */ | 44 */ |
| 61 self: { | 45 self: { |
| 62 type: Boolean, | 46 type: Boolean, |
| 63 observer: '_selfChanged' | 47 observer: '_selfChanged' |
| 64 }, | 48 }, |
| 65 | 49 |
| 66 /** | 50 /** |
| 67 * Array of all meta-data values for the given type. | 51 * Array of all meta-data values for the given type. |
| 68 * | |
| 69 * @property list | |
| 70 * @type Array | |
| 71 */ | 52 */ |
| 72 list: { | 53 list: { |
| 73 type: Array, | 54 type: Array, |
| 74 notify: true | 55 notify: true |
| 75 } | 56 } |
| 76 | 57 |
| 77 }, | 58 }, |
| 78 | 59 |
| 79 /** | 60 /** |
| 80 * Only runs if someone invokes the factory/constructor directly | 61 * Only runs if someone invokes the factory/constructor directly |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 metaArrays[type] = []; | 105 metaArrays[type] = []; |
| 125 } | 106 } |
| 126 this.list = metaArrays[type]; | 107 this.list = metaArrays[type]; |
| 127 this._registerKeyValue(this.key, this.value); | 108 this._registerKeyValue(this.key, this.value); |
| 128 }, | 109 }, |
| 129 | 110 |
| 130 /** | 111 /** |
| 131 * Retrieves meta data value by key. | 112 * Retrieves meta data value by key. |
| 132 * | 113 * |
| 133 * @method byKey | 114 * @method byKey |
| 134 * @param {String} key The key of the meta-data to be returned. | 115 * @param {string} key The key of the meta-data to be returned. |
| 135 * @returns * | 116 * @return {*} |
| 136 */ | 117 */ |
| 137 byKey: function(key) { | 118 byKey: function(key) { |
| 138 return this._metaData && this._metaData[key]; | 119 return this._metaData && this._metaData[key]; |
| 139 }, | 120 }, |
| 140 | 121 |
| 141 _resetRegistration: function(oldKey) { | 122 _resetRegistration: function(oldKey) { |
| 142 this._unregisterKey(oldKey); | 123 this._unregisterKey(oldKey); |
| 143 this._registerKeyValue(this.key, this.value); | 124 this._registerKeyValue(this.key, this.value); |
| 144 }, | 125 }, |
| 145 | 126 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 172 | 153 |
| 173 /** | 154 /** |
| 174 `iron-meta-query` can be used to access infomation stored in `iron-meta`. | 155 `iron-meta-query` can be used to access infomation stored in `iron-meta`. |
| 175 | 156 |
| 176 Examples: | 157 Examples: |
| 177 | 158 |
| 178 If I create an instance like this: | 159 If I create an instance like this: |
| 179 | 160 |
| 180 <iron-meta key="info" value="foo/bar"></iron-meta> | 161 <iron-meta key="info" value="foo/bar"></iron-meta> |
| 181 | 162 |
| 182 Note that keyUrl="foo/bar" is the metadata I've defined. I could define more | 163 Note that value="foo/bar" is the metadata I've defined. I could define more |
| 183 attributes or use child nodes to define additional metadata. | 164 attributes or use child nodes to define additional metadata. |
| 184 | 165 |
| 185 Now I can access that element (and it's metadata) from any `iron-meta-query`
instance: | 166 Now I can access that element (and it's metadata) from any `iron-meta-query`
instance: |
| 186 | 167 |
| 187 var value = new Polymer.IronMetaQuery({key: 'info'}).value; | 168 var value = new Polymer.IronMetaQuery({key: 'info'}).value; |
| 188 | 169 |
| 189 @group Polymer Iron Elements | 170 @group Polymer Iron Elements |
| 190 @element iron-meta-query | 171 @element iron-meta-query |
| 191 */ | 172 */ |
| 192 Polymer.IronMetaQuery = Polymer({ | 173 Polymer.IronMetaQuery = Polymer({ |
| 193 | 174 |
| 194 is: 'iron-meta-query', | 175 is: 'iron-meta-query', |
| 195 | 176 |
| 196 properties: { | 177 properties: { |
| 197 | 178 |
| 198 /** | 179 /** |
| 199 * The type of meta-data. All meta-data of the same type is stored | 180 * The type of meta-data. All meta-data of the same type is stored |
| 200 * together. | 181 * together. |
| 201 * | |
| 202 * @attribute type | |
| 203 * @type String | |
| 204 * @default 'default' | |
| 205 */ | 182 */ |
| 206 type: { | 183 type: { |
| 207 type: String, | 184 type: String, |
| 208 value: 'default', | 185 value: 'default', |
| 209 observer: '_typeChanged' | 186 observer: '_typeChanged' |
| 210 }, | 187 }, |
| 211 | 188 |
| 212 /** | 189 /** |
| 213 * Specifies a key to use for retrieving `value` from the `type` | 190 * Specifies a key to use for retrieving `value` from the `type` |
| 214 * namespace. | 191 * namespace. |
| 215 * | |
| 216 * @attribute key | |
| 217 * @type String | |
| 218 */ | 192 */ |
| 219 key: { | 193 key: { |
| 220 type: String, | 194 type: String, |
| 221 observer: '_keyChanged' | 195 observer: '_keyChanged' |
| 222 }, | 196 }, |
| 223 | 197 |
| 224 /** | 198 /** |
| 225 * The meta-data to store or retrieve. | 199 * The meta-data to store or retrieve. |
| 226 * | |
| 227 * @attribute value | |
| 228 * @type * | |
| 229 * @default this | |
| 230 */ | 200 */ |
| 231 value: { | 201 value: { |
| 232 type: Object, | 202 type: Object, |
| 233 notify: true, | 203 notify: true, |
| 234 readOnly: true | 204 readOnly: true |
| 235 }, | 205 }, |
| 236 | 206 |
| 237 /** | 207 /** |
| 238 * Array of all meta-data values for the given type. | 208 * Array of all meta-data values for the given type. |
| 239 * | |
| 240 * @property list | |
| 241 * @type Array | |
| 242 */ | 209 */ |
| 243 list: { | 210 list: { |
| 244 type: Array, | 211 type: Array, |
| 245 notify: true | 212 notify: true |
| 246 } | 213 } |
| 247 | 214 |
| 248 }, | 215 }, |
| 249 | 216 |
| 250 /** | 217 /** |
| 251 * Actually a factory method, not a true constructor. Only runs if | 218 * Actually a factory method, not a true constructor. Only runs if |
| 252 * someone invokes it directly (via `new Polymer.IronMeta()`); | 219 * someone invokes it directly (via `new Polymer.IronMeta()`); |
| 253 */ | 220 */ |
| 254 constructor: function(config) { | 221 factoryImpl: function(config) { |
| 255 if (config) { | 222 if (config) { |
| 256 for (var n in config) { | 223 for (var n in config) { |
| 257 switch(n) { | 224 switch(n) { |
| 258 case 'type': | 225 case 'type': |
| 259 case 'key': | 226 case 'key': |
| 260 this[n] = config[n]; | 227 this[n] = config[n]; |
| 261 break; | 228 break; |
| 262 } | 229 } |
| 263 } | 230 } |
| 264 } | 231 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 277 _typeChanged: function(type) { | 244 _typeChanged: function(type) { |
| 278 this._metaData = metaDatas[type]; | 245 this._metaData = metaDatas[type]; |
| 279 this.list = metaArrays[type]; | 246 this.list = metaArrays[type]; |
| 280 if (this.key) { | 247 if (this.key) { |
| 281 this._keyChanged(this.key); | 248 this._keyChanged(this.key); |
| 282 } | 249 } |
| 283 }, | 250 }, |
| 284 | 251 |
| 285 /** | 252 /** |
| 286 * Retrieves meta data value by key. | 253 * Retrieves meta data value by key. |
| 287 * | 254 * @param {string} key The key of the meta-data to be returned. |
| 288 * @method byKey | 255 * @return {*} |
| 289 * @param {String} key The key of the meta-data to be returned. | |
| 290 * @returns * | |
| 291 */ | 256 */ |
| 292 byKey: function(key) { | 257 byKey: function(key) { |
| 293 return this._metaData && this._metaData[key]; | 258 return this._metaData && this._metaData[key]; |
| 294 } | 259 } |
| 295 | 260 |
| 296 }); | 261 }); |
| 297 | 262 |
| 298 })(); | 263 })(); |
| OLD | NEW |