Plots2: Entfernen Sie "-" vor der Anzahl der Beiträge auf Themenkarten, wenn Sie nach "Anzahl der Personen" sortieren

Erstellt am 28. Mai 2020  ·  25Kommentare  ·  Quelle: publiclab/plots2

Bitte beschreiben Sie das Problem

Wenn auf die Sortieroption "Anzahl der Personen" geklickt wird, erscheint vor der Anzahl der Beiträge auf Themenkarten ein winziges "-", was den Anschein erweckt, als gäbe es eine negative Anzahl von Beiträgen. Siehe Screenshot:

Screen Shot 2020-05-20 at 10 36 42 AM (1)

Was hast du erwartet, was du nicht gesehen hast?

Ich hatte erwartet, positive ganze Zahlen zu sehen.

Bitte zeig uns wo wir suchen müssen

https://publiclab.org/tags?sort=followers&order=asc

Wie lautet Ihr PublicLab.org-Benutzername?

Dies kann uns helfen, das Problem zu diagnostizieren:

liz

bug

Hilfreichster Kommentar

Hey @ebarry, ich denke, das ist tatsächlich ein ernsteres Problem :sweat_smile: Ich hatte hier https://github.com/publiclab/plots2/pull/7609 Änderungen vorgenommen, aber ich muss es vermasselt und die falsche Anzahl berechnet haben denke :disappointed: Looping in @jywarren Sorry, brauche vielleicht etwas Hilfe, um das zu beheben :sweat_smile:

Alle 25 Kommentare

Hat jemand Code-Links zur Hand, die er hier hinzufügen könnte? Danke im Voraus!

Hey @ebarry, ich denke, das ist tatsächlich ein ernsteres Problem :sweat_smile: Ich hatte hier https://github.com/publiclab/plots2/pull/7609 Änderungen vorgenommen, aber ich muss es vermasselt und die falsche Anzahl berechnet haben denke :disappointed: Looping in @jywarren Sorry, brauche vielleicht etwas Hilfe, um das zu beheben :sweat_smile:

Hallo @Tlazypanda, können wir uns andere Stellen ansehen, an denen der Code vom Typ Tag.counter verwendet wird, und versuchen, darauf zu wechseln?

https://github.com/publiclab/plots2/pull/7609/files#diff -8fe92870a7f027a46eed82a51c5c16bcR118

Die Zählungen sind jedoch sehr gering. Ich frage mich, ob dies ein Problem ist, dass einige Dinge gespammt werden und dies dann die Mathematik ein wenig beeinflusst?

Sehen Sie sich zum Beispiel den Unterschied zwischen diesen Zählungen an:

image

image

Wir können suchen, wo die 236-Zählung berechnet wird, und vielleicht darauf umschalten?

Das verwendet also eine vom Controller generierte Instanzvariable:

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/views/tag/show.html.erb#L58

Ich glaube, hier wird berechnet:

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/controllers/tag_controller.rb#L551 -L560

Hey @jywarren , was ich in tag/:id sehen kann, dh die Showpage für Tag ist, dass wir dort nur Forschungsnotizen anzeigen und in Themenkarten versuchen wir, Forschungsnotizen + Fragen anzuzeigen.
Ich denke, was wir tun müssen, ist, dass wir Notizen auf die gleiche Weise abrufen müssen, wie wir es in tag#show tun
Anzahl der Notizen mit dem Tagnamen-Anzahl der angezeigten Notizen in der Themenkarte

wir müssen Notizen auf die gleiche Weise abrufen wie in tag#show

Hallo, genau richtig! Beachten Sie das Konzept einer "Single Source of Truth" hier: https://github.com/publiclab/plots2/issues/6855#issuecomment -578331475

Ich glaube, wir sollten hier die gleichen Berechnungen verwenden: https://github.com/publiclab/plots2/pull/7476 (basierend auf #6855).

@urvashigupta7 vielen Dank

Ich denke auch, dass wir in https://github.com/publiclab/plots2/pull/7476/ keinen Spam herausfiltern. In diesen Zeilen sollten wir also wahrscheinlich .where(status: 1) hinzufügen:

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/controllers/tag_controller.rb#L551 -L560

Dieser Code hängt auch davon ab, der Spam nicht filtert:

https://github.com/publiclab/plots2/blob/f4dfdcbae4dfa60b0ec357081ee1fae6f2089436/app/models/node.rb#L609 -L618

Ebenso muss dieser Code auch Spam mit dem gleichen Filter herausfiltern:

https://github.com/publiclab/plots2/blob/f4dfdcbae4dfa60b0ec357081ee1fae6f2089436/app/models/tag.rb#L118 -L124

Hm. Es scheint, als würden wir Spam aus der Berechnung von @total_posts filtern, da sie /nach/ diesen Zeilen ausgeführt wird:

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/controllers/tag_controller.rb#L204 -L218

Weder Tag.counter Node.for_tagname_and_type filtern jedoch. Vielleicht ist das die Unregelmäßigkeit?

Die Zählung hier stimmt immer noch nicht, denke ich. Zum Beispiel listet https://stable.publiclab.org/tags jetzt 692 Beiträge für balloon-mapping aber hier sind die Statistiken für dieses Tag (in stable):

image

Ich denke, wir müssen uns auf diesen Fix verlassen: https://github.com/publiclab/plots2/pull/8245

dann können wir das nochmal überprüfen. Für einen Moment wieder geöffnet... Finger

https://github.com/publiclab/plots2/pull/8245 ist jetzt fertig! Und hat Unit-Tests, so schön. Okay, das könnte jetzt klappen...

OK, es sagt 573 posts » -- hmm

Forschungsnotizen 469
Fragen 37
Wiki-Seiten 77
Personen 346

Ich meine, Notizen plus Wikis = 546...? und Plusfragen ist 583?

Beim Testen des Tags tests auf stable bin ich misstrauisch, dass es zu Zwischenspeicherungen kommen könnte. Das Hinzufügen dieses Tags zu einer neuen Notiz, https://stable.publiclab.org/notes/aidanswope/05-21-2019/angel-s-point-balloon-map-updated , führte nicht dazu, dass die Registerkarte der Notizen von 7 bis 8, obwohl tag.count 8 zurückgibt, ebenso wie das Ergebnis von tag.run_count

https://stable.publiclab.org/tag/tests

OK, also die Anzahl der Tabs verfolgen:

https://github.com/publiclab/plots2/blob/e97eff7464a544a97f4b38f169f76250600b3148/app/models/node.rb#L621 -L630

Node.where(status: 1, type: 'note').includes(:revision, :tag).references(:term_data, :node_revisions).where('term_data.name = ? OR term_data.parent = ?', 'balloon-mapping', 'balloon-mapping').where.not(nid: qids).count => 470

Im Vergleich zur Anzahl der Themenkarten:

NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').where.not(nid: qids).count => 467

😭

Diese drei sind der Unterschied: [6129, 7236, 7414] --

[#,

,

]

Sehr eigenartig! aus 2 Gründen: 3 Notizen sind nicht identisch mit den 10 fehlenden (wobei wir uns die Fragen noch nicht angesehen haben), UND diese drei scheinen normal zu sein, außer dass eine im Februar 2013 und 2 im Mai 2013 waren:

(Update: siehe unten für doppelte Tagnamen)

Auch interessant:

Node.where(status: 1, type: 'note').includes(:revision, :tag).references(:term_data, :node_revisions).where('term_data.name = ? OR term_data.parent = ?', 'balloon-mapping', 'balloon-mapping').where(nid: qids).count => 29

Dies stimmt überein mit:

NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').where(nid: qids).count

vs. 37 wie auf der Registerkarte gezeigt, die berechnet wird mit:

https://github.com/publiclab/plots2/blob/e97eff7464a544a97f4b38f169f76250600b3148/app/models/node.rb#L640 -L646

Aha! Der letzte Abschnitt zeigt, dass Posts mit dem Tag question:balloon-mapping in dieser Zählung enthalten sind, auch wenn sie nicht das Basis-Tag balloon-mapping !!!

Die folgenden 8 Beiträge scheinen question:balloon-mapping aber nicht balloon-mapping :

[13556, 15762, 16426, 18994, 20694, 11301, 12251, 19625]

OK, das bringt uns auf 2 Knoten. Jetzt vergleichen wir einfach manuell:

irb(main):040:0> NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').count
=> 496
irb(main):041:0> Node.where(status: 1, type: 'note').includes(:tag).references(:term_data).where('term_data.name = ?', 'balloon-mapping').count
=> 499
irb(main):022:0> Node.where(status: 1, type: 'note').includes(:revision, :tag).references(:term_data, :node_revisions).where('term_data.name = ? OR term_data.parent = ?', 'balloon-mapping', 'balloon-mapping').collect(&:nid)
=> [146, 253, 254, 268, 403, 511, 724, 732, 743, 913, 1482, 1489, 1620, 1626, 1627, 1632, 1715, 1849, 1968, 1994, 2126, 2138, 2144, 2476, 2589, 2930, 3115, 3325, 4649, 4952, 5038, 5220, 5250, 5978, 6934, 7050, 7189, 7294, 7314, 7491, 7577, 7593, 7995, 8189, 8907, 8913, 8914, 8950, 9019, 9032, 9042, 9086, 9417, 9434, 9742, 9888, 9977, 10541, 11019, 11100, 11223, 11574, 11582, 11827, 12201, 12240, 12491, 12619, 12708, 13095, 13424, 13945, 14022, 14095, 14183, 14185, 14219, 14515, 14572, 14587, 14597, 14600, 14611, 14620, 14813, 14907, 14909, 14983, 15545, 15568, 16591, 16653, 16746, 16877, 18316, 19153, 19272, 19462, 19558, 19578, 19620, 19762, 20331, 23549, 24101, 24102, 1795, 6635, 347, 369, 439, 444, 792, 861, 1665, 1668, 1962, 2135, 2143, 2152, 2245, 2277, 2783, 2784, 3563, 3635, 3670, 4482, 4516, 4755, 4760, 4923, 4925, 6059, 7641, 10181, 10489, 11101, 11724, 13243, 13880, 13948, 17322, 64, 166, 202, 344, 1666, 1816, 1818, 1819, 2919, 3354, 3736, 3821, 4087, 8020, 8947, 9301, 11199, 11260, 11261, 11755, 12161, 1544, 1739, 1742, 1892, 2006, 5494, 9353, 10705, 828, 1515, 1786, 1877, 1926, 1949, 2121, 2625, 2666, 2677, 2846, 2892, 2961, 4092, 4907, 5394, 5415, 5664, 7132, 7367, 7368, 7717, 7964, 8400, 10243, 6175, 9507, 4636, 6293, 3014, 6624, 9806, 10289, 10554, 11278, 11391, 12104, 12622, 12894, 13143, 9935, 10036, 10196, 10450, 11283, 11719, 11769, 12237, 10246, 10605, 2462, 9497, 1889, 2131, 2443, 3026, 4127, 4252, 4673, 5538, 5893, 6608, 8034, 8902, 8959, 9644, 9707, 10045, 10162, 10335, 10336, 10337, 10373, 10540, 10570, 11107, 11110, 11112, 11124, 11143, 11175, 11298, 11336, 12053, 12203, 12590, 16984, 19515, 19580, 23822, 2163, 3634, 7620, 10166, 11056, 11319, 11589, 1541, 1652, 1676, 1677, 1746, 2154, 2237, 2275, 2311, 2623, 2785, 3454, 3652, 3822, 4014, 4691, 4720, 4950, 5161, 7785, 8866, 8926, 8928, 8937, 8958, 8986, 9759, 9915, 10101, 10230, 10244, 10302, 10311, 10374, 10523, 10602, 11021, 11078, 11103, 11253, 11726, 11988, 12686, 12752, 12757, 13400, 13845, 14116, 14660, 14713, 14756, 1716, 2660, 7191, 7192, 1743, 1636, 1900, 9317, 10651, 1741, 13904, 3096, 2352, 2824, 4091, 2715, 6080, 6082, 2732, 3801, 3908, 4545, 7121, 10284, 13791, 10631, 4921, 6751, 9429, 9743, 11577, 17331, 6073, 9858, 10711, 11118, 6525, 10267, 9034, 11252, 11268, 8033, 8868, 10159, 10214, 9027, 9785, 9033, 9076, 9299, 14501, 14508, 14562, 21733, 10282, 9909, 11178, 11738, 10024, 12667, 11262, 11343, 11978, 11983, 11992, 11826, 11061, 10227, 10428, 11077, 11131, 11137, 11280, 11281, 11518, 11551, 11807, 11812, 11947, 12039, 14158, 14729, 14943, 15641, 16273, 16349, 18560, 19269, 19286, 21547, 10343, 14852, 14901, 15352, 15387, 10612, 10638, 10986, 10994, 20181, 11002, 11127, 11128, 11183, 12166, 11342, 11494, 11955, 11673, 11707, 11711, 12190, 18839, 13802, 14595, 12227, 15912, 14007, 13093, 13096, 12981, 13102, 13160, 13194, 13196, 13227, 13242, 13267, 13278, 13281, 13298, 14168, 15161, 23143, 14058, 14766, 13748, 13839, 15603, 14241, 14179, 14239, 14246, 14240, 14255, 14488, 14487, 14245, 14785, 15160, 14703, 14995, 16571, 15172, 15179, 15424, 15713, 15732, 16141, 16284, 16334, 16382, 17387, 17498, 17499, 18498, 16960, 19689, 17815, 19394, 19464, 19650, 19955, 19476, 19477, 23203, 6129, 7236, 7414]

vs:


irb(main):024:0> NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').collect(&:nid)
=> [146, 253, 254, 268, 403, 511, 724, 732, 743, 913, 1482, 1489, 1620, 1626, 1627, 1632, 1715, 1849, 1968, 1994, 2126, 2138, 2144, 2476, 2589, 2930, 3115, 3325, 4649, 4952, 5038, 5220, 5250, 5978, 6934, 7050, 7189, 7294, 7314, 7491, 7577, 7593, 7995, 8189, 8907, 8913, 8914, 8950, 9019, 9032, 9042, 9086, 9417, 9434, 9742, 9888, 9977, 10541, 11019, 11100, 11223, 11574, 11582, 11827, 12201, 12240, 12491, 12619, 12708, 13095, 13424, 13945, 14022, 14095, 14183, 14185, 14219, 14515, 14572, 14587, 14597, 14600, 14611, 14620, 14813, 14907, 14909, 14983, 15545, 15568, 16591, 16653, 16746, 16877, 18316, 19153, 19272, 19462, 19558, 19578, 19620, 19762, 20331, 23549, 24101, 24102, 1795, 6635, 347, 369, 439, 444, 792, 861, 1665, 1668, 1962, 2135, 2143, 2152, 2245, 2277, 2783, 2784, 3563, 3635, 3670, 4482, 4516, 4755, 4760, 4923, 4925, 6059, 7641, 10181, 10489, 11101, 11724, 13243, 13880, 13948, 17322, 64, 166, 202, 344, 1666, 1816, 1818, 1819, 2919, 3354, 3736, 3821, 4087, 8020, 8947, 9301, 11199, 11260, 11261, 11755, 12161, 1544, 1739, 1742, 1892, 2006, 5494, 9353, 10705, 828, 1515, 1786, 1877, 1926, 1949, 2121, 2625, 2666, 2677, 2846, 2892, 2961, 4092, 4907, 5394, 5415, 5664, 7132, 7367, 7368, 7717, 7964, 8400, 10243, 6175, 9507, 4636, 6293, 3014, 6624, 9806, 10289, 10554, 11278, 11391, 12104, 12622, 12894, 13143, 9935, 10036, 10196, 10450, 11283, 11719, 11769, 12237, 10246, 10605, 2462, 9497, 1889, 2131, 2443, 3026, 4127, 4252, 4673, 5538, 5893, 6608, 8034, 8902, 8959, 9644, 9707, 10045, 10162, 10335, 10336, 10337, 10373, 10540, 10570, 11107, 11110, 11112, 11124, 11143, 11175, 11298, 11336, 12053, 12203, 12590, 16984, 19515, 19580, 23822, 2163, 3634, 7620, 10166, 11056, 11319, 11589, 1541, 1652, 1676, 1677, 1746, 2154, 2237, 2275, 2311, 2623, 2785, 3454, 3652, 3822, 4014, 4691, 4720, 4950, 5161, 7785, 8866, 8926, 8928, 8937, 8958, 8986, 9759, 9915, 10101, 10230, 10244, 10302, 10311, 10374, 10523, 10602, 11021, 11078, 11103, 11253, 11726, 11988, 12686, 12752, 12757, 13400, 13845, 14116, 14660, 14713, 14756, 1716, 2660, 7191, 7192, 1743, 1636, 1900, 9317, 10651, 1741, 13904, 3096, 2352, 2824, 4091, 2715, 6080, 6082, 2732, 3801, 3908, 4545, 7121, 10284, 13791, 10631, 4921, 6751, 9429, 9743, 11577, 17331, 6073, 9858, 10711, 11118, 6525, 10267, 9034, 11252, 11268, 8033, 8868, 10159, 10214, 9027, 9785, 9033, 9076, 9299, 14501, 14508, 14562, 21733, 10282, 9909, 11178, 11738, 10024, 12667, 11262, 11343, 11978, 11983, 11992, 11826, 11061, 10227, 10428, 11077, 11131, 11137, 11280, 11281, 11518, 11551, 11807, 11812, 11947, 12039, 14158, 14729, 14943, 15641, 16273, 16349, 18560, 19269, 19286, 21547, 10343, 14852, 14901, 15352, 15387, 10612, 10638, 10986, 10994, 20181, 11002, 11127, 11128, 11183, 12166, 11342, 11494, 11955, 11673, 11707, 11711, 12190, 18839, 13802, 14595, 12227, 15912, 14007, 13093, 13096, 12981, 13102, 13160, 13194, 13196, 13227, 13242, 13267, 13278, 13281, 13298, 14168, 15161, 23143, 14058, 14766, 13748, 13839, 15603, 14241, 14179, 14239, 14246, 14240, 14255, 14488, 14487, 14245, 14785, 15160, 14703, 14995, 16571, 15172, 15179, 15424, 15713, 15732, 16141, 16284, 16334, 16382, 17387, 17498, 17499, 18498, 16960, 19689, 17815, 19394, 19464, 19650, 19955, 19476, 19477, 23203]

Aha. Vielleicht das:

Tag.where(name: 'balloon-mapping').length => 4
Tag.where(name: 'balloon-mapping').collect(&:tid) => [10, 3205, 3591, 4032]

Ja, das ist die Diskrepanz:

irb(main):045:0> NodeTag.joins(:node).where(tid: [10, 3205, 3591, 4032]).where('node.status = 1 AND node.type = "note"').count
=> 499
irb(main):046:0> Node.where(status: 1, type: 'note').includes(:tag).references(:term_data).where('term_data.name = ?', 'balloon-mapping').count
=> 499

irb(main):050:0> Tag.where(name: 'balloon-mapping').collect(&:count)
=> [574, 1, 1, 1]

Allerdings nicht für die method oder project Bugs in #7334

irb(main):047:0> Tag.where(name: 'method').collect(&:tid)
=> [14474]
irb(main):048:0> Tag.where(name: 'project').collect(&:tid)
=> [14751]

OK, ich habe die doppelten Tags behoben mit:

irb(main):053:0> NodeTag.where(tid: [3205, 3591, 4032]).each do |nt|
irb(main):054:1* nt.tid = 10
irb(main):055:1> nt.save
irb(main):056:1> end

Aber ich wette, es gibt mehr in der DB. Vielleicht möchten wir ein größeres Projekt durchführen, um diese zu konsolidieren.

Update: ja, es gibt 28 weitere Instanzen:

irb(main):063:0> Tag.count
=> 18532
irb(main):065:0> Tag.all.collect(&:name).uniq.count
=> 18504


irb(main):069:0> (Tag.all - Tag.all.group(:name)).collect(&:name)
=> ["fold-up", "gulf-coast", "kite-mapping", "gulf-coast", "brooklyn", "new-york-city", "balloon-mapping", "spectrometer", "farmhack", "white-balance", "fresh-kills", "balloon-mapping", "balloon-mapping", "kite-mapping", "newsletter", "newsletter", "passenger-pigeon", "jamaica-bay", "mobile-spectrometer", "infragram-sandbox", "mailing-lists", "diy-kite", "water-sensing", "carbon-arc", "diy-kite", "diy-kite", "workplace", "emergencies"]

Meine Empfehlung ist jetzt:

Wir haben dies stark eingegrenzt und es besteht aus zwei Teilen.

  1. „Ghost“-Tags - doppelte Tag-Namen, sodass einige im Grunde nicht gezählt wurden (gelöst, obwohl ~ 15 andere Instanzen für ein paar andere Tags existieren)
  2. question:_____ Format-Tags, die auf den /tag/____ Seiten unter der Registerkarte Fragen gezählt werden, aber nicht über ein eigenes Basis-Tag verfügen, werden in den Themenkarten nicht gezählt. Beispiel: 8 Posts haben question:balloon-mapping aber nicht balloon-mapping , also werfen sie unsere Zählung um 8.

Meine Meinung zu (2) ist, dass wir es aufschreiben und uns dessen bewusst sein sollten, es aber nicht lösen sollten (mir fällt sowieso keine saubere Lösung ein).

Und selbst nach all dem Graben habe ich immer noch eine Diskrepanz von 1 für balloon-mapping . Aber ich denke, wir sind uns so nahe, dass wir damit im Wesentlichen in Ordnung sein sollten, da es eines der größten Tags ist und dieses Problem wahrscheinlich andere nicht betrifft. Interessiert, auch die Meinung anderer zu hören!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen