Článek: AN0002361Aktualizováno:: 04.11.2018
Na stránce Losování máme dva webparty Skript, skript ve vlastní stránce a tlačítko Losovat.
Skript ve stránce Losování
function OnPreRender()
{
//skryt tlacitko pro hlasovani, pokud je jiz hlasovano a nema se opakovane hlasovat
var rep = OG.DataParameter.GetDataParameter(OGModel.Id, 'repeated_drawing').ValueBool;
var name = OG.DataParameter.GetDataParameter(OGModel.Id, 'name').ValueAsString;
OGControlOperations['draw'].Visible = rep || OG.IsNull(name);
}
Stránka Losování - webpart Skript
Tento webpart zajistí načtení informací o počtu účastníků a počtu správných odpovědí.
function OnLoad()
{
var contestants = 0;
var advancing = 0;
var cl = OGModel.ClassDefs['data'];
var f = OG.DataRow.GetDataRowFilter(cl.Id);
f.Filter_OnlyActive = true;
var drl = OG.DataRow.GetDataByFilter(f);
contestants = drl.Count;
f['q1'] = 2; /* filtruje jen správně zodpovězené odpovědi */
f['q2'] = 4;
f['q3'] = 1;
f['q4'] = 4;
f['q5'] = 4;
f['q6'] = 6;
f['q7'] = 4;
drl = OG.DataRow.GetDataByFilter(f);
advancing = drl.Count;
var html = '<table><tr>' +
'<td>Soutěžících:</td><td>' + contestants + '</td>' +
'</tr><tr>' +
'<td>Postupuje do slosování:</td><td>' + advancing + '</td>' +
'</tr></table>';
OGForm.AddControl( OGForm.CreateLiteralControl('l1', html));
}
I na této stránce definujeme CSS styly na záložce Styly příslušného webpartu Skript.
div.obsah div.page
{
background-color: white;
}
h1.losovani
{
text-align: center;
font-size: 30px;
}
Stránka Losování - webpart Skript 2
Do stránky musíme vložit ještě jeden webpart Skript. Bude zajišťovat vlastní losování.
function OnPreRender()
{
var name = OG.DataParameter.GetDataParameter(OGModel.Id, 'name').ValueAsString;
var email = OG.DataParameter.GetDataParameter(OGModel.Id, 'email').ValueAsString;
OGWebPart.Visible = OGWebPart.IsWPDesign || !OG.IsNull(name); /* Webpart se zobrazuje jen v designu nebo když je zadan parametr name */
if ( !OG.IsNull(name))
{
var html = '<table><tr class="top">' +
'<td>Vítěz:</td><td>' + name + '</td>' +
'</tr><tr class="kontakt">' +
'<td> </td><td>' + email + '</td>' +
'</tr></table>';
OGForm.AddControl( OGForm.CreateLiteralControl('l2', html));
}
}
Stránka Losování - tlačítko na stránce
Na stránce vytvoříme tlačítko Losovat. Tlačítko je typu Skript.
//kontrola ze je parametr NAME prázdný, aby se nedalo hlasovat dvakrát
//nebo je povoleno hlasovat opakovane
var rep = OG.DataParameter.GetDataParameter(OGModel.Id, 'repeated_drawing').ValueBool;
var name = OG.DataParameter.GetDataParameter(OGModel.Id, 'name').ValueAsString;
if ( rep || OG.IsNull(name))
{
//udělat filtr nad správnými záznamy
var cl = OGModel.ClassDefs['data'];
var f = OG.DataRow.GetDataRowFilter(cl.Id);
f.Filter_OnlyActive = true;
f['q1'] = 2;
f['q2'] = 4;
f['q3'] = 1;
f['q4'] = 4;
f['q5'] = 4;
f['q6'] = 6;
f['q7'] = 4;
var drl = OG.DataRow.GetDataByFilter(f);
//získat random hodnotu v rozsahu nalezených záznamů <0-count)
var winner = Math.floor(Math.random() * drl.Count); - Math je js knihovna
//požadovaný záznam vybrat a ulozit do parametru
var pName = OG.DataParameter.GetDataParameter(OGModel.Id, 'name');
pName.Value = drl[winner]['name'];
OG.DataParameter.Save(pName);
var pEmail = OG.DataParameter.GetDataParameter(OGModel.Id, 'email');
pEmail.Value = drl[winner]['email'];
OG.DataParameter.Save(pEmail);
//refresh stránky pro zobrazeni viteze
OGForm.RedirectTo(OGContentPage.PageUrl);
}