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
ImplementationtreeMap
(Web Publishing)


Vytvořeno: 11-11-1999 14:13:06
Poslední změna: 01-09-2003 09:47:11

Generates HTML <MAP> sections for the element trees of an implementation tree.

Modul

Module: Web Publishing

Zdrojový kód:

PROCEDURE ImplementationtreeMap(mod$, fun%, page%, BYREF PageWasGenerated!)
BEGIN
/*
      Generates HTML <MAP> sections for the element trees of an
      implementation tree.
      
      IN: mod$ - Name of module structure
           fun% - primary key for funcdef in mod$
           page% - current page
      OUT: PageWasGenerated! - found linked element on this page
          
      referenced by: Implementationtrees
*/

    PageWasGenerated! = TRUE; // we generate always links for root elements
  
    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 Implbox WHERE Implbox.Module = mod$ AND
                          Implbox.Funcdefno = fun% AND
                          Implbox.Page = page% AND
                          Implbox.X < leftmost%
                    ORDER BY X DO
        leftmost% = Implbox.X;
        BREAK;
    END

    // generate map for calls
    FOREACH Implbox WHERE Implbox.Boxtyp = "ca" AND
                          Implbox.Module = mod$ AND
                          Implbox.Funcdefno = fun% AND
                          Implbox.Page = page% DO
        CALL H_CaseBoxCoorToImageCoor(leftmost%, Implbox.X, Implbox.Y, ulc_x%, ulc_y%);
        IF Implbox.Calledfuncdefno <> 0 THEN
            // call on local funcdef
            FOR Funcdef WHERE Funcdef.Module = mod$ AND
                              Funcdef.Funcdefno = Implbox.Calledfuncdefno DO
                CALL GenMapRect(Funcdef.Object, conv$(Funcdef.Boxname), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
            END
        END
        IF Implbox.Calledusedfuncdefno <> 0 THEN
            // call on imported funcdef
            FOR Funcdef WHERE Funcdef.Module = Implbox.Calledusedmodule AND
                              Funcdef.Funcdefno = Implbox.Calledusedfuncdefno DO
                CALL GenMapRect(Funcdef.Object, conv$(Funcdef.Boxname), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
            END
        END
        IF Implbox.Calledmain <> "" THEN
            // call on imported main program
            FOR Module WHERE Module.Name = Implbox.Calledmain DO
                CALL GenMapRect(Module.Object, "Main program " + conv$(Module.Boxname), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
            END
        END
        IF Implbox.Calltype = "rc" THEN
            // call on local main program
            FOR Module WHERE Module.Name = mod$ DO
                CALL GenMapRect(Module.Object, "Main program " + conv$(Module.Boxname), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
            END
        END
        IF Implbox.Calledcompno <> 0 THEN
            // call on nested program
            FOR Component WHERE Module = mod$ AND Page = Calledcomppage AND Compno = Calledcompno DO
                FOR Module WHERE Module.Name = mod$ DO
                    CALL GenMapRectByName(Str$(Module.Object), "#ModPage" + Str$(Implbox.Calledcomppage),
                            "Nested program " + conv$(Component.Boxname), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
                END
            END
        END
    END

    // generate map for child pages
    FOREACH Implpage WHERE Implpage.Module = mod$ AND
                           Implpage.Funcdefno = fun% AND
                           Implpage.ParentPage = page% DO
        FOR Implbox WHERE Implbox.Module = mod$ AND
                          Implbox.Funcdefno = fun% AND
                          Implbox.Page = page% AND
                          Implbox.Boxno = Implpage.Parentno DO
            CALL H_CaseBoxCoorToImageCoor(leftmost%, Implbox.X, Implbox.Y, ulc_x%, ulc_y%);
            CALL GenMapRectByName("", "#ImplPage" + Str$(Implpage.Page), "Implementationtree Page " +
                                    Str$(Implpage.Page), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
        END
    END


    IF page% > 1 THEN
        // generate map for parent page
        FOR Implpage WHERE Implpage.Module = mod$ AND
                           Implpage.Funcdefno = fun% AND
                           Implpage.Page = page% DO
            CALL H_CaseBoxCoorToImageCoor(leftmost%, 286, 15, ulc_x%, ulc_y%);
            CALL GenMapRectByName("", "#ImplPage" + Str$(Implpage.ParentPage), "Implementationtree Page " +
                                        Str$(Implpage.ParentPage), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
        END
    ELSE
        // generate map for parent funcdef
        CALL H_CaseBoxCoorToImageCoor(leftmost%, 286, 15, ulc_x%, ulc_y%);
        FOR Funcdef WHERE Funcdef.Module = mod$ AND
                          Funcdef.Funcdefno = fun% DO
            CALL GenMapRect(Funcdef.Object, conv$(Funcdef.Boxname), ulc_x%, ulc_y%, ulc_x% + 80, ulc_y% + 52);
        END
    END

    CALL GenMapFooter();

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\329327856.htm (C) microTOOL GmbH 2002