const void *getResult(const void *firstRow) { IHThorAggregateArg *helper = (IHThorAggregateArg *)baseHelper.get(); unsigned numPartialResults = container.queryJob().querySlaves(); if (1 == numPartialResults) return firstRow; CThorExpandingRowArray partialResults(*this, this, true, stableSort_none, true, numPartialResults); if (hadElement) partialResults.setRow(0, firstRow); --numPartialResults; size32_t sz; while (numPartialResults--) { CMessageBuffer msg; rank_t sender; if (!receiveMsg(msg, RANK_ALL, mpTag, &sender)) return NULL; if (abortSoon) return NULL; msg.read(sz); if (sz) { assertex(NULL == partialResults.query(sender-1)); CThorStreamDeserializerSource mds(sz, msg.readDirect(sz)); RtlDynamicRowBuilder rowBuilder(queryRowAllocator()); size32_t sz = queryRowDeserializer()->deserialize(rowBuilder, mds); partialResults.setRow(sender-1, rowBuilder.finalizeRowClear(sz)); } } RtlDynamicRowBuilder rowBuilder(queryRowAllocator(), false); bool first = true; numPartialResults = container.queryJob().querySlaves(); unsigned p=0; for (;p<numPartialResults; p++) { const void *row = partialResults.query(p); if (row) { if (first) { first = false; sz = cloneRow(rowBuilder, row, queryRowMetaData()); } else sz = helper->mergeAggregate(rowBuilder, row); } } if (first) sz = helper->clearAggregate(rowBuilder); return rowBuilder.finalizeRowClear(sz); }
void WSuggestionPopup::doFilter(std::string input) { filtering_ = true; filterModel_.emit(WT_USTRING::fromUTF8(input)); filtering_ = false; /* * We do not use this->doJavaScript() because that would be rendered * before the updated children (suggestions) are rendered. */ WApplication::instance()-> doJavaScript("jQuery.data(" + jsRef() + ", 'obj').filtered(" + WWebWidget::jsStringLiteral(input) + "," + (partialResults() ? "1" : "0") + ");"); }
void WSuggestionPopup::defineJavaScript() { WApplication *app = WApplication::instance(); const char *THIS_JS = "js/WSuggestionPopup.js"; LOAD_JAVASCRIPT(app, THIS_JS, "WSuggestionPopup", wtjs1); LOAD_JAVASCRIPT(app, THIS_JS, "WSuggestionPopupStdMatcher", wtjs2); setJavaScriptMember(" WSuggestionPopup", "new " WT_CLASS ".WSuggestionPopup(" + app->javaScriptClass() + "," + jsRef() + "," + replacerJS_ + "," + matcherJS_ + "," + boost::lexical_cast<std::string> (std::max(0, filterLength_)) + "," + boost::lexical_cast<std::string>(partialResults()) + "," + boost::lexical_cast<std::string>(defaultValue_) + ");"); }