forked from FrederikBaerentsen/BrickTracker
fix(part): compute per-color set/minifig counts on sub-cards (#159)
This commit is contained in:
@@ -5,6 +5,37 @@
|
||||
|
||||
{% block total_damaged %}{% endblock %}
|
||||
|
||||
{# Per part+color set/minifigure counts so each sub-card shows its own totals
|
||||
(same #159 inherited-count bug as with_different_color). Mirrors all.sql. #}
|
||||
{% block total_sets %}
|
||||
IFNULL(COUNT(DISTINCT CASE WHEN "combined"."source_type" = 'set' THEN "combined"."id" ELSE NULL END), 0) AS "total_sets",
|
||||
{% endblock %}
|
||||
|
||||
{% block total_minifigures %}
|
||||
SUM(IFNULL("minifigure_quantities"."quantity", 0)) AS "total_minifigures"
|
||||
{% endblock %}
|
||||
|
||||
{% block join %}
|
||||
-- Join to get minifigure quantities from both set-based and individual minifigures
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
"bricktracker_minifigures"."id",
|
||||
"bricktracker_minifigures"."figure",
|
||||
"bricktracker_minifigures"."quantity"
|
||||
FROM "bricktracker_minifigures"
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
"bricktracker_individual_minifigures"."id",
|
||||
"bricktracker_individual_minifigures"."figure",
|
||||
"bricktracker_individual_minifigures"."quantity"
|
||||
FROM "bricktracker_individual_minifigures"
|
||||
) AS "minifigure_quantities"
|
||||
ON "combined"."id" IS NOT DISTINCT FROM "minifigure_quantities"."id"
|
||||
AND "combined"."figure" IS NOT DISTINCT FROM "minifigure_quantities"."figure"
|
||||
{% endblock %}
|
||||
|
||||
{% block where %}
|
||||
WHERE "rebrickable_parts"."print" IS NOT DISTINCT FROM :print
|
||||
AND "combined"."color" IS NOT DISTINCT FROM :color
|
||||
|
||||
@@ -5,6 +5,38 @@
|
||||
|
||||
{% block total_damaged %}{% endblock %}
|
||||
|
||||
{# Compute per part+color set/minifigure counts so each sub-card shows its own
|
||||
totals (fixes #159: they used to inherit the parent part's counts). Mirrors
|
||||
part/list/all.sql. #}
|
||||
{% block total_sets %}
|
||||
IFNULL(COUNT(DISTINCT CASE WHEN "combined"."source_type" = 'set' THEN "combined"."id" ELSE NULL END), 0) AS "total_sets",
|
||||
{% endblock %}
|
||||
|
||||
{% block total_minifigures %}
|
||||
SUM(IFNULL("minifigure_quantities"."quantity", 0)) AS "total_minifigures"
|
||||
{% endblock %}
|
||||
|
||||
{% block join %}
|
||||
-- Join to get minifigure quantities from both set-based and individual minifigures
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
"bricktracker_minifigures"."id",
|
||||
"bricktracker_minifigures"."figure",
|
||||
"bricktracker_minifigures"."quantity"
|
||||
FROM "bricktracker_minifigures"
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
"bricktracker_individual_minifigures"."id",
|
||||
"bricktracker_individual_minifigures"."figure",
|
||||
"bricktracker_individual_minifigures"."quantity"
|
||||
FROM "bricktracker_individual_minifigures"
|
||||
) AS "minifigure_quantities"
|
||||
ON "combined"."id" IS NOT DISTINCT FROM "minifigure_quantities"."id"
|
||||
AND "combined"."figure" IS NOT DISTINCT FROM "minifigure_quantities"."figure"
|
||||
{% endblock %}
|
||||
|
||||
{% block where %}
|
||||
WHERE "combined"."color" IS DISTINCT FROM :color
|
||||
AND "combined"."part" IS NOT DISTINCT FROM :part
|
||||
|
||||
@@ -29,8 +29,15 @@
|
||||
{{ badge.color(item) }}
|
||||
{{ badge.print(item) }}
|
||||
{% endif %}
|
||||
{{ badge.total_sets(sets_using | length, solo=solo, last=last) }}
|
||||
{{ badge.total_minifigures(minifigures_using | length, solo=solo, last=last) }}
|
||||
{% if solo %}
|
||||
{{ badge.total_sets(sets_using | length, solo=solo, last=last) }}
|
||||
{{ badge.total_minifigures(minifigures_using | length, solo=solo, last=last) }}
|
||||
{% else %}
|
||||
{# Sub-cards (different color / same print) carry their own per-color counts
|
||||
from the query, not the parent's inherited sets_using/minifigures_using (#159). #}
|
||||
{{ badge.total_sets(item.fields.total_sets, solo=solo, last=last) }}
|
||||
{{ badge.total_minifigures(item.fields.total_minifigures, solo=solo, last=last) }}
|
||||
{% endif %}
|
||||
{{ badge.total_quantity(item.fields.total_quantity, solo=solo, last=last) }}
|
||||
{{ badge.total_spare(item.fields.total_spare, solo=solo, last=last) }}
|
||||
{{ badge.total_missing(item.fields.total_missing, solo=solo, last=last) }}
|
||||
|
||||
Reference in New Issue
Block a user