Created
April 20, 2020 22:20
-
-
Save runspired/0b07fc552ed091483782aad29b26916a to your computer and use it in GitHub Desktop.
Track Field Usage
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Controller from '@ember/controller'; | |
export default class ApplicationController extends Controller { | |
appName = 'Ember Twiddle'; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Store from '@ember-data/store'; | |
export const ReadFields = new Map(); | |
function readField(type, field) { | |
let fieldUsage = ReadFields.get(type); | |
if (fieldUsage === undefined) { | |
fieldUsage = Object.create(null); | |
ReadFields.set(type, fieldUsage); | |
} | |
if (fieldUsage[field] === undefined) { | |
fieldUsage[field] = 0; | |
} | |
fieldUsage[field]++; | |
} | |
class ProxyRecordData { | |
constructor(rd) { | |
this._rd = rd; | |
} | |
getAttribute(fieldName) { | |
readField(this.modelName, fieldName); | |
return super.getAttribute(...arguments); | |
} | |
getHasMany(fieldName) { | |
readField(this.modelName, fieldName); | |
return super.getHasMany(...arguments); | |
} | |
getBelongsTo(fieldName) { | |
readField(this.modelName, fieldName); | |
return super.getBelongsTo(...arguments); | |
} | |
// other necessary properties / methods to proxy | |
} | |
export default class AppStore extends Store { | |
createRecordDataFor() { | |
let rd = super.createRecordDataFor(...arguments); | |
return new ProxyRecordData(rd); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"version": "0.17.0", | |
"EmberENV": { | |
"FEATURES": {}, | |
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false, | |
"_APPLICATION_TEMPLATE_WRAPPER": true, | |
"_JQUERY_INTEGRATION": true | |
}, | |
"options": { | |
"use_pods": false, | |
"enable-testing": false | |
}, | |
"dependencies": { | |
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js", | |
"ember": "3.17.0", | |
"ember-template-compiler": "3.17.0", | |
"ember-testing": "3.17.0" | |
}, | |
"addons": { | |
"@glimmer/component": "1.0.0", | |
"ember-data": "3.16.2" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment