Dyskusja modułu:Książka:Zbiór zadań maturalnych

Najnowszy komentarz napisał(a) 1 rok temu Superjurek w wątku Kolorowanie komórek

Linia 10 w module lua: Książka:Zbiór zadań maturalnych

edytuj

Co masz na myśli pisząc kod w języku Lua w Scribunto:

if przedmiot == {biologia or Biologia or BIOLOGIA} then

Tu są zmienne: biologia, Biologia i Biologia, oznaczają one pewne zmienne, nie wartości, albo, się mylę. Takie przyrównanie nie ma sensu, bo przyrównujemy wtedy ciąg (łańcuch) do tablicy zmiennych. Persino (dyskusja) 16:15, 9 cze 2021 (CEST)Odpowiedz

Kolorowanie komórek

edytuj

@Persino: Idąc dalej z planem pokolorowania komórek w szablonach, a nie tylko ich obramowywania, utworzyłem następujący kod:

-- W tym miejscu moduł koduje zaznaczenie odpowiedniej komórki w tabeli
local p = {}

function p.zaznacz_komorke()

	    local nazwa_strony = frame.args[1] and tostring(frame.args[1])
        if(not nazwa_strony) then styl_przedmiotu="" return styl_przedmiotu end;
		local przedmiot=string.find(nazwa_strony, "Biologia") if przedmiot~=nil then
				styl_przedmiotu="background-color: #52E47D !important;" end
		local przedmiot=string.find(nazwa_strony, "Matematyka") if przedmiot~=nil then
				styl_przedmiotu="background-color: #FF6A6F !important;"
			
end
						
	return "border-top:5px solid black;border-right:5px solid black;border-bottom:5px solid black;" .. styl_przedmiotu
end

Jednak, co mnie zdziwiło, to to że nie zadziałała funkcja string.find(); założyłem, że wyszuka w nazwie strony słowa Biologia lub Matematyka, to albo zwróci cokolwiek i wtedy zwróci styl z kolorem komórki, albo zwróci nil i tym samym dodatkowy styl zostanie wyłączony. Błąd, który popełniłem w niniejszym kodzie jest jakiś kosmetyczny? Czy w ogóle o co innego chodzi i mój pomysł musi być inaczej zdefiniowany w Wikikodzie? Z góry dziękuję za pomoc :) Superjurek (dyskusja) 12:44, 25 sie 2022 (CEST)Odpowiedz

Dodam tylko, że frame.args[1] w kodzie szablonu Szablon:Książka:Zbiór zadań maturalnych/komórka był definiowany poprzez kod
style="{{#invoke:Książka:Zbiór zadań maturalnych|zaznacz_komorke|{{PAGENAME}}}}"{{!}}<noinclude>{{Dokumentacja}}
[[Kategoria:Książka:Zbiór zadań maturalnych/Szablony]]</noinclude>
[[Kategoria:Książka:Zbiór zadań maturalnych/strony przywołujące moduł zbioru]]

Kiedy uruchomiłem te nowe linijki kodu w module, to zwraca komunikat, że jest błąd w linijce nr 5. Superjurek (dyskusja) 12:54, 25 sie 2022 (CEST)Odpowiedz


@Superjurek: Napisz tak, sprawdź, czy dobrze!:

-- W tym miejscu moduł koduje zaznaczenie odpowiedniej komórki w tabeli
local p = {}

function p.zaznacz_komorke(frame)
        
	    local nazwa_strony = frame.args[1] or mw.title.getCurrentTitle().text;
    
        if(not nazwa_strony) then return "";end;
        local styl_przedmiotu;
		if(not mw.ustring.find(nazwa_strony, "Biologia"))then styl_przedmiotu="background-color: #52E47D !important;";end;
	  	if(not mw.ustring.find(nazwa_strony, "Matematyka"))then styl_przedmiotu="background-color: #FF6A6F !important;";end;
						
	    return "border-top:5px solid black;border-right:5px solid black;border-bottom:5px solid black;"..(styl_przedmiotu or "");
end

Pamiętaj o deklarowaniu zmiennych, bo może dojść do nieprzewidywalnych rezultatów., a zmienna frame.args[1] jest równa łańcuchowi lub jest równa nil. A wywołanie w Szablon:Książka:Zbiór zadań maturalnych/komórka, nie trzeba zmieniać, a parametr pierwszy tej ramki jest opcjonalny, czyli frame.args[1]. Persino (dyskusja) 20:00, 25 sie 2022 (CEST)Odpowiedz

@Persino: Wszystko działa, dziękuję pięknie! :) Superjurek (dyskusja) 20:34, 25 sie 2022 (CEST)Odpowiedz
@Persino coś się znowu skrzaczyło. Nie znam się aż tak dobrze na oprogramowaniu MediaWiki, ale przy niezmienionym kodzie kolorowanie komórek zmieniło swoją funkcjonalność i niezależnie czy jest to strona zawierająca w swojej nazwie "Matematyka", czy też "Biologia", to koloruje w ten sposób #808000. Z czego to wynika? Superjurek (dyskusja) 20:05, 8 cze 2023 (CEST)Odpowiedz
@Superjurek: Poprawiłem stronę modułu: {{#invoke:Książka:Zbiór zadań maturalnych|zaznacz_komorke}}, dodałem instrukcje else i rozkaz not usunąłem z kodu, dalej sprawdź, czy kolory tła są prawidłowe, jedynie je można by zmienić... Persino (dyskusja) 11:15, 9 cze 2023 (CEST)Odpowiedz
@Superjurek: Dokonałem też innych edycji w tym module, sprawdź, czy wszystko OK działa! Persino (dyskusja) 14:51, 9 cze 2023 (CEST)Odpowiedz
@Persino Sprawdziłem i rzeczywiście problem rozwiązany. Dziękuję :) Superjurek (dyskusja) 23:08, 11 cze 2023 (CEST)Odpowiedz
Powrót do strony „Książka:Zbiór zadań maturalnych”.