From 9509d788c0ce807f3ac18ee5d45e9918160662f6 Mon Sep 17 00:00:00 2001 From: Shane Frischkorn Date: Tue, 21 Jan 2014 23:54:09 +1000 Subject: [PATCH] Minerals now show their detail. The layout still needs work to get it showing correctly though. --- docs/Web Site.docx | Bin 18338 -> 18912 bytes requirements.txt | 2 +- three_d_viewer/models.py | 2 +- .../templates/three_d_viewer/base.html | 6 +- .../templates/three_d_viewer/detail.html | 2 + .../three_d_viewer/mineral_detail.html | 83 +++++++++++++++++- three_d_viewer/urls.py | 2 +- three_d_viewer/views.py | 12 ++- 8 files changed, 101 insertions(+), 8 deletions(-) diff --git a/docs/Web Site.docx b/docs/Web Site.docx index 4723943b880aa44f77023723fffd94592cc8990c..8af343d666361d28d716c3bb0b6908e9c4449394 100644 GIT binary patch delta 12201 zcmZ{~1yEhh(k{Glch}(VF2UX1Ex227-MIV4EohKHaI$gN;O_1k9D-fm^WA&S`M;{a zt7g^Iny#MiSyRu<>VAq6A+|seq^b%~(AWT206YKyAP2Db*0e`K003C99}NHx338Rh zs$)ll1pZd;V?&pEkbRNZW0qg57lr3OhaAOZQ0rgupoy1yNg4`x6#|t=!f43_*GH!= zJ#6f{T1kVdS&F&6H5W=8GLdzmrB@WQEJuwG6R((K+2BFZGla6ss7XqL8F>irs!#3J5yaOz1_`e9 znZt;%J*HOYdo4A3tcf)F7}0`u{e2k^Qu#CVpGx=fEE^!|lB)4KRn(e$gh@@p8jdKd z-bmWQ=uqdXNpGut`B{P#rzuJwp2@T@ZIc#$XKFI_agVG3-=^BW5c#QxaJJQc zKytP-`R*Gmu1?y)t_oGf8)B+g*Vl|9_MZ&jxG>;W-nig{PXgqJ7losqok$-hI^c

$V0KCM_h(n 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 - + {% block details %} + {% endblock details %} + + \ No newline at end of file diff --git a/three_d_viewer/templates/three_d_viewer/detail.html b/three_d_viewer/templates/three_d_viewer/detail.html index be8310e..9c750b1 100644 --- a/three_d_viewer/templates/three_d_viewer/detail.html +++ b/three_d_viewer/templates/three_d_viewer/detail.html @@ -69,6 +69,7 @@ function formatNumber(numero, decimales){ return parseInt(numero * pot) / pot; } +{% block load %} function load(){ window.addEventListener('resize', resizeCanvas, false); resizeCanvas(); @@ -96,6 +97,7 @@ function load(){ } request.send(); } +{% endblock load %} function loaded(){ /*if ( navigator.userAgent.indexOf("WebKit") == -1){ diff --git a/three_d_viewer/templates/three_d_viewer/mineral_detail.html b/three_d_viewer/templates/three_d_viewer/mineral_detail.html index 65e1aaf..eca9f7b 100644 --- a/three_d_viewer/templates/three_d_viewer/mineral_detail.html +++ b/three_d_viewer/templates/three_d_viewer/mineral_detail.html @@ -1,6 +1,83 @@ {% extends "three_d_viewer/detail.html" %} {% block pageheader %} -

{{ 'MINERALS' }}

-

{{ sample.description }}

-{% endblock %} \ No newline at end of file +

{{ mineral.name }}

+

{{ mineral.description }}

+{% endblock %} + +{% block load %} +function load(){ + window.addEventListener('resize', resizeCanvas, false); + resizeCanvas(); + + var sampleFilename = '{{ mineral.model_filename|escapejs }}'; + + if (sampleFilename.trim() == "") + { + document.getElementById("progress").innerHTML = "No model defined!"; + return; + } + + request = new XMLHttpRequest(); + request.open("GET", '{{ MEDIA_URL }}' + sampleFilename, true); + request.overrideMimeType("text/plain; charset=x-user-defined"); + request.onreadystatechange = function(){ + if (this.readyState == 3 || this.readyState == 4){ + document.getElementById("progress").innerHTML = "Downloading... " + + formatNumber(this.responseText.length / 1048576, 2) + " MB"; + } + if (this.readyState == 4 && (this.status == 200 || this.status == 0) ){ + document.getElementById("progress").innerHTML = "Unpacking..."; + setTimeout(loaded, 1); + } + } + request.send(); +} +{% endblock load %} + +{% block details %} +
+
{{ mineral.name }} Details
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Chemical Formula{{ mineral.chemical_formula }}
Hardness{{ mineral.hardness }}
Specific Gravity{{ mineral.specific_gravity }}
Cleavage/Fracture{{ mineral.cleavage_fracture }}
Lustre{{ mineral.lustre }}
Colour{{ mineral.colour }}
Streak{{ mineral.habit }}
Crystallography{{ mineral.crystallography }}
Identifying features{{ mineral.identifying_features }}
Occurance{{ mineral.occurance }}
+
+{% endblock details %} \ No newline at end of file diff --git a/three_d_viewer/urls.py b/three_d_viewer/urls.py index 90a04a4..d345699 100644 --- a/three_d_viewer/urls.py +++ b/three_d_viewer/urls.py @@ -6,7 +6,7 @@ urlpatterns = patterns( '', url(r'^$', views.HomeView.as_view(), name='home'), url(r'^(?P\d+)/$', views.DetailView.as_view(), name='detail'), - url(r'^(?P\d+)/$', views.MineralDetailView.as_view(), name='mineral_detail'), + url(r'^minerals/(?P\d+)/$', views.MineralDetailView.as_view(), name='mineral_detail'), url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), ) diff --git a/three_d_viewer/views.py b/three_d_viewer/views.py index e9ab259..c8dc4cd 100644 --- a/three_d_viewer/views.py +++ b/three_d_viewer/views.py @@ -48,4 +48,14 @@ class MineralDetailView(DetailView): """ model = Mineral - template_name = 'three_d_viewer/mineral_detail.html' \ No newline at end of file + template_name = 'three_d_viewer/mineral_detail.html' + + parent_categories = Category.objects.filter(parent=None). \ + filter(active=True).order_by("name") + + def get_context_data(self, **kwargs): + context = super(DetailView, self).get_context_data(**kwargs) + context['active_samples'] = Sample.objects.select_subclasses(Mineral).filter(active=True).order_by('name') + context['parent_categories'] = Category.objects.filter(parent=None). \ + filter(active=True).order_by('name') + return context \ No newline at end of file