Senaste ändringarna - Sök:




Redigera menyn

Statistiksidor och pagelist

Jag hade tänkt börja göra lite nördiga statistiksidor. Jag tänker mig till exempel att i tabell på ena sidan ha låttyper och på den andra tonart och i matrisen ange exempelvis hur många polskor i Dm det finns, osv. Jag fastnar dock på hur man ska få pagelist-kommandot att göra detta. Det finns en 'if' funktion och man kan använda logiskt 'and', men jag vet inte hur jag ska få det att fungera. Några tips? \Jonas B

Jag försökte få till en siffra på hur många låtar som ingår i varje kategori men lyckades inte. Det påminner ju om det jag ville göra men tyvärr gick jag bet. /Jon

Ett steg på vägen är kanske att (:pagelist group=Musik list=normal fmt=count name=-Musik,-Mall 'K:Dm':) ger 395, vilket bör vara antalet låtar i Dm. Och vidare, (:pagelist group=Musik list=normal fmt=count name=-Musik,-Mall 'K:Dm' 'R:polska':) ger 215, vilket nog är antalet polskor i Dm. Jag testade även med 'R:Polska', vilket gav samma resultat. Så saken är nog löst.\Jonas B

Går det då kanske t.o.m. att få se hur många låtar det är i varje kategorisida? Typ låtar i a och kanske inom parentes efter kategorinamnet även i listorna? Vore ju soft! / Johan

Det finns ett sjuttiotal låtar innehållande "K:Dm", men det finns även ett trettiotal låtar innehållande "K: Dm"....
Det stora kruxet är när man vill välja ut låtar som är ett tvärsnitt av två kategorier, t ex. låtar i Dm från Dalarna. Det verkar inte finnas något stöd för det om man vill gå på själva länkarna. Jag har sett att det fanns diskussioner på PmWiki-mejllistan så det kanske kommer. Att söka efter textfraser kan ju vara ett sätt att komma runt detta, men det är också litet begränsat. Man kan ju t ex. inte söka efter "O:Dalarna" eftersom det skulle kunna stå "O:Rättvik, Dalarna" och ordet "Dalarna" skulle ju kunna nämnas i något annat sammanhang trots att låten inte är därifrån. /Nils

Nej, det var ju inte så lätt. Wildcarden * och ? fungerar tydligen inte i textsökningen, utan endast för 'group=Musi?' och liknande. Och inte heller de logiska kommandona fungerar i detta sammanhang. Så kanske finns lösningen i 'if' funktionen? \Jonas

Ett alternativ är kanske att använda 'page text variables': exempelvis (:pagelist group=Musik list=normal fmt=count name=-Musik,-Mall $:K=Dm:) vilket ger 462. Eller (:pagelist group=Musik list=normal fmt=count name=-Musik,-Mall $:O=*Dalarna*:) vilket ger 305. Och man kan kombinera: (:pagelist group=Musik list=normal fmt=count name=-Musik,-Mall $:O=*Dalarna* $:K=Dm:) ger 55. \Jonas

Pagelists är bra på många sätt, men de har sina begränsningar. Att göra en lista över kategorier och bredvid varje kategori visa hur många sidor som ingår i den är vad jag kan förstå helt enkelt inte möjligt. Jag har tittat ganska noga på koden, och som det är implementerad skulle det inte vara så enkelt att bygga ut den tyvärr. Scriptet börjar f ö med kommentaren "This script implements (:pagelist:) and friends -- it's one of the nastiest scripts you'll ever encounter." :)

En anledning till att det ändå är en dödfödd idé på sikt, är att PmWiki inte indexerar data i någon större omfattning. Allt lagras som flatfiler, vilket gör att listningar av den typen skulle bli väldigt långsamma när antalet sidor växer. På detta kan man tänka sig några olika lösningar, t ex:

  • Flytta till en annan Wiki-motor än PmWiki
  • Använda en databas som backend
  • Generera statisk statistik :o som uppdateras bara när sidor sparas istället för dynamiskt när man visar den

PmWiki har ju sina begränsningar, men att byta system känns som overkill. Vi är ju flera nu som har börjat lära oss hur koden är uppbyggd, och det känns mer lockande tycker jag att utveckla nya features när det behövs, istället för att börja om från noll igen. Jag är också tveksam till att använda en databas för att lagra sidorna, systemet med filer är kanske inte det teoretiskt snyggaste, men det gör FolkWiki-installationen extremt portabel (om vi t ex vill byta server) och lätt att jobba med när man utvecklar. Däremot skulle jag kunna tänka mig ett system där man lagrar kopior av metadata i en databas, som sen bara används för t ex statistik och sökningar. Denna skulle då antingen uppdateras varje gång en sida uppdateras, eller med hjälp av en bot som går igenom hela wikin då och då (ett par gånger per dag typ) och indexerar allting. Kanske kan man få det bästa av två världar?

När det gäller statistik och annat, så har vi ju hittills hållit oss inom wikin hela tiden. Det finns många bra saker med det (bland annat kan alla användare i princip härma en sida som funkar som man vill). Men en del saker är väldigt osmidiga eller helt enkelt omöjliga. ((:if:)-strukturerna t ex är ett hack och funkar inte speciellt bra annat än i mycket enkla fall.

Den andra metoden, som vi knappt prövat alls, är att skriva ny funktionalitet. Antingen genom PmWikis api, som är ganska rörigt men väldigt kraftfullt, eller genom att läsa wiki-filerna direkt från disk. Gör man på detta sätt har man oändliga möjligheter, bara man kan php. Eller man kan ju egentligen till och med skriva rutiner i C eller perl eller vad som helst. Baksidan av detta är förstås att man måste ha ett server-login, och att alla uppdateringar därför måste gå genom någon av oss administratörer. Men för sidor såsom avancerad statistik osv kanske det ändå är vägen att gå?

/Erik

Ok, men 'page text variables' i pagelist ser väl ut att fungera för enklare statistik? Eller menar du att det kommer att bli för tungt att öppna sidan? \Jonas

Jag testade lite med en liten matris på test-sidan, och antar att Erik har rätt - det blir aldeles för tungt med en dynamisk funktion som pagelist. Synd. Men kanske kan man programera en dynamisk funktion som samlar in informationen till matrisen i en genomgång av alla sidor, och sedan produserar matrisen? Det bör inte bli tyngre än en pagelist. \Jonas

Redigera - Historik - Utskrift - Senaste ändringarna - Sök
Sidan senast ändrad 2011-04-28 20:29