Last active
February 19, 2017 21:13
-
-
Save tarponjargon/fb1680bfea201aeb4a0d886aafa3eed5 to your computer and use it in GitHub Desktop.
Revisions
-
tarponjargon revised this gist
Feb 19, 2017 . 2 changed files with 14 additions and 35 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,25 +1,19 @@ import Ember from 'ember'; export default Ember.Controller.extend({ queryParams: ['q','sort_method','search_type','filter1','filter2'], init(){ this._super(...arguments); Ember.set(this, 'q', null); Ember.set(this, 'sort_method', 'relevance'); // <-- sets default value to 'undefined' Ember.set(this, 'filter1', []); // <-- sets default value to 'undefined' }, filter2: [], // <-- sets default value to 'Array[0]' search_type: 'bar', // <-- sets default value properly actions: { addFilter: function(key, value) { This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,26 +1,11 @@ import Ember from 'ember'; export default Ember.Route.extend({ queryParams: { q: { refreshModel: true }, sort_method: { refreshModel: true }, search_type: { refreshModel: true }, filter1: { refreshModel: true }, filter2: { refreshModel: true } } }); -
tarponjargon revised this gist
Feb 19, 2017 . 5 changed files with 29 additions and 96 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,38 +1,31 @@ import Ember from 'ember'; // this would not be here, I'd import it to both the route and the controller (perhaps from environment.js) const cfg = { defaultQueryParams: { q: null, sort_method: 'relevance', //<--when added with setProperties in init() - strings are added just fine filter1: [], // <--when added with setProperties in init() - arrays are added as 'undefined' filter2: [] } }; export default Ember.Controller.extend({ queryParams: Object.keys(cfg.defaultQueryParams), // <--this works just fine, no need to manually specify init(){ this._super(...arguments); this.setProperties(cfg.defaultQueryParams); // <--works for setting strings, but not arrays }, filter2: [], // <--when added directly, arrays are added as 'Array[0]' actions: { addFilter: function(key, value) { alert(`adding "${value.toString()}" to controller property '${key}'`); console.log("DUMP OF EMBER 'this':", this); this[key].pushObject(value.toString()); } } }); This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,7 +0,0 @@ This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,17 +1,12 @@ import Ember from 'ember'; // this would not be here, I'd import it to both the route and the controller (perhaps from environment.js) const cfg = { defaultQueryParams: { q: null, sort_method: 'relevance', filter1: [], filter2: [] } }; @@ -20,45 +15,12 @@ export default Ember.Route.extend({ init() { this._super(...arguments); //specify from cfg.defaultQueryParams rather than each one explicitly Object.keys(cfg.defaultQueryParams).forEach((qp) => { this.queryParams[qp] = { refreshModel: true }; }); // setting each queryParams `refreshModel: true` using a loop does work! yay! See console: console.log("ROUTE queryParams:", this.queryParams); } }); This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,7 +1,7 @@ <h1>Welcome to {{appName}}</h1> <br> <br> {{link-to "Click here (unless you already did)" "results" (query-params q="foo")}} {{outlet}} <br> <br> This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,29 +1,14 @@ <h1>Add a filter:</h1> <br> <a href="#" {{action "addFilter" "filter1" "Value of Filter 1"}}>Click to add a filter to filter1 array set in controller init()</a> (then see error in console and "DUMP OF EMBER 'this'" in console - note difference between default values of filter1 and filter2 arrays) <br><br> <a href="#" {{action "addFilter" "filter2" "Value of Filter 2"}}>Click to add a filter to filter2 array set right on the controller</a> (should work) <br><br> <h1>Selected filters (should be the result of clicking a link above):</h1> Filter1: {{#each filter1 as |bar|}}{{bar}}{{/each}}<br> Filter2: {{#each filter2 as |baz|}}{{baz}}{{/each}}<br> {{outlet}} -
tarponjargon created this gist
Feb 11, 2017 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,5 @@ import Ember from 'ember'; export default Ember.Controller.extend({ appName: 'Ember Twiddle' }); This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,38 @@ import Ember from 'ember'; // this would not be here, I'd import it to the route and the controller const cfg = { defaultQueryParams: { q: null, paging: '18', search_sort: 'relevance', search_title: null, search_page: null, filter_breadcrumb: [], filter_price: [], filter_size_apparel: [], filter_color: [] } }; export default Ember.Controller.extend({ queryParams: Object.keys(cfg.defaultQueryParams), init(){ this._super(...arguments); this.setProperties(cfg.defaultQueryParams); }, actions: { addFilter: function(key, value) { alert(`adding ${key} ${value.toString()}`); console.log(this); this[key].pushObject(value.toString()); }, removeFilter: function(key, value) { this[key].removeObject(value.toString()); console.log(this[key]); }, } }); This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,7 @@ import Ember from 'ember'; export function debugFilter([value]) { return Ember.typeOf(value) !== 'function' && typeof value !== 'undefined' && value.length > 0; } export default Ember.Helper.helper(debugFilter); This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,13 @@ import Ember from 'ember'; import config from './config/environment'; const Router = Ember.Router.extend({ location: 'none', rootURL: config.rootURL }); Router.map(function() { this.route('results'); }); export default Router; This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,64 @@ import Ember from 'ember'; // this would not be here, I'd import it to the route and the controller const cfg = { defaultQueryParams: { q: null, paging: '18', search_sort: 'relevance', search_title: null, search_page: null, filter_breadcrumb: [], filter_price: [], filter_size_apparel: [], filter_color: [] } }; export default Ember.Route.extend({ queryParams: {}, init() { this._super(...arguments); for (let qp of Object.keys(cfg.defaultQueryParams)) { this.queryParams[qp] = { refreshModel: true }; } }, model(params) { let aggregations = { 'aggregations': { 'breadcrumb': [ { 'doc_count': 37, 'key': 'Home' }, { 'doc_count': 15, 'key': 'Home > Kitchen and Bar' }, { 'doc_count': 12, 'key': 'Home > Footballz' }, { 'doc_count': 12, 'key': 'Home > Garbage Cans' }, { 'doc_count': 16, 'key': 'Brand new items' } ] } } return aggregations; }, setupController(controller, model) { controller.set('aggregations', model.aggregations); } }); This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,7 @@ <h1>Welcome to {{appName}}</h1> <br> <br> {{link-to "Click here (unless you already did)" "results" (query-params q="foo" paging="24" search_page="3" search_sort="relevance")}} {{outlet}} <br> <br> This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,29 @@ <h1>List of controller properties/query params:</h1> {{#each-in this as |key value|}} {{#if (debug-filter value)}} {{key}}: {{value}}<br> {{/if}} {{/each-in}} <br><br> <h1>List of selected filters:</h1> {{#each filter_breadcrumb as |bc|}} <a href="#" {{action "removeFilter" "filter_breadcrumb" bc}}>{{bc}}</a><br> {{/each}} <br><br> <h1>available filters (click to add to selected filters list above)</h1> <br> {{#each aggregations.breadcrumb as |breadcrumbs|}} <a href="#" {{action "addFilter" "filter_breadcrumb" breadcrumbs.key}}>{{breadcrumbs.key}} ({{breadcrumbs.doc_count}})</a><br> {{/each}} <br><br> This runs action "addFilter" and throws an error : "Uncaught TypeError: Cannot read property 'pushObject' of undefined"<br> ( see image: http://imgur.com/SsUDToJ )<br> on this line in controller: this[key].pushObject(value.toString());<br> because the empty array assignment in cfg.defaultQueryParams did not get set via setProperties {{outlet}} This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,18 @@ { "version": "0.11.0", "EmberENV": { "FEATURES": {} }, "options": { "use_pods": false, "enable-testing": false }, "dependencies": { "jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js", "ember": "2.10.2", "ember-data": "2.11.0", "ember-template-compiler": "2.10.2", "ember-testing": "2.10.2" }, "addons": {} }