<div dir="ltr">Ok then you have to track the http request from the browser and see whether your api endpoint is correctly returning results as expected.</div><div class="gmail_extra"><br><div class="gmail_quote">2015-06-20 22:32 GMT+02:00 Melvin Ramos <span dir="ltr"><<a href="mailto:melvin.ramos1991@gmail.com" target="_blank">melvin.ramos1991@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I'm guessing you are saying this:<div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> module.load_categories = function ($http, $rootScope, $location){<br> var params = typeof FILTER_TYPE == 'undefined' ? {} : {'type': FILTER_TYPE};<br> if ($location.search().hasOwnProperty('title__icontains')){<br> params['title__icontains'] = $location.search()['title__icontains'];<br> }<br> $http.get(CATEGORIES_ENDPOINT, {params: params}).success(function(data){<br> if($location.search().hasOwnProperty('category__identifier__in')){<br> data.objects = module.set_initial_filters_from_query(data.objects,<br> $location.search()['category__identifier__in'], 'identifier');<br> }<br> $rootScope.categories = data.objects;<br> if (HAYSTACK_FACET_COUNTS && $rootScope.query_data) {<br> module.haystack_facets($http, $rootScope, $location);<br> }<br> });<br> $http.get(IUCN_CATEGORIES_ENDPOINT, {params: params}).success(function(data){<br> if($location.search().hasOwnProperty('iucn_category__identifier__in')){<br> data.objects = module.set_initial_filters_from_query(data.objects,<br> $location.search()['iucn_category__identifier__in'], 'identifier');<br> }<br> $rootScope.iucn_categories = data.objects;<br> if (HAYSTACK_FACET_COUNTS && $rootScope.query_data) {<br> module.haystack_facets($http, $rootScope, $location);<br> }<br> });<br> }</blockquote><div><br></div><div>where I should also write this:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> if ($('#categories').length > 0 && $('#iucn_categories').length > 0){<br> module.load_categories($http, $rootScope, $location);<br> }</blockquote><div><br></div><div>But it doesn't work either way. I was sort of debugging this and I found out that the rootScope Object is showing that iucn_categories is an Array[0] against categories (Array[19]). I guess that says that the query is not getting anything or something but I have no idea where I can check this <br></div></div><div><br></div><div><br></div><div><br></div><div><br><br><br><font color="#999999">Enviado con <a href="https://mailtrack.io/install?source=signature&lang=es&referral=melvin.ramos1991@gmail.com&idSignature=23" target="_blank">MailTrack</a></font></div></div><img width="0" height="0" src="https://mailtrack.io/trace/mail/b3d299b4ee0aec4f3cfed304c6b8a5817f73877f.png"></div><div class="gmail_extra"><br><div class="gmail_quote">2015-06-19 2:29 GMT-04:30 Simone Dalmasso <span dir="ltr"><<a href="mailto:simone.dalmasso@gmail.com" target="_blank">simone.dalmasso@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">One issue is in the first part of the js. Module.load-ounce-categories. Despite the name the original function is used to load also the keywords etc. so instead or rewrite the entire function just add the chunk $http.get for your categories into the original module.load-categories. <div><br></div><div>That should help. :)<div><div><span></span><br><br>Il venerdì 19 giugno 2015, Melvin Ramos <<a href="mailto:melvin.ramos1991@gmail.com" target="_blank">melvin.ramos1991@gmail.com</a>> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello Simone,<div><br></div><div>"You did well young padawan" (:</div><div><br></div><div>Thanks. I just checked it out. In theory I replicated everything but still not working. I will go step by step like before:</div><div><br></div><div><b>Modified search_scripts.html in the search templates</b></div><div><br></div><div>I added this line of code:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i>IUCN_CATEGORIES_ENDPOINT = '{% url 'api_dispatch_list' api_name='api' resource_name='iucn_categories' %}';</i></blockquote><div><br></div><div>Just like the categories endpoint</div><div><br></div><div><b>Modified the search.js in the static folder</b></div><div><br></div><div>I added in the loaded section the following</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i> module.load_iucn_categories = function ($http, $rootScope, $location){<br></i><i> var params = typeof FILTER_TYPE == 'undefined' ? {} : {'type': FILTER_TYPE};<br></i><i> if ($location.search().hasOwnProperty('title__icontains')){<br></i><i> params['title__icontains'] = $location.search()['title__icontains'];<br></i><i> }<br></i><i> $http.get(IUCN_CATEGORIES_ENDPOINT, {params: params}).success(function(data){<br></i><i> if($location.search().hasOwnProperty('iucn_category__identifier__in')){<br></i><i> data.objects = module.set_initial_filters_from_query(data.objects,<br></i><i> $location.search()['iucn_category__identifier__in'], 'identifier');<br></i><i> }<br></i><i> $rootScope.categories = data.objects;<br></i><i> if (HAYSTACK_FACET_COUNTS && $rootScope.query_data) {<br></i><i> module.haystack_facets($http, $rootScope, $location);<br></i><i> }<br></i><i> });<br></i><i> }</i></blockquote></div><div><br></div><div>Then I added in the module.haystack_facets the following</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i> if ("iucn_categories" in $rootScope) {<br></i><i> $rootScope.category_counts = data.meta.facets.category;<br></i><i> for (var id in $rootScope.categories) {<br></i><i> var category = $rootScope.categories[id];<br></i><i> if (category.identifier in $rootScope.category_counts) {<br></i><i> category.count = $rootScope.category_counts[category.identifier]<br></i><i> } else {<br></i><i> category.count = 0;<br></i><i> }<br></i><i> }<br></i><i> }</i></blockquote></div><div><br></div><div>Finally, in the module.run I added this</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i> if ($('#iucn_categories').length > 0){<br></i><i> module.load_categories($http, $rootScope, $location);<br></i><i> }</i></blockquote></div><div><br></div><div>But it didn't work, still shows nothing on the template.What am I missing??</div><div><br></div><div>Thanks in advance,</div><div><br></div><div>Melvin</div><div><br></div><div><div><br><br><br><font color="#999999">Enviado con <a href="https://mailtrack.io/install?source=signature&lang=es&referral=melvin.ramos1991@gmail.com&idSignature=23" target="_blank">MailTrack</a></font></div></div><img width="0" height="0" src="https://mailtrack.io/trace/mail/93547d482a5d9ff44a542d11ea76a11890a23bc1.png"></div><div class="gmail_extra"><br><div class="gmail_quote">2015-06-18 17:01 GMT-04:30 Simone Dalmasso <span dir="ltr"><<a>simone.dalmasso@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Melvin,<div>you did well, the only missing thing is here <a href="https://github.com/GeoNode/geonode/blob/master/geonode/static/geonode/js/search/search.js" target="_blank">https://github.com/GeoNode/geonode/blob/master/geonode/static/geonode/js/search/search.js</a>, javascript part that loads the categories through the api and compiles the query.</div><div><br></div><div>Ciao</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>2015-06-18 23:17 GMT+02:00 Melvin Ramos <span dir="ltr"><<a>melvin.ramos1991@gmail.com</a>></span>:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Hello,<div><br></div><div>I'm trying to duplicate the Categories filter, because I'm need to use a new set of categories for my layers, but I'm having a hard time trying to find out how the templates gets the data since it uses AngularJS.</div><div><br></div><div>So here is what I''ve done so far:</div><div><br></div><div><b>Modified the models.py of the Base app</b></div><div>I added a new class called IUCNCategory</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i>class IUCNCategory(models.Model):<br> """<br> Metadata regarding IUCN standards<br> """<br> identifier = models.CharField(max_length=255)<br> category_type = models.CharField(<br> choices=(<br> ('risk_criteria', 'Risk Criteria'),<br> ('bio_realm', 'Biogeographical Realm'),<br> ('typology', 'Typology')<br> ),<br> max_length=255,<br> )<br> description = models.TextField(default='')<br> gn_description = models.TextField('RLE description', default='', null=True)<br> # is_choice = models.BooleanField(default=True)<br> def __unicode__(self):<br> return u"{0}".format(self.gn_description)<br> class Meta:<br> ordering = ("category_type","identifier",)<br> verbose_name_plural = 'IUCN Categories'</i></blockquote></div><div><br></div><div>It's just like TopicCategory with one different attribute.</div><div><br></div><div>I added to the class ResourceBase the following attribute</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i>iucn_category = models.ForeignKey(IUCNCategory, null=True, blank=True)</i></blockquote><div><br></div><div><br></div><div><b>Modified the api.py </b><b>of the Api app</b></div><div>I created a new class called IUCNCategoryResource</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i>class IUCNCategoryResource(TypeFilteredResource):<br></i><i> """IUCN Category api"""</i><i><br></i><i> def serialize(self, request, data, format, options={}):<br></i><i> options['count_type'] = 'iucn_category'</i><i><br></i><i> return super(IUCNCategoryResource, self).serialize(request, data, format, options)</i><i><br></i><i> class Meta:<br></i><i> queryset = IUCNCategory.objects.all()<br></i><i> resource_name = 'iucn_categories'<br></i><i> allowed_methods = ['get']<br></i><i> filtering = {<br></i><i> 'identifier': ALL,<br></i><i> }<br></i><i> serializer = CountJSONSerializer()</i></blockquote></div><div><br></div><div>It's like the class TopicCategoryResource</div><div><br></div><div><b>Modified the</b><b> </b><b>resourcebase_api.py </b><b>of the Api app</b></div><div><br></div><div>I added to the class CommonModelApi the following attribute</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i>iucn_category = fields.ToOneField(<br> IUCNCategoryResource,<br> 'iucn_category',<br> null=True,<br> full=True)</i></blockquote></div><div><br></div><div>In the definition on the Haystack filters I added the following in the proper places:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i>...<br>iucn_category = parameters.getlist("iucn_category__identifier__in")<br>...<br>if iucn_category:<br> sqs = (SearchQuerySet() if sqs is None else sqs).narrow(<br> 'iucn_category:%s' % ','.join(map(str, iucn_category)))<br>...</i></blockquote><div><i><br></i></div><div>Just like the category field.</div><div><i><br></i></div><div><b>Modified the</b><b> urls</b><b>.py </b><b>of the Api app</b><i><br></i></div><div><i><br></i></div><div>I imported the IUCNCategoryResource from the apy.py and wrote </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i>api.register(IUCNCategoryResource())</i></blockquote><div><br></div><div><b>Modified the template _general_filters.html inside the search templates</b><br></div><div><br></div><div>I added the following code</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><i><nav class="filter"><br></i><i> <h4><a href="#" class="toggle toggle-nav"><i class="fa fa-chevron-right"></i>{% trans "Risk Criteria" %}</a></h4><br></i><i> <ul class="nav closed" id="iucn_categories"><br></i><i> {% verbatim %}<br></i><i> <li ng-repeat="iucn_category in iucn_categories" ng-if="iucn_category.count > 0"><br></i><i> <a data-value="{{ iucn_category.identifier }}" data-filter="iucn_category__identifier__in" <br></i><i> ng-click="multiple_choice_listener($event)" class="{{iucn_category.active}}">{{ iucn_category.gn_description | limitTo: 25 }}{{ iucn_category.gn_description.length > 25 ? '...' : ''}}<br></i><i> <span class="badge pull-right">{{ iucn_category.count }}</span><br></i><i> </a><br></i><i> </li><br></i><i> {% endverbatim %}<br></i><i> </ul><br></i><i></nav></i></blockquote></div><div><br></div><div>But nothing shows beneath the filter name in the template, even when I have one IUCN category stored in database. I'm guessing there is a view somewhere or I'm missing something that allows to pass the data and I can't find it or just Angular is too mystic for me.</div><div><br></div><div>Can anybody help me?</div><div><br></div><div>Thanks in advance,</div><div><br></div><div>Melvin</div><span><font color="#888888"><div><br clear="all"><div><br></div>-- <br><div><div>Melvin David Ramos Macías</div><div>07-41408</div><div>Ingeniería de Computación</div><div>Universidad Simón Bolívar</div></div>
<div><br><br><br><font color="#999999">Enviado con <a href="https://mailtrack.io/install?source=signature&lang=es&referral=melvin.ramos1991@gmail.com&idSignature=23" target="_blank">MailTrack</a></font></div></div><img width="0" height="0" src="https://mailtrack.io/trace/mail/285475639f8c9fe8f6aac6bc061e151f3597139f.png"></font></span></div>
<br></div></div>_______________________________________________<br>
geonode-users mailing list<br>
<a>geonode-users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users" rel="noreferrer" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Simone </div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div>Melvin David Ramos Macías</div><div>07-41408</div><div>Ingeniería de Computación</div><div>Universidad Simón Bolívar</div></div>
</div>
</blockquote></div></div></div><span><font color="#888888"><br><span class="HOEnZb"><font color="#888888"><br>-- <br>Simone <br>
</font></span></font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div><div>Melvin David Ramos Macías</div><div>07-41408</div><div>Ingeniería de Computación</div><div>Universidad Simón Bolívar</div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Simone </div>
</div>