Informační tok Funkční structura Datová struktura ER model Modulová struktura Typová struktura Relační model Dokumentace


[Celkový datový model] [Funkce] [Externí rohraní] [Stavové diagramy] [Datové elementy] [Entity] [Relace]
[Databáze] [Události] [Materiály] [Generovací funkce] [Vyhodnocovací funkce] [Konfigurace] [Uživatelé] [Projekt] [Home]



Vyhodnocovací funkce
DatastructureMap
(Web Publishing)


Vytvořeno: 04-15-1997 15:07:41
Poslední změna: 12-19-2002 10:38:53

Generates HTML <MAP> sections for the element trees of the data structure.

Modul

Module: Web Publishing

Zdrojový kód:

PROCEDURE DatastructureMap(Name$, Page%, BYREF PageWasGenerated!)
BEGIN

    foundsomething! = FALSE;

    // link to parent page
    IF Page% > 1 THEN
        foundsomething! = TRUE;
    END
    // link to attribute fields and data fields
    IF NOT foundsomething! THEN
        FOREACH Field WHERE Datastructure = Name$ AND Page = Page% DO
          foundsomething! = TRUE;
          BREAK;
        END
    END
    // link to entity references
    IF NOT foundsomething! THEN
        FOREACH EntityPart WHERE Datastructure = Name$ AND Page = Page% DO
          foundsomething! = TRUE;
          BREAK;
        END
    END
    // link to parts
    IF NOT foundsomething! THEN
        FOREACH DPart WHERE Datastructure = Name$ AND Page = Page% DO
          foundsomething! = TRUE;
          BREAK;
        END
    END


    PageWasGenerated! = foundsomething!;
  
  IF foundsomething! THEN
    FOR Datastructure AS AliasDS WHERE Name = Name$ DO
      CALL GenMapHeader("map_page" + Str$(Page%));
      
      //we need to find the coord of the most left box in advance
      leftmost% = 286; //highest possible value, root element (286, 15)
      FOREACH Field WHERE Datastructure = AliasDS.Name AND Page = Page% AND X < leftmost% ORDER BY X DO
        leftmost% = X;
        BREAK;
      END
      FOREACH EntityPart WHERE Datastructure = AliasDS.Name AND Page = Page% AND X < leftmost% ORDER BY X DO
        leftmost% = X;
        BREAK;
      END
      FOREACH DCond WHERE Datastructure = AliasDS.Name AND Page = Page% AND X < leftmost% ORDER BY X DO
        leftmost% = X;
        BREAK;
      END
      FOREACH DPart WHERE Datastructure = AliasDS.Name AND Page = Page% AND X < leftmost% ORDER BY X DO
        leftmost% = X;
        BREAK;
      END

      FOREACH Field AS AliasField WHERE Datastructure = AliasDS.Name AND Page = Page% DO
      
        //create a link to the attribute belongs to
        IF AliasField.Entity <> "" THEN
            CALL H_CaseBoxCoorToImageCoor(leftmost%, X, Y, ulc_x%, ulc_y%);
            FOR Attribute WHERE Attribute.Entity = AliasField.Entity
                          AND Attribute.Name = AliasField.Attribute DO
              CALL GenMapRect(Object, Conv$(AliasField.Boxname), ulc_x%, ulc_y% , ulc_x% + 80, ulc_y% + 52);
            END
        END
        //create a link to Data
        IF AliasField.Data <> "" THEN
            CALL H_CaseBoxCoorToImageCoor(leftmost%, X, Y, ulc_x%, ulc_y%);
            FOR Data WHERE Name = AliasField.Data DO
              CALL GenMapRect(Object, Conv$(AliasField.Boxname), ulc_x%, ulc_y% , ulc_x% + 80, ulc_y% + 52);
            END
        END
      END

      //create link to the the entity
      FOREACH EntityPart AS AliasEP WHERE Datastructure = AliasDS.Name AND Page = Page% DO
        CALL H_CaseBoxCoorToImageCoor(leftmost%, X, Y, ulc_x%, ulc_y%);
        FOR Entity WHERE Name = AliasEP.Entity DO
          CALL GenMapRect(Object, Conv$(AliasEP.Boxname), ulc_x%, ulc_y% , ulc_x% + 80, ulc_y% + 52);
        END
      END

      // link to part
      FOREACH DPart AS AliasDPart WHERE Datastructure = AliasDS.Name AND Page = Page% DO
        CALL H_CaseBoxCoorToImageCoor(leftmost%, X, Y, ulc_x%, ulc_y%);
        FOR Datastructure WHERE Name = AliasDPart.DPartname DO
          CALL GenMapRect(Object, Conv$(AliasDPart.Boxname), ulc_x%, ulc_y% , ulc_x% + 80, ulc_y% + 52);
        END
      END
      
      // link to parent page
      IF Page% > 1 THEN
        FOR Dpage WHERE Datastructure = AliasDS.Name AND Page = Page% DO
            CALL H_CaseBoxCoorToImageCoor(leftmost%, 286, 15, ulc_x%, ulc_y%);
            CALL GenMapRectByName("", "#DPage" + Str$(Dpage.Fieldpage), "stránka datové struktury "
                                    + Str$(Dpage.Fieldpage), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
        END
      END

      // link to child page
     FOREACH Dpage WHERE Datastructure = AliasDS.Name AND Fieldpage = Page% DO
        FOR Field WHERE Datastructure = AliasDS.Name AND Page = Page% AND Field.Fieldno = Dpage.Fieldno DO
            CALL H_CaseBoxCoorToImageCoor(leftmost%, X, Y, ulc_x%, ulc_y%);
            CALL GenMapRectByName("", "#DPage" + Str$(Dpage.Page), "stránka datové struktury "
                                    + Str$(Dpage.Page), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
        END
      END
      
      CALL GenMapFooter();
    END
  END

END


Generováno: 16.10.2003 7:41 Systém: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\Projekt03.csf Generováno systémem case/4/0
Vygeneroval: Administrator Soubor: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\html\22727.htm (C) microTOOL GmbH 2002