void FetchGroup::operator() (pqxx::transaction<> &t)
{
- pqxx::result res( t.exec("SELECT round,parallel,position,playmode,difficulty,songnumber,player,nick,song,title,artist,chosen,score FROM roundparticipation NATURAL JOIN players NATURAL JOIN scores NATURAL LEFT JOIN songs WHERE "
+ // note: this _will_ break if any song has more than one short title!
+ pqxx::result res( t.exec("SELECT round,parallel,position,playmode,difficulty,songnumber,player,nick,song,title,COALESCE(shorttitle,title) AS shorttitle,artist,chosen,score FROM roundparticipation NATURAL JOIN players NATURAL JOIN scores NATURAL LEFT JOIN songs NATURAL LEFT JOIN songshorttitles WHERE "
"tournament=" + pqxx::to_string(tournament) + " AND " +
"round=" + pqxx::to_string(round) + " AND " +
"parallel=" + pqxx::to_string(parallel) + " " +
so.id = i["song"].as(so.id);
so.title = i["title"].as(so.title);
so.artist = i["artist"].as(so.artist);
+ so.short_title = i["shorttitle"].as(so.short_title);
}
sc.song = so;
/* This more or less mimics the structures from show-tournament.pl */
struct Song {
int id;
- widestring title, artist;
+ widestring title, short_title, artist;
};
struct Score {
Song song;
width[col] = std::max(width[col], my_draw_text(j->song.title, NULL, 12.0) +
max_num_width + 10);
} else {
- width[col] = std::max(width[col], my_draw_text(j->song.title, NULL, 12.0));
+ width[col] = std::max(width[col], my_draw_text(j->song.short_title, NULL, 12.0));
width[col] = std::max(width[col], max_num_width);
}
}
unsigned col = 1, x = 40 + width[0];
for (std::vector<Score>::const_iterator i = group.players[0].scores.begin(); i != group.players[0].scores.end(); ++i, ++col) {
if (!i->chosen) {
- unsigned this_width = my_draw_text(i->song.title, NULL, 12.0);
- my_draw_text(i->song.title, buf, 12.0, x + width[col] / 2 - this_width / 2, 30);
+ unsigned this_width = my_draw_text(i->song.short_title, NULL, 12.0);
+ my_draw_text(i->song.short_title, buf, 12.0, x + width[col] / 2 - this_width / 2, 30);
}
x += width[col] + 20;
}