Beispiel #1
0
//--------------------------------------------------------------
void ofApp::setup(){
    
    dir.open( DIR_PATH );
    result_dir.open( RESULT_DIR );
    template_dir.open( TEMPLATE_DIR );
    queue_dir.open( QUEUE_DIR );
    
    
    if (!dir.exists() || !result_dir.exists() || !template_dir.exists() || !queue_dir.exists() ) ofExit();
    
    
    templateFile = getLatestFile(template_dir, "png");
    
    if (templateFile == ""  || !loadTemplate(TEMPLATE_DIR + templateFile)) ofExit();
    
    
    latestResult = getLatestFile(result_dir, "png");
    
    if (latestResult != "" ) {
        //deletePrevious(result_dir, latestResult);
        resultImage.loadImage(RESULT_DIR + latestResult);
        resultImage.resize(RESULT_WIDTH, RESULT_HEIGHT);
    } else {
        resultImage.allocate(templateImagePixels.getWidth(), templateImagePixels.getHeight(), OF_IMAGE_COLOR);
        memset(resultImage.getPixels(), 0, resultImage.getPixelsRef().size());
    }
    
    
    
#if FRAME_RATE > 0
    ofSetFrameRate(FRAME_RATE);
#endif
    
}
Beispiel #2
0
/**
 * Methode qui va generer le rendu HTML
 * du document
 * @return le rendu HTML du document
 */
QString ValidDocument::makeView(){
    QString page=loadTemplate();
    page=initCompagnyInfo(page);
    page=initDocumentInfo(page);
    page=initCustomerInfo(page);
    page=initProductInfo(page);
    return page;
}
Beispiel #3
0
void AutoMateUi::load() {
	QString filename = QFileDialog::getOpenFileName(this, "Select a file to load", "", "XML files(*.xml)");
	if (filename.isEmpty()) {
		statusBar()->showMessage("No template selected", status_message_delay);
		return;
	}
	loadTemplate(filename.toStdString());
}
	void TemplatesEditorWidget::prepareEditor (int index)
	{
		disconnect (Ui_.Editor_->GetCurrentEditor ()->GetQObject (),
				SIGNAL (textChanged ()),
				this,
				SLOT (markAsDirty ()));

		SaveCurrentText ();

		EditorTypeActions_.value (index)->trigger ();

		loadTemplate ();
	}
void TemplateManagementDialog::slotApplyTemplate()
{
  // Once the user has applied the current template to the event,
  // it makes no sense to add it again
  m_base.m_buttonAdd->setEnabled( false );
  QListWidgetItem *item = m_base.m_listBox->currentItem();
  if ( item ) {
    const QString &cur = item->text();
    if ( !cur.isEmpty() && cur != m_newTemplate ) {
      emit loadTemplate( cur );
    }
  }
}
    QString PersonalScoreReport::generate(bool ru)
    {
        setReportFile("index.html");
        setReportPath( QString("/../share/reports/%1/wrestler/competition").arg(ru ? "ru" : "eng") );

        QString sql;
        sql += "SELECT s.id, s.title FROM competition_style cs, style as s WHERE cs.competition = ? AND s.id = cs.style ORDER BY s.title";

        QSqlQuery query(keeper->database());
        query.prepare(sql);
        query.addBindValue(comp->get("id"));

        QStringList pages;

        if (!query.exec()) {
            QMessageBox::critical(0, tr("Error"), query.executedQuery() + "\n" + query.lastError().text() );
        } else {

            sql.clear();
            sql += "SELECT w.id, w.title FROM competition_weight cw, weight as w WHERE cw.competition = ? AND w.id = cw.weight ORDER BY w.title";

            QSqlQuery nQuery(keeper->database());
            nQuery.prepare(sql);
            nQuery.addBindValue(comp->get("id"));

            while(query.next()) {

                if (!nQuery.exec()) {
                    QMessageBox::critical(0, tr("Error"), query.executedQuery() + "\n" + query.lastError().text() );
                } else {
                    while(nQuery.next()) {
                        qDebug() << "GENERATE SCORESHEET FOR: " << comp->get("id").toInt() << query.value(0).toInt() << nQuery.value(0).toInt();

                        genCompetition(comp->get("id").toInt(), query.value(0).toInt(), nQuery.value(0).toInt());
                        genRepechage(comp->get("id").toInt(), query.value(0).toInt(), nQuery.value(0).toInt());
                        genClassement(ru, comp->get("id").toInt(), query.value(0).toInt(), nQuery.value(0).toInt());

                        vars.insert("{page}", applyTemplateVars(page_tmpl, pVars) );
                        pVars.clear();

                        pages << applyTemplateVars(loadTemplate(reportFile), vars);
                    }
                }

            }
        }

        return pages.join("\n");
    }
FirstFollowDialog::FirstFollowDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::FirstFollowDialog),
    mFirstModel(new QStandardItemModel),
    mFollowModel(new QStandardItemModel)
{
    ui->setupUi(this);
    loadTemplate();
    ui->FirstTableView->setModel(mFirstModel);
    ui->FollowTableView->setModel(mFollowModel);
    ui->FirstTableView->setSizeAdjustPolicy(QTableView::AdjustToContents);

    connect(&mGrammarParser, SIGNAL(parseSuccess(QString)), this, SLOT(parseSuccess()));
    connect(&mGrammarParser, SIGNAL(parseError(QMap<int,QString>)), this, SIGNAL(parseError(QMap<int,QString>)));
}
Beispiel #8
0
/*=macfunc INCLUDE
 *
 *  what:   Read in and emit a template block
 *  handler_proc:
 *  load_proc:
 *
 *  desc:
 *
 *  The entire contents of the named file is inserted at this point.
 *  The contents of the file are processed for macro expansion.  The
 *  arguments are eval-ed, so you may compute the name of the file to
 *  be included.  The included file must not contain any incomplete
 *  function blocks.  Function blocks are template text beginning with
 *  any of the macro functions @samp{CASE}, @samp{DEFINE}, @samp{FOR},
 *  @samp{IF} and @samp{WHILE}; extending through their respective
 *  terminating macro functions.
=*/
tMacro*
mFunc_Include(tTemplate* pT, tMacro* pMac)
{
    tTemplate *   pNewTpl;
    ag_bool       needFree;
    char const *  pzFile = evalExpression(&needFree);
    tMacro*       pM;

    if (*pzFile != NUL) {
        pNewTpl = loadTemplate(pzFile, pT->pzTplFile);

        /*
         *  Strip off trailing white space from included templates
         */
        pM = pNewTpl->aMacros + (pNewTpl->macroCt - 1);
        if (pM->funcCode == FTYP_TEXT) {
            char* pz  = pNewTpl->pzTemplText + pM->ozText;
            char* pzE = pz + strlen(pz);
            while ((pzE > pz) && IS_WHITESPACE_CHAR(pzE[-1]))  --pzE;

            /*
             *  IF there is no text left, remove the macro entirely
             */
            if (pz == pzE)
                 pNewTpl->macroCt--;
            else *pzE = NUL;
        }

        if (OPT_VALUE_TRACE > TRACE_DEBUG_MESSAGE) {
            fprintf(pfTrace, TRACE_FN_INC_TPL, pNewTpl->pzTplFile);
            if (OPT_VALUE_TRACE == TRACE_EVERYTHING)
                fprintf(pfTrace, TRACE_FN_INC_LINE, pCurTemplate->pzTplFile,
                        pMac->lineNo);
        }

        generateBlock(pNewTpl, pNewTpl->aMacros,
                      pNewTpl->aMacros + pNewTpl->macroCt);
        unloadTemplate(pNewTpl);
        pCurTemplate = pT;
    }

    if (needFree)
        AGFREE((void*)pzFile);

    return pMac + 1;
}
InputTextDialog::InputTextDialog(QWidget *parent, const QString &textFileName) :
    QDialog(parent),
    ui(new Ui::InputTextDialog),
    mIsSettingHtml(false)
{
    ui->setupUi(this);
    loadTemplate();
    TitleOfSaved = this->windowTitle();
    TitleOfUnsaved = this->windowTitle() + " (*unsaved*)";

    setTextFileName(textFileName);
    mInputTextTemp = ui->textEdit->toPlainText();

    ui->ErrorMessageTextBrowser->setVisible(false);

    connect(&mGrammarParser, SIGNAL(parseSuccess(QString)), this, SLOT(parseSuccess(QString)));
    connect(&mGrammarParser, SIGNAL(parseError(QMap<int,QString>)), this, SLOT(parseError(QMap<int,QString>)));
}
Beispiel #10
0
void KOIncidenceEditor::slotLoadTemplate( const QString& templateName )
{
  CalendarLocal cal( KOPrefs::instance()->mTimeZoneId );
  QString fileName = locateLocal( "data", "korganizer/templates/" + type() + "/" +
      templateName );

  if ( fileName.isEmpty() ) {
    KMessageBox::error( this, i18n("Unable to find template '%1'.")
        .arg( fileName ) );
  } else {
    ICalFormat format;
    if ( !format.load( &cal, fileName ) ) {
      KMessageBox::error( this, i18n("Error loading template file '%1'.")
          .arg( fileName ) );
      return;
    }
  }
  loadTemplate( cal );
}
Beispiel #11
0
//--------------------------------------------------------------
void ofApp::updateTemplate() {
    
    string newTemplate = getFirstFile(queue_dir, "png");
    
    if (newTemplate == "" || newTemplate == templateFile) return;
    
    rename( (QUEUE_DIR + newTemplate).c_str(), (TEMPLATE_DIR + newTemplate).c_str() );
    
    if (!loadTemplate(TEMPLATE_DIR + newTemplate)) return;
    
    
    if (templateFile != "" ) ofFile::removeFile( TEMPLATE_DIR + templateFile );
    
    template_dir.open( TEMPLATE_DIR );
    if (!template_dir.exists()) ofExit();
    
    
    templateFile = newTemplate;
}
/**
 * Constructeur de la fenetre d'edition du template
 */
EditTemplateWindow::EditTemplateWindow(QMainWindow *parent) :QWidget(parent){
    this->parent=parent;
    QVBoxLayout *layoutPrinc=new QVBoxLayout(this);

    /** ********************* **/
    /**         Edition       **/
    /** ********************* **/

    templateEdit=new QTextEdit;
    templateEdit->setAcceptRichText(false);
    templateEdit->setPlainText(loadTemplate());
    layoutPrinc->addWidget(templateEdit);

    /** ********************* **/
    /**         Boutons       **/
    /** ********************* **/

    QHBoxLayout *layoutBouton = new QHBoxLayout;

    validate=new QPushButton(trUtf8("Valider"));
    layoutBouton->addWidget(validate);

    help=new QPushButton(trUtf8("Voir les balises disponibles"));
    layoutBouton->addWidget(help);

    layoutPrinc->addLayout(layoutBouton);
    setLayout(layoutPrinc);

    /** ********************* **/
    /**          Slots        **/
    /** ********************* **/

    connect(validate, SIGNAL(clicked()), this, SLOT(save()));
    connect(help, SIGNAL(clicked()), this, SLOT(showBalise()));


}
Beispiel #13
0
    QString FightSheet::generateData()
    {
        Style *s = new Style( object->get("style").toInt(), keeper );

        setReportFile(s->get("name").toLower() + ".html");
        setReportPath("/../share/reports/fightsheet");

        Wrestler *red = new Wrestler(object->get("red").toInt(), keeper);
        Geo *geo_r = new Geo(red->get("geo").toInt(), keeper);
        Wrestler *blue = new Wrestler(object->get("blue").toInt(), keeper);
        Geo *geo_b = new Geo(blue->get("geo").toInt(), keeper);
        Weight *wh = new Weight( object->get("weight").toInt(), keeper );

        Competition *c = new Competition(object->get("competition").toInt(), keeper);

        Mat *mat = new Mat(object->get("mat").toInt(), keeper);
        CRound *cround = new CRound(object->get("cround").toInt(), keeper);
        CTour *ctour = new CTour(object->get("ctour").toInt(), keeper);

        QDate start = QDate::fromString(c->get("start"), QString("yyyy-MM-dd"));
        QDate stop = QDate::fromString(c->get("stop"), QString("yyyy-MM-dd"));

        QString date;
        if ( start.month() == stop.month() ) {
            date = QString("%1-%2/%3/%4").arg(start.day()).arg(stop.day()).arg(start.month()).arg(start.year());
        } else {
            date = start.toString("dd/MM/yyyy") + " - " + stop.toString("dd/MM/yyyy");
        }

        vars.insert("{red.title}", red->get("title"));
        vars.insert("{red.geo}", geo_r->get("title"));
        vars.insert("{blue.title}", blue->get("title"));
        vars.insert("{blue.geo}", geo_b->get("title"));
        vars.insert("{style}", s->get("name"));
        vars.insert("{weight}", wh->get("title"));
        vars.insert("{competition}", c->get("title"));
        vars.insert("{mat}", mat->get("title"));
        vars.insert("{round}", cround->get("title"));
        vars.insert("{place}", ctour->get("title"));
        vars.insert("{num}", object->get("num"));
        vars.insert("{date}", date);

        TQueryMap opt;
        opt.insert("competition", keeper->prepareParam(Equal, c->get("id")));

        QList<QVariant> id_list;
        if ( red->get("id").toInt() > 0 )
            id_list << red->get("id");

        if ( blue->get("id").toInt() > 0 )
            id_list << blue->get("id");

        opt.insert("wrestler", keeper->prepareParam(And | InSet, id_list ));
        opt.insert("style", keeper->prepareParam(And | Equal, s->get("id")));
        opt.insert("weight", keeper->prepareParam(And | Equal, wh->get("id")));


        QList<QVariant> list = keeper->getListOfFields(OCompetitionWrestler,
                                                       QStringList() << "wrestler" << "sorder", opt);
        for( int i = 0; i < list.size(); i++)
        {
            QStringList row = list.at(i).toStringList();
            if ( red->get("id").toInt() == row.at(0).toInt() )
                vars.insert("{red.num}", row.at(1));
            if ( blue->get("id").toInt() == row.at(0).toInt() )
                vars.insert("{blue.num}", row.at(1));
        }

        delete red;
        delete geo_r;
        delete geo_b;
        delete blue;
        delete s;
        delete wh;
        delete mat;
        delete cround;
        delete ctour;
        delete c;

        return applyTemplateVars(loadTemplate(reportFile), vars);
    }
	QString PersonalCountryReport::generate(bool ru)
	{
		setReportPath( QString("/../share/reports/%1/wrestler/country").arg(ru ? "ru" : "eng") );
		setReportFile("index.html");

		QString page_tmpl = loadTemplate("page.html");
		QString num_tmpl = loadTemplate("num.html");

		QMap<QString,QString> pageVars;
		QStringList pages;

		QString sql;
		sql += "SELECT s.id, s.title FROM competition_style cs, style as s WHERE cs.competition = ? AND s.id = cs.style ORDER BY title";

		QSqlQuery query(keeper->database());
		query.prepare(sql);
		query.addBindValue(comp->get("id"));

		if (!query.exec()) {
			qDebug() << sql << comp->get("id");
			QMessageBox::critical(0, tr("Error"), query.executedQuery() + "\n" + query.lastError().text() );
		}

		QHash<QString, QString> style;
		while(query.next()) {
			style.insert(query.value(0).toString(),
						query.value(1).toString());
		}

		pageVars.insert("{competition}", comp->get("title"));
		pageVars.insert("{style}",  QStringList( style.values() ).join("/"));


		sql.clear();
		sql += "SELECT g.id, g.title, alpha3, count(w.id) FROM competition_wrestler as cw, wrestler as w, geo as g ";
		sql += "WHERE cw.competition = ? AND w.id = cw.wrestler AND g.id = w.geo ";
		sql += "GROUP BY 1,2,3 ORDER BY g.title";

		query.prepare(sql);
		query.addBindValue(comp->get("id"));


		if (!query.exec()) {
			qDebug() << sql << comp->get("id");
			QMessageBox::critical(0, tr("Error"), query.executedQuery() + "\n" + query.lastError().text() );
		}

		int countryCount = query.size();
		int onPage = 40;

		QStringList rows;
		while ( query.next() )
		{
			QString gtitle = query.value(1).toString();
			QString gcode = query.value(2).toString();

			vars.insert("{gtitle}", gtitle);
			vars.insert("{gcode}", gcode);

			rows << applyTemplateVars( loadTemplate("row.html"), vars );

			if ( rows.size() > onPage ) {
				pageVars.insert("{rows}", rows.join("\n"));
				pageVars.insert("{num}", "");
				pages << applyTemplateVars(page_tmpl, pageVars);
				rows.clear();
			}
		}



		pageVars.insert("{count}", QString::number(countryCount));
		pageVars.insert("{num}", applyTemplateVars(num_tmpl, pageVars));
		pageVars.insert("{rows}", rows.join("\n"));

		pages << applyTemplateVars(page_tmpl, pageVars);

		vars.insert("{pages}", pages.join("\n"));

		return applyTemplateVars(loadTemplate(reportFile), vars);
	}
Beispiel #15
0
MyMoneyTemplate::MyMoneyTemplate(const KUrl& url) :
    m_progressCallback(0)
{
  loadTemplate(url);
}
	void TemplatesEditorWidget::reject ()
	{
		IsDirty_ = false;

		loadTemplate ();
	}
    void PersonalScoreReport::genClassement(bool ru, int cid, int sid, int wid)
    {
        // CLASSIFY
        bool show_points = false;

        QMap<QString,QString> tVars, aVars;
        QStringList rows;

        QString sql = QString("\
           select \
              c.sorder, \
              w.title, \
              extract( year from w.birthdate), \
              r.name, \
              g.title, \
              ca.title, \
              c.classify_points, \
              c.vt, \
              c.va, \
              c.vb, \
              c.vf, \
              c.ev, \
              c.ex, \
              c.st, \
              c.sp, \
              c.pp, \
              c.po, \
              c.e2, \
              c.tech_points_win, \
              c.tech_points_loose \
           from \
              wrestler_classement(?, ?, ?) as cc, \
              competition_wrestler as c, \
              wrestler as w \
                left join coach as ca on ca.id = w.coach \
                left join geo as g on g.id = w.geo \
                left join rang as r on r.id = w.rang \
           where \
              c.competition = ? AND \
              c.weight = ? AND \
              c.style = ? AND \
              w.id = c.wrestler AND \
              intset(c.wrestler) && cc \
           order by \
              idx(cc,w.id)");

        QSqlQuery query(keeper->database());
        query.prepare(sql);

        query.addBindValue(cid);
        query.addBindValue(wid);
        query.addBindValue(sid);

        query.addBindValue(cid);
        query.addBindValue(wid);
        query.addBindValue(sid);

        if ( !query.exec() ) {
            QMessageBox::critical(0, tr("Error"), query.lastError().text() );
            return;
        }

        QString classmentHeader = show_points ? loadTemplate("classify-points.html")
                                           : loadTemplate("classify.html");
        QString classmentRow = show_points ? loadTemplate("classify-row-points.html")
                                           : loadTemplate("classify-row.html");

        QString classifyPage = loadTemplate("classify-page.html");

        int onPage = show_points ? 40 : 60;

        int counter = 1;
        while( query.next() )
        {
            tVars.insert("{counter}", QString::number((counter == 4 || counter == 6 ? counter - 1 : counter)));
            tVars.insert("{wrestler.num}", query.value(0).toString());
            tVars.insert("{wrestler.fio}", query.value(1).toString());
            tVars.insert("{wrestler.year}", query.value(2).toString());
            if ( ru )
                tVars.insert("{wrestler.rang}", query.value(3).toString());
            tVars.insert("{wrestler.geo}", query.value(4).toString());
            tVars.insert("{wrestler.coach}", query.value(5).toString());
            if ( show_points )
            {
                tVars.insert("{wrestler.classify_points}", query.value(6).toString());
                tVars.insert("{wrestler.vt}", query.value(7).toString());
                tVars.insert("{wrestler.va}", query.value(8).toString());
                tVars.insert("{wrestler.vb}", query.value(9).toString());
                tVars.insert("{wrestler.vf}", query.value(10).toString());
                tVars.insert("{wrestler.ev}", query.value(11).toString());
                tVars.insert("{wrestler.ex}", query.value(12).toString());
                tVars.insert("{wrestler.st}", query.value(13).toString());
                tVars.insert("{wrestler.sp}", query.value(14).toString());
                tVars.insert("{wrestler.pp}", query.value(15).toString());
                tVars.insert("{wrestler.po}", query.value(16).toString());
                tVars.insert("{wrestler.e2}", query.value(17).toString());
                tVars.insert("{wrestler.tech_points_win}", query.value(18).toString());
                tVars.insert("{wrestler.tech_points_loose}", query.value(19).toString());
            }
            rows << applyTemplateVars(classmentRow, tVars);
            tVars.clear();
            counter++;
            if ( counter == onPage ) {
                tVars.insert("{rows}", rows.join("\n") );
                rows.clear();

                aVars.insert("{classify}", applyTemplateVars(classmentHeader, tVars) );
                tVars.clear();

                QString k("{classify}");
                QString a = pVars.contains(k) ? pVars[k] : QString("");
                pVars.insert(k, a + applyTemplateVars(classifyPage, aVars));
                aVars.clear();
            }
        }

        tVars.insert("{rows}", rows.join("\n") );
        rows.clear();

        aVars.insert("{classify}", applyTemplateVars(classmentHeader, tVars) );
        tVars.clear();

        QString k("{classify}");
        QString a = pVars.contains(k) ? pVars[k] : QString("");
        pVars.insert(k, a + applyTemplateVars(classifyPage, aVars));
        aVars.clear();
    }
    void PersonalScoreReport::genRepechage(int cid, int sid, int wid)
    {
        QString repechageFirst_tmpl  = loadTemplate("repechage-first.html");
        QString repechageLast_tmpl   = loadTemplate("repechage-last.html");
        QString repechageFight_tmpl   = loadTemplate("repechage-fight.html");

        QString repechageFight_small_tmpl  = loadTemplate("repechage-fight-small.html");
        QString repechageFirst_small_tmpl  = loadTemplate("repechage-first-small.html");

        TQueryMap opts;
        QMap<QString,QString> tVars;
        QStringList rows;

        QSqlQuery query(keeper->database());
        query.prepare("SELECT count(wrestler) FROM competition_wrestler WHERE competition = ? AND style = ? AND weight = ?");

        query.addBindValue(cid);
        query.addBindValue(sid);
        query.addBindValue(wid);

        if ( !query.exec() )
            QMessageBox::critical(0, tr("Error"), tr("Could not get wrestlers count\n") + query.executedQuery() );

        query.next();

        int wrestlerCount = query.value(0).toInt();

        opts.clear();
        opts.insert("num", keeper->prepareParam(Less, wrestlerCount));
        opts.insert("order", QStringList() << "num desc" );

        QList<Object*> tl = keeper->getObjectList(OCTour, opts);
        QList<Object*> tourList;
        for( int i = 0; i < tl.size(); i++) {
            Object *o = tl.at(i);
            if (o->get("num").toInt() > 0 ) {
                tourList.append(o);
            }
        }

        opts.clear();
        opts.insert("competition", keeper->prepareParam(Equal, cid));
        opts.insert("weight", keeper->prepareParam(And|Equal, wid));
        opts.insert("style", keeper->prepareParam(And|Equal, sid));
        opts.insert("order", QStringList() << "id asc" );

        QList<QVariant> cwList = keeper->getListOfFields(OCompetitionWrestler, QStringList() << "wrestler" << "sorder", opts);

        QList<QVariant> wrestlerIdList;

        QHash<QString,QString> wrestlerPosIdMap;
        QHash<QString,QString> wrestlerIdPosMap;

        for(int i = 0; i < cwList.size(); i++ ) {
            QStringList list = cwList.at(i).toStringList();
            wrestlerIdList.append( list.at(0) );
            wrestlerPosIdMap.insert( list.at(1), list.at(0) );
            wrestlerIdPosMap.insert( list.at(0), list.at(1) );
        }

        QHash<QString,Object*> wrestlerIdMap;
        QHash<QString,Object*> wrestlerNumMap;
        QHash<QString,Object*> geoMap;
        QList<Object*> wrestlerList;

        opts.clear();
        opts.insert("id", keeper->prepareParam(InSet, wrestlerIdList));
        opts.insert("order", QStringList() << "id asc" );

        wrestlerList = keeper->getObjectList(OWrestler, opts);

        QList<QVariant> geoIdList;
        for( int z = 0; z < wrestlerList.size(); z++ )
        {
            Object *obj = wrestlerList.at(z);
            wrestlerIdMap.insert(obj->get("id"), obj);
            wrestlerNumMap.insert( wrestlerPosIdMap[obj->get("id")], obj);
            if ( obj->get("geo").toInt() )
                geoIdList.append(obj->get("geo"));
        }

        opts.clear();
        opts.insert("id", keeper->prepareParam(InSet, geoIdList));
        opts.insert("order", QStringList() << "id asc" );

        geoMap = keeper->getObjectMap(OGeo, "id", opts);

        opts.clear();

        QList<QVariant> rrounds;
        rrounds.append("'consolation-1'");
        rrounds.append("'consolation-2'");

        opts.insert("name", keeper->prepareParam(InSet, rrounds));
        opts.insert("order", QStringList() << "id" );

        QList<Object*> roundList = keeper->getObjectList(OCRound, opts);
        rrounds.clear();
        for( int i = 0; i < roundList.size(); i++)
            rrounds.append( roundList.at(i)->get("id") );

        opts.clear();
        opts.insert("competition", keeper->prepareParam(Equal, cid));
        opts.insert("weight", keeper->prepareParam(And|Equal, wid));
        opts.insert("style", keeper->prepareParam(And|Equal, sid));
        opts.insert("cround", keeper->prepareParam(And|InSet, rrounds));
        opts.insert("order", QStringList() << "id asc" );

        QList<Object*> fightList = keeper->getObjectList(OFight, opts);

        QHash<QString,QList<Object*> > fightsMap;
        for ( int i = 0; i < fightList.size(); i++ )
        {
            Object *f = fightList.at(i);
            if ( fightsMap.contains(f->get("cround"))) {
                fightsMap[f->get("cround")].append(f);
            } else {
                QList<Object*> list;
                list.append(f);
                fightsMap.insert(f->get("cround"), list);
            }
        }

        opts.clear();
        opts.insert("order", QStringList() << "id asc" );
        QHash<QString,Object*> classifyMap = keeper->getObjectMap(OClassify, "id", opts);

        rows.clear();

        QList<Object*> reps;
        Object *round = 0;
        Object *fight = 0;

        int repSize = tourList.size() - 2;

        for( int j = 0; j < roundList.size(); j++ )
        {
            rows.clear();
            reps.clear();

            round = roundList.at(j);
            if ( fightsMap.contains(round->get("id"))) {
                reps = fightsMap[round->get("id")];
            }

            int diff = repSize - reps.size();
            for( int i = 0; i < repSize ; i++ )
            {
                fight = ( reps.size() == 0 ) ? 0 :
                           (diff == 0) ? reps.at(i) :
                           (diff == 1 && i > 0) ? reps.at(i-1) : 0;
                if ( fight )
                {
                    QString redClassify("0");
                    QString blueClassify("0");

                    if ( fight->get("classify").toInt() > 0 )
                    {
                        Object *classify = classifyMap[fight->get("classify")];
                        if ( fight->get("winner").compare( fight->get("red") ) == 0 ) {
                            redClassify = classify->get("win");
                            blueClassify = classify->get("fail");
                        } else {
                            redClassify = classify->get("fail");
                            blueClassify = classify->get("win");
                        }
                    }

                    QStringList redScore = Object::toList(fight->get("red_score"));
                    QStringList blueScore = Object::toList(fight->get("blue_score"));

                    QString redScoreSum = QString::number(redScore.at(0).toInt() + redScore.at(1).toInt() + redScore.at(2).toInt());
                    QString blueScoreSum = QString::number(blueScore.at(0).toInt() + blueScore.at(1).toInt() + blueScore.at(2).toInt());

                    Object *red = wrestlerIdMap[ fight->get("red") ];
                    if ( red )
                    {
                       Object *geo = geoMap[ red->get("geo") ];

                       tVars.insert("{red.num}", wrestlerIdPosMap[ red->get("id") ]);
                       tVars.insert("{red.classify}", redClassify);
                       tVars.insert("{red.fio}", red->get("title"));
                       tVars.insert("{red.geo}", geo->get("title"));
                       tVars.insert("{red.sum}", redScoreSum);
                       tVars.insert("{red.p1}", redScore.at(0));
                       tVars.insert("{red.p2}", redScore.at(1));
                       tVars.insert("{red.p3}", redScore.at(2));
                    } else {
                        tVars.insert("{red.num}", "");
                        tVars.insert("{red.classify}", "");
                        tVars.insert("{red.fio}", "");
                        tVars.insert("{red.geo}", "");
                        tVars.insert("{red.sum}", "");
                        tVars.insert("{red.p1}", "");
                        tVars.insert("{red.p2}", "");
                        tVars.insert("{red.p3}", "");
                    }

                    Object *blue = wrestlerIdMap[ fight->get("blue") ];
                    if ( blue )
                    {
                        Object *geo = geoMap[ blue->get("geo") ];

                        tVars.insert("{blue.num}", wrestlerIdPosMap[ blue->get("id")]);
                        tVars.insert("{blue.classify}", blueClassify);
                        tVars.insert("{blue.fio}", blue->get("title"));
                        tVars.insert("{blue.geo}", geo->get("title"));
                        tVars.insert("{blue.sum}", blueScoreSum);
                        tVars.insert("{blue.p1}", blueScore.at(0));
                        tVars.insert("{blue.p2}", blueScore.at(1));
                        tVars.insert("{blue.p3}", blueScore.at(2));
                    } else {
                        tVars.insert("{blue.num}", "");
                        tVars.insert("{blue.classify}", "");
                        tVars.insert("{blue.fio}", "");
                        tVars.insert("{blue.geo}", "");
                        tVars.insert("{blue.sum}", "");
                        tVars.insert("{blue.p1}", "");
                        tVars.insert("{blue.p2}", "");
                        tVars.insert("{blue.p3}", "");
                    }



                } else {
                    tVars.insert("{red.num}", "");
                    tVars.insert("{red.classify}", "");
                    tVars.insert("{red.fio}", "");
                    tVars.insert("{red.geo}", "");
                    tVars.insert("{red.sum}", "");
                    tVars.insert("{red.p1}", "");
                    tVars.insert("{red.p2}", "");
                    tVars.insert("{red.p3}", "");

                    tVars.insert("{blue.num}", "");
                    tVars.insert("{blue.classify}", "");
                    tVars.insert("{blue.fio}", "");
                    tVars.insert("{blue.geo}", "");
                    tVars.insert("{blue.sum}", "");
                    tVars.insert("{blue.p1}", "");
                    tVars.insert("{blue.p2}", "");
                    tVars.insert("{blue.p3}", "");
                }

                tVars.insert("{level}", QString::number(i));

                QString tmpl;
                if ( i == (repSize - 1)) {
                   tmpl = repechageLast_tmpl;

                   fight = reps.size() > 0 ? reps.at(reps.size()-1) : 0;
                   Object *wrestler = fight ? wrestlerIdMap[ fight->get("winner") ] : 0;
                   if ( wrestler )
                   {
                       Object *geo = geoMap[ wrestler->get("geo") ];
                       tVars.insert("{bronze.num}", wrestlerIdPosMap[ wrestler->get("id") ]);
                       tVars.insert("{bronze.fio}", wrestler->get("title"));
                       tVars.insert("{bronze.geo}", geo->get("title"));
                   } else {
                       tVars.insert("{bronze.num}", "");
                       tVars.insert("{bronze.fio}", "");
                       tVars.insert("{bronze.geo}", "");
                   }

                }
                else if ( i > 0 ) {
                    tmpl = repSize > 4 ? repechageFight_small_tmpl : repechageFight_tmpl;
                } else {
                    tmpl = repSize > 4 ? repechageFirst_small_tmpl : repechageFirst_tmpl;
                }


                pVars.insert( QString("{repechage:%1:%2}").arg( j == 0 ? "up" : "low").arg(i+1), applyTemplateVars(tmpl, tVars) );
                tVars.clear();
            }
        }

        qDeleteAll(fightList);
        qDeleteAll(geoMap);
        qDeleteAll(wrestlerList);
    }
    void PersonalScoreReport::genCompetition(int /*cid*/, int sid, int wid)
    {
        Weight *w = new Weight(wid, keeper);
        Style *s = new Style(sid, keeper);

        pVars.insert("{competition}", comp->get("title"));
        pVars.insert("{weight}", w->get("title"));
        pVars.insert("{style}",  s->get("name"));

        TQueryMap opts;
        opts.insert("competition", keeper->prepareParam(Equal, comp->get("id")));
        opts.insert("weight", keeper->prepareParam(And|Equal, wid));
        opts.insert("style", keeper->prepareParam(And|Equal, sid));
        opts.insert("order", QStringList() << "sorder asc" );

        QList<QVariant> cwList = keeper->getListOfFields(OCompetitionWrestler, QStringList() << "wrestler" << "sorder", opts);

        int wrestlerCount = cwList.size();

        opts.clear();
        opts.insert("num", keeper->prepareParam(Less, wrestlerCount));
        opts.insert("order", QStringList() << "num desc" );
        opts.insert("limit", 1);

        // id, num
        CTour *ct = new CTour(opts, keeper);
        int tourNum = ct->get("num").toInt();
        delete ct;

        QString fightQualify_tmpl    = loadTemplate("fight-qualify.html");
        QString fightRound_tmpl      = loadTemplate("fight-round.html");
        QString fightRoundLast_tmpl  = loadTemplate("fight-round-last.html");
        QString final_tmpl   = loadTemplate("final.html");


        int offset_num = 0;
        if ( tourNum == wrestlerCount )
            offset_num = 0;
        else
            offset_num = (tourNum*2) - wrestlerCount;

        opts.clear();
        opts.insert("num", keeper->prepareParam(Less, wrestlerCount));
        opts.insert("order", QStringList() << "num desc" );

        QList<Object*> tl = keeper->getObjectList(OCTour, opts);
        QList<Object*> tourList;
        for( int i = 0; i < tl.size(); i++ ) {
            Object *o = tl.at(i);
            if (o->get("num").toInt() > 0 ) {
                tourList.append(o);
            }
        }

        QList<QVariant> wrestlerIdList;

        QHash<QString,QString> wrestlerPosIdMap;
        QHash<QString,QString> wrestlerIdPosMap;

        for(int i = 0; i < cwList.size(); i++ ) {
            QStringList list = cwList.at(i).toStringList();

            wrestlerIdList.append( list.at(0) );
            wrestlerPosIdMap.insert( list.at(1), list.at(0) );
            wrestlerIdPosMap.insert( list.at(0), list.at(1) );
        }

        QList<Object*> wrestlerList;

        QHash<QString,Object*> wrestlerIdMap;
        QHash<QString,Object*> wrestlerNumMap;

        QHash<QString,Object*> geoMap;

        opts.clear();
        opts.insert("id", keeper->prepareParam(InSet, wrestlerIdList));
        opts.insert("order", QStringList() << "id asc" );

        wrestlerList = keeper->getObjectList(OWrestler, opts);

        QList<QVariant> geoIdList;

        for( int z = 0; z < wrestlerList.size(); z++ ) {
            Object *obj = wrestlerList.at(z);
            wrestlerIdMap.insert(obj->get("id"), obj);
            wrestlerNumMap.insert( wrestlerPosIdMap[obj->get("id")], obj);
            if ( obj->get("geo").toInt() )
                geoIdList.append(obj->get("geo"));
        }

        opts.clear();
        opts.insert("id", keeper->prepareParam(InSet, geoIdList));
        opts.insert("order", QStringList() << "id asc" );

        geoMap = keeper->getObjectMap(OGeo, "id", opts);

        opts.clear();
        opts.insert("competition", keeper->prepareParam(Equal, comp->get("id")));
        opts.insert("weight", keeper->prepareParam(And|Equal, wid));
        opts.insert("style", keeper->prepareParam(And|Equal, sid));
        opts.insert("order", QStringList() << "id asc" );

        QHash<QString,Object*> fightsMap = keeper->getObjectMap(OFight, "order", opts);

        opts.clear();
        opts.insert("order", QStringList() << "id asc" );
        QHash<QString,Object*> classifyMap = keeper->getObjectMap(OClassify, "id", opts);

        switch (tourNum) {
            case 4:  page_tmpl = loadTemplate("page4.html"); break;
            case 8:  page_tmpl = loadTemplate("page8.html"); break;
            case 16: page_tmpl = loadTemplate("page16.html"); break;
            case 32: page_tmpl = loadTemplate("page32.html"); break;
            case 64: page_tmpl = loadTemplate("page64.html"); break;
            default: break;
        }

        QMap<QString,QString> tVars;
        QStringList rows;

        // qualification
        int fightNum = 0;
        int j = 0;
        if ( wrestlerCount < (tourNum*2) )
        {
            int wpos = 0;
            int fnum = tourList.at(j++)->get("num").toInt();
            for( int i = 0; i < fnum; i++ )
            {
                if ( offset_num > wpos++ )
                {
                    QStringList clist = cwList.at(i).toStringList();

                    Object *wrestler = wrestlerIdMap[ clist.at(0) ];
                    Object *geo = geoMap[ wrestler->get("geo") ];

                    tVars.insert("{red.num}", wrestlerIdPosMap[clist.at(0)]);
                    tVars.insert("{red.classify}", "");
                    tVars.insert("{red.fio}", wrestler->get("title"));
                    tVars.insert("{red.geo}", geo->get("title"));
                    tVars.insert("{red.sum}", "");
                    tVars.insert("{red.p1}", "");
                    tVars.insert("{red.p2}", "");
                    tVars.insert("{red.p3}", "");

                    tVars.insert("{blue.num}", "");
                    tVars.insert("{blue.classify}", "");
                    tVars.insert("{blue.fio}", "");
                    tVars.insert("{blue.geo}", "");
                    tVars.insert("{blue.sum}", "");
                    tVars.insert("{blue.p1}", "");
                    tVars.insert("{blue.p2}", "");
                    tVars.insert("{blue.p3}", "");
                } else {
                    fightNum++;

                    Object *fight = fightsMap[ QString::number(fightNum) ];
                    QString redClassify("0");
                    QString blueClassify("0");

                    if ( fight->get("classify").toInt() > 0 )
                    {
                        Object *classify = classifyMap[fight->get("classify")];
                        if ( fight->get("winner").compare( fight->get("red") ) == 0 ) {
                            redClassify = classify->get("win");
                            blueClassify = classify->get("fail");
                        } else {
                            redClassify = classify->get("fail");
                            blueClassify = classify->get("win");
                        }
                    }

                    QStringList redScore = Object::toList(fight->get("red_score"));
                    QStringList blueScore = Object::toList(fight->get("blue_score"));

                    QString redScoreSum = QString::number(redScore.at(0).toInt() + redScore.at(1).toInt() + redScore.at(2).toInt());
                    QString blueScoreSum = QString::number(blueScore.at(0).toInt() + blueScore.at(1).toInt() + blueScore.at(2).toInt());

                    if ( wrestlerIdMap.contains( fight->get("red") ) )
                    {
                        Object *wrestler = wrestlerIdMap[ fight->get("red") ];
                        Object *geo = geoMap[ wrestler->get("geo") ];

                        tVars.insert("{red.num}", wrestlerIdPosMap[ wrestler->get("id") ]);
                        tVars.insert("{red.classify}", redClassify);
                        tVars.insert("{red.fio}", wrestler->get("title"));
                        tVars.insert("{red.geo}", geo->get("title"));
                        tVars.insert("{red.sum}", redScoreSum);
                        tVars.insert("{red.p1}", redScore.at(0));
                        tVars.insert("{red.p2}", redScore.at(1));
                        tVars.insert("{red.p3}", redScore.at(2));
                    }

                    if ( wrestlerIdMap.contains( fight->get("blue") ))
                    {
                        Object *wrestler = wrestlerIdMap[ fight->get("blue") ];
                        Object *geo = geoMap[ wrestler->get("geo") ];

                        tVars.insert("{blue.num}", wrestlerIdPosMap[ wrestler->get("id") ]);
                        tVars.insert("{blue.classify}", blueClassify);
                        tVars.insert("{blue.fio}", wrestler->get("title"));
                        tVars.insert("{blue.geo}", geo->get("title"));
                        tVars.insert("{blue.sum}", blueScoreSum);
                        tVars.insert("{blue.p1}", blueScore.at(0));
                        tVars.insert("{blue.p2}", blueScore.at(1));
                        tVars.insert("{blue.p3}", blueScore.at(2));
                    }
                }
                rows << applyTemplateVars(fightQualify_tmpl, tVars);
                tVars.clear();
                if ( tourNum == 64 ) {
                    if ( i == 15 ) {
                        pVars.insert( QString("{fights:%1/4}").arg(fnum), rows.join("\n"));
                        rows.clear();
                    } else if (i == 31) {
                        pVars.insert( QString("{fights:%1/3}").arg(fnum), rows.join("\n"));
                        rows.clear();
                    } else if (i == 47) {
                        pVars.insert( QString("{fights:%1/2}").arg(fnum), rows.join("\n"));
                        rows.clear();
                    } else if (i == 63) {
                        pVars.insert( QString("{fights:%1/1}").arg(fnum), rows.join("\n"));
                        rows.clear();
                    }
                } else if ( tourNum == 32 && i == (fnum/2)-1 ) {
                    pVars.insert( QString("{fights:%1/2}").arg(fnum), rows.join("\n"));
                    rows.clear();
                }
            }
            pVars.insert( QString("{fights:%1}").arg(fnum), rows.join("\n"));
            rows.clear();
        }

        for(; j<tourList.size(); j++ )
        {
            int level = 0;
            bool last = false;
            QStringList lastData;
            switch (tourNum) {
                case 4:  level = j; break;
                case 8:  {
                    if ( j < 3 ) level = j;
                    else level = j - 2;
                    if ( j == 2 ) last = true;
                    break;
                }
                default:  {
                    if ( j < 4 ) level = j;
                    else level = j - 3;
                    if ( j == 3 ) last = true;
                    break;
                }
            }

            int fnum = tourList.at(j)->get("num").toInt();
            for( int i = 0; i < fnum; i++ )
            {

                fightNum++;
                QString t = QString::number(fightNum);
                if ( !fightsMap.contains(t) )
                {
                    tVars.insert("{level}", QString::number(level));

                    tVars.insert("{red.num}", "");
                    tVars.insert("{red.classify}", "");
                    tVars.insert("{red.fio}", "");
                    tVars.insert("{red.geo}", "");
                    tVars.insert("{red.sum}", "");
                    tVars.insert("{red.p1}", "");
                    tVars.insert("{red.p2}", "");
                    tVars.insert("{red.p3}", "");

                    tVars.insert("{blue.num}", "");
                    tVars.insert("{blue.classify}", "");
                    tVars.insert("{blue.fio}", "");
                    tVars.insert("{blue.geo}", "");
                    tVars.insert("{blue.sum}", "");
                    tVars.insert("{blue.p1}", "");
                    tVars.insert("{blue.p2}", "");
                    tVars.insert("{blue.p3}", "");
                    rows << applyTemplateVars( j == 0 ? fightQualify_tmpl : last ? fightRoundLast_tmpl : fightRound_tmpl, tVars);
                    tVars.clear();
                }
                else
                {
                    Object *fight = fightsMap[ QString::number(fightNum) ];

                    QString redClassify("0");
                    QString blueClassify("0");

                    if ( fight->get("classify").toInt() > 0 )
                    {
                        Object *classify = classifyMap[fight->get("classify")];
                        if ( fight->get("winner").compare( fight->get("red") ) == 0 ) {
                            redClassify = classify->get("win");
                            blueClassify = classify->get("fail");
                        } else {
                            redClassify = classify->get("fail");
                            blueClassify = classify->get("win");
                        }
                    }


                    QStringList redScore = Object::toList(fight->get("red_score"));
                    QStringList blueScore = Object::toList(fight->get("blue_score"));

                    QString redScoreSum = QString::number(redScore.at(0).toInt() + redScore.at(1).toInt() + redScore.at(2).toInt());
                    QString blueScoreSum = QString::number(blueScore.at(0).toInt() + blueScore.at(1).toInt() + blueScore.at(2).toInt());

                    tVars.insert("{level}", QString::number(level));

                    if ( wrestlerIdMap.contains(fight->get("red")) )
                    {
                        Object *wrestler = wrestlerIdMap[ fight->get("red") ];
                        Object *geo = geoMap[ wrestler->get("geo") ];

                        tVars.insert("{red.num}", wrestlerIdPosMap[ wrestler->get("id") ]);
                        tVars.insert("{red.classify}", redClassify);
                        tVars.insert("{red.fio}", wrestler->get("title"));
                        tVars.insert("{red.geo}", geo->get("title"));
                        tVars.insert("{red.sum}", redScoreSum);
                        tVars.insert("{red.p1}", redScore.at(0));
                        tVars.insert("{red.p2}", redScore.at(1));
                        tVars.insert("{red.p3}", redScore.at(2));
                    } else {
                        tVars.insert("{red.num}", "");
                        tVars.insert("{red.classify}", "");
                        tVars.insert("{red.fio}", "");
                        tVars.insert("{red.geo}", "");
                        tVars.insert("{red.sum}", "");
                        tVars.insert("{red.p1}", "");
                        tVars.insert("{red.p2}", "");
                        tVars.insert("{red.p3}", "");
                        tVars.clear();
                    }

                    tVars.insert("{level}", QString::number(level));
                    if ( wrestlerIdMap.contains(fight->get("blue")) )
                    {
                        Object *wrestler = wrestlerIdMap[ fight->get("blue") ];
                        Object *geo = geoMap[ wrestler->get("geo") ];

                        tVars.insert("{blue.num}", wrestlerIdPosMap[ wrestler->get("id") ]);
                        tVars.insert("{blue.classify}", blueClassify);
                        tVars.insert("{blue.fio}", wrestler->get("title"));
                        tVars.insert("{blue.geo}", geo->get("title"));
                        tVars.insert("{blue.sum}", blueScoreSum);
                        tVars.insert("{blue.p1}", blueScore.at(0));
                        tVars.insert("{blue.p2}", blueScore.at(1));
                        tVars.insert("{blue.p3}", blueScore.at(2));
                    } else {
                        tVars.insert("{blue.num}", "");
                        tVars.insert("{blue.classify}", "");
                        tVars.insert("{blue.fio}", "");
                        tVars.insert("{blue.geo}", "");
                        tVars.insert("{blue.sum}", "");
                        tVars.insert("{blue.p1}", "");
                        tVars.insert("{blue.p2}", "");
                        tVars.insert("{blue.p3}", "");
                    }


                    if ( j == (tourList.size()-1) )
                    {
                        Object *wrestler = wrestlerIdMap[ fight->get("winner") ];
                        Object *geo = geoMap[ wrestler->get("geo") ];

                        tVars.insert("{winner.num}", wrestlerIdPosMap[ wrestler->get("id") ]);
                        tVars.insert("{winner.fio}", wrestler->get("title"));
                        tVars.insert("{winner.geo}", geo->get("title"));

                        rows << applyTemplateVars(final_tmpl, tVars);
                        tVars.clear();
                    } else {

                        if ( last ) {
                            lastData << applyTemplateVars( fightRoundLast_tmpl, tVars);
                            tVars.insert("{level}", QString::number(0));
                            rows << applyTemplateVars( fightQualify_tmpl, tVars);
                        }else {
                            rows << applyTemplateVars( j == 0 ? fightQualify_tmpl : fightRound_tmpl, tVars);
                        }

                        tVars.clear();
                    }
                }

                if ( tourNum == 64 ) {
                    if (i == (fnum/4)-1) {
                        pVars.insert( QString("{fights:%1/4}").arg(fnum), rows.join("\n"));

                        QString k = QString("{fights:%1}").arg(fnum);
                        QString a = pVars.contains(k) ? pVars[k] : QString("");
                        pVars.insert( k, a + rows.join("\n"));

                        rows.clear();

                        if ( !lastData.isEmpty()) {
                            pVars.insert( QString("{fights-last:%1/4}").arg(fnum), lastData.join("\n"));
                            lastData.clear();
                        }
                    }
                    if (i == (fnum/2)-1) {
                        pVars.insert( QString("{fights:%1/3}").arg(fnum), rows.join("\n"));

                        QString k = QString("{fights:%1}").arg(fnum);
                        QString a = pVars.contains(k) ? pVars[k] : QString("");
                        pVars.insert( k, a + rows.join("\n"));

                        rows.clear();

                        if ( !lastData.isEmpty()) {
                            pVars.insert( QString("{fights-last:%1/3}").arg(fnum), lastData.join("\n"));
                            lastData.clear();
                        }
                    }
                    if (i == ((3*fnum)/4)-1) {
                        pVars.insert( QString("{fights:%1/2}").arg(fnum), rows.join("\n"));

                        QString k = QString("{fights:%1}").arg(fnum);
                        QString a = pVars.contains(k) ? pVars[k] : QString("");
                        pVars.insert( k, a + rows.join("\n"));
                        rows.clear();

                        if ( !lastData.isEmpty()) {
                            pVars.insert( QString("{fights-last:%1/2}").arg(fnum), lastData.join("\n"));
                            lastData.clear();
                        }
                    }
                    if (i == (fnum-1) ) {
                        pVars.insert( QString("{fights:%1/1}").arg(fnum), rows.join("\n"));

                        QString k = QString("{fights:%1}").arg(fnum);
                        QString a = pVars.contains(k) ? pVars[k] : QString("");
                        pVars.insert( k, a + rows.join("\n"));

                        rows.clear();

                        if ( !lastData.isEmpty()) {
                            pVars.insert( QString("{fights-last:%1/1}").arg(fnum), lastData.join("\n"));
                            lastData.clear();
                        }
                    }
                }
                if ( tourNum == 32 ) {
                    if( i == (fnum/2)-1 ) {
                        pVars.insert( QString("{fights:%1/2}").arg(fnum), rows.join("\n"));

                        QString k = QString("{fights:%1}").arg(fnum);
                        QString a = pVars.contains(k) ? pVars[k] : QString("");
                        if ( last || fnum == 2 ) {
                            pVars.insert( k, a + rows.join("\n"));
                        }
                        rows.clear();

                        if ( !lastData.isEmpty()) {
                            pVars.insert( QString("{fights-last:%1/2}").arg(fnum), lastData.join("\n"));
                            lastData.clear();
                        }
                    }
                }
            }

            QString k = QString("{fights:%1}").arg(fnum);
            QString a = pVars.contains(k) ? pVars[k] : QString("");
            pVars.insert( k, a + rows.join("\n"));
            rows.clear();

            if ( !lastData.isEmpty()) {
                pVars.insert( QString("{fights-last:%1}").arg(fnum), lastData.join("\n"));
                lastData.clear();
            }
        }

        qDeleteAll(fightsMap);
        qDeleteAll(geoMap);
        qDeleteAll(tl);
        qDeleteAll(wrestlerList);
    }