void Targets::printTargetImages (rts2db::Target *tar, XmlRpc::HttpParams *params, const char* &response_type, char* &response, size_t &response_length) { std::ostringstream _os; int pageno = params->getInteger ("p", 1); int pagesiz = params->getInteger ("s", 40); if (pageno <= 0) pageno = 1; int istart = (pageno - 1) * pagesiz; int ie = istart + pagesiz; int in = 0; int prevsize = params->getInteger ("ps", 128); const char * label = params->getString ("lb", getServer ()->getDefaultImageLabel ()); std::string lb (label); XmlRpc::urlencode (lb); const char * label_encoded = lb.c_str (); float quantiles = params->getDouble ("q", DEFAULT_QUANTILES); int chan = params->getInteger ("chan", getServer ()->getDefaultChannel ()); int colourVariant = params->getInteger ("cv", DEFAULT_COLOURVARIANT); Previewer preview = Previewer (getServer ()); printHeader (_os, (std::string ("Images of target ") + tar->getTargetName ()).c_str (), preview.style ()); printTargetHeader (tar->getTargetID (), "images", _os); preview.script (_os, label_encoded, quantiles, chan, colourVariant); _os << "<p>"; preview.form (_os, pageno, prevsize, pagesiz, chan, label, quantiles, colourVariant); _os << "</p><p>"; rts2db::ImageSetTarget is = rts2db::ImageSetTarget (tar->getTargetID ()); is.load (); if (is.size () > 0) { _os << "<p>"; for (rts2db::ImageSetTarget::iterator iter = is.begin (); iter != is.end (); iter++) { in++; if (in <= istart) continue; if (in > ie) break; preview.imageHref (_os, in, (*iter)->getAbsoluteFileName (), prevsize, label_encoded, quantiles, chan, colourVariant); } _os << "</p>"; } else { _os << "<p>There isn't any image for target " << tar->getTargetName (); } _os << "</p><p>Page "; int i; for (i = 1; i <= ((int) is.size ()) / pagesiz; i++) preview.pageLink (_os, i, pagesiz, prevsize, label_encoded, i == pageno, quantiles, chan, colourVariant); if (in % pagesiz) preview.pageLink (_os, i, pagesiz, prevsize, label_encoded, i == pageno, quantiles, chan, colourVariant); _os << "</p>"; printFooter (_os); response_type = "text/html"; response_length = _os.str ().length (); response = new char[response_length]; memcpy (response, _os.str ().c_str (), response_length); }
void Night::printAllImages (int year, int month, int day, XmlRpc::HttpParams *params, char* &response, size_t &response_length) { std::ostringstream _os; std::ostringstream title; title << "Observations"; if (year > 0) { title << " for " << year; if (month > 0) { title << "-" << month; if (day > 0) { title << "-" << day; } } } printHeader (_os, title.str ().c_str ()); int pageno = params->getInteger ("p", 1); int pagesiz = params->getInteger ("s", 40); if (pageno <= 0) pageno = 1; int istart = (pageno - 1) * pagesiz; int ie = istart + pagesiz; int in = 0; int prevsize = params->getInteger ("ps", 128); const char * label = params->getString ("lb", getServer ()->getDefaultImageLabel ()); std::string lb (label); XmlRpc::urlencode (lb); const char * label_encoded = lb.c_str (); float quantiles = params->getDouble ("q", DEFAULT_QUANTILES); int chan = params->getInteger ("chan", getServer ()->getDefaultChannel ()); int colourVariant = params->getInteger ("cv", DEFAULT_COLOURVARIANT); time_t from; int64_t duration; getNightDuration (year, month, day, from, duration); time_t end = from + duration; Previewer preview = Previewer (getServer ()); preview.script (_os, label_encoded, quantiles, chan, colourVariant); _os << "<p>"; preview.form (_os, pageno, prevsize, pagesiz, chan, label, quantiles, colourVariant); _os << "</p><p>"; rts2db::ImageSetDate is = rts2db::ImageSetDate (from, end); is.load (); for (rts2db::ImageSetDate::iterator iter = is.begin (); iter != is.end (); iter++) { in++; if (in <= istart) continue; if (in > ie) break; preview.imageHref (_os, in, (*iter)->getAbsoluteFileName (), prevsize, label_encoded, quantiles, chan, colourVariant); } _os << "</p><p>Page "; int i; for (i = 1; i <= ((int) is.size ()) / pagesiz; i++) preview.pageLink (_os, i, pagesiz, prevsize, label_encoded, i == pageno, quantiles, chan, colourVariant); if (in % pagesiz) preview.pageLink (_os, i, pagesiz, prevsize, label_encoded, i == pageno, quantiles, chan, colourVariant); _os << "</p></body></html>"; response_length = _os.str ().length (); response = new char[response_length]; memcpy (response, _os.str ().c_str (), response_length); }