private void RenderFitProportionalScript()
 {
     if (base.NeedResizeImages)
     {
         WriteStream(HTMLRendererResources.GetBytes("FitProportional.js"));
         WriteStream(HTML5Renderer.m_standardLineBreak);
         string text = m_deviceInfo.JavascriptPrefixId + "FitProp";
         WriteStream("var ");
         WriteStream(text);
         WriteStream(" = new Microsoft_ReportingServices_HTMLRenderer_FitProportional();");
         WriteStream(HTML5Renderer.m_standardLineBreak);
         if (m_htmlFragment)
         {
             WriteStream("function ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("ResizeImage(o){ " + text + ".ResizeImage(o);}");
             WriteStream(HTML5Renderer.m_standardLineBreak);
         }
         WriteStream("function ");
         WriteStream(m_deviceInfo.JavascriptPrefixId);
         WriteStream("ResizeImages(){ " + text + ".PollResizeImages(\"");
         WriteAttrEncoded(m_deviceInfo.HtmlPrefixId);
         WriteStream("oReportDiv");
         WriteStream("\"); }");
         WriteStream(HTML5Renderer.m_standardLineBreak);
     }
 }
        internal void RenderFixedHeaderScripts()
        {
            if (m_fixedHeaders == null || m_fixedHeaders.Count == 0 || !m_hasOnePage)
            {
                WriteStream("function ");
                WriteStream(m_deviceInfo.JavascriptPrefixId);
                WriteStream("CreateFixedHeaders() {}");
                WriteStream(HTML5Renderer.m_standardLineBreak);
                return;
            }
            WriteStream(HTMLRendererResources.GetBytes("FixedHeader.js"));
            StringBuilder stringBuilder = new StringBuilder();
            string        text          = m_deviceInfo.JavascriptPrefixId + "FixedHeader";

            stringBuilder.Append(text);
            stringBuilder.Append(" = new Microsoft_ReportingServices_HTMLRenderer_FixedHeader(");
            stringBuilder.Append("\"" + m_deviceInfo.HtmlPrefixId + "oReportDiv\",");
            stringBuilder.Append("\"" + m_deviceInfo.HtmlPrefixId + "oReportCell\",");
            stringBuilder.Append("\"" + m_deviceInfo.HtmlPrefixId + "oReportDiv\",");
            stringBuilder.Append("\"" + m_deviceInfo.HtmlPrefixId + "\");");
            stringBuilder.Append("function ");
            stringBuilder.Append(m_deviceInfo.JavascriptPrefixId);
            stringBuilder.Append("CreateFixedHeaders(){");
            StringBuilder stringBuilder2 = new StringBuilder();

            RenderCreateFixedHeaderFunction(m_deviceInfo.JavascriptPrefixId, text, stringBuilder, stringBuilder2, createHeadersWithArray: false);
            WriteStream(stringBuilder2.ToString());
            WriteStream(stringBuilder.ToString());
            WriteStream("}");
            WriteStream(HTML5Renderer.m_standardLineBreak);
        }
Exemplo n.º 3
0
 static ROMReport()
 {
     m_productVersion = "0.0.0.0";
     m_encoding       = Encoding.UTF8;
     m_imageMap       = new Dictionary <string, byte[]>();
     m_productVersion = GetProductVersion();
     HTMLRendererResources.PopulateResources(m_imageMap, m_productVersion);
 }
Exemplo n.º 4
0
        public static void GetRenderingResource(CreateAndRegisterStream createAndRegisterStreamCallback, string imageName)
        {
            if (imageName == null)
            {
                return;
            }
            imageName = imageName.TrimStart('/');
            string text = ParseFromUrl(imageName);

            if (text == null)
            {
                return;
            }
            string mimeType = "";

            using (Stream stream = HTMLRendererResources.GetStream(text, out mimeType))
            {
                if (stream != null)
                {
                    Stream sink = createAndRegisterStreamCallback(text, "gif", null, mimeType, willSeek: false, StreamOper.CreateAndRegister);
                    Utility.CopyStream(stream, sink);
                }
            }
        }
 private void RenderFinalScript()
 {
     if (!m_deviceInfo.AllowScript)
     {
         return;
     }
     WriteStream("<script language=\"javascript\" type=\"text/javascript\">");
     WriteStream(HTML5Renderer.m_standardLineBreak);
     WriteStream("//<![CDATA[");
     WriteStream(HTML5Renderer.m_standardLineBreak);
     if (HasFindStringScript)
     {
         WriteStream("window.location.replace('#oHit0');");
     }
     if (HasInteractiveScript)
     {
         if (m_report.ShowHideToggle != null && m_deviceInfo.IsBrowserIE)
         {
             WriteStream("var ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("showHideId=\"");
             StringBuilder stringBuilder = new StringBuilder();
             HTML5Renderer.QuoteString(stringBuilder, m_deviceInfo.HtmlPrefixId + m_report.ShowHideToggle);
             WriteStreamEncoded(stringBuilder.ToString());
             WriteStream(HTMLElements.m_quote);
             WriteStream(HTML5Renderer.m_standardLineBreak);
             WriteStream("function ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("GoToShowHideToggle(){if (document.getElementById(");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("showHideId) != null)window.location.replace(\"#\"+ ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("showHideId);}");
             WriteStream(HTML5Renderer.m_standardLineBreak);
         }
         if (m_pageWithSortClicks)
         {
             WriteStream("var ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("sortUrlBase=\"");
             StringBuilder stringBuilder2 = new StringBuilder();
             HTML5Renderer.QuoteString(stringBuilder2, BuildAbsoluteBookmarkOrSortBaseUrl(isSort: true));
             WriteStream(stringBuilder2.ToString());
             WriteStream(HTMLElements.m_quote);
             WriteStream(HTML5Renderer.m_standardLineBreak);
             WriteStream("var ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("sortDirection=\"&rs:");
             WriteStream("SortDirection");
             WriteStream("=");
             WriteStream(HTMLElements.m_quote);
             WriteStream(HTML5Renderer.m_standardLineBreak);
             WriteStream("var ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("clearSort=\"&rs:");
             WriteStream("ClearSort");
             WriteStream("=");
             WriteStream(HTMLElements.m_quote);
             WriteStream(HTML5Renderer.m_standardLineBreak);
             WriteStream("function ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("Sort(id, direction){var clear=true;");
             WriteStream("if (window.event && window.event.shiftKey) clear=false;");
             WriteStream("var sortUrl=");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("sortUrlBase + id + ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("sortDirection + direction + ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("clearSort;");
             WriteStream("if (clear) ");
             WriteStream("window.location.replace(sortUrl + \"True\");");
             WriteStream("else ");
             WriteStream("window.location.replace(sortUrl + \"False\");}");
         }
         if (m_report.SortItem != null)
         {
             WriteStream("var ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("sortId=\"");
             StringBuilder stringBuilder3 = new StringBuilder();
             HTML5Renderer.QuoteString(stringBuilder3, m_deviceInfo.HtmlPrefixId + m_report.SortItem);
             WriteStreamEncoded(stringBuilder3.ToString());
             WriteStream(HTMLElements.m_quote);
             WriteStream(HTML5Renderer.m_standardLineBreak);
             WriteStream("function ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("GoToSortItem(){if (document.getElementById(");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("sortId) != null)window.location.replace(\"#\"+ ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("sortId);}");
             WriteStream(HTML5Renderer.m_standardLineBreak);
         }
         if (m_report.HasBookmarks || m_deviceInfo.NavigationId != null)
         {
             WriteStream("function ");
             WriteStream(m_deviceInfo.JavascriptPrefixId);
             WriteStream("GoToBookmark(id){window.location.replace(\"#\"+id);}");
             WriteStream(HTML5Renderer.m_standardLineBreak);
             if (m_pageWithBookmarkLinks)
             {
                 if (m_pageBookmarks == null || m_pageBookmarks.Count < 1)
                 {
                     WriteStream("var ");
                     WriteStream(m_deviceInfo.JavascriptPrefixId);
                     WriteStream("bookmarkIds = [];");
                 }
                 else
                 {
                     WriteStream("var ");
                     WriteStream(m_deviceInfo.JavascriptPrefixId);
                     WriteStream("bookmarkIds = new Array(" + m_pageBookmarks.Count + ");");
                     ICollection keys = m_pageBookmarks.Keys;
                     foreach (string item in keys)
                     {
                         WriteStream(m_deviceInfo.JavascriptPrefixId + "bookmarkIds[\"" + item + "\"] = \"" + m_pageBookmarks[item] + "\";");
                     }
                 }
                 WriteStream(HTML5Renderer.m_standardLineBreak);
                 WriteStream("var ");
                 WriteStream(m_deviceInfo.JavascriptPrefixId);
                 WriteStream("bookmarkUrlBase=\"");
                 StringBuilder stringBuilder4 = new StringBuilder();
                 HTML5Renderer.QuoteString(stringBuilder4, BuildAbsoluteBookmarkOrSortBaseUrl(isSort: false));
                 WriteStream(stringBuilder4.ToString());
                 WriteStream(HTMLElements.m_quote);
                 WriteStream(";");
                 WriteStream(HTML5Renderer.m_standardLineBreak);
                 WriteStream("function ");
                 WriteStream(m_deviceInfo.JavascriptPrefixId);
                 WriteStream("GoVisibleBookmark(idLink){if (");
                 WriteStream(m_deviceInfo.JavascriptPrefixId);
                 WriteStream("bookmarkIds == null) return;");
                 WriteStream("var isHref=true;");
                 WriteStream("if (bookmarkIds[idLink] != null) {");
                 WriteStream(m_deviceInfo.JavascriptPrefixId);
                 WriteStream("GoToBookmark(bookmarkIds[idLink]);}");
                 WriteStream("else{window.location.replace(");
                 WriteStream(m_deviceInfo.JavascriptPrefixId);
                 WriteStream("bookmarkUrlBase + '&rc:BookmarkId=' + idLink);}}");
             }
         }
     }
     WriteStream(HTML5Renderer.m_standardLineBreak);
     WriteStream(HTMLRendererResources.GetBytes("Common.js"));
     WriteStream(HTML5Renderer.m_standardLineBreak);
     RenderFitProportionalScript();
     RenderFixedHeaderScripts();
     if (m_needsCanGrowFalseScript)
     {
         WriteStream(HTMLRendererResources.GetBytes("CanGrowFalse.js"));
     }
     if (m_emitImageConsolidationScaling)
     {
         WriteStream(HTMLRendererResources.GetBytes("ImageConsolidation.js"));
     }
     WriteStream("//]]>");
     WriteStream(HTML5Renderer.m_standardLineBreak);
     WriteStream("</script>");
 }
        private void RenderHead()
        {
            string text = null;

            if (m_mainStream != null)
            {
                m_mainStream.Flush();
            }
            if (!m_htmlFragment)
            {
                if (m_rplReport.Location != null)
                {
                    text = m_rplReport.Location;
                    if (text.Length > 0)
                    {
                        WriteStream("<META HTTP-EQUIV=\"Location\" CONTENT=\"");
                        WriteAttrEncoded(text);
                        WriteStream(HTMLElements.m_closeTag);
                        WriteStream("<META HTTP-EQUIV=\"Uri\" CONTENT=\"");
                        WriteAttrEncoded(text);
                        WriteStream(HTMLElements.m_closeTag);
                    }
                }
                string description = m_rplReport.Description;
                if (description != null && 0 < description.Length)
                {
                    text = description;
                    WriteStream("<META NAME=\"Description\" CONTENT=\"");
                    WriteAttrEncoded(text);
                    WriteStream(HTMLElements.m_closeTag);
                }
                string author = m_rplReport.Author;
                if (author != null && 0 < author.Length)
                {
                    text = author;
                    WriteStream("<META NAME=\"Author\" CONTENT=\"");
                    WriteAttrEncoded(text);
                    WriteStream(HTMLElements.m_closeTag);
                }
                int autoRefresh = m_rplReport.AutoRefresh;
                if (0 < autoRefresh)
                {
                    WriteStream("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"");
                    WriteStream(autoRefresh.ToString(CultureInfo.InvariantCulture));
                    WriteStream(";url=");
                    string reportUrl = m_report.GetReportUrl(addParams: false);
                    CatalogItemUrlBuilder catalogItemUrlBuilder = new CatalogItemUrlBuilder(reportUrl);
                    catalogItemUrlBuilder.AppendCatalogParameter("ResetSession", "True");
                    if (m_serverParams["SessionID"] != null)
                    {
                        catalogItemUrlBuilder.AppendCatalogParameter("SessionID", m_serverParams["SessionID"]);
                    }
                    catalogItemUrlBuilder.AppendRenderingParameters(m_rawDeviceInfo);
                    if (m_allPages)
                    {
                        catalogItemUrlBuilder.AppendRenderingParameter("Section", "0");
                    }
                    else
                    {
                        catalogItemUrlBuilder.AppendRenderingParameter("Section", m_pageNum.ToString(CultureInfo.InvariantCulture));
                    }
                    if (m_deviceInfo.HtmlPrefixId != null && m_deviceInfo.HtmlPrefixId.Length > 0)
                    {
                        catalogItemUrlBuilder.AppendRenderingParameter("PrefixId", m_deviceInfo.HtmlPrefixId);
                    }
                    WriteAttrEncoded(ReplaceRoot(new Uri(catalogItemUrlBuilder.ToString()).AbsoluteUri));
                    WriteStream(HTMLElements.m_closeQuote);
                }
                WriteStream("<META HTTP-EQUIV=\"Last-Modified\" CONTENT=\"");
                WriteStream(m_rplReport.ExecutionTime.ToUniversalTime().ToString(CultureInfo.InvariantCulture));
                WriteStream(HTMLElements.m_closeQuote);
                if (m_parameters != null)
                {
                    object obj = null;
                    foreach (ReportParameter parameter in m_parameters)
                    {
                        if (parameter.Name != null && parameter.Instance != null)
                        {
                            WriteStream("<META NAME=\"");
                            WriteAttrEncoded(parameter.Name);
                            WriteStream("\" CONTENT=\"");
                            obj = parameter.Instance.Value;
                            if (obj != null)
                            {
                                WriteAttrEncoded(obj.ToString());
                            }
                            WriteStream(HTMLElements.m_closeQuote);
                        }
                    }
                }
                WriteStream("<META NAME=\"Generator\" CONTENT=\"Microsoft Report 8.0 \"/>");
                WriteStream("<META NAME=\"Originator\" CONTENT=\"Microsoft Report 8.0 \"/>");
                WriteStyle(HTMLRendererResources.GetBytes("jqueryui.min.css"));
                WriteStyle(HTMLRendererResources.GetBytes("Html5Renderer.css"));
                WriteScript(HTMLRendererResources.GetBytes("jquery.min.js"));
                WriteScript(HTMLRendererResources.GetBytes("Html5Renderer.js"));
                WriteScript(HTMLRendererResources.GetBytes("Html5RenderingExtensionJs.js"));
            }
            RenderHTMLHead();
        }
Exemplo n.º 7
0
        public void RenderReportItem(RPLElement reportItem, RPLItemMeasurement measurement, StyleContext styleContext, ref int borderContext, bool renderId, bool treatAsTopLevel)
        {
            RPLImageProps    rPLImageProps    = (RPLImageProps)reportItem.ElementProps;
            RPLImagePropsDef rPLImagePropsDef = (RPLImagePropsDef)rPLImageProps.Definition;

            RPLFormat.Sizings sizing = rPLImagePropsDef.Sizing;
            RPLImageData      image  = rPLImageProps.Image;
            float             innerContainerHeightSubtractBorders = html5Renderer.GetInnerContainerHeightSubtractBorders(measurement, rPLImageProps.Style);
            float             innerContainerWidthSubtractBorders  = html5Renderer.GetInnerContainerWidthSubtractBorders(measurement, rPLImageProps.Style);
            string            text      = html5Renderer.GetImageUrl(useSessionId: true, image);
            string            ariaLabel = null;
            string            role      = null;
            string            tooltip   = html5Renderer.GetTooltip(rPLImageProps);

            if (treatAsTopLevel)
            {
                ariaLabel = (string.IsNullOrEmpty(tooltip) ? RenderRes.AccessibleImageLabel : RenderResWrapper.AccessibleImageNavigationGroupLabel(tooltip));
                role      = HTMLElements.m_navigationRole;
            }
            string input = string.IsNullOrEmpty(tooltip) ? RenderRes.AccessibleImageLabel : tooltip;

            input = AntiXssEncoder.XmlAttributeEncode(input);
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            if (html5Renderer.m_elementExtender.ShouldApplyToElement(treatAsTopLevel))
            {
                dictionary.Add(HTMLElements.m_reportItemDataName, html5Renderer.m_elementExtender.ApplyToElement());
                dictionary.Add(HTMLElements.m_reportItemCustomAttrStr, html5Renderer.GetReportItemPath(rPLImagePropsDef.Name));
            }
            bool flag = rPLImageProps.ActionImageMapAreas != null && rPLImageProps.ActionImageMapAreas.Length != 0;

            if (flag)
            {
                string s = HTMLElements.m_hashTag + html5Renderer.m_deviceInfo.HtmlPrefixId + HTMLElements.m_mapPrefixString + rPLImageProps.UniqueName;
                dictionary.Add(HTMLElements.m_useMapName, HttpUtility.HtmlAttributeEncode(s));
            }
            if (html5Renderer.HasAction(rPLImageProps.ActionInfo))
            {
                RenderElementHyperlink(rPLImageProps.Style, rPLImageProps.ActionInfo.Actions[0]);
            }
            if (!styleContext.InTablix)
            {
                if (sizing == RPLFormat.Sizings.AutoSize)
                {
                    styleContext.RenderMeasurements = false;
                }
                html5Renderer.WriteStream(HTMLElements.m_openDiv);
                html5Renderer.RenderReportItemStyle(reportItem, rPLImageProps, rPLImagePropsDef, measurement, styleContext, ref borderContext, rPLImagePropsDef.ID);
                html5Renderer.WriteStream(HTMLElements.m_closeBracket);
            }
            if (string.IsNullOrEmpty(text))
            {
                text = "data:image/gif;base64," + Convert.ToBase64String(HTMLRendererResources.GetBytes("Blank.gif"));
            }
            HtmlElement htmlElement;

            switch (sizing)
            {
            case RPLFormat.Sizings.FitProportional:
                htmlElement = new FitProportionalImageElement(text, innerContainerWidthSubtractBorders, role, input, ariaLabel, dictionary);
                break;

            case RPLFormat.Sizings.Fit:
                htmlElement = new FitImageElement(text, role, input, ariaLabel, dictionary);
                break;

            case RPLFormat.Sizings.Clip:
                htmlElement = new ClipImageElement(text, role, input, ariaLabel, dictionary);
                break;

            default:
                htmlElement = new OriginalSizeImageElement(text, role, input, ariaLabel, dictionary);
                break;
            }
            htmlElement.Render(new Html5OutputStream(html5Renderer));
            if (!styleContext.InTablix)
            {
                html5Renderer.WriteStream(HTMLElements.m_closeDiv);
            }
            if (html5Renderer.HasAction(rPLImageProps.ActionInfo))
            {
                html5Renderer.WriteStream(HTMLElements.m_closeA);
            }
            if (flag)
            {
                html5Renderer.RenderImageMapAreas(rPLImageProps.ActionImageMapAreas, measurement.Width, measurement.Height, rPLImageProps.UniqueName, 0, 0);
            }
        }