Results 1 to 5 of 5
  1. #1
    Join Date
    Dec 2006
    Posts
    3,970
    Tokens
    0

    Latest Awards:

    Default [JS] what does this do? [+2REP]

    K, the file was called DATACONN.HTC when you open it in notepad it says;

    Code:
    <public:component name=odchandler>
    <public:method name="maxRowChange"></method>
    <public:method name="display"></method>
    <public:attach event="ondocumentready" HANDLER="display"/>
    <script language="javascript">
    var iMAXROWSTOSHOW_c = 1;
    var iALL_c = 2;
    var iMAXDEFAULTTOTALS_c = 3;
    var iNUMROWSDEFAULT_c = 25;
    var ptPreview;
    var objPT;
    var adorsTable;
     
    function display() {
      var sHTML, sProgID, sCubeName, sConnectionString, sCommandType, sCommandText;
      var collProgIDTags, collXMLTags, xmldocODC;
      var objHR;
    
      collProgIDTags = window.document.getElementsByName("ProgID")
      // if there is no progid, bail out.
      if (collProgIDTags.length == 0) { return; }
      sProgID = collProgIDTags[0].content;
      objPT = window.document.createElement("OBJECT")
      objPT.classid = "clsid:0002E55A-0000-0000-C000-000000000046"
      objPT.width = "100%"
      objPT.height = "100%"
      objPT.AutoFit = false;
      objPT.style.margin = "1px"
      objPT.id = "ptPreview";
      xmldocODC = window.document.getElementById("msodc");
      if (xmldocODC == null) { return; }
      element.appendChild(objPT);     // add the PT to the page
      element.style.backgroundColor="buttonface";
      ptPreview = objPT.object; 
      switch (sProgID) {
        case "ODC.Table":
          sCommandType = xmldocODC.documentElement.selectSingleNode("odc:Connection/odc:CommandType").text
          sCommandText = xmldocODC.documentElement.selectSingleNode("odc:Connection/odc:CommandText").text
          sConnectionString = xmldocODC.documentElement.selectSingleNode("odc:Connection/odc:ConnectionString").text
          setTable(sConnectionString, sCommandText, sCommandType); 
          break;
      
        case "ODC.Database":
          sConnectionString = xmldocODC.documentElement.selectSingleNode("odc:Connection/odc:ConnectionString").text
          setDatabase(sConnectionString);
          break;
       
        case "ODC.Cube":
          sCubeName = xmldocODC.documentElement.selectSingleNode("odc:Connection/odc:CommandText").text
          sConnectionString = xmldocODC.documentElement.selectSingleNode("odc:Connection/odc:ConnectionString").text
          setCube(sConnectionString, sCubeName);
          break;
        }
      }
    function setTable(sConnectionString, sCommandText, sCommandType) {
      sCommandType = sCommandType.toLowerCase();
      ptPreview.ConnectionString = sConnectionString
      ptPreview.DataSource.MaxRecords = iNUMROWSDEFAULT_c;
      if (sCommandType.indexOf("default") >= 0 || sCommandType.indexOf("sql") >= 0 ) {
        ptPreview.CommandText = sCommandText
        }
      else if (sCommandType.indexOf("table") >= 0) {
        ptPreview.DataMember = scrubTableName(sConnectionString, sCommandText);
        }
    
      try {
        ptPreview.ActiveView.AutoLayout();
        }
      catch (e) {
        if (e.description.length > 0) {
          alert (e.description);
          }
        }
      // if this is a "table" from an OLAP provider, cubeify.  Otherwise, add the row count dropdown.
      if (sCommandText.indexOf("].[")>=0) {
        showDefaultCubeView();
        }
      else {
        addMaxRowDropdown();
        }
      configurePTPreview();
      }
    function scrubTableName(sConnectionString, sDataMember) {
      var sOut;
      var i;
      var sConnectionStringLower = sConnectionString.toLowerCase();
      sOut = sDataMember;
      if (sConnectionStringLower.indexOf("dsn=excel files")>=0 || 
          sConnectionStringLower.indexOf("dsn=ms access database")>=0 ||
          sConnectionStringLower.indexOf("microsoft access")>=0) {
          sOut = replace(sOut, "`", "")  // ODBC providers, like Excel and Access, fail when called via OLE-DB if there 
                                         // are these single quotes.
          }
     
      // customize the connection string for the picky MS ODBC Text Driver
      if (sConnectionStringLower.indexOf("driverid=27")>=0) {
        i = sOut.lastIndexOf("`");
        if (i>=0) {
          i = sOut.lastIndexOf("`", i-1);  
          if (i>=0) {
            sOut = sOut.substring(i, sOut.length);
            sOut = replace(sOut, "`", "\"");
            }
          }
        }
      return sOut;
      }
    function setCube(sConnectionString, sCubeName) {
      var i, iNumDefaultTotals
      ptPreview.ActiveView.Titlebar.Visible = false;
     
      ptPreview.ConnectionString = sConnectionString;
      ptPreview.DataMember = sCubeName;
      showDefaultCubeView();
      }
    function showDefaultCubeView() {
      ptPreview.DisplayFieldList = true;
      
      // give the PT focus; otherwise, the field list doesn't show until you click on PT.
      objPT.focus();
      with (ptPreview.ActiveView) {
        if (Totals.count < iMAXDEFAULTTOTALS_c) {
          iNumDefaultTotals = Totals.count
          }
        else {
          iNumDefaultTotals = iMAXDEFAULTTOTALS_c
          }
        for (i=0; i<iNumDefaultTotals; i++) {
          DataAxis.InsertTotal(Totals(i))
          }   
        }
      }
    function setDatabase(sConnectionString) {
      var adoconn;
      var adors;
     
      configurePTPreview();
      adoconn = new ActiveXObject("ADODB.Connection")
      adoconn.ConnectionString = sConnectionString;
      adoconn.CursorLocation = 3;  // 3 == adUseClient
      adoconn.Properties("Prompt") = 2;
      try {
        adoconn.Open();
        }
      catch (exc) {
        // bail if the user cancels a login
        return; 
        }
      adors = adoconn.OpenSchema(20);
      ptPreview.DataSource = adors;
      with (ptPreview.ActiveView) {
        DataAxis.InsertFieldSet(FieldSets("TABLE_NAME"))
        DataAxis.InsertFieldSet(FieldSets("TABLE_SCHEMA"))
        DataAxis.InsertFieldSet(FieldSets("TABLE_TYPE"))
        DataAxis.InsertFieldSet(FieldSets("DESCRIPTION"))
        // filter to show tables, views, cubes, virtual cubes only
        FieldSets("TABLE_TYPE").AllIncludeExclude = ptPreview.Constants.plAllExclude;
        FieldSets("TABLE_TYPE").Fields(0).IncludedMembers = Array ("TABLE","VIEW","CUBE","VIRTUAL CUBE")
        
        //sort views first to be consistent with Select Tables dialog in XL
        FieldSets("TABLE_TYPE").Fields(0).SortDirection = ptPreview.Constants.plSortDirectionAscending;
        }
      }
    function configurePTPreview() {
      with (ptPreview.ActiveView) {
        Titlebar.Visible = false
        RowAxis.Label.Visible = false   
        ColumnAxis.Label.Visible = false   
        FilterAxis.Label.Visible = false
        }
      }
    function addMaxRowDropdown() {
      var spanPreDropdown, spanPostDropdown;
      var selDropdown;
      var optTemp;
      var tdDropdownArea;
      // look for the TD that gets inserted via script in the ODC file.
      tdDropdownArea = window.document.getElementById("tdTableDropdown")
      if (tdDropdownArea != null) {
        with (tdDropdownArea.style) {
          fontFamily = "Arial"
          fontSize = "x-small"
          textAlign = "right"
          }
        
        spanPreDropdown = window.document.createElement("SPAN");
        spanPreDropdown.style.fontFamily = getLocalizedFontName();
        spanPreDropdown.style.fontSize = getLocalizedFontSize() + "pt"; 
        spanPreDropdown.innerHTML = replace(getLocalizedString(iMAXROWSTOSHOW_c), " ", "&nbsp;") + "&nbsp;&nbsp;";
        selDropdown = window.document.createElement("SELECT");
      
        // align dropdown with baseline of text
        selDropdown.style.position = "relative"
        selDropdown.style.fontFamily = getLocalizedFontName();
        selDropdown.style.fontSize = getLocalizedFontSize() + "pt"; 
        selDropdown.style.top = "1px"
        tdDropdownArea.appendChild(spanPreDropdown);
        tdDropdownArea.appendChild(selDropdown);
        // add the dropdown items.
        // note: IE5 requires that you add the option obj to a sel obj before you can set innerText.
        optTemp = window.document.createElement("OPTION")
        selDropdown.options.add(optTemp);
        optTemp.innerText = "25";
        optTemp.selected = true
        optTemp = window.document.createElement("OPTION")
        selDropdown.options.add(optTemp);
        optTemp.innerText = "100";
        optTemp = window.document.createElement("OPTION")
        selDropdown.options.add(optTemp);
        optTemp.innerText = "500";
        optTemp = window.document.createElement("OPTION")
        selDropdown.options.add(optTemp);
        optTemp.innerText = "1000";
        optTemp = window.document.createElement("OPTION")
        selDropdown.options.add(optTemp);
        optTemp.innerText = getLocalizedString(iALL_c);
        // trap dropdown change events with this code 
        selDropdown.onchange = maxRowChange;
    
        }
      }
    function maxRowChange() {
      var selDropdown;
      var adors;
      selDropdown = event.srcElement;
    
      adors = ptPreview.DataSource;
      
      if (selDropdown[0].selected) { adors.MaxRecords = 25; }
      if (selDropdown[1].selected) { adors.MaxRecords = 100; }
      if (selDropdown[2].selected) { adors.MaxRecords = 500; }
      if (selDropdown[3].selected) { adors.MaxRecords = 1000; }
      // set MaxRecords = 0 to show all records
      if (selDropdown[4].selected) { adors.MaxRecords = 0; }
      selDropdown.focus();
      window.document.ptPreview.ActiveData.TopOffset = 0;
      // hack: give IE a timeslice to repaint and get rid of the dropdown area
      window.setTimeout("window.document.ptPreview.Refresh(); ", 400);
      }
    
    function replace(strOrig, strFrom, strTo) {
      var strNew;
      var i;
      var iFromLen;
      strNew = "";
      iFromLen = strFrom.length;
      i = strOrig.indexOf(strFrom)
      j = 0;
      while (i>=0) {
        strNew = strNew + strOrig.substring(j, i) + strTo;
        
        j = i + iFromLen
        i = strOrig.indexOf(strFrom, j)
        }
      i = strOrig.length;
      strNew = strNew + strOrig.substring(j, i);
      return strNew;
      }
    function getLocalizedFontSize(iStringIndex) {
      var sLng = window.clientInformation.browserLanguage;
      if (sLng.indexOf("zh") == 0) { return 12; }
      if (sLng.indexOf("ja") == 0 || sLng.indexOf("ko") == 0) { return 11; }
      return 10;
      }
    
    function getLocalizedFontName(iStringIndex) {
      var sLng = window.clientInformation.browserLanguage;
      if (sLng.indexOf("zh-hk") == 0) { return "PMingLiu"; }
      if (sLng.indexOf("zh-tw") == 0) { return "PMingLiu"; }
      if (sLng.indexOf("zh-sg") == 0) { return "PMingLiu"; }
      if (sLng.indexOf("zh") == 0) { return "SimSun"; }
      if (sLng.indexOf("ko") == 0) { return "Dotum"; }
      if (sLng.indexOf("ja") == 0) { return "MS PGothic"; }
      return "Arial Unicode MS";
      }
    function getLocalizedString(iStringIndex) {
      var sLng = window.clientInformation.browserLanguage;
      if (iStringIndex == iALL_c) {
        if (sLng.indexOf("ar") == 0) { return "(الكل)"; }
        if (sLng.indexOf("zh-hk") == 0) { return "(全部)"; }
        if (sLng.indexOf("zh-tw") == 0) { return "(全部)"; }
        if (sLng.indexOf("zh-sg") == 0) { return "(全部)"; }
        if (sLng.indexOf("zh") == 0) { return "(全部)"; }
        if (sLng.indexOf("cs") == 0) { return "(Všechny)"; }
        if (sLng.indexOf("da") == 0) { return "(Alle)"; }
        if (sLng.indexOf("nl") == 0) { return "(Alle)"; }
        if (sLng.indexOf("fi") == 0) { return "(Kaikki)"; }
        if (sLng.indexOf("fr") == 0) { return "(Toutes)"; }
        if (sLng.indexOf("de") == 0) { return "(Alle)"; }
        if (sLng.indexOf("el") == 0) { return "(Όλες)"; }
        if (sLng.indexOf("he") == 0) { return "(הכל)"; }
        if (sLng.indexOf("hu") == 0) { return "(Mind)"; }
        if (sLng.indexOf("it") == 0) { return "(Tutte)"; }
        if (sLng.indexOf("ja") == 0) { return "(すべて)"; }
        if (sLng.indexOf("ko") == 0) { return "모두"; }
        if (sLng.indexOf("no") == 0) { return "(Alle)"; }
        if (sLng.indexOf("pl") == 0) { return "(Wszystkie)"; }
        if (sLng.indexOf("pt") == 0) { return "(Todas)"; }
        if (sLng.indexOf("ro") == 0) { return "(Toate)"; }
        if (sLng.indexOf("ru") == 0) { return "Bce"; }
        if (sLng.indexOf("sk") == 0) { return "(Všetky)"; }
        if (sLng.indexOf("sl") == 0) { return "Vse"; }
        if (sLng.indexOf("es") == 0) { return "(Todas)"; }
        if (sLng.indexOf("sv") == 0) { return "(Alla)"; }
        if (sLng.indexOf("th") == 0) { return "ทั้งหมด"; }
        if (sLng.indexOf("tr") == 0) { return "Tümü"; }
        if (sLng.indexOf("hr") == 0) { return "(Svi)"; }
        return "(all)";
        }
      if (iStringIndex == iMAXROWSTOSHOW_c) {  
        if (sLng.indexOf("ar") == 0) { return "العدد الأقصى من الصفوف للإظهار "; }
        if (sLng.indexOf("zh-hk") == 0) { return "可顯示的最多列數"; }
        if (sLng.indexOf("zh-tw") == 0) { return "可顯示的最多列數"; }
        if (sLng.indexOf("zh-sg") == 0) { return "可顯示的最多列數"; }
        if (sLng.indexOf("zh") == 0) { return "可显示的最大行数"; }
        if (sLng.indexOf("cs") == 0) { return "maximální počet řádků k zobrazení"; }
        if (sLng.indexOf("da") == 0) { return "maksimale antal rćkker, der skal vises"; }
        if (sLng.indexOf("nl") == 0) { return "Maximum aantal weer te geven rijen"; }
        if (sLng.indexOf("fi") == 0) { return "näytettävien rivien enimmäismäärä"; }
        if (sLng.indexOf("fr") == 0) { return "nombre maximum de lignes ŕ afficher"; }
        if (sLng.indexOf("de") == 0) { return "Maximale Anzahl anzuzeigender Zeilen"; }
        if (sLng.indexOf("el") == 0) { return "Μέγιστο πλήθος σειρών για προβολή"; }
        if (sLng.indexOf("he") == 0) { return "המספר המירבי של שורות להצגה"; }
        if (sLng.indexOf("hu") == 0) { return "mutatandó sorok maximális száma"; }
        if (sLng.indexOf("it") == 0) { return "numero massimo di righe da mostrare"; }
        if (sLng.indexOf("ja") == 0) { return "表示する最大列数"; }
        if (sLng.indexOf("ko") == 0) { return "표시할 최대 행 수"; }
        if (sLng.indexOf("no") == 0) { return "Maksimalt antall rader som skal vises"; }
        if (sLng.indexOf("pl") == 0) { return "Maksymalna ilość wierszy do pokazania"; }
        if (sLng.indexOf("pt") == 0) { return "número máximo de linhas a mostrar"; }
        if (sLng.indexOf("ro") == 0) { return "numărul maxim de rânduri care se afişează"; }
        if (sLng.indexOf("ru") == 0) { return "н*ибольшее количе*тво отобр*ж*емых *трок"; }
        if (sLng.indexOf("sk") == 0) { return "Maximálny počet riadkov na zobrazenie"; }
        if (sLng.indexOf("sl") == 0) { return "Največje število vrstic za prikaz"; }
        if (sLng.indexOf("es") == 0) { return "número máximo de filas para mostrar"; }
        if (sLng.indexOf("sv") == 0) { return "maximalt antal rader att visa"; }
        if (sLng.indexOf("th") == 0) { return "จำนวนแถวมากที่สุดที่สามารถแสดงได้"; }
        if (sLng.indexOf("tr") == 0) { return "Gösterilecek maksimum satır sayısı"; }
        if (sLng.indexOf("hr") == 0) { return "maksimalan broj redaka za prikaz"; }
        return "maximum number of rows to show";
        }
      }
    </script>
    </public:component>
    Lets set the stage on fire, and hollywood will be jealous.

  2. #2
    Join Date
    Aug 2005
    Location
    London
    Posts
    9,773
    Tokens
    146

    Latest Awards:

    Default

    It opens an window and displays the appropriate content assigned by the if's ?
    Very long code so it's hard to tell , I don't know anything about XML so I dunno what the top bit does .

  3. #3
    Join Date
    Dec 2006
    Posts
    3,970
    Tokens
    0

    Latest Awards:

    Default

    Quote Originally Posted by --ss-- View Post
    It opens an window and displays the appropriate content assigned by the if's ?
    Very long code so it's hard to tell , I don't know anything about XML so I dunno what the top bit does .
    Ok, thanks +Rep

    Does anyone know what the 'appropriate content' is?
    Lets set the stage on fire, and hollywood will be jealous.

  4. #4
    Join Date
    May 2006
    Posts
    1,797
    Tokens
    0

    Latest Awards:

    Default

    It displays a message according to the language the browser uses.

    Shouldnt you know though?
    Or did u just pick it up off the net and say "I wonder what that does..."
    Coming and going...
    Highers are getting the better of me

  5. #5
    Join Date
    Jan 2008
    Posts
    534
    Tokens
    0

    Default

    Damn it Craig
    But yeah, it display a message according to that sexy language the browser be using

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •