Message = +Bin *Cal +Cmd *Color +Comm +Env *EvLogMsg +ExecPythonScript +GlobalMenu *GraphicEditorSettings +Login +Logo +MessageBox *ModC +MsgBoxElems *Panel +Shutdown *Skin +SplashScreen +StatusBar *StringConstants *Sym +UserMenu
StringConstants :: lang : language of the string constants contained within this element (see lang attribute description on top of this document)
StringConstants = *StringConstant
StringConstant :: uid : string value : string
Login :: user : string salt : string challenge : string response : string action : enumeration [ cancel ]
PasswordChange :: action : enumeration [ start | success | failure ] mandatory : bool old_salt : string old_hash : string new_hash : string
Shutdown :: action : enumeration [ "exit" ], means close all panels and exit program
Env = +Program +TimeZone +Locale +OSuser +User +Password +Individual_parameters (*)TextMessage (*)CtxtMenu (*)GeCtxtMenu
Env :: cur_skin : integer, reference to Skin : AutoLayoutGap : integer, gap between fields in auto layout commands
value : string user name to login PLANTA. In ini file or programm argument will be set like: user=XY and than client send it to server in hand shake message.
value : string user password. In ini file or programm argument will be set like: password=XYZ and than client send it to server in hand shake message.
value : string individual parameters. In ini file or programm argument will be set like: individual_parameters={para1:'value1',para2:'value2'} (no space) and than client send it to server in hand shake message.
Program :: vendor : string name : string version : integral system_title : string menu_lb_tooltip: string
Logo = +Img : actual logo graphics
TimeZone :: utc_offset : integral
Locale :: lang : string country : string
OSuser :: name : user name of person logged into the client machine
Highlighting :: color : integral, reference to color::uid opacity : integral, range from 0 (completely transparent) to 100 (completely opaque)
Cal = *Day
Cal :: +uid : integral, unique within session
AutoLayoutGap :: +gap : integral
Day :: +date : Date
GlobalMenu = +Menu *TBar +SearchBar
GlobalMenu :: +lang: language identificator as described in the beginning of the document
TBar = +MVListbox *MI *TBItem *Sep
TBar = target : enumeration [ "NormalView" | "PrintPreview" | "PageBreakPreview"] - toolbar target view action : enumeration [ "clear" ]
MVListbox :: order : integral - position of the listbox within its container text : string - title of the listbox
TBItem :: tooltip : string - text to show as a tooltip cmd : integral - Command ID order : integral - order of element in taskbat text : string - if command id is not given toolbar item dispay as lable with this "text", otherwise text is not displayed shortcut : string - defines shortcut names as in menu items
TBItem = +Img - Image to show in toolbar +HotImg - Hot image which is shown, when mouse is over button and switched back to ordirnary image, when mouse leaves button
Skin :: uid : integral
Sym = +Border +Content +Font
Sym :: uid : integral bgcolor : integral, reference to Color::uid name : string, description displayed f.ex. in customizer
DefSym :: id : integral, reference to Sym :: uid role : enumeration, [Id | Input | ActiveInput | Output | Marked | Blank | Hlink | ActiveHlink | ActiveOutput | Title | FixedTitle]
Border :: pattern : enumeration, [ Solid | Dashes | Dots | DashDot | DashDotDot | Invisible ] form : enumeration, [ Invisible | SolidBar | Line | TriangleRight | TriangleUp | TriangleLeft | TriangleDown | Circle | RoundedBar | Square | Plus | Minus | Rhomb | BarsAboveTriangles ] width : integral int_spacing : integral color : integral, reference to Color::uid
Content :: pattern : enumeration, see Border :: pattern form : enumeration, [ Blank | Filled | Line | Rhomb | Points ] form_fact : enumeration, [ Horizontal | BottomleftTopright | Vertical | BottomrightTopleft ] width : integral height : integral - used for horizontal bars density : integral color : integral, reference to Color::uid
Font :: face : string, name of font to display height : integral, font size bold : boolean italic : boolean underscored : boolean
Comm :: action : enumeration, [ lock | unlock ]
EvLogMsg :: timestamp : integral ; number of ticks text : string, log message text category : string, log category
SplashScreen :: action : string, possible values : show ; hide
SplashScreen = +Img : contains logo picture
Img :: ()height : integral ()width : integral ()transp : "RRGGBB" - "transparent" color for formats, which don't support transparency (BMP)
Img = +Bin : contains bmp, png or jpg -format image
uid is present CDATA is present2. S-->C: sends binary crc (tries client cache)
uid is present crc32 is present3. S-->C: requests binary content (get latest document for HLINK)
uid is present action = "query"4. S-->C: rename binary uid (during HLINK creation to change uid=file_name to server one)
uid is present (target uid) action = "rename" src_uid is present (source uid)5. C-->S: requests binary content (cache miss)
uid is present action = "query"6. C-->S: sends binary content (possibly, replies to server's request)
uid is present crc32 is present CDATA is present (when server request content)
Bin :: uid : string ()crc32 : integral ()action : enumeration [ query | rename ] query - request binary content in both directions C<->S rename - rename binary uid taken from source uid (src_uid) to new one (current bin node uid), used for HLINKs to change uid=file_name to server generated one ()src_uid : string source uid, used for action="rename"
Bin = (+)CDATA section : base64-encoded ASCII representation of data
MsgBoxElems :: dont_show_again : string, printed beside "Don't show again" checkbox
MsgBoxElems = *ButtonType *IconType +DisconnectMsg
id : string text : string, printed on the button itself
+Img : icon itself
+id : string
+text : string, displayed upon loss of server connection
MessageBox = +Icon *Input *Button
MessageBox :: uid : integral type : enumeration [ ordinary | login ] block : boolean caption : string, displayed in the window's title bar text : string dont_show_again : boolean (S->C: display or not display; C->S: value set by user)
StatusBar :: text : string; text to be displayed in the statusbar. If isn't present, status bar becomes empty
Icon :: id : string, reference to IconType :: id
Input :: id : string (sc)order : integral ()password : boolean, determines if input is represented by asterisks (cs)value : string, determines text, which was entered by user
Button :: id : string, reference to ButtonType :: id (sc)order : integral (cs)pressed : boolean
Menu = +MVListbox *TBItem *MI : represents menu item, either simple item or sub-menu (*)Sep : represents separator - line between menu items (*)PanelsList : placeholder for the list of active panels
Menu :: action : enumeration [ "clear" ] color : integral, reference to Color::uid
MI :: uid : integral order : integral text : string; ampersands are used as hot-key markers. shortcut: string; (on english) keys divided by symbol "+" ( "Ctrl+C"). Acceptable keys are: Alt, Ctrl, Shift, F1-12 and common character keys shortcut_name: string; text which will be shown opposite MenuItem ()cmd : integral; id of command, which is assigned to the menu item. By default command is enabled (MI and TBItem will be enabled). To dissable command server have to send Command for module with attribute - enabled="false" (all items where command is used: menu, toolbar, context menu will be dissabled). Please have a look below.
MI = (+)Img : icon, which goes with the menu item (*)MI : represents menu item, either simple item or sub-menu (*)Sep : represents separator - line between menu items (*)PanelsList : placeholder for the list of active panels (*)TBItem +MVListbox
CtxtMenu = *CMI : represents context menu item, either simple item or sub-menu. For details look to _project_cu.xml_. (*)CMITempl : represents context menu item template, either simple item or sub-menu, which will be used in all modules for constructing client context menu. Used only as a child of Environment and only when !CtxtMenu::target =="DA". For details look to _startup.xml_. (*)Sep : represents separator - line between menu items
CtxtMenu :: color : integral, reference to Color::uid target : enumeration [DA, BarLink]
CMI :: order : integral text : string; ampersands are used as hot-key markers. ()cmd : integral id of command, which is assigned to the context menu item
CMI = (+)Img : icon, which goes with the context menu item (*)CMI : represents context menu item, either simple item or sub-menu (*)Sep : represents separator - line between context menu items
CMITempl:: order : integral text : string; ampersands are used as hot-key markers. role : enumeration [ShowTemplate | HideTemplate | NotFirstSingleSeparatorTemplate | DataFieldsListTemplate | HelperDataFieldsListTemplate] - items role, which shows how item is used in context menu construction * ShowTemplate - expands to list of "+" menu elements. * HideTemplate - expands to list of "-" menu elements. * NotFirstSingleSeparatorTemplate - expands to menu separator if it is not the first item in a submenu and previous item is not separator. * DataFieldsListTemplate - expands to list of items with DataItems Titles * DataAreaCustomizingSpecificMenuTemplate - is substituted with context menu that came with DataAreaCustomizing * NotEmptyMenuItemContainer - not visible if does not contain child menu items * HelperDataFieldsListTemplate - exapnds to list of items with DataItems Titles, which can be shown as helper DFs under bars (see startup.xml in serverstub)
CMITempl = (+)Img : icon, which goes with the context menu item (*)CMITempl : represents context menu item, either simple item or sub-menu
Sep :: order : integral
PanelsList :: order : integral
ModC = *RootC *DistribListElem : recipient which recieves module printout *CmdPrp
ModC :: uid : integral def_zoom_eq_col : boolean, true if zoom fits to page during printing zoom_w1w3 : integral - default zoom zoom_inc : integral - default zoom increment. If it is set to 5%, 20%, 50% - correcpond menu item (Low (5%), Medium (20%), High (50%)) will be checked. By default 5% is used. zoom_w7 : integral - default printing zoom width_w1 : W1 width width_w2 : W2 width width_w3 : W3 width heigth_w1w3 : W1-3 height exp_exc_char : character - escape-character for CSV-export exp_sep : character - separator-character for CSV-export tree_struct : boolean, true if module shows +/- signes for parent DAs grid_lines_in_tree : boolean, true if module shows gridlines for parent DAs auto_scr_with_mouse : boolean, true if module can be scrolled by mouse button file_fmt : enumeration [ Png | Bmp | HtmlWrappedPng | Csv | Pdf | Html | HtmlAndPng | Xml ] mdl_name : string, module title panel_title: string, alternative panel title ow_file : enumeration [ No | Yes | QueryUser] - during export to file im_ex_file : string - import/export file name paper_fmt : enumeration [A2 | A3 | A4] portr_fmt : boolean - true if portrait orientation is used in printing def_pr_name : string - default printer name margin_left : integral - left margin in dmm, default value is 100 dmm (1 cm) margin_right : integral - right margin in dmm, default value is 100 dmm (1 cm) margin_top : integral - top margin in dmm, default value is 100 dmm (1 cm) margin_bottom : integral - bottom margin in dmm, default value is 100 dmm (1 cm) bg_sym : uid, reference to Sym auto_size_windows: autosizing listbox module in dependence to content
DistribListElem :: name : string
RootC = *DAC
RootC :: uid :: integral type : enumeration: [Main|FixedTop|FixedBottom|PrintHeader|PrintTrailer,MainFixedHeaders]
File = +Bin - file contents
ExcelSheet = +File - the actual XLS file containing the sheet to be displayed
DAC = (*)DAC (+)CtxtMenu - used to show context menu for DA. Usual menu items can be used, plus m1..4 buttons from DA (see context menu section). *DFC (+)ScaleCust (+)NativeXml - used for storing configuration xml for Office Chart (see Office Chart section) (+)HiddenDFsTtls (+)ExcelSheet - XLS file (only for DACs of type "ExcelSheet")
DAC :: uid : integral order : integral, determines order of DA customizing within parent DA customizing name : string, name of dataarea, which is used in context menu (see context menu section) cu_name : string, name of dataarea customizing layout : enumeration [Horizontal | Vertical | Mask] - for DF in DA side-by-side : boolean, true: the data fields are shown side-by-side each other, false: the data fields are shown one above another. beside_parent : boolean - if true, area is position beside parent area frame_sym_f1 : integral, reference to Sym :: uid frame_sym_f2 : integral, reference to Sym :: uid frame_sym_f3 : integral, reference to Sym :: uid a_end_sym_w1 : integral, reference to Sym :: uid a_end_sym_w2 : integral, reference to Sym :: uid a_end_sym_w3 : integral, reference to Sym :: uid a_sep_sym_w1 : integral, reference to Sym :: uid a_sep_sym_w2: integral, reference to Sym :: uid a_sep_sym_w3: integral, reference to Sym :: uid rec_sep_sym_w1 : integral, reference to Sym :: uid rec_sep_sym_w2: integral, reference to Sym :: uid rec_sep_sym_w3: integral, reference to Sym :: uid shading_color_w1: integral, reference to color :: uid, shading color for W1 shading_color_w2: integral, reference to color :: uid, shading color for W2 shading_color_w3: integral, reference to color :: uid, shading color for W3 shading_color_opacity_w1: integral, shading color opacity for W1, range from 0% - completely transparent to 100% - completely opaque, default value is 100% shading_color_opacity_w2: integral, shading color opacity for W2 shading_color_opacity_w3: integral, shading color opacity for W3 shading_number: integral, shading number for all 3 windows, which shows how shading will be used, by default it will be 2 - shade each second record, if 3 - shade each third record and so on create : boolean - if true, "Create" menu item is enabled insert : boolean - if true, "Insert" menu item is enabled delete : boolean - if true, "Delete" menu item is enabled move : boolean - if true, area can be drag-and-dropped move_text : string, which will be used for cursor, when node is moved in WBS structure (DAG dataarea). English value will look like "Move @rec_num records", where @rec_num - number of moved records. output : boolean - if true, area is read-only displ : enumeration [Hidden | Visible | Popup] indent : integral - indent (shift to right) of this area relative to its parent tree_struct : enumeration [ None | W1 | W2 | W3 ] heading : boolean fixed_hdg : boolean alt_shading : boolean page_brk : enumeration [ BeforeNotFittedDA | BeforeEachDA | BeforeEachDAC | AfterEachDA | BeforeNotFittedDAWithChildren ], BeforeNotFittedDA is default and is used when the attribute is ommited rollover : boolean type : enumeration [DataArea, ExcelSheet, DAG]. DataArea is default and is used when the attribute is ommited; ExcelSheet is used for Excel export; DAG (directed acyclic graph) is used for graphical structuring (f.e. module PSP). DAG areas have to form one branch in tree, so they can't be mixed with ordirnary areas. excel_width : integral (only for ExcelSheet DAs, specifies width of an excel component) excel_height : integral (only for ExcelSheet DAs, specifies height of an excel component) excel_show_menu : boolean (only for ExcelSheet DAs, specifies whether menu should be visible in the embedded Excel interface) excel_show_tool_bars : boolean (only for ExcelSheet DAs, specifies whether tool bars should be visible in the embedded Excel interface) excel_show_formula_bar : boolean (only for ExcelSheet DAs, specifies whether formula bar should be visible in the embedded Excel interface) excel_show_scroll_bars : boolean (only for ExcelSheet DAs, specifies whether scroll bars should be visible in the embedded Excel interface) excel_show_status_bar : boolean (only for ExcelSheet DAs, specifies whether status bar should be visible in the embedded Excel interface)
HiddenDFsTtls = (*)DFTtl
DFTtl = uid : integral (sc)df_behaviour : string as in DatafieldCustomizing (sc)text: text DF title to display in context menu (cs)show: enumeration [ W1 | W2 | W3 ]
"scale units"means, that value type depends on Scale
:: units.Currently defined:
(units == DateTime) --> (scale units <=> DateTime) (units == Numbers) --> (scale units <=> integral)
uid | integral | unique within ModuleCustomizing | ||||
units | enumeration [DateTime | Numbers] | ||||
direction | enumeration [Horizontal | Vertical] | ||||
window | integer [1 | 2 | 3] | represents in which of 3 windows scale is located | ||
free_day_sym | reference to Symbol::uid | |||||
cal | reference to Cal::uid | |||||
offset | integer | represents offset for horizontal scale in dmm. It is messured from the beginning of window to scale start. |
ScaleCust = *Dict *ScTtl
<Dict uid = "1" type = "Months">Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec</Dict> <Dict uid = "2" type = "DaysOfWeek">Sun|Mon|Tue|Wed|Thu|Fri|Sat</Dict> <Dict uid = "3" type = "Quarters">I|II|III|IV</Dict>If type is "Months" dictionary should have 12 entries starting from January If type is "DaysOfWeek" dictionary should have 7 entries starting from Sunday If type is "Quarters" dictionary should have 4 entries starting from 1st quarter
Dict :: uid : integral, unique within ScaleCustomizing type : enumeration [Months | DaysOfWeek]
uid | integral | unique within ScaleCustomizing |
order | integer | title with minimum order is on the top |
round_to | see "RoundTo" tag-description | |
format | string | describes title-format. See description below. If no format attribute is present no header-line is present for this title. |
sep_sym | Reference to sym::uid, describes symbol for drawing on scale's vertical separators associated with this title. If no sep_sym-attribute is present no vertical-separators are shown for this title. |
|
title_sym | Reference to sym::uid, symbol for scale-title |
(units == DateTime): * %m - month number ("9") * %mm - month number ("09") * %d - day of month ("5") * %dd - day of month ("05") * %w - week number ("3") * %ww - week number ("03") * %q - quarter ("4") * %qq - quarter ("04") * %yy - year ("08") * %yyyy - year ("2008") * %1 - name from dictionary with uid="1" ("Sep") (units == Numbers): * %n - number ("1") * %nn - number ("01")Example: The following code
<Dict uid = "1" type = "Months">Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec</Dict> <Dict uid = "2" type = "DaysOfWeek">Sun|Mon|Tue|Wed|Thu|Fri|Sat</Dict> <ScTtl uid = "1" order = "1" round_to = "Months" format = "%1 %yy"/> <ScTtl uid = "2" order = "2" round_to = "Weeks" format = "CW %w"/> <ScTtl uid = "3" order = "3" round_to = "Days" format = "%2"/> <ScTtl uid = "4" order = "4" round_to = "Days" format = "%dd.%mm."/>results in a following scale header: Note: in specific instances of scale some titles can be hidden depend on zoom. Empiric rule is to show only those of the specified titles, for which text fits into its cell. Horizontal scale zoom can be changed by Alt + Mouse scroll
BarSymbol :: level : integral, depth level, starting at 0, ending at (levelcnt-1) of the respective parent <DFC> sym : reference to Sym:uid, determines order of DF customizing within parent DA custom
RawTextFormat :: data_type: enumeration [ date, decimal, integral, string, time, boolean, currency, percentage ] suffix: string zero_pad_width: integral (only for numeric formats; specifies a width to which a number should be padded with zeros if needed)
CalendarControl :: start_date : Date first selectable date in the calendar end_date : Date last selectable date in the calendar sel_date : Date selected date in DF or DFC(default value). This date will be used to show DF value in calendar. Client cant parse DF value, because it doesnt have formats (formating is server job). cal : reference to Cal::uid (defines non-working days) selection_mode : enumeration [ working | non_working | all ] defines whether only working, only non-working, or both types of days will be select-able in the calendar
CalendarControl = +Xaml : XML containing XAML with calendar control's settings (format not described here); similar to PanelLayout in Panel; can only appear when CalendarControl element is part of DFC element Img : image on which user press to open Calendar control (like LB button). Image will be sent only for DFC now. <em>Sample for calendar control can be found in project_cu.xml in ServerStub.</em>
ProjValue :: level : integral, depth level, starting at 0, ending at (levelcnt-1) of the respective parent DFC sym : reference to Sym:uid, determines order of DF customizing within parent DA custom alignment : enumeration [ "Left", "Right" ]
<DFC uid="141268" order="4" df_hdg="Histo:verdichtet verplant Projektcode" df_behaviour="ba" df_len="0" sort_prio="0" sort_order="none" sort_flags="19" type="histogram" levelcnt="6" proj_value_cnt="6" window="3" multiline="false" expdbl_vert="false" tooltip="Verplant"> <ScBndC uid="040590" scale="040590"> <RoundTo>Weeks</RoundTo> </ScBndC> <ScBndC uid="141270" scale="141270"/> <BarSymbol level="0" sym="001471"/> <BarSymbol level="1" sym="001346"/> <BarSymbol level="2" sym="001347"/> <BarSymbol level="3" sym="001348"/> <BarSymbol level="4" sym="001349"/> <BarSymbol level="5" sym="001350"/> <ProjValue level="0" sym="001471"/> <ProjValue level="1" sym="001346"/> <ProjValue level="2" sym="001347"/> <ProjValue level="3" sym="001348"/> <ProjValue level="4" sym="001349"/> <ProjValue level="5" sym="001350"/> </DFC>DFC example with type projection:
<DFC uid="128293" order="5" df_hdg="Projektion Belastung-Ist" df_behaviour="i" df_len="10" sort_prio="0" sort_order="none" sort_flags="19" type="projection" rowcnt="1" proj_value_cnt="1" window="3" multiline="false" expdbl_vert="false"> <RawTextFormat data_type="string"/> <ScBndC uid="026553" scale="026553"> <RoundTo>Days</RoundTo> </ScBndC> <ProjValue level="0" alignment="Right"/> </DFC>
DFC :: uid : integral order : integral, determines order of DF customizing within parent DA customizing action : enumeration [ "delete", "ctx_menu" ]` 'ctx_menu': c->s, title context menu sort_prio : integral, determines order of precedence when sorting sort_order: enumeration [ asc | desc | none ] sort_flags : integral. DisplayPriorityOnMouseOver = 1, DisplayArrowsOnMouseOver = 2, DisplayPriority = 4, DisplayArrows = 8, ToggleSortOnClick = 16.
type: enumeration [ projection | histogram ] - defines special DFC type rowcnt: integral - number of rows of DF instances for projection DFs levelcnt: integral - number of rows of DF instances for histogram bar DFs proj_value_cnt: integral - unify the rowcnt and levelcnt attributes window : integral - window in which field is situated (1,2,3) df_len : integral - DF length, shows how many symbols user can enter in DF df_behaviour : string - DF behaviour ( i - input; o - output; l, l1 - listbox; i2, o2 - checkbox; a - background or image; c1..4 - button; e1..4 - click reference; f1..4 -doubleclick reference; g1..4 - enter reference; h - hyperlink; ba - bar DF; hk - hotkey DFs; emb - embedded, IronPython controlled System.Windows.Forms.Control; cc - calendar control), key is not needed for Client, because it will be controlled completelly on server side: first when record is empty server send as key field - input field, than user enter value, server receive this value and set key field as - output field. x_pos_f : integral - DF x position (for mask areas) y_pos_f : integral - DF y position (for mask areas) x_pos_n : integral - DF name (title) x position (for mask areas) y_pos_n : integral - DF name (title) y position (for mask areas) print_x_pos_f_right : integral - DF x position (for mask areas) counted from right (width - x_pos), is used only for print header/trailer print_x_pos_n_right : integral - DF name (title) x position (for mask areas) counted from right (width - x_pos), is used only for print header/trailer df_sym : string - reference to Symbol :: uid hdg_ang : integral - DF header (title) line angle in degrees hdg_font_ang : integral - DF header (title) each symbol angle in degrees hdg_sym : string - DF header (title) sym, reference to Sym :: uid df_hdg : string - DF heading (title) lb_mdl : boolean - DF has LB module or not df_height : integral - DF height df_width : integral - DF width hdg_height : integral - DF header (title) height hdg_width : integral - DF header (title) width angle : integral - diagonal DF line angle in degrees font_ang : integral - diagonal DF each symbol angle in degrees multiline : boolean - DF is multiline or not (CLOBs) expdbl_vert : boolean - DF is expandable or not (CLOBs) ro : boolean linebrk : boolean (used for diagram, see "diagrams" section) alignment : enumeration [Left | Right]. Has no effect for checkboxes which displays centered. df_check_len : boolean - defaults to "true." shortcut: defines symbol for shortcut which must use with Alt(only for buttons) dock_pt : enumeration [start | end | center] - defines docking point for helper fields under scale, default value is start tooltip: format string for text in tooltip. Now in format string posible to use keys such as @uid - expands to DF.UId @content - content of DF (DF.Value) @startDateH(DateFormat) - if DF is bound to Horizontal scale this variable expands to its start date bounding, if not bound expands to empty string. @endDateH(DateFormat) - if DF is bound to Horizontal scale this variable expands to its end date bounding, if not bound expands to empty string. @duration - number of days between start date and and date. @wdDuration - number of days between start date and end date, eliminating non-working days. print_text: is used to show page numbers or module name in Print Preview, PageBreak Preview - PrintHeader, PrintTrailer roots like: print_text = "Page @cur_page_h of @total_pages" print_text = "@mod_name" in print text such place holders (will be replaced with real values on client) can be used: @mod_name - module name @cur_column - current column @cur_row - current row @cur_page_h - current page (horizontal growth) @cur_page_v - current page (vertical growth) @total_pages - total pages test sample is present in ServerStub module "Collapse/expand". DateFormat must be choosen from .NET Custom Date and Time Format Strings. bar_modifiable_flags: start_modifiable = 1, end_modifiable = 2, duration_modifiable = 4, linkable = 8: start_modifiable - start date of the bar can be modified. end_modifiable - end date of the bar can be modified. duration_modifiable - length of the bar can be modified. linkable - aneble create link to other linkable bar. bar_editmode_flags: creation = 1, requested = 2, calculated = 4: creation - dummy bar for create new one, when the user clicks into empty space in the scale. DF must be with empty scale boundings ("ScBnd"). requested - edit bar possible in requested bars edit mode. calculated - edit bar possible in calculated bars edit mode. df_script_settings : string - configuration text used to define datafield script settings. cu_name : string - name of the used DFC.
DFC = (+)DAC (+)DFC - child DFC (now is used for helper datafields under bar) (+)CtxtMenu - context menu can be set for any DFC (now is used for hlinks) (+)HlinkOptions - options for structured DI hlink (look to Hyperlinks below) * Effect * BarSymbol - only for DFCs of "histogram" type, specifies a symbol to be used with certain row of histogram bars (child <DF> elements of the respective container <DF> element). (*)ScBndC (units == DateTime) --> (scale units <=> DateTime in format "dd.MM.yyyy HH:mm:ss", for example "15.01.2007 12:00:00") (units == Numbers) --> (scale units <=> integral) (+)Script - [[http://planta16/twiki/bin/edit/PLANTA_MARS_DE/XmlProtokoll#_Embedding_controls_into][IronPython script that is used to create the embedded control]]. +RawTextFormat - value formatting-related information about DF's value (for excel export, etc.) +CalendarControl - default settings for calendar control DFs ("cc" behavior)
Effect :: uid : integral (unique within DataFieldCustomizing node) order : integral (unique within DataFieldCustomizing node), determines order in which effect will be applied to DF name : enumeration [Glare | FadeToColor | Cylinder | Shadow | Cuboid] color : reference to Color :: uid angle: see Cuboid proportion: see Cuboid fade_direction : enumeration [Horizontal, Vertical]
effect name | description | valid attributes | must attributes |
---|---|---|---|
Glare | Transforms this into this |
order | |
FadeToColor | Transforms this into this |
|
color |
Cylinder | Transforms this into this |
order | |
Cuboid | Transforms this to this |
|
|
Shadow | (not implemented yet) |
ScBndC :: uid : integral (unique within DataFieldCustomizing node) scale : integral, reference to ScaleCust :: uid, for scale to which DFC is assigned to
ScBndC = (+)RoundTo (*)BarColoring
Scale :: units: (units == DateTime) --> enumeration [Hours | Days | Weeks | Months | Quarters | Years] (units == Numbers) --> integral
BarColoring :: sym : integral, reference to Symbol :: uid from : scale units to : scale units
UserMenu = +ModC +Module
Panel = +PanelLayout - xml (format is not described, because it is created and handled entirely on client-side), which defines position of panel's sub-windows *Module
Panel :: uid :: integral action :: enumeration [ "close" ]
Variant :: id :: string title :: string description :: string action :: enumeration [ create | delete | save | select ] type :: enumeration [ base | standard | user ] modified :: boolean favorite :: boolean
Variants = *Variant
Module = +MessageBox +StatusBar (+)Logo *Root +Cmd *TextMessage +Variants
Module :: uid : integral parent : integral, in case of helper module: reference to uid of module occu-pying MainFrame, otherwise: 0? left out? cust : integral, reference to ModC :: uid stat : enumeration [MainModule | SubModule] persist_id : string, cross-session unique value to be stored in panel layout xml file (s-c)action :: enumeration [ close | SetFocus | clear ] lang : string (a language currently used in given module instance) Module attributes which is implemented only when module is starting: dock_to_module : module uid. If has no value dock to panel dock_style : enumeration [fill", right, left, bottom, top] dock_proportion : (0..1). Indicates the part of module or the panel being docked to that will be occupied with this module (the module that is being docked). foreground : boolean [true, false] - true bring module to the front re-lating to its module stack, false (default value) do not send module to front. User can manually change the foreground module. auto_hide : boolean [true, false] - true when attribute "dock_to_module" not set, the module toggle to auto hide state. false (default value) show module as not auto hidden. If module is docked to another module which is currently in auto hide state it becomes auto hidden too. Module can auto hide only if it is docked to border of the software panel (dock_to_module is not set).
Root = *DA *BarLink (*)Slider (*)Sheet
Root :: uid : integral cust : integral, reference to !RootC :: uid child_cnt : integral, see DA :: child_cnt for details request_cnt : integral, see DA :: request_cnt for details
DA = *DA *DF (+)Slider (*)Sheet *Scale *Link
DA :: uid : integral order : integral, determines order of DA within parent cust : integral, reference to DAC :: uid marked : boolean child_cnt : integral (s-c): total number of child DAs in this DA (exists in case when not all child DAs are transmitted to client), (c-s): see Command spec (c-s)request_cnt : integral (see Command spec for details) (s-c)action : enumeration [ "Delete" | "Scroll_To" | "Insert"] "Delete" Deletes the DA and all ist children from module tree on GUI. "Scroll_To" scrolls the DA into users view in all windows DA is displayed "Insert" Server inserts new DA and inform Client (For example after D&D). Client will uncollapse it to show it. displ : see DAC :: display title : used for row title in OfficeChart (see Office Charts section below)
Slider = *SheetHeading
Slider :: active : integral, determines uid of active sheet
SheetHeading :: uid : integral order : integral
Sheet :: uid : integral
Sheet = (*)DA
<Mod uid="1"> <Root uid="0" customizing="0" [...]> <Slider active="1"> <SheetHeading uid="1" order="1";>A-C</SheetHeading> <SheetHeading uid="2" order="2">D-E</SheetHeading> <SheetHeading uid="3" order="3">FA-FG</SheetHeading> <SheetHeading uid="4" order="4">FH-FP</SheetHeading> [...] </Slider> <Sheet uid="1"> <DA uid="1" order="1"><DF [...] /> <Slider [...] /> <Sheet [...] /> [...] </DA> <DA uid="2" order="2"><DF [...] /<</DA> [...] </Sheet> [...] </Root> </Mod>
<Mod uid="1"> <Root uid="0"> <Sheet uid="2" dac="0" action="request" /> </Root> </Mod>
<Mod uid="1"> <Root uid="0"> <Sheet uid="1" dac="0"> <DA uid="1"> <Sheet uid=2 dac="1" action="request" /> </DA> </Sheet> </Root> </Mod>
BarLink = +Source - refers to the DF, which is a source of the link +Target - refers to the DF, which is a target of the link
BarLink :: uid : integral type : enumeration [SS | SE | ES | EE] action : enumeration [Create | Delete]
Source, Target :: da : integral, reference to DA::UID dfc : integral, reference to DFC::UID placeholder : string, represents text to be shown instead of the bar in case when it's not reachange (f.e. hidden)
Link :: uid : integral pred : integral, reference to DA :: uid succ : integral, reference to DA :: uid type : enumeration [ FF - finish to finish, FS - finish to start, SF - start to finish, SS - start to start ] action : enumeration [ "insert" | "delete" | "deleted" ]
DateLine :: uid : integral, unique within Scale title : reference to !ScTtl :: uid date : date (horizontal position) at which the line is to be positioned sym : reference to Sym :: uid
Scale :: uid : integral, unique within Module cust : reference to ScaleCust :: uid start : scale units, logical start of scale end : scale units, logical end of scale size : double, physical size of scale, customizing units (0.1 mm at 100% zoom) fixedTitle: bool, if is set scale title is shown in MainFixedHeaders root. <strong>Only scale title of a single scale can be shown in </strong> *MainFixedHeaders root!*
Scale = *DateLine
DF = (*)ScBnd (+)DA (+)DF - child DF (now used for helper datafields) (+)Img (+)OLE (+)Checked (+)Text (+)Url (+)Bin (+)RawText (+)CalendarControl - specific settings for this calendar control DF (only for "cc" behavior, overrides default CalendarControl settings from associated DFC)
DF :: uid : integral cust : integral, reference to DFC :: uid sym : reference to Sym :: uid (for trafficlight case) (s-c)action : enumeration [ SetFocus | CreateFromTemplate | MoveTo-Deleted | CopyToDeleted | Delete]; where CreateFromTemplate, MoveTo-Deleted,CopyToDeleted, Delete are used for hlinks operations (look to Hyper-links below) action : enumeration [ ListboxClicked | Fired | Delete |Scroll_To | OpenCalendar | "Clear" ]; - ListboxClicked is used for DFs, which have drop down listbox button; - Fired is used for buttons, and DFs, which react on click, double click and enter; - Delete is used to delete hlinks (look to Hyperlinks below); is also used to delete individual projection DF instances on client side - Scroll_To scrolls the DF into users view - OpenCalendar (S->C only): server tells the client to open the respective DFs calendar control - Clear (S->C only): server tells the client to clear all projection instances of this projection container DF df_behaviour: enumerations (see DFC :: df_behaviour) if present, overrides behavior, specified by customizing row: used with projection or histogram bar DFs to specify a row into which this projection DF instance belongs; starting at 0, ending at (rowcnt-1) of the respective <DFC> bgcolor: integral, reference to Color: uid; used to overriding of background color +border_color: integral, reference to Color: uid; used to overriding of bor-der color
ScBnd :: scale : integral, reference to corresponding Scale, to which DF is assigned cust : integral, reference to corresponding ScaleBoundingCustomizing start : scale units - logical start of DF end : scale units - logical end of DF
Color :: uid : integral value : hex_color or "transparent" for transparent color
InitialDfValue :: dfc_id : integral, reference to corresponding DFC:id value : string
<Message> <Panel> <Module> <Cmd type = "..." id="..." /> <ActiveTargets> <Root> (path to active DataField(s) or active DataArea) </Root> </ActiveTargets> <DAs> <Root> (relevant DataAreas) </Root> </DAs> </Cmd> </Module> </Panel> </Message>
>Cmd = (+)ActiveTargets (+)DAs (+)SortColumns (+)Source (+)Target (+)PosInfo (*)InitialDfValue
Cmd :: type : enumeration [see table below for list of possible values] id : integral action : enumeration [ "Copy" | "Move" ] copyOperator : enumeration [Plus | Minus | Multiply | Divide | Replace] copyType : enumeration [FieldToField | FieldToColumn | ColumnToColumn | Records]
Command type |
Description |
C => S Additional data |
S => C Additional data |
---|---|---|---|
|
|
N/A | None |
|
|
N/A | None |
Command type |
Description |
C => S Additional data |
S => C Additional data |
||
---|---|---|---|---|---|
|
|
|
N/A |
||
|
|
|
command not allowed |
||
|
|
same as DataFieldValue |
command not allowed |
||
|
|
|
command not allowed |
||
|
|
|
"dropIntoTarget" | "dropAfterTarget" ] represent target destination when droped whole record | command not allowed |
|
|
|
command not allowed |
||
|
|
|
command not allowed |
||
|
|
|
command not allowed |
||
|
|
|
|
||
|
|
|
command not allowed |
||
|
|
|
command not allowed |
:: CmdPrp (mandatory)id : integral, id of command which is used for menu, toolbar, context menu (tags MI, TBItem...) (subsidiary)enabled : boolean, disable/enable command. So disable/enable menu item, toolbar item where this command is used. Server sends ModC->Command id=x enabled=false. And that will disable all posibilities to execute that command via menu, toolbar, context menu. (subsidiary)checked: boolean, set command to checked state. (subsidiary)hidden: boolean, hide all items with the command id.
ActiveTargets = +Root +RootC
DAs = *Root
Source = +Module
PosInfo :: X : integral Y : integral window : see DFC::Window
SortColumns = *RootC
<ParentNode> <Element uid=x1 order=1/> <Element uid=x2 order=15/> <Element uid=x3 order=4/> </ParentNode>This means that elements should be inserted into (if they are new) or moved within (if they are existing) the list in such a way, that by the moment parsing leaves ParentNode, element x1 should be located in the list at position 1, x2 - at position 15, x3 - at position 4. Order of each specific element can be changed either directly (by explicitely setting its order by ‘order' attribute), or indirectly (by inserting or removing element(s) before it) * Order ranges from 1 (first element) to the current count of elements in the list. The situation, when ‘order' attribute value doesn't fit into this range is considered an error. But it's recommended to handle it anyway, setting element first or last in the list respectively Example 1 (selection of child DAs for parent DA)
<DA uid=parent> <DA uid="child1" order="1"/> <DA uid="child2" order="2"/> <DA uid="child3" order="3"/> </DA> Result: Parent DA Child 1 Child 2 Child 3Example 2 (insertion of new DA)
<DA uid="parent"> <DA uid="new child" order="2"/> </DA> Result: Parent DA Child 1 New Child Child 2 Child 3Example 3 (sorting DA by some DF)
<DA uid="parent"> <DA uid="child1" order="3"/> <DA uid="child2" order="2"/> <DA uid="child3" order="1"/> <DA uid="new child" order="4"/> </DA> Result: Parent DA Child 3 Child 2 Child 1 * New Child
creating XNet diagram within module
modification of XNet diagram
nodes
links
<RootC > <DAC uid = "1" order = "1">...</DAC> <DAC uid = "2" order = "2" type = "XnetDiagram"> <DFC uid = "1" order = "1" df_behaviour="i" linebrk = "true"/> <DFC uid = "2" order = "2" df_behaviour="i" linebrk = "false"/> <DFC uid = "3" order = "3" df_behaviour="i" linebrk = "true"/> </DAC> <DAC uid = "3" order = "3">...</DAC> </RootC> <Root > <DA uid = "1" order = "1" cust = "1">...</DA> <DA uid = "2" order = "2" cust = "2"> <DA uid = "21" order = "1" cust = "2"> <DF uid = "1" order = "1" cust = "1"> <Text>Project1</Text> </DF> <DF uid = "2" order = "2" cust = "2"> <Text>start date</Text> </DF> <DF uid = "3" order = "3" cust = "3"> <Text>finish date</Text> </DF> </DA> <DA uid = "22" order = "2" cust = "2"> <DF uid = "1" order = "1" cust = "1"> <Text>Project2</Text> </DF> <DF uid = "2" order = "2" cust = "2"> <Text>start date</Text> </DF> <DF uid = "3" order = "3" cust = "3"> <Text>finish date</Text> </DF> </DA> <Link uid = "1" pred = "21" succ = "22" type = "FS"/> </DA> <DA uid = "3" order = "3" cust = "3">...</DA> </Root>Diagram information is splitted into customizing and data sections. Customizing section is represented by <DAC> node with diagram="true" attribute. This node contains <DFC> nodes, each describing one DF inside diagram's node. <DFCnodes> should have "linebrk" attribute, which is true if this data field should start a new line in the node. All DFs should have behavior "i" - singleline editable text. Data section is represented by <DA> node, which refers to the diagram's customizing (refered to as diagram data area). Diagram data area is a placeholder for the diagram and describes its location in the module. Diagram data area has no DFs. Its only children are <DA> and <Link> nodes Each node within a diagram is described by <DA> node (refered to as node data area), a direct child of Diagram data area. Node's DFs are represented by <DF> nodes within the node data area. Node data area shouldn't have any other children beside its DFs Links between diagram nodes are represented by <Link> node (see description of "link" node)
<DAC uid="1" type="OfficeChart"> <NativeXml> ... </NativeXml> <DFC order="1" uid="11" df_hdg="column 1"/> <DFC order="2" uid="12" df_hdg="column 2"/> </DAC> <DA uid="1" cust="1"> <DA order="1" uid="1" cust="1" title="row 1"> <DF uid="11" cust="11"><Text>1</Text></DF> <DF uid="12" cust="12"><Text>2</Text></DF> </DA> <DA order="2" uid="2" cust="1" title="row 2"> <DF uid="21" cust="11"><Text>3</Text></DF> <DF uid="22" cust="12"><Text>4</Text></DF> </DA> <DA order="3" uid="3" cust="1" title="row 3"> <DF uid="31" cust="11"><Text>5</Text></DF> <DF uid="32" cust="12"><Text>6</Text></DF> </DA> </DA>This example describes one office chart, which has the following data:
|
|
|
|
|
|
|
|
|
|
|
|
"type"
"rowcnt"
<DFC uid="1" type="projection" rowcnt=3> <ScBndC /> </DFC>Projection DF instance(s):
<DF uid=1 cust=1> <DF uid=1 row=1> <ScBnd /> </DF> <DF uid=2 row=1> <ScBnd /> </DF> <DF uid=3 row=3> <ScBnd /> </DF> <DF uid=4 row=2> <ScBnd /> </DF> </DF>Setting new value for projection DF will be done in same way as receiving it from server. XML will look like:
<Message> <Panel uid = "project_copy"> <Module uid = "3"> <Cmd type = "DataFieldValue">Histograms.png <ActiveTargets> <Root uid = "0" cust = "0"> <DA uid = "0" cust = "25834"> <DA uid = "proj" cust = "proj"> <DF uid = "proj" cust = "proj"> <DF uid = "cell11" cust = "proj"> <Text>new val</Text> </DF>Parsing and appling of new value have to be implemented on server side.
<DFC uid="123" type="histogram" levelcnt=5> <ScBndC uid="6674" scale="6674"> <RoundTo>Weeks</RoundTo> </ScBndC> <ScBndC uid="62369" scale="62369"> <RoundTo>integral</RoundTo> </ScBndC> <BarSymbol level=0 sym=1000 /> <BarSymbol level=1 sym=1001 /> <BarSymbol level=2 sym=1002 /> <BarSymbol level=3 sym=1003 /> <BarSymbol level=4 sym=1004 /> </DFC>Histogram bar instance(s):
<DF uid=1 cust=123> <DF uid=1 level=0> <ScBnd scale="0" cust="6674" start="20.04.2009 00:00:00" end="26.04.2009 23:59:59"/> <ScBnd scale="3" cust="62369" start=0 end=35/> </DF> <DF uid=2 level=1> <ScBnd scale="0" cust="6674" start="20.04.2009 00:00:00" end="26.04.2009 23:59:59"/> <ScBnd scale="3" cust="62369" start=35 end=45/> </DF> <DF uid=3 level=2"> <ScBnd scale="0" cust="6674" start="04.05.2009 00:00:00" end="10.05.2009 23:59:59"/> <ScBnd scale="3" cust="62369" start=0 end=40/> </DF> <DF uid=4 level=2> <ScBnd scale="0" cust="6674" start="18.05.2009 00:00:00" end="24.05.2009 23:59:59"/> <ScBnd scale="3" cust="62369" start=0 end=38/> </DF> <DF uid=5 level=3> <ScBnd scale="0" cust="6674" start="04.05.2009 00:00:00" end="10.05.2009 23:59:59"/> <ScBnd scale="3" cust="62369" start=40 end=60/> </DF> </DF>
<Message> <Panel uid="1"> <Module uid="11"> <Cmd type="ListboxButtonClicked" view="2"> <ActiveTargets> <Root uid="2" cust="2"> <DA uid="1" cust="1"> <DF uid="17" cust="17"/> </DA> </Root> </ActiveTargets> </Cmd> </Module> </Panel> </Message>S -> C: "Here's the listbox module to open (ModuleCustomizing, Module), and associate it with this invoker DF"
<Message> <Panel uid="project"> <Module uid="1" cust="1" stat="Listbox"> <Owner> <Module uid="1" view=2> <Root uid="2" cust="2"> <DA uid="1" cust="1"> <DF uid="17" cust="17"/> </DA> </Root> </Module> </Owner> <Root uid="main" cust="main"> ... (listbox module content) <Root> </Module> </Panel> </Message>C -> S (implicit invoker case): "Invoker's content has been changed"
<Message> <Panel uid="1"> <Module uid="1"> <Cmd type="DataFieldChanging"> <ActiveTargets> <Root uid="2" cust="2"> <DA uid="1" cust="1"> <DF uid="17" cust="17"> <Text>newly entered text</Text> </DF> </DA> </Root> </ActiveTargets> </Cmd> </Module> </Panel> </Message>S -> C: "The new content for LB module (matching DFs highlighted by trafficlights)" Just a normal message, which updates module's content. In this case litbox is a target module C -> S: "The listbox closed, value is applied, here is current listbox record"
<Message> <Panel uid="1"> <Module uid="1"> <Cmd type="ListboxApplied"> <ActiveTargets> <Root uid="1" cust="1"> <DA uid="21" cust="1"> <DF uid="14" cust="14"/> </DA> </Root> </ActiveTargets> </Cmd> </Module> </Panel> </Message>C -> S: "The listbox closed without applying value"
<Message> <Panel uid="1"> <Module uid="1"> <Cmd type="ListboxClosed"/> </Module> </Panel> </Message>S -> C: "The new value for invoker DF" (or any other changes in module) Just a normal message, which changes content of DF or makes any other changes in module
uid value |
Description |
---|---|
|
|
|
|
|
|
|
|
|
|
SearchBar => *TBItem +MVListbox (*)MI *TextBoxItem
TextBoxItem :: cmd : integer; command that execution on text changed tooltip : string order : integer
ModuleIcon => *Bin :contains ico
<DFC uid = "2" order = "2" df_hdg = "Verknupfte Datei" df_width = "500" df_height = "56" df_len = "6" window = "1" df_behaviour = "h"> <CtxtMenu> <CMI order = "1" text = "EinfΓΌgen" cmd = "206" /> <CMI order = "2" text = "EinfΓΌgen aus &Clipboard" cmd = "205" /> <CMI order = "3" text = "&Γffnen" cmd = "213" /> <CMI order = "5" text = "Hyperlink &kopieren" cmd = "215" /> <CMI order = "6" text = "&Hyperlink bearbeiten" cmd = "216" /> <CMI order = "7" text = "Hyperlink lΓΆschen" cmd = "231" /> <CMI order = "8" text = "Dokument drucken" cmd = "221" /> </CtxtMenu> </DFC>To insert or edit hlinks special dialog is used. By default in this dialog English texts are set. In order to use other user languages in the dialog: for example German, special message have to be send to client, with German names for dialog elements. XML will look like (look to startup.xml in server stub):
<HlinkDialog text = "Hyperlink einfugen"> <NameTextBox text = "Anzeigetext"/> <UrlListBox text = "Verknupfung zu Datei order URL:"> <InnerText order = "1">http://www.planta-gmbh.de</InnerText> <InnerText order = "2">http://www.osua.de</InnerText> </UrlListBox> <UrlCheckBox text = "Relativen Pfad fur Hyperlink verwenden"/> <ButtonType id = "search" text = "Durchsuchen"/> <ButtonType id = "ok" text = "OK"/> <ButtonType id = "cancel" text = "Cancel"/> </HlinkDialog>For hlink operations please have a look to hlink conception document RSO6437-3I4Z.doc! In C->S interaction for single DI (not structured) hlink there are actions: Default empty action – client send new or edited hlink DF value to server. Delete – client send DF with action Delete to server. In S->C interaction for single DI hlink there are actions: Default empty action – create or edit hlink DF acording to parameters received from server. Delete – clear hlink DF without file operations. Such actions give the same algoritm for hlink operations for both single DI and structured DI hlinks. So we don’t need additional parameter on client side to distinguish single DI hlink from structured one! For structured DI hlinks we have 15 different functions. Function options will be set in customizing and will not be changed in runtime, so we need to store them in DFC (HlinkOptions). We need to store only options, which can be used by client, like: ST, DP, MO, PA, OM, SH, VR. XML will look like:
<DFC uid = "2" order = "2" df_hdg = "Verknupfte Datei" df_width = "500" df_height = "56" df_len = "6" window = "1" df_behaviour = "h"> <HlinkOptions st = "1" dp = "0" mo = "0" pa = "2" om = "0" sh = "0" vr = "0"/> </DFCValue of hlink functions: path, file name, text will be changed in runtime (they depends on variables and VDIs), so we need to store them in DF. XML will look like:
<DF uid = "2" cust = "2"> <Text>RSO4879-27581.doc</Text> <Url>C:\ppms\wrk\RSO4879-27581.doc</Url> <TmpUrl>C:\dt461\template\busprc.doc</TmpUrl> <DelPath>C:\deleted</DelPath> </DF>
<Module uid = "project"> <Cmd type = "DataFieldValue"> <ActiveTargets> <Root uid = "2" cust = "2"> <Sheet uid = "2"> <DA uid = "5" cust = "1"> <DF uid = "2" cust = "2"> <Text>new_text</Text> <Url>C:\ppms\wrk\RSO4879-27581.doc</Url> </DF>XML will look like (delete):
<Module uid = "project"> <Cmd type = "DataFieldValue"> <ActiveTargets> <Root uid = "2" cust = "2"> <Sheet uid = "2"> <DA uid = "5" cust = "1"> <DF uid = "2" cust = "2" action = "Delete"/>After receiving new DF hlink value from client, server stores it internaly and send back new hlink DF with correspondent action and new parameters: text, url. In S->C interaction for structured DI hlink there are actions:
<DF uid = "2" cust = "2" action = "CreateFromTemplate"> <Text>project_description</Text> <Url>C:\4711\4711_1.doc</Url> <TmpUrl>C:\dt461\template\busprc.doc</TmpUrl> </DF>in this case client will create new hlink with Url from template TmpUrl . New hlink will have text = “project_description” and url = “C:\4711\4711_1.doc”, which were constructed by server accord-ing to correspondent functions. XML will look like - MoveToDeleted:
<DF uid = "2" cust = "2" action = " !MoveToDeleted"> <DelPath>C:\deleted</DelPath> </DF>in this case client will move hlink file to DelPath and clear hlink DF. XML will look like - Delete:
<DF uid = "2" cust = "2" action = " Delete"/>in this case client will clear hlink DF without any file operations. If record is deleted in module and it has hlinks, server have to give commands to client to delete hlinks before record deletion (see DE, DL options)!
|
|
|
|
|
<PrintWindow> <LeftMarginResizeText text = "Linker Rand: @value cm"/> <RightMarginResizeText text = "Rechter Rand: @value cm"/> <TopMarginResizeText text = "Oberer Rand: @value cm"/> <BottomMarginResizeText text = "Unterer Rand: @value cm"/> <PrintHeaderResizeText text = "Kopfzeile: @value cm"/> <PrintTrailerResizeText text = "Fusszeile: @value cm"/> <PageNumberText text = "Seite @cur_page_h"/> <ColumnNumberText text = "Bahn @cur_column"/> <ColumnResizeText text = "Bahn: @cur_column Breite: @value cm"/> <RowResizeText text = "Reihe: @cur_row Hφhe: @value cm"/> </PrintWindow>Here such place holders are used:
<GraphicEditor> <RectText text = "Rect = {X = @x, Y = @y, Weite = @w, Hohe = @h}; Order = @o"/> </GraphicEditor>here @x, @y, @w, @h, @o - place holders, which will be replaced with real values.
I | Attachment | History | Size | Date | Comment |
---|---|---|---|---|---|
png | Color1.png | r1 | 0.6 K | 2009-09-10 - 07:34 | |
png | Color2.png | r1 | 1.0 K | 2009-09-10 - 07:34 | |
png | Color3.png | r1 | 1.0 K | 2009-09-10 - 07:41 | |
png | Cuboid.png | r1 | 0.5 K | 2009-09-10 - 07:40 | |
png | Scale.png | r1 | 0.9 K | 2009-09-09 - 12:38 | |
png | Stunden.png | r1 | 1.4 K | 2009-09-10 - 12:07 | |
png | Zylinder1.png | r1 | 0.3 K | 2009-09-10 - 07:44 | |
png | Zylinder2.png | r1 | 0.3 K | 2009-09-10 - 07:44 |