wtf-tracker-cvs Mailing List for Work Tracking Facilitator (Page 3)
Brought to you by:
gryphonshafer
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(8) |
Nov
(33) |
Dec
(50) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(17) |
Feb
|
Mar
(19) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Gryphon S. <gry...@us...> - 2006-12-11 18:13:11
|
Update of /cvsroot/wtf-tracker/wtf In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv9983 Modified Files: httpd.conf Log Message: Added Apache2::ServerUtil to a PerlModule load line near top because we noticed on some boxes mod_perl would complain without it Index: httpd.conf =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/httpd.conf,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** httpd.conf 2 Dec 2006 00:09:09 -0000 1.5 --- httpd.conf 11 Dec 2006 18:13:07 -0000 1.6 *************** *** 10,13 **** --- 10,14 ---- PerlModule Apache2::RequestRec PerlModule Apache2::RequestUtil + PerlModule Apache2::ServerUtil PerlModule DBD::mysql PerlModule File::Find |
From: Gryphon S. <gry...@us...> - 2006-12-11 18:12:22
|
Update of /cvsroot/wtf-tracker/wtf/db In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv9688/db Modified Files: create.sql Log Message: Minor SQL syntaxtical error fix; also fixed a duplicate key error bug Index: create.sql =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/db/create.sql,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** create.sql 3 Dec 2006 23:08:22 -0000 1.3 --- create.sql 11 Dec 2006 18:12:15 -0000 1.4 *************** *** 62,66 **** `team_id` INTEGER UNSIGNED NULL, `username` VARCHAR(255) NOT NULL, ! `passwd` VARCHAR(64) NOT NULL DEFAULT ''r@nd0mt3xt'', `name` VARCHAR(255) NOT NULL, `last_login` DATETIME NULL, --- 62,66 ---- `team_id` INTEGER UNSIGNED NULL, `username` VARCHAR(255) NOT NULL, ! `passwd` VARCHAR(64) NOT NULL DEFAULT 'r@nd0mt3xt', `name` VARCHAR(255) NOT NULL, `last_login` DATETIME NULL, *************** *** 198,201 **** (4,1,'Sub-Line 3',NULL,4,1), (5,NULL,'Business Line B',NULL,5,1), ! (6,5,'Sub-Line 1',NULL,6,1), ! (7,5,'Sub-Line 2',NULL,7,1); --- 198,201 ---- (4,1,'Sub-Line 3',NULL,4,1), (5,NULL,'Business Line B',NULL,5,1), ! (6,5,'Sub-Line 4',NULL,6,1), ! (7,5,'Sub-Line 5',NULL,7,1); |
From: Gryphon S. <gry...@us...> - 2006-12-06 16:09:40
|
Update of /cvsroot/wtf-tracker/wtf/static In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv14298/static Modified Files: tracking.js Log Message: After someone pointed out that index() is faster than substr(), time to refactor a few lines of code across the application. Index: tracking.js =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/static/tracking.js,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** tracking.js 2 Dec 2006 00:09:09 -0000 1.9 --- tracking.js 6 Dec 2006 16:09:35 -0000 1.10 *************** *** 488,492 **** var inputs = document.getElementsByTagName("input"); for ( var i in inputs ) { ! if ( inputs[i].name && inputs[i].name.substr( 0, 9 ) == "activity_" ) { inputs[i].disabled = state; } --- 488,492 ---- var inputs = document.getElementsByTagName("input"); for ( var i in inputs ) { ! if ( inputs[i].name && inputs[i].name.indexOf("activity_") == 0 ) { inputs[i].disabled = state; } |
From: Gryphon S. <gry...@us...> - 2006-12-06 16:09:39
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF/Pages In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv14298/lib/WTF/Pages Modified Files: Admin.pm Input.pm Log Message: After someone pointed out that index() is faster than substr(), time to refactor a few lines of code across the application. Index: Admin.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Pages/Admin.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Admin.pm 2 Dec 2006 00:09:09 -0000 1.6 --- Admin.pm 6 Dec 2006 16:09:34 -0000 1.7 *************** *** 419,428 **** my $update = sub { my ($name) = @_; - my $length = length($name) + 1; if ( $table->{ 'has_' . $name } ) { $dbh->do( 'UPDATE ' . $table->{'table'} . ' SET ' . $name . ' = 1 WHERE id IN ( ' . join( ', ', ! map { substr( $_, $length ) } grep { substr( $_, 0, $length ) eq $name . '_' } $req->param() ) . ')' ) or die $dbh->errstr(); } --- 419,429 ---- my $update = sub { my ($name) = @_; if ( $table->{ 'has_' . $name } ) { $dbh->do( 'UPDATE ' . $table->{'table'} . ' SET ' . $name . ' = 1 WHERE id IN ( ' . join( ', ', ! map { substr( $_, length($name) + 1 ) } ! grep { index( $_, $name . '_' ) == 0 } $req->param() ! ) . ')' ) or die $dbh->errstr(); } Index: Input.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Pages/Input.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Input.pm 3 Dec 2006 23:03:43 -0000 1.8 --- Input.pm 6 Dec 2006 16:09:34 -0000 1.9 *************** *** 221,225 **** grep { $_->[1] > 0 } map { [ substr( $_, 9 ), $req->param($_) || 0 ] } ! grep { substr( $_, 0, 9 ) eq 'activity_' } keys %{ $req->param() }; # if there is any activity data submitted from the tracker form, insert a --- 221,225 ---- grep { $_->[1] > 0 } map { [ substr( $_, 9 ), $req->param($_) || 0 ] } ! grep { index( $_, 'activity_' ) == 0 } keys %{ $req->param() }; # if there is any activity data submitted from the tracker form, insert a |
From: Gryphon S. <gry...@us...> - 2006-12-05 16:04:51
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF/Apache In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv32385 Modified Files: Authz.pm Log Message: Refactored the large authorization conditional, moving the settings for it out into a pair of constants. This helps to avoid repeated code. Index: Authz.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Apache/Authz.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Authz.pm 2 Dec 2006 00:09:09 -0000 1.5 --- Authz.pm 5 Dec 2006 16:04:46 -0000 1.6 *************** *** 7,10 **** --- 7,36 ---- use WTF::SQL; + use constant { + + # pages and actions to "authz" authorizations in the "authz_employee" table + SECURE_SECTIONS => { + 'reports/team' => 'team_view', + 'reports/projects' => 'project_view', + 'reports/project' => 'project_view', + 'reports/activity' => 'activity', + 'admin/authz' => 'admin_authz', + 'admin/newauthzs' => 'admin_authz', + 'admin/update' => 'update', + 'admin/loginas' => 'login_as', + }, + + # pages and actions only administrators can view or do + ADMIN_AREAS => [ + 'admin/users', + 'admin/saveusers', + 'admin/taskarea', + 'admin/savetarea', + 'admin/tables', + 'admin/tablesave', + ], + + }; + # setup database and SQL statement handles my $dbh = WTF::DBH->connect(); *************** *** 13,19 **** sub handler { my ($r) = @_; ! ! my ($section) = $r->uri() =~ m|^/wtf/\w+/([^?]+)|; ! $section ||= ''; $sth->{'authz'}->execute( $r->pnotes('user_id') ) or die $dbh->errstr(); --- 39,43 ---- sub handler { my ($r) = @_; ! my $section = ( $r->uri() =~ m|^/wtf/\w+/([^?]+)| ) ? $1 : q(); $sth->{'authz'}->execute( $r->pnotes('user_id') ) or die $dbh->errstr(); *************** *** 23,45 **** if ( ! ! # pages and actions authorized by the "authz_employee" table ! ( $section eq 'reports/team' and not $r->pnotes('authz')->{'team_view'} ) or ! ( $section eq 'reports/projects' and not $r->pnotes('authz')->{'project_view'} ) or ! ( $section eq 'reports/project' and not $r->pnotes('authz')->{'project_view'} ) or ! ( $section eq 'reports/activity' and not $r->pnotes('authz')->{'activity'} ) or ! ( $section eq 'admin/authz' and not $r->pnotes('authz')->{'admin_authz'} ) or ! ( $section eq 'admin/newauthzs' and not $r->pnotes('authz')->{'admin_authz'} ) or ! ( $section eq 'admin/update' and not $r->pnotes('authz')->{'update'} ) or ! ( $section eq 'admin/loginas' and not $r->pnotes('authz')->{'login_as'} ) or ! ! # pages and actions only administrators can view or do ! ( $section eq 'admin/users' and not $r->pnotes('is_admin') ) or ! ( $section eq 'admin/saveusers' and not $r->pnotes('is_admin') ) or ! ( $section eq 'admin/taskarea' and not $r->pnotes('is_admin') ) or ! ( $section eq 'admin/savetarea' and not $r->pnotes('is_admin') ) or ! ( $section eq 'admin/tables' and not $r->pnotes('is_admin') ) or ! ( $section eq 'admin/tablesave' and not $r->pnotes('is_admin') ) ! ) { $r->note_basic_auth_failure(); --- 47,52 ---- if ( ! ( SECURE_SECTIONS->{$section} and not $r->pnotes('authz')->{ SECURE_SECTIONS->{$section} } ) or ! ( grep { $_ eq $section } @{ (ADMIN_AREAS) } and not $r->pnotes('is_admin') ) ) { $r->note_basic_auth_failure(); |
From: Gryphon S. <gry...@us...> - 2006-12-05 16:03:38
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF/Apache In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv31981 Modified Files: Authen.pm Log Message: Moved the checking of for undef outside of the if conditional where it wasn't really doing any good anyway Index: Authen.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Apache/Authen.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Authen.pm 2 Dec 2006 00:09:09 -0000 1.3 --- Authen.pm 5 Dec 2006 16:03:35 -0000 1.4 *************** *** 31,39 **** $r->pnotes( 'username' => $r->user() ); # use simple crypt() encryption to test password if ( ( defined $id ) and ! ( crypt( $passwd_auth, substr( $passwd_db, 0, 2 ) ) eq $passwd_db || '' ) ) { --- 31,40 ---- $r->pnotes( 'username' => $r->user() ); + $passwd_db ||= q(); # use simple crypt() encryption to test password if ( ( defined $id ) and ! ( crypt( $passwd_auth, substr( $passwd_db, 0, 2 ) ) eq $passwd_db ) ) { |
From: Gryphon S. <gry...@us...> - 2006-12-05 16:02:40
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv31556/lib/WTF Modified Files: Config.pm Log Message: Reorganized the configuration file to put more frequently or commonly changed things higher in the list. Index: Config.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Config.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Config.pm 3 Dec 2006 00:04:20 -0000 1.5 --- Config.pm 5 Dec 2006 16:02:32 -0000 1.6 *************** *** 17,21 **** ) ? 'wtf_dev' : 'wtf', ! # enviornment name for DEVEL and PROD ENVIRONMENT => ( Apache2::ServerUtil::exists_config_define('DEVEL') --- 17,21 ---- ) ? 'wtf_dev' : 'wtf', ! # enviornment name for DEVEL and PROD ENVIRONMENT => ( Apache2::ServerUtil::exists_config_define('DEVEL') *************** *** 25,28 **** --- 25,35 ---- use constant CONFIG => { + # email settings + 'email' => { + 'wtf' => 'wt...@ex...', + 'admin' => 'ad...@ex...', + 'server' => 'mail.example.com', + }, + # MySQL database connection settings 'database' => { *************** *** 42,45 **** --- 49,55 ---- 'templates' => { + # WTF installation title (used on home page and in emails) + 'title' => 'Work Tracking Facilitator', + # directories in which to look for template files 'pages' => [ *************** *** 50,56 **** # templates root (used for preloading all templates) 'root' => PATHWAY . '/wtf/templates', - - # WTF installation title (used on home page and in emails) - 'title' => 'Work Tracking Facilitator', }, --- 60,63 ---- *************** *** 72,82 **** 'weekly_status' => PATHWAY . '/wtf/util/weekly_status.pl' . ENVIRONMENT, ! # email settings ! 'email' => { ! 'wtf' => 'wt...@ex...', ! 'admin' => 'ad...@ex...', ! 'server' => 'mail.example.com', ! }, ! 'version' => '1.02', }; --- 79,83 ---- 'weekly_status' => PATHWAY . '/wtf/util/weekly_status.pl' . ENVIRONMENT, ! # version number to display on navigation bar 'version' => '1.02', }; |
From: Gryphon S. <gry...@us...> - 2006-12-03 23:08:25
|
Update of /cvsroot/wtf-tracker/wtf/db In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv26953 Modified Files: create.sql schema.xml Log Message: Removed a useless column in the summary table Index: create.sql =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/db/create.sql,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** create.sql 2 Dec 2006 22:36:27 -0000 1.2 --- create.sql 3 Dec 2006 23:08:22 -0000 1.3 *************** *** 97,101 **** `vacation` BOOL NOT NULL DEFAULT '0', `sick` BOOL NOT NULL DEFAULT '0', - `other_hours` FLOAT(3,2) NOT NULL DEFAULT '0', PRIMARY KEY(`id`), UNIQUE INDEX `employee_work_day`(`employee_id`, `work_day`) --- 97,100 ---- Index: schema.xml =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/db/schema.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** schema.xml 2 Dec 2006 22:36:27 -0000 1.5 --- schema.xml 3 Dec 2006 23:08:22 -0000 1.6 *************** *** 2,6 **** <DBMODEL Version="4.0"> <SETTINGS> ! <GLOBALSETTINGS ModelName="wtf" IDModel="0" IDVersion="0" VersionStr="1.0.0.0" Comments="" UseVersionHistroy="1" AutoIncVersion="1" DatabaseType="MySQL" ZoomFac="100.00" XPos="0" YPos="0" DefaultDataType="5" DefaultTablePrefix="0" DefSaveDBConn="" DefSyncDBConn="" DefQueryDBConn="" Printer="\\pecan\LaserJet 4200 PCL 6 South Workroom" HPageCount="5.145728643216079" PageAspectRatio="1.328971962616822" PageOrientation="0" PageFormat="A4 (210x297 mm, 8.26x11.7 inches)" SelectedPages="0" UsePositionGrid="0" PositionGridX="20" PositionGridY="20" TableNameInRefs="1" DefaultTableType="0" ActivateRefDefForNewRelations="0" FKPrefix="" FKPostfix="" CreateFKRefDefIndex="0" DBQuoteCharacter="`" CreateSQLforLinkedObjects="0" DefModelFont="Tahoma" CanvasWidth="4096" CanvasHeight="2842" /> <DATATYPEGROUPS> <DATATYPEGROUP Name="Numeric Types" Icon="1" /> --- 2,6 ---- <DBMODEL Version="4.0"> <SETTINGS> ! <GLOBALSETTINGS ModelName="wtf" IDModel="0" IDVersion="0" VersionStr="1.0.0.0" Comments="" UseVersionHistroy="1" AutoIncVersion="1" DatabaseType="MySQL" ZoomFac="100.00" XPos="0" YPos="96" DefaultDataType="5" DefaultTablePrefix="0" DefSaveDBConn="" DefSyncDBConn="" DefQueryDBConn="" Printer="\\pecan\LaserJet 4200 PCL 6 South Workroom" HPageCount="5.145728643216079" PageAspectRatio="1.328971962616822" PageOrientation="0" PageFormat="A4 (210x297 mm, 8.26x11.7 inches)" SelectedPages="0" UsePositionGrid="0" PositionGridX="20" PositionGridY="20" TableNameInRefs="1" DefaultTableType="0" ActivateRefDefForNewRelations="0" FKPrefix="" FKPostfix="" CreateFKRefDefIndex="0" DBQuoteCharacter="`" CreateSQLforLinkedObjects="0" DefModelFont="Tahoma" CanvasWidth="4096" CanvasHeight="2842" /> <DATATYPEGROUPS> <DATATYPEGROUP Name="Numeric Types" Icon="1" /> *************** *** 853,861 **** </OPTIONSELECTED> </COLUMN> - <COLUMN ID="1296" ColName="other_hours" PrevColName="" Pos="5" idDatatype="7" DatatypeParams="(3,2)" Width="-1" Prec="-1" PrimaryKey="0" NotNull="1" AutoInc="0" IsForeignKey="0" DefaultValue="0" Comments=""> - <OPTIONSELECTED> - <OPTIONSELECT Value="0" /> - </OPTIONSELECTED> - </COLUMN> </COLUMNS> <RELATIONS_START> --- 853,856 ---- |
From: Gryphon S. <gry...@us...> - 2006-12-03 23:03:52
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF/Pages In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv24976/lib/WTF/Pages Modified Files: Input.pm Reports.pm Log Message: Additional data exposure in the Activity Summary screen Index: Reports.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Pages/Reports.pm,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Reports.pm 3 Dec 2006 00:42:09 -0000 1.11 --- Reports.pm 3 Dec 2006 23:03:43 -0000 1.12 *************** *** 331,337 **** ); ! $tmpl_obj->param( ! 'activity_months' => $activity_months, ! 'activities' => WTF::Utils::indent( $sth->{'activities'}->fetchall_arrayref({}), 'parent_id', --- 331,338 ---- ); ! if ( exists $activity_months->[0]{'datestamp'} ) { ! my @alloc_days; ! ! my $activities = WTF::Utils::indent( $sth->{'activities'}->fetchall_arrayref({}), 'parent_id', *************** *** 357,363 **** $row->{'average'} = int( $row->{'average'} * 100 ) / 100; $row->{'alloc'} = int( $row->{'employees'} * $row->{'days'} * $row->{'average'} ) / 100; }, ! ), ! ) if ( exists $activity_months->[0]{'datestamp'} ); return $tmpl_obj->output(); --- 358,393 ---- $row->{'average'} = int( $row->{'average'} * 100 ) / 100; $row->{'alloc'} = int( $row->{'employees'} * $row->{'days'} * $row->{'average'} ) / 100; + + push @alloc_days, $row->{'alloc'}; }, ! ); ! ! my $total_alloc_days; ! $total_alloc_days += $_ for (@alloc_days); ! my $avg_alloc_days = int( @alloc_days / $total_alloc_days * 100 ) / 100; ! ! $sth->{'activity_summary_totals'}->execute( $month . '-01', $month . '-01' ) or die $dbh->errstr(); ! my ( $total_emp, $total_emp_days, $total_avg ) = $sth->{'activity_summary_totals'}->fetchrow_array(); ! $sth->{'activity_summary_totals'}->finish(); ! ! $sth->{'activity_summary_vacation_sick'}->execute( $month . '-01', $month . '-01' ) ! or die $dbh->errstr(); ! my ( $vacation, $sick ) = $sth->{'activity_summary_vacation_sick'}->fetchrow_array(); ! $sth->{'activity_summary_vacation_sick'}->finish(); ! ! $tmpl_obj->param( ! 'activity_months' => $activity_months, ! 'total_emp' => $total_emp, ! 'total_emp_days' => $total_emp_days, ! 'total_avg' => $total_avg, ! 'total_alloc_days' => $total_alloc_days, ! 'vacation' => $vacation, ! 'sick' => $sick, ! 'activities' => [ map { ! $_->{'alloc_percent'} = int( $_->{'alloc'} / $total_alloc_days * 100 ); ! $_; ! } @{$activities} ], ! ); ! } return $tmpl_obj->output(); Index: Input.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Pages/Input.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Input.pm 2 Dec 2006 00:25:46 -0000 1.7 --- Input.pm 3 Dec 2006 23:03:43 -0000 1.8 *************** *** 219,223 **** # build a simple data structure with the activity parameter data my @activity_input = ! map { [ substr( $_, 9 ), $req->param($_) ] } grep { substr( $_, 0, 9 ) eq 'activity_' } keys %{ $req->param() }; --- 219,224 ---- # build a simple data structure with the activity parameter data my @activity_input = ! grep { $_->[1] > 0 } ! map { [ substr( $_, 9 ), $req->param($_) || 0 ] } grep { substr( $_, 0, 9 ) eq 'activity_' } keys %{ $req->param() }; |
From: Gryphon S. <gry...@us...> - 2006-12-03 23:03:52
|
Update of /cvsroot/wtf-tracker/wtf/static In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv24976/static Modified Files: general.css Log Message: Additional data exposure in the Activity Summary screen Index: general.css =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/static/general.css,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** general.css 3 Dec 2006 21:06:13 -0000 1.12 --- general.css 3 Dec 2006 23:03:44 -0000 1.13 *************** *** 341,345 **** table#tracking_table tfoot td, ! table tfoot td#activity_total { text-align: right; background-color: #e0e0e0; --- 341,346 ---- table#tracking_table tfoot td, ! table tfoot td#activity_total, ! tr.footer_summary td { text-align: right; background-color: #e0e0e0; |
From: Gryphon S. <gry...@us...> - 2006-12-03 23:03:52
|
Update of /cvsroot/wtf-tracker/wtf/templates/pages/reports In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv24976/templates/pages/reports Modified Files: activity.tmpl Log Message: Additional data exposure in the Activity Summary screen Index: activity.tmpl =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/templates/pages/reports/activity.tmpl,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** activity.tmpl 3 Dec 2006 00:06:29 -0000 1.3 --- activity.tmpl 3 Dec 2006 23:03:44 -0000 1.4 *************** *** 25,28 **** --- 25,29 ---- <th title="Average percentage activity reported by employees">Avg. %</th> <th title="Total resource-days allocated to this summary activity">Alloc. Days</th> + <th title="Percentage of total allocation reported to this activity">Alloc. %</th> </tr> <tmpl_loop name="activities"> *************** *** 31,35 **** title="<tmpl_var name="description" escape="html">" class="task_indent_<tmpl_var name="indent">" ! <tmpl_if name="group">colspan="5"</tmpl_if> > <tmpl_var name="name" escape="html"> --- 32,36 ---- title="<tmpl_var name="description" escape="html">" class="task_indent_<tmpl_var name="indent">" ! <tmpl_if name="group">colspan="6"</tmpl_if> > <tmpl_var name="name" escape="html"> *************** *** 48,55 **** --- 49,120 ---- title="Total resource-days allocated to this summary activity" align="right"><tmpl_var name="alloc"></td> + <td + title="Percentage of total allocation reported to this activity" + align="right"><tmpl_var name="alloc_percent">%</td> </tmpl_unless> </tr> </tmpl_loop> + <tr class="footer_summary"> + <td>Totals:</td> + <td title="Total employees reporting activity this month"><tmpl_var name="total_emp"></td> + <td title="Total days employees worked"><tmpl_var name="total_emp_days"></td> + <td>N/A</td> + <td title="Total man-days of work reported"><tmpl_var name="total_alloc_days"></td> + <td>N/A</td> + </tr> + </table> + + <h4 class="tight">Other Events</h4> + + <table class="tabular"> + <tr> + <th>Event Type</th> + <th>Total Days</th> + <tr> + <td>Vacation</td> + <td align="right"><tmpl_var name="vacation"></td> + </tr> + <tr> + <td>Sick</td> + <td align="right"><tmpl_var name="sick"></td> + </tr> </table> + + <dl class="note_content"> + <dt># Emp.</dt> + <dd> + Total number of employees who reported activity in a given summary activity item over the + course of the month. This number is irrespective of the percentage activity recorded or + number of times a single employee entered data for a given item. This is just a distinct + count of the number of employees who recorded activity in a given item. + </dd> + + <dt>Emp. Days</dt> + <dd> + Total number of days reported in this activity across all employees. This statistic is + irrespective of the percentage recorded. It only shows the total days across all employees + where work was performed in a given item. + </dd> + + <dt>Avg. %</dt> + <dd> + Average percentage activity reported by employees. Given each entry posted by employees + across the month, this is the average percentage entered. This is not a total allocation, + only a simple average. + </dd> + + <dt>Alloc. Days</dt> + <dd> + Total resource-days allocated to this summary activity. This is the total work in the month + reported to a given item. This statistic can be used for percentage overhead billing. + </dd> + + <dt>Alloc. %</dt> + <dd> + Percentage of total allocation reported to this activity. This is the percentage of the total + work in the month reported to a gien item. This statistic can be used for percentage + overhead billing. + </dd> + </dl> <tmpl_else> <p>There is no activity summary data available.</p> |
From: Gryphon S. <gry...@us...> - 2006-12-03 23:03:47
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv24976/lib/WTF Modified Files: SQL.pm Log Message: Additional data exposure in the Activity Summary screen Index: SQL.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/SQL.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** SQL.pm 2 Dec 2006 00:09:09 -0000 1.8 --- SQL.pm 3 Dec 2006 23:03:42 -0000 1.9 *************** *** 337,340 **** --- 337,355 ---- }, + 'activity_summary_totals' => q{ + SELECT + COUNT( DISTINCT s.employee_id ) AS total_emp, + COUNT( DISTINCT s.id ) AS total_emp_days, + SUM(asm.percentage) AS total_avg + FROM summary AS s + INNER JOIN activity_summary AS asm ON s.id = asm.summary_id + WHERE s.work_day BETWEEN ? AND ? + INTERVAL 1 MONTH + }, + + 'activity_summary_vacation_sick' => q{ + SELECT SUM(vacation) AS vacation, SUM(sick) AS sick + FROM summary WHERE work_day BETWEEN ? AND ? + INTERVAL 1 MONTH + }, + 'table_data_team' => 'SELECT id, team_id AS parent_id, name, ordering FROM team ORDER BY ordering', 'table_data_area' => 'SELECT id, name, description, active, ordering FROM area ORDER BY ordering', |
From: Gryphon S. <gry...@us...> - 2006-12-03 21:06:20
|
Update of /cvsroot/wtf-tracker/wtf/static In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv11619/static Modified Files: general.css Log Message: Moved the nav bar up and right by 5 pixels each way, 'cause I think it looks better that way. Index: general.css =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/static/general.css,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** general.css 2 Dec 2006 00:09:09 -0000 1.11 --- general.css 3 Dec 2006 21:06:13 -0000 1.12 *************** *** 63,68 **** div#nav_bar { position: absolute; ! top: 15px; ! right: 10px; text-align: right; } --- 63,68 ---- div#nav_bar { position: absolute; ! top: 10px; ! right: 5px; text-align: right; } |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:43:44
|
Update of /cvsroot/wtf-tracker/wtf/templates/pages/reports In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv28396/templates/pages/reports Modified Files: team_view.tmpl Log Message: Added Activity Summary recording to show up in the Team View summary table so that managers can nag subordinates when they don't enter Activity Summary data. (I'm a bad, bad man.) Index: team_view.tmpl =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/templates/pages/reports/team_view.tmpl,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** team_view.tmpl 28 Nov 2006 21:58:37 -0000 1.6 --- team_view.tmpl 3 Dec 2006 00:42:09 -0000 1.7 *************** *** 125,128 **** --- 125,129 ---- <tmpl_if name="work">W</tmpl_if> <tmpl_if name="notes">N</tmpl_if> + <tmpl_if name="summary">S</tmpl_if> </td> </tmpl_loop> *************** *** 133,137 **** <p class="uber_small indent"> W = Work time tracked<br /> ! N = Notes included </p> --- 134,139 ---- <p class="uber_small indent"> W = Work time tracked<br /> ! N = Notes included<br /> ! S = Activity summary recorded </p> |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:42:13
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF/Pages In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv28396/lib/WTF/Pages Modified Files: Reports.pm Log Message: Added Activity Summary recording to show up in the Team View summary table so that managers can nag subordinates when they don't enter Activity Summary data. (I'm a bad, bad man.) Index: Reports.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Pages/Reports.pm,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Reports.pm 3 Dec 2006 00:06:29 -0000 1.10 --- Reports.pm 3 Dec 2006 00:42:09 -0000 1.11 *************** *** 125,132 **** DISTINCT IF ( n.work_day BETWEEN ? AND ?, n.work_day, NULL ) ORDER BY n.work_day SEPARATOR "|" ! ) AS note_work_days FROM employee AS e LEFT OUTER JOIN work AS w ON e.id = w.employee_id LEFT OUTER JOIN notes AS n ON e.id = n.employee_id WHERE e.team_id IN ( } . join( ',', @{$summary_team_ids} ) . q{ ) AND e.active = 1 GROUP BY e.id --- 125,137 ---- DISTINCT IF ( n.work_day BETWEEN ? AND ?, n.work_day, NULL ) ORDER BY n.work_day SEPARATOR "|" ! ) AS note_work_days, ! GROUP_CONCAT( ! DISTINCT IF ( s.work_day BETWEEN ? AND ?, s.work_day, NULL ) ! ORDER BY s.work_day SEPARATOR "|" ! ) AS summary_work_days FROM employee AS e LEFT OUTER JOIN work AS w ON e.id = w.employee_id LEFT OUTER JOIN notes AS n ON e.id = n.employee_id + LEFT OUTER JOIN summary AS s ON e.id = s.employee_id WHERE e.team_id IN ( } . join( ',', @{$summary_team_ids} ) . q{ ) AND e.active = 1 GROUP BY e.id *************** *** 136,139 **** --- 141,145 ---- $date_start, $date_end, $date_start, $date_end, + $date_start, $date_end, ) or die $dbh->errstr(); *************** *** 162,176 **** # result is a template-ready data structure, booleans for work and notes my $team_summary = [ map { ! my ( $work, $notes ) = ( $_->{'work_work_days'} || '', $_->{'note_work_days'} || '' ); $_->{'days'} = [ map { ! my $work_b = ( index( $work, $_->{'date'} ) > -1 ) ? 1 : 0; ! my $notes_b = ( index( $notes, $_->{'date'} ) > -1 ) ? 1 : 0; { 'work' => $work_b, 'notes' => $notes_b, 'weekend' => $_->{'weekend'}, ! 'empty' => ( not ( $work_b or $notes_b or $_->{'weekend'} ) ) ? 1 : 0, } } @dates --- 168,193 ---- # result is a template-ready data structure, booleans for work and notes my $team_summary = [ map { ! my ( $work, $notes, $summary ) = ( ! $_->{'work_work_days'} || '', ! $_->{'note_work_days'} || '', ! $_->{'summary_work_days'} || '', ! ); $_->{'days'} = [ map { ! my $date = $_->{'date'}; ! my ( $work_b, $notes_b, $summary_b ) = map { ! ( index( $_, $date ) > -1 ) ? 1 : 0 ! } ( $work, $notes, $summary ); ! ! #my $work_b = ( index( $work, $_->{'date'} ) > -1 ) ? 1 : 0; ! #my $notes_b = ( index( $notes, $_->{'date'} ) > -1 ) ? 1 : 0; ! #my $summary_b = ( index( $summary, $_->{'date'} ) > -1 ) ? 1 : 0; { 'work' => $work_b, 'notes' => $notes_b, + 'summary' => $summary_b, 'weekend' => $_->{'weekend'}, ! 'empty' => ( not ( $work_b or $notes_b or $summary_b or $_->{'weekend'} ) ) ? 1 : 0, } } @dates |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:06:32
|
Update of /cvsroot/wtf-tracker/wtf/templates/pages/reports In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv14612/templates/pages/reports Modified Files: activity.tmpl Log Message: Fixed a bug that would happen if there's no Activity Summary data at all to display Index: activity.tmpl =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/templates/pages/reports/activity.tmpl,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** activity.tmpl 28 Nov 2006 18:50:13 -0000 1.2 --- activity.tmpl 3 Dec 2006 00:06:29 -0000 1.3 *************** *** 3,17 **** <h2><tmpl_var name="title"></h2> ! <form method="get" action="<tmpl_var name="root_url">/view/reports/activity"> ! <p> ! Month of: <select name="month" > ! <tmpl_loop name="activity_months"> ! <option ! <tmpl_if name="selected">selected="selected"</tmpl_if> ! value="<tmpl_var name="datestamp">"><tmpl_var name="name"></option> ! </tmpl_loop> ! </select> ! </p> ! </form> <tmpl_if name="activities"> --- 3,19 ---- <h2><tmpl_var name="title"></h2> ! <tmpl_if name="activity_months"> ! <form method="get" action="<tmpl_var name="root_url">/view/reports/activity"> ! <p> ! Month of: <select name="month" > ! <tmpl_loop name="activity_months"> ! <option ! <tmpl_if name="selected">selected="selected"</tmpl_if> ! value="<tmpl_var name="datestamp">"><tmpl_var name="name"></option> ! </tmpl_loop> ! </select> ! </p> ! </form> ! </tmpl_if> <tmpl_if name="activities"> *************** *** 50,53 **** --- 52,57 ---- </tmpl_loop> </table> + <tmpl_else> + <p>There is no activity summary data available.</p> </tmpl_if> |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:06:32
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF/Pages In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv14612/lib/WTF/Pages Modified Files: Reports.pm Log Message: Fixed a bug that would happen if there's no Activity Summary data at all to display Index: Reports.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Pages/Reports.pm,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Reports.pm 2 Dec 2006 00:09:09 -0000 1.9 --- Reports.pm 3 Dec 2006 00:06:29 -0000 1.10 *************** *** 297,307 **** my $activity_months = $sth->{'activity_months'}->fetchall_arrayref({}); ! # set the current month; use user input if reasonable, ! # otherwise use the most recent month ! my $month = ( ! $req->param('month') and $req->param('month') =~ /^\d{4}-\d{2}$/ ! ) ? $req->param('month') : $activity_months->[0]{'datestamp'}; ! $sth->{'activities'}->execute() or die $dbh->errstr(); my $tmpl_obj = $self->setup_tmpl('reports/activity.tmpl'); --- 297,310 ---- my $activity_months = $sth->{'activity_months'}->fetchall_arrayref({}); ! my $month; ! if ( exists $activity_months->[0]{'datestamp'} ) { ! # set the current month; use user input if reasonable, ! # otherwise use the most recent month ! $month = ( ! $req->param('month') and $req->param('month') =~ /^\d{4}-\d{2}$/ ! ) ? $req->param('month') : $activity_months->[0]{'datestamp'}; ! $sth->{'activities'}->execute() or die $dbh->errstr(); ! } my $tmpl_obj = $self->setup_tmpl('reports/activity.tmpl'); *************** *** 309,312 **** --- 312,318 ---- 'title' => 'Activity Summary', 'nav_bar' => WTF::Utils::nav_bar_data( $r, 'activity' ), + ); + + $tmpl_obj->param( 'activity_months' => $activity_months, 'activities' => WTF::Utils::indent( *************** *** 336,340 **** }, ), ! ); return $tmpl_obj->output(); --- 342,346 ---- }, ), ! ) if ( exists $activity_months->[0]{'datestamp'} ); return $tmpl_obj->output(); |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:05:55
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv14234/lib/WTF Modified Files: Utils.pm Log Message: Added version number display in the nav bar area Index: Utils.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Utils.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Utils.pm 2 Dec 2006 00:09:09 -0000 1.4 --- Utils.pm 3 Dec 2006 00:05:52 -0000 1.5 *************** *** 6,12 **** --- 6,15 ---- use Spreadsheet::WriteExcel; use Time::Local 'timelocal'; + use WTF::Config; use WTF::DBH; use WTF::SQL; + use constant VERSION => WTF::Config->get('version'); + # setup database and SQL statement handles my $dbh = WTF::DBH->connect(); *************** *** 90,93 **** --- 93,97 ---- 'username' => $r->pnotes('username'), 'user_name' => $r->pnotes('user_name'), + 'version' => VERSION, 'current_' . $current_link => 1, 'is_admin' => $r->pnotes('is_admin'), |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:05:55
|
Update of /cvsroot/wtf-tracker/wtf/templates/framework In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv14234/templates/framework Modified Files: nav_bar.tmpl Log Message: Added version number display in the nav bar area Index: nav_bar.tmpl =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/templates/framework/nav_bar.tmpl,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** nav_bar.tmpl 20 Nov 2006 02:53:07 -0000 1.4 --- nav_bar.tmpl 3 Dec 2006 00:05:52 -0000 1.5 *************** *** 70,73 **** --- 70,75 ---- [ <a href="<tmpl_var name="root_url">/action/admin/revert">Revert to Self</a> ] </tmpl_if> + + WTF v<tmpl_var name="version"> </p> </tmpl_loop> |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:05:18
|
Update of /cvsroot/wtf-tracker/wtf In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv14167 Modified Files: readme.txt Log Message: Minor changes to support the new v1.02 release Index: readme.txt =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/readme.txt,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** readme.txt 18 Oct 2006 16:52:50 -0000 1.1.1.1 --- readme.txt 3 Dec 2006 00:05:15 -0000 1.2 *************** *** 51,62 **** or later), and MySQL (version 4 or later). ! 2. As a sufficiently privileged user, run the "./db/create.sql" script ! against your MySQL installation to create the "wtf" database. Then run ! the "./db/add.sql" file against the database. Then run all the ! "./db/next_rel_*.sql" files in order against the "wtf" database. ! ! 3. Setup a MySQL user account for WTF that will have access to select, insert, update, and delete all "wtf" tables. 4. Setup a read-only MySQL user account on your Bugzilla database. --- 51,60 ---- or later), and MySQL (version 4 or later). ! 2. Setup a MySQL user account for WTF that will have access to select, insert, update, and delete all "wtf" tables. + 3. As a sufficiently privileged user, run the "./db/create.sql" script + against your MySQL installation to create the "wtf" database. + 4. Setup a read-only MySQL user account on your Bugzilla database. |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:04:24
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv13822 Modified Files: Config.pm Log Message: Added line for slightly more advanced querying of the weekly status report email script Index: Config.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Config.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Config.pm 3 Dec 2006 00:01:11 -0000 1.4 --- Config.pm 3 Dec 2006 00:04:20 -0000 1.5 *************** *** 69,72 **** --- 69,75 ---- 'update' => PATHWAY . '/wtf/util/update_db.pl' . ENVIRONMENT, + # absolute path to the weekly status email script + 'weekly_status' => PATHWAY . '/wtf/util/weekly_status.pl' . ENVIRONMENT, + # email settings 'email' => { |
From: Gryphon S. <gry...@us...> - 2006-12-03 00:01:15
|
Update of /cvsroot/wtf-tracker/wtf/lib/WTF In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv12523 Modified Files: Config.pm Log Message: Added version number configuration param, so we can display the version number we're on to the users Index: Config.pm =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/lib/WTF/Config.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Config.pm 2 Dec 2006 00:09:09 -0000 1.3 --- Config.pm 3 Dec 2006 00:01:11 -0000 1.4 *************** *** 76,79 **** --- 76,80 ---- }, + 'version' => '1.02', }; |
From: Gryphon S. <gry...@us...> - 2006-12-02 22:37:54
|
Update of /cvsroot/wtf-tracker/wtf/templates/pages/admin In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv11451/templates/pages/admin Modified Files: table_data.tmpl task_area.tmpl Log Message: Switched some forms from method GET to method POST because we were sending large query strings Index: table_data.tmpl =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/templates/pages/admin/table_data.tmpl,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** table_data.tmpl 2 Dec 2006 00:09:09 -0000 1.4 --- table_data.tmpl 2 Dec 2006 22:37:50 -0000 1.5 *************** *** 8,12 **** </p> ! <form method="get" action="<tmpl_var name="root_url">/view/admin/tables"> <p> <select name="table" > --- 8,12 ---- </p> ! <form method="post" action="<tmpl_var name="root_url">/view/admin/tables"> <p> <select name="table" > Index: task_area.tmpl =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/templates/pages/admin/task_area.tmpl,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** task_area.tmpl 20 Nov 2006 02:53:08 -0000 1.2 --- task_area.tmpl 2 Dec 2006 22:37:50 -0000 1.3 *************** *** 8,12 **** </p> ! <form method="get" action="<tmpl_var name="root_url">/save/admin/savetarea"> <tmpl_loop name="task_lists"> <h4 class="tight"><tmpl_var name="project_type"></h4> --- 8,12 ---- </p> ! <form method="post" action="<tmpl_var name="root_url">/save/admin/savetarea"> <tmpl_loop name="task_lists"> <h4 class="tight"><tmpl_var name="project_type"></h4> |
From: Gryphon S. <gry...@us...> - 2006-12-02 22:37:54
|
Update of /cvsroot/wtf-tracker/wtf/templates/pages/input In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv11451/templates/pages/input Modified Files: tracking.tmpl Log Message: Switched some forms from method GET to method POST because we were sending large query strings Index: tracking.tmpl =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/templates/pages/input/tracking.tmpl,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tracking.tmpl 2 Dec 2006 00:09:09 -0000 1.3 --- tracking.tmpl 2 Dec 2006 22:37:50 -0000 1.4 *************** *** 3,7 **** <h4 class="iframe"><tmpl_var name="title"></h4> ! <form name="tracking" class="tracking" method="get" action="<tmpl_var name="root_url">/save/input/timesheet"> --- 3,7 ---- <h4 class="iframe"><tmpl_var name="title"></h4> ! <form name="tracking" class="tracking" method="post" action="<tmpl_var name="root_url">/save/input/timesheet"> *************** *** 54,58 **** </tmpl_if> ! <h4 class="tight" style="margin-top: 0px">Accomplishments & To-Do Items</h4> <textarea name="notes" ><tmpl_var name="notes" --- 54,58 ---- </tmpl_if> ! <h4 class="tight" style="margin-top: 0px">Notes, Accomplishments, Status</h4> <textarea name="notes" ><tmpl_var name="notes" |
From: Gryphon S. <gry...@us...> - 2006-12-02 22:36:30
|
Update of /cvsroot/wtf-tracker/wtf/db In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv11049/db Modified Files: create.sql schema.xml Log Message: Changes to migrate from v1.01 to v1.02 releases Index: create.sql =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/db/create.sql,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** create.sql 18 Oct 2006 16:52:50 -0000 1.1.1.1 --- create.sql 2 Dec 2006 22:36:27 -0000 1.2 *************** *** 5,90 **** USE wtf; ! CREATE TABLE authz ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! name VARCHAR(45) NOT NULL, ! ordering TINYINT UNSIGNED NOT NULL DEFAULT 0, ! description TEXT NULL, ! PRIMARY KEY(id), ! UNIQUE INDEX name(name) ); ! CREATE TABLE authz_employee ( ! authz_id INTEGER UNSIGNED NOT NULL, ! employee_id INTEGER UNSIGNED NOT NULL, ! UNIQUE INDEX authz_employee(authz_id, employee_id) ); ! CREATE TABLE codeline ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! product SMALLINT(6) UNSIGNED NOT NULL, ! name VARCHAR(64) NOT NULL, ! description MEDIUMTEXT NULL, ! PRIMARY KEY(id), ! UNIQUE INDEX name(name) ); ! CREATE TABLE employee ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! team_id INTEGER UNSIGNED NULL, ! username VARCHAR(255) NOT NULL, ! passwd VARCHAR(64) NOT NULL DEFAULT 'r@nd0mt3xt', ! name VARCHAR(255) NOT NULL, ! last_login DATETIME NULL, ! active BOOL NOT NULL DEFAULT 1, ! PRIMARY KEY(id), ! UNIQUE INDEX username(username) ); ! CREATE TABLE notes ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! employee_id INTEGER UNSIGNED NOT NULL, ! work_day DATE NOT NULL, ! content TEXT NULL, ! PRIMARY KEY(id), ! UNIQUE INDEX employee_day(employee_id, work_day) ); ! CREATE TABLE project ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! codeline_id INTEGER UNSIGNED NOT NULL, ! bug MEDIUMINT(9) UNSIGNED NOT NULL, ! name VARCHAR(255) NOT NULL, ! active BOOL NOT NULL DEFAULT 1, ! PRIMARY KEY(id), ! UNIQUE INDEX bug(bug), ! UNIQUE INDEX name(name) ); ! CREATE TABLE task ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! name VARCHAR(45) NOT NULL, ! ordering TINYINT UNSIGNED NOT NULL DEFAULT 0, ! active BOOL NOT NULL DEFAULT 1, ! PRIMARY KEY(id), ! UNIQUE INDEX name(name) ); ! CREATE TABLE team ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! team_id INTEGER UNSIGNED NULL, ! name VARCHAR(45) NOT NULL, ! PRIMARY KEY(id), ! UNIQUE INDEX name(name) ); ! CREATE TABLE work ( ! id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! employee_id INTEGER UNSIGNED NOT NULL, ! project_id INTEGER UNSIGNED NOT NULL, ! task_id INTEGER UNSIGNED NOT NULL, ! work_day DATE NOT NULL, ! hours FLOAT(3,2) NOT NULL, ! entered DATETIME NOT NULL, ! PRIMARY KEY(id), ! UNIQUE INDEX employee_project_task_day(employee_id, project_id, task_id, work_day) ); --- 5,202 ---- USE wtf; ! CREATE TABLE `activity` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `activity_id` INTEGER UNSIGNED NULL, ! `name` VARCHAR(45) NOT NULL, ! `description` MEDIUMTEXT NULL, ! `ordering` TINYINT UNSIGNED NOT NULL DEFAULT '0', ! `active` BOOL NOT NULL DEFAULT '1', ! PRIMARY KEY(`id`), ! UNIQUE INDEX `name`(`name`) ); ! CREATE TABLE `activity_summary` ( ! `activity_id` INTEGER UNSIGNED NOT NULL, ! `summary_id` INTEGER UNSIGNED NOT NULL, ! `percentage` TINYINT UNSIGNED NOT NULL DEFAULT '0', ! UNIQUE INDEX `activity_summary`(`activity_id`, `summary_id`) ); ! CREATE TABLE `area` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `name` VARCHAR(45) NOT NULL DEFAULT 'Unnamed', ! `description` MEDIUMTEXT NULL, ! `ordering` TINYINT UNSIGNED NOT NULL DEFAULT '0', ! `active` BOOL NOT NULL DEFAULT '1', ! PRIMARY KEY(`id`), ! UNIQUE INDEX `name`(`name`) ); ! CREATE TABLE `authz` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `name` VARCHAR(45) NOT NULL, ! `ordering` TINYINT UNSIGNED NOT NULL DEFAULT '0', ! `description` TEXT NULL, ! PRIMARY KEY(`id`), ! UNIQUE INDEX `name`(`name`) ); ! CREATE TABLE `authz_employee` ( ! `authz_id` INTEGER UNSIGNED NOT NULL, ! `employee_id` INTEGER UNSIGNED NOT NULL, ! UNIQUE INDEX `authz_employee`(`authz_id`, `employee_id`) ); ! CREATE TABLE `codeline` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `product` SMALLINT(6) UNSIGNED NOT NULL, ! `name` VARCHAR(64) NOT NULL, ! `description` MEDIUMTEXT NULL, ! PRIMARY KEY(`id`), ! UNIQUE INDEX `name`(`name`) ); ! CREATE TABLE `employee` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `area_id` INTEGER UNSIGNED NOT NULL DEFAULT '1', ! `team_id` INTEGER UNSIGNED NULL, ! `username` VARCHAR(255) NOT NULL, ! `passwd` VARCHAR(64) NOT NULL DEFAULT ''r@nd0mt3xt'', ! `name` VARCHAR(255) NOT NULL, ! `last_login` DATETIME NULL, ! `active` BOOL NOT NULL DEFAULT '1', ! `admin` BOOL NOT NULL DEFAULT '0', ! PRIMARY KEY(`id`), ! UNIQUE INDEX `username`(`username`) ); ! CREATE TABLE `notes` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `employee_id` INTEGER UNSIGNED NOT NULL, ! `work_day` DATE NOT NULL, ! `content` TEXT NULL, ! PRIMARY KEY(`id`), ! UNIQUE INDEX `employee_day`(`employee_id`, `work_day`) ); ! CREATE TABLE `project` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `codeline_id` INTEGER UNSIGNED NOT NULL, ! `bug` MEDIUMINT(9) UNSIGNED NOT NULL, ! `name` VARCHAR(255) NOT NULL, ! `active` BOOL NOT NULL DEFAULT '1', ! PRIMARY KEY(`id`), ! UNIQUE INDEX `bug`(`bug`), ! UNIQUE INDEX `name`(`name`) ! ); ! ! CREATE TABLE `summary` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `employee_id` INTEGER UNSIGNED NOT NULL, ! `work_day` DATE NOT NULL, ! `vacation` BOOL NOT NULL DEFAULT '0', ! `sick` BOOL NOT NULL DEFAULT '0', ! `other_hours` FLOAT(3,2) NOT NULL DEFAULT '0', ! PRIMARY KEY(`id`), ! UNIQUE INDEX `employee_work_day`(`employee_id`, `work_day`) ! ); ! ! CREATE TABLE `task` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `task_id` INTEGER UNSIGNED NULL, ! `name` VARCHAR(45) NOT NULL, ! `description` MEDIUMTEXT NULL, ! `ordering` TINYINT UNSIGNED NOT NULL DEFAULT '0', ! `project` BOOL NOT NULL DEFAULT '1', ! `active` BOOL NOT NULL DEFAULT '1', ! PRIMARY KEY(`id`), ! UNIQUE INDEX `name`(`name`) ! ); ! ! CREATE TABLE `task_area` ( ! `task_id` INTEGER UNSIGNED NOT NULL, ! `area_id` INTEGER UNSIGNED NOT NULL, ! UNIQUE INDEX `task_area`(`task_id`, `area_id`) ! ); ! ! CREATE TABLE `team` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `team_id` INTEGER UNSIGNED NULL, ! `name` VARCHAR(45) NOT NULL, ! `ordering` TINYINT UNSIGNED NOT NULL, ! PRIMARY KEY(`id`), ! UNIQUE INDEX `name`(`name`) ! ); ! ! CREATE TABLE `work` ( ! `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ! `employee_id` INTEGER UNSIGNED NOT NULL, ! `project_id` INTEGER UNSIGNED NULL, ! `task_id` INTEGER UNSIGNED NOT NULL, ! `work_day` DATE NOT NULL, ! `hours` FLOAT(4,2) NOT NULL, ! `entered` DATETIME NOT NULL, ! PRIMARY KEY(`id`), ! UNIQUE INDEX `employee_project_task_day`(`employee_id`, `project_id`, `task_id`, `work_day`) ); + + # setup authorization levels + + INSERT INTO `authz` VALUES + (1,'email_notify',1,'User will, if user fails to enter data for a given day, receive an email at the end of the day as a reminder to enter data.'), + (2,'update',2,'User can update the WTF database with data from the Bugzilla database automatically. Typically, codeline leads should be given this authorization.'), + (3,'team_view',3,'User can see hours and reports for members of his/her team and sub-teams, not just self-entered information. Typically, only managers should have this authorization.'), + (4,'weekly_status',6,'User will receive a weekly status email containing detailed information about the employees they have access to view. Typically, only managers should have this authorization.'), + (5,'admin_authz',7,'User has access to use the authorization administration tool, allowing the user to alter authorizations for members of his or her extended team.'), + (6,'project_view',4,'User can view the project report, detailing each project including hours reported across all employees submitting time. Typically, this authorization is granted to project leaders and trackers.'), + (7,'login_as',8,'User can login as any member of his or her extended team by clicking on links from the Team View report page. Typically, this authorization is granted only to team managers.'), + (8,'activity',5,'User can view the activity summary report detailing monthly summaries of activity by percent for each employee. Typically, this authorization is granted to finance and accounting teams.'); + + # setup some example teams, tasks, areas, and activities; the expectation is + # that following the run of this SQL, the administrator will use the + # application's web-based tools to edit and/or add to these look-up tables + + INSERT INTO `team` VALUES + (1,NULL,'Executive',1), + (2,1,'Engineering',2), + (3,2,'Development',3), + (4,2,'Operations',4), + (5,1,'Finance',5), + (6,1,'Marketing',6), + (7,1,'Sales',7); + + INSERT INTO `task` VALUES + (1,NULL,'Project Status Meetings','Time in project status meetings; not for document review/sign-off meetings',1,1,1), + (2,NULL,'Project Management','For project managers only or someone designated as project manager',2,1,1), + (3,NULL,'Planning','Project proposal, BRD, cost and sched. est., MRF, Creative Serv.',3,1,1), + (4,3,'Project Proposal','Project proposal writing, review, and sign-off',4,1,1), + (5,3,'Project Estimation, Scheduling','Time spent on any phase of project estimation',5,1,1), + (6,NULL,'Functional Specification','Functional specification writing, review, and sign-off',6,1,1), + (7,NULL,'Development and Testing',NULL,7,1,1), + (8,7,'Architecture','Architecture, software design, and other development oversight',8,1,1), + (9,7,'Technical Specification','Technical specification writing, review, and sign-off',9,1,1), + (10,7,'Code Development','Writing code, unit tests, and code documentation',10,1,1), + (11,7,'Quality Assurance',NULL,11,1,1), + (12,NULL,'Code Maintenance','Non-project-specific maintenance',12,0,1), + (13,NULL,'IT; Operations Tasks','Non-project related IT and Operations work',13,0,1), + (14,NULL,'Non-Project Meetings','1-on-1, team, department, and company meetings',14,0,1); + + INSERT INTO `area` VALUES + (1,'Executive',NULL,1,1), + (2,'Business Development',NULL,2,1), + (3,'Product Management',NULL,3,1), + (4,'Project Management',NULL,4,1), + (5,'Development',NULL,5,1), + (6,'Quality Assurance',NULL,6,1), + (7,'IT; Operations',NULL,7,1), + (8,'Marketing',NULL,8,1), + (9,'Support',NULL,9,1); + + INSERT INTO `activity` VALUES + (1,NULL,'Business Line A',NULL,1,1), + (2,1,'Sub-Line 1',NULL,2,1), + (3,1,'Sub-Line 2',NULL,3,1), + (4,1,'Sub-Line 3',NULL,4,1), + (5,NULL,'Business Line B',NULL,5,1), + (6,5,'Sub-Line 1',NULL,6,1), + (7,5,'Sub-Line 2',NULL,7,1); Index: schema.xml =================================================================== RCS file: /cvsroot/wtf-tracker/wtf/db/schema.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** schema.xml 28 Nov 2006 18:47:50 -0000 1.4 --- schema.xml 2 Dec 2006 22:36:27 -0000 1.5 *************** *** 1,264 **** ! <?xml version="1.0" standalone="yes" ?> ! <DBMODEL Version="4.0"> ! <SETTINGS> ! <GLOBALSETTINGS ModelName="wtf" IDModel="0" IDVersion="0" VersionStr="1.0.0.0" Comments="" UseVersionHistroy="1" AutoIncVersion="1" DatabaseType="MySQL" ZoomFac="100.00" XPos="0" YPos="120" DefaultDataType="5" DefaultTablePrefix="0" DefSaveDBConn="" DefSyncDBConn="" DefQueryDBConn="" Printer="\\pecan\LaserJet 4200 PCL 6 South Workroom" HPageCount="5.14572864321608" PageAspectRatio="1.328971962616822" PageOrientation="0" PageFormat="A4 (210x297 mm, 8.26x11.7 inches)" SelectedPages="0" UsePositionGrid="0" PositionGridX="20" PositionGridY="20" TableNameInRefs="1" DefaultTableType="0" ActivateRefDefForNewRelations="0" FKPrefix="" FKPostfix="" CreateFKRefDefIndex="0" DBQuoteCharacter="`" CreateSQLforLinkedObjects="0" DefModelFont="Tahoma" CanvasWidth="4096" CanvasHeight="2842" /> ! <DATATYPEGROUPS> ! <DATATYPEGROUP Name="Numeric Types" Icon="1" /> ! <DATATYPEGROUP Name="Date and Time Types" Icon="2" /> ! <DATATYPEGROUP Name="String Types" Icon="3" /> ! <DATATYPEGROUP Name="Blob and Text Types" Icon="4" /> ! <DATATYPEGROUP Name="User defined Types" Icon="5" /> ! <DATATYPEGROUP Name="Geographic Types" Icon="6" /> ! </DATATYPEGROUPS> ! <DATATYPES> ! <DATATYPE ID="1" IDGroup="0" TypeName="TINYINT" Description="A very small integer. The signed range is -128 to 127. The unsigned range is 0 to 255." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="2" IDGroup="0" TypeName="SMALLINT" Description="A small integer. The signed range is -32768 to 32767. The unsigned range is 0 to 65535." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="3" IDGroup="0" TypeName="MEDIUMINT" Description="A medium-size integer. The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="4" IDGroup="0" TypeName="INT" Description="A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="1" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="0" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="5" IDGroup="0" TypeName="INTEGER" Description="A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="1" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="6" IDGroup="0" TypeName="BIGINT" Description="A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="0" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="7" IDGroup="0" TypeName="FLOAT" Description="A small (single-precision) floating-point number. Cannot be unsigned. Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38." ParamCount="1" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="precision" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="8" IDGroup="0" TypeName="FLOAT" Description="A small (single-precision) floating-point number. Cannot be unsigned. Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="9" IDGroup="0" TypeName="DOUBLE" Description="A normal-size (double-precision) floating-point number. Cannot be unsigned. Allowable values are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="2" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="10" IDGroup="0" TypeName="DOUBLE PRECISION" Description="This is a synonym for DOUBLE." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="2" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="11" IDGroup="0" TypeName="REAL" Description="This is a synonym for DOUBLE." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="2" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="12" IDGroup="0" TypeName="DECIMAL" Description="An unpacked floating-point number. Cannot be unsigned. Behaves like a CHAR column." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="3" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="13" IDGroup="0" TypeName="NUMERIC" Description="This is a synonym for DECIMAL." ParamCount="2" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="3" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="14" IDGroup="1" TypeName="DATE" Description="A date. The supported range is \a1000-01-01\a to \a9999-12-31\a." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="15" IDGroup="1" TypeName="DATETIME" Description="A date and time combination. The supported range is \a1000-01-01 00:00:00\a to \a9999-12-31 23:59:59\a." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="16" IDGroup="1" TypeName="TIMESTAMP" Description="A timestamp. The range is \a1970-01-01 00:00:00\a to sometime in the year 2037. The length can be 14 (or missing), 12, 10, 8, 6, 4, or 2 representing YYYYMMDDHHMMSS, ... , YYYYMMDD, ... , YY formats." ParamCount="1" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="17" IDGroup="1" TypeName="TIME" Description="A time. The range is \a-838:59:59\a to \a838:59:59\a." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="18" IDGroup="1" TypeName="YEAR" Description="A year in 2- or 4-digit format (default is 4-digit)." ParamCount="1" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="19" IDGroup="2" TypeName="CHAR" Description="A fixed-length string (1 to 255 characters) that is always right-padded with spaces to the specified length when stored. values are sorted and compared in case-insensitive fashion according to the default character set unless the BINARY keyword is given." ParamCount="1" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="20" IDGroup="2" TypeName="VARCHAR" Description="A variable-length string (1 to 255 characters). Values are sorted and compared in case-sensitive fashion unless the BINARY keyword is given." ParamCount="1" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="21" IDGroup="2" TypeName="BIT" Description="This is a synonym for CHAR(1)." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="22" IDGroup="2" TypeName="BOOL" Description="This is a synonym for CHAR(1)." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="23" IDGroup="3" TypeName="TINYBLOB" Description="A column maximum length of 255 (2^8 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="24" IDGroup="3" TypeName="BLOB" Description="A column maximum length of 65535 (2^16 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="25" IDGroup="3" TypeName="MEDIUMBLOB" Description="A column maximum length of 16777215 (2^24 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="26" IDGroup="3" TypeName="LONGBLOB" Description="A column maximum length of 4294967295 (2^32 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="27" IDGroup="3" TypeName="TINYTEXT" Description="A column maximum length of 255 (2^8 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="28" IDGroup="3" TypeName="TEXT" Description="A column maximum length of 65535 (2^16 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="29" IDGroup="3" TypeName="MEDIUMTEXT" Description="A column maximum length of 16777215 (2^24 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="30" IDGroup="3" TypeName="LONGTEXT" Description="A column maximum length of 4294967295 (2^32 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="31" IDGroup="3" TypeName="ENUM" Description="An enumeration. A string object that can have only one value, chosen from the list of values." ParamCount="1" OptionCount="0" ParamRequired="1" EditParamsAsString="1" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="values" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="32" IDGroup="3" TypeName="SET" Description="A set. A string object that can have zero or more values, each of which must be chosen from the list of values." ParamCount="1" OptionCount="0" ParamRequired="1" EditParamsAsString="1" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="values" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="33" IDGroup="4" TypeName="Varchar(20)" Description="" ParamCount="0" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="34" IDGroup="4" TypeName="Varchar(45)" Description="" ParamCount="0" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="35" IDGroup="4" TypeName="Varchar(255)" Description="" ParamCount="0" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="36" IDGroup="5" TypeName="GEOMETRY" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="38" IDGroup="5" TypeName="LINESTRING" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="39" IDGroup="5" TypeName="POLYGON" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="40" IDGroup="5" TypeName="MULTIPOINT" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="41" IDGroup="5" TypeName="MULTILINESTRING" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="42" IDGroup="5" TypeName="MULTIPOLYGON" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="43" IDGroup="5" TypeName="GEOMETRYCOLLECTION" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! </DATATYPES> ! <COMMON_DATATYPES> ! <COMMON_DATATYPE ID="5" /> ! <COMMON_DATATYPE ID="8" /> ! <COMMON_DATATYPE ID="20" /> ! <COMMON_DATATYPE ID="15" /> ! <COMMON_DATATYPE ID="22" /> ! <COMMON_DATATYPE ID="28" /> ! <COMMON_DATATYPE ID="26" /> ! <COMMON_DATATYPE ID="33" /> ! <COMMON_DATATYPE ID="34" /> ! <COMMON_DATATYPE ID="35" /> ! </COMMON_DATATYPES> ! <TABLEPREFIXES> ! <TABLEPREFIX Name="Default (no prefix)" /> ! </TABLEPREFIXES> ! <REGIONCOLORS> ! <REGIONCOLOR Color="Red=#FFEEEC" /> ! <REGIONCOLOR Color="Yellow=#FEFDED" /> ! <REGIONCOLOR Color="Green=#EAFFE5" /> ! <REGIONCOLOR Color="Cyan=#ECFDFF" /> ! <REGIONCOLOR Color="Blue=#F0F1FE" /> ! <REGIONCOLOR Color="Magenta=#FFEBFA" /> ! </REGIONCOLORS> ! <POSITIONMARKERS> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! </POSITIONMARKERS> ! </SETTINGS> ! <METADATA> ! <REGIONS> ! </REGIONS> ! <TABLES> <TABLE ID="1089" Tablename="codeline" PrevTableName="Table_01" XPos="294" YPos="44" TableType="0" TablePrefix="0" nmTable="0" Temporary="0" UseStandardInserts="0" StandardInserts="\n" TableOptions="DelayKeyTblUpdates=0\nPackKeys=0\nRowChecksum=0\nRowFormat=0\nUseRaid=0\nRaidType=0\n" Comments="" Collapsed="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="2" > <COLUMNS> --- 1,264 ---- ! <?xml version="1.0" standalone="yes" ?> ! <DBMODEL Version="4.0"> ! <SETTINGS> ! <GLOBALSETTINGS ModelName="wtf" IDModel="0" IDVersion="0" VersionStr="1.0.0.0" Comments="" UseVersionHistroy="1" AutoIncVersion="1" DatabaseType="MySQL" ZoomFac="100.00" XPos="0" YPos="0" DefaultDataType="5" DefaultTablePrefix="0" DefSaveDBConn="" DefSyncDBConn="" DefQueryDBConn="" Printer="\\pecan\LaserJet 4200 PCL 6 South Workroom" HPageCount="5.145728643216079" PageAspectRatio="1.328971962616822" PageOrientation="0" PageFormat="A4 (210x297 mm, 8.26x11.7 inches)" SelectedPages="0" UsePositionGrid="0" PositionGridX="20" PositionGridY="20" TableNameInRefs="1" DefaultTableType="0" ActivateRefDefForNewRelations="0" FKPrefix="" FKPostfix="" CreateFKRefDefIndex="0" DBQuoteCharacter="`" CreateSQLforLinkedObjects="0" DefModelFont="Tahoma" CanvasWidth="4096" CanvasHeight="2842" /> ! <DATATYPEGROUPS> ! <DATATYPEGROUP Name="Numeric Types" Icon="1" /> ! <DATATYPEGROUP Name="Date and Time Types" Icon="2" /> ! <DATATYPEGROUP Name="String Types" Icon="3" /> ! <DATATYPEGROUP Name="Blob and Text Types" Icon="4" /> ! <DATATYPEGROUP Name="User defined Types" Icon="5" /> ! <DATATYPEGROUP Name="Geographic Types" Icon="6" /> ! </DATATYPEGROUPS> ! <DATATYPES> ! <DATATYPE ID="1" IDGroup="0" TypeName="TINYINT" Description="A very small integer. The signed range is -128 to 127. The unsigned range is 0 to 255." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="2" IDGroup="0" TypeName="SMALLINT" Description="A small integer. The signed range is -32768 to 32767. The unsigned range is 0 to 65535." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="3" IDGroup="0" TypeName="MEDIUMINT" Description="A medium-size integer. The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="4" IDGroup="0" TypeName="INT" Description="A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="1" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="0" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="5" IDGroup="0" TypeName="INTEGER" Description="A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="1" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="1" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="6" IDGroup="0" TypeName="BIGINT" Description="A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615." ParamCount="1" OptionCount="2" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="UNSIGNED" Default="0" /> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="7" IDGroup="0" TypeName="FLOAT" Description="A small (single-precision) floating-point number. Cannot be unsigned. Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38." ParamCount="1" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="precision" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="8" IDGroup="0" TypeName="FLOAT" Description="A small (single-precision) floating-point number. Cannot be unsigned. Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="9" IDGroup="0" TypeName="DOUBLE" Description="A normal-size (double-precision) floating-point number. Cannot be unsigned. Allowable values are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="2" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="10" IDGroup="0" TypeName="DOUBLE PRECISION" Description="This is a synonym for DOUBLE." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="2" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="11" IDGroup="0" TypeName="REAL" Description="This is a synonym for DOUBLE." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="2" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="12" IDGroup="0" TypeName="DECIMAL" Description="An unpacked floating-point number. Cannot be unsigned. Behaves like a CHAR column." ParamCount="2" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="3" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="13" IDGroup="0" TypeName="NUMERIC" Description="This is a synonym for DECIMAL." ParamCount="2" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="3" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! <PARAM Name="decimals" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="ZEROFILL" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="14" IDGroup="1" TypeName="DATE" Description="A date. The supported range is \a1000-01-01\a to \a9999-12-31\a." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="15" IDGroup="1" TypeName="DATETIME" Description="A date and time combination. The supported range is \a1000-01-01 00:00:00\a to \a9999-12-31 23:59:59\a." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="16" IDGroup="1" TypeName="TIMESTAMP" Description="A timestamp. The range is \a1970-01-01 00:00:00\a to sometime in the year 2037. The length can be 14 (or missing), 12, 10, 8, 6, 4, or 2 representing YYYYMMDDHHMMSS, ... , YYYYMMDD, ... , YY formats." ParamCount="1" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="17" IDGroup="1" TypeName="TIME" Description="A time. The range is \a-838:59:59\a to \a838:59:59\a." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="18" IDGroup="1" TypeName="YEAR" Description="A year in 2- or 4-digit format (default is 4-digit)." ParamCount="1" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="19" IDGroup="2" TypeName="CHAR" Description="A fixed-length string (1 to 255 characters) that is always right-padded with spaces to the specified length when stored. values are sorted and compared in case-insensitive fashion according to the default character set unless the BINARY keyword is given." ParamCount="1" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="20" IDGroup="2" TypeName="VARCHAR" Description="A variable-length string (1 to 255 characters). Values are sorted and compared in case-sensitive fashion unless the BINARY keyword is given." ParamCount="1" OptionCount="1" ParamRequired="1" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="length" /> ! </PARAMS> ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="21" IDGroup="2" TypeName="BIT" Description="This is a synonym for CHAR(1)." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="22" IDGroup="2" TypeName="BOOL" Description="This is a synonym for CHAR(1)." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="23" IDGroup="3" TypeName="TINYBLOB" Description="A column maximum length of 255 (2^8 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="24" IDGroup="3" TypeName="BLOB" Description="A column maximum length of 65535 (2^16 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="25" IDGroup="3" TypeName="MEDIUMBLOB" Description="A column maximum length of 16777215 (2^24 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="26" IDGroup="3" TypeName="LONGBLOB" Description="A column maximum length of 4294967295 (2^32 - 1) characters. Values are sorted and compared in case-sensitive fashion." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="27" IDGroup="3" TypeName="TINYTEXT" Description="A column maximum length of 255 (2^8 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="28" IDGroup="3" TypeName="TEXT" Description="A column maximum length of 65535 (2^16 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="29" IDGroup="3" TypeName="MEDIUMTEXT" Description="A column maximum length of 16777215 (2^24 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="30" IDGroup="3" TypeName="LONGTEXT" Description="A column maximum length of 4294967295 (2^32 - 1) characters." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="31" IDGroup="3" TypeName="ENUM" Description="An enumeration. A string object that can have only one value, chosen from the list of values." ParamCount="1" OptionCount="0" ParamRequired="1" EditParamsAsString="1" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="values" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="32" IDGroup="3" TypeName="SET" Description="A set. A string object that can have zero or more values, each of which must be chosen from the list of values." ParamCount="1" OptionCount="0" ParamRequired="1" EditParamsAsString="1" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <PARAMS> ! <PARAM Name="values" /> ! </PARAMS> ! </DATATYPE> ! <DATATYPE ID="33" IDGroup="4" TypeName="Varchar(20)" Description="" ParamCount="0" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="34" IDGroup="4" TypeName="Varchar(45)" Description="" ParamCount="0" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="35" IDGroup="4" TypeName="Varchar(255)" Description="" ParamCount="0" OptionCount="1" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! <OPTIONS> ! <OPTION Name="BINARY" Default="0" /> ! </OPTIONS> ! </DATATYPE> ! <DATATYPE ID="36" IDGroup="5" TypeName="GEOMETRY" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="38" IDGroup="5" TypeName="LINESTRING" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="39" IDGroup="5" TypeName="POLYGON" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="40" IDGroup="5" TypeName="MULTIPOINT" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="41" IDGroup="5" TypeName="MULTILINESTRING" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="42" IDGroup="5" TypeName="MULTIPOLYGON" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! <DATATYPE ID="43" IDGroup="5" TypeName="GEOMETRYCOLLECTION" Description="Geographic Datatype" ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" > ! </DATATYPE> ! </DATATYPES> ! <COMMON_DATATYPES> ! <COMMON_DATATYPE ID="5" /> ! <COMMON_DATATYPE ID="8" /> ! <COMMON_DATATYPE ID="20" /> ! <COMMON_DATATYPE ID="15" /> ! <COMMON_DATATYPE ID="22" /> ! <COMMON_DATATYPE ID="28" /> ! <COMMON_DATATYPE ID="26" /> ! <COMMON_DATATYPE ID="33" /> ! <COMMON_DATATYPE ID="34" /> ! <COMMON_DATATYPE ID="35" /> ! </COMMON_DATATYPES> ! <TABLEPREFIXES> ! <TABLEPREFIX Name="Default (no prefix)" /> ! </TABLEPREFIXES> ! <REGIONCOLORS> ! <REGIONCOLOR Color="Red=#FFEEEC" /> ! <REGIONCOLOR Color="Yellow=#FEFDED" /> ! <REGIONCOLOR Color="Green=#EAFFE5" /> ! <REGIONCOLOR Color="Cyan=#ECFDFF" /> ! <REGIONCOLOR Color="Blue=#F0F1FE" /> ! <REGIONCOLOR Color="Magenta=#FFEBFA" /> ! </REGIONCOLORS> ! <POSITIONMARKERS> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! <POSITIONMARKER ZoomFac="-1.0" X="0" Y="0" /> ! </POSITIONMARKERS> ! </SETTINGS> ! <METADATA> ! <REGIONS> ! </REGIONS> ! <TABLES> <TABLE ID="1089" Tablename="codeline" PrevTableName="Table_01" XPos="294" YPos="44" TableType="0" TablePrefix="0" nmTable="0" Temporary="0" UseStandardInserts="0" StandardInserts="\n" TableOptions="DelayKeyTblUpdates=0\nPackKeys=0\nRowChecksum=0\nRowFormat=0\nUseRaid=0\nRaidType=0\n" Comments="" Collapsed="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="2" > <COLUMNS> *************** *** 426,430 **** </INDICES> </TABLE> ! <TABLE ID="1124" Tablename="work" PrevTableName="Table_05" XPos="285" YPos="230" TableType="0" TablePrefix="0" nmTable="0" Temporary="0" UseStandardInserts="0" StandardInserts="\n" TableOptions="DelayKeyTblUpdates=0\nPackKeys=0\nRowChecksum=0\nRowFormat=0\nUseRaid=0\nRaidType=0\n" Comments="" Collapsed="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="8" > <COLUMNS> <COLUMN ID="1126" ColName="id" PrevColName="" Pos="0" idDatatype="5" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="1" NotNull="1" AutoInc="1" IsForeignKey="0" DefaultValue="" Comments=""> --- 426,430 ---- </INDICES> </TABLE> ! <TABLE ID="1124" Tablename="work" PrevTableName="Table_05" XPos="284" YPos="217" TableType="0" TablePrefix="0" nmTable="0" Temporary="0" UseStandardInserts="0" StandardInserts="\n" TableOptions="DelayKeyTblUpdates=0\nPackKeys=0\nRowChecksum=0\nRowFormat=0\nUseRaid=0\nRaidType=0\n" Comments="" Collapsed="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="8" > <COLUMNS> <COLUMN ID="1126" ColName="id" PrevColName="" Pos="0" idDatatype="5" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="1" NotNull="1" AutoInc="1" IsForeignKey="0" DefaultValue="" Comments=""> *************** *** 456,460 **** </OPTIONSELECTED> </COLUMN> ! <COLUMN ID="1129" ColName="hours" PrevColName="" Pos="2" idDatatype="7" DatatypeParams="(3,2)" Width="-1" Prec="-1" PrimaryKey="0" NotNull="1" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments=""> <OPTIONSELECTED> <OPTIONSELECT Value="0" /> --- 456,460 ---- </OPTIONSELECTED> </COLUMN> ! <COLUMN ID="1129" ColName="hours" PrevColName="" Pos="2" idDatatype="7" DatatypeParams="(4,2)" Width="-1" Prec="-1" PrimaryKey="0" NotNull="1" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments=""> <OPTIONSELECTED> <OPTIONSELECT Value="0" /> *************** *** 495,499 **** </OPTIONSELECTED> </COLUMN> ! <COLUMN ID="1259" ColName="task_id" PrevColName="" Pos="1" idDatatype="5" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="1" AutoInc="0" IsForeignKey="1" DefaultValue="" Comments=""> <OPTIONSELECTED> <OPTIONSELECT Value="1" /> --- 495,499 ---- </OPTIONSELECTED> </COLUMN> ! <COLUMN ID="1259" ColName="task_id" PrevColName="" Pos="1" idDatatype="5" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="1" DefaultValue="" Comments=""> <OPTIONSELECTED> <OPTIONSELECT Value="1" /> *************** *** 913,918 **** </INDICES> </TABLE> ! </TABLES> ! <RELATIONS> <RELATION ID="1131" RelationName="work" Kind="2" SrcTable="1096" DestTable="1124" FKFields="id=employee_id\n" FKFieldsComments="\n" relDirection="1" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="0" CaptionOffsetY="-24" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="9" /> <RELATION ID="1133" RelationName="projects" Kind="2" SrcTable="1108" DestTable="1124" FKFields="id=project_id\n" FKFieldsComments="\n" relDirection="4" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="1" CaptionOffsetY="-25" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="10" /> --- 913,918 ---- </INDICES> </TABLE> ! </TABLES> ! <RELATIONS> <RELATION ID="1131" RelationName="work" Kind="2" SrcTable="1096" DestTable="1124" FKFields="id=employee_id\n" FKFieldsComments="\n" relDirection="1" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="0" CaptionOffsetY="-24" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="9" /> <RELATION ID="1133" RelationName="projects" Kind="2" SrcTable="1108" DestTable="1124" FKFields="id=project_id\n" FKFieldsComments="\n" relDirection="4" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="1" CaptionOffsetY="-25" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="10" /> *************** *** 932,950 **** <RELATION ID="1305" RelationName="summary" Kind="2" SrcTable="1270" DestTable="1302" FKFields="id=activity_id\n" FKFieldsComments="\n" relDirection="3" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="0" CaptionOffsetY="-24" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="31" /> <RELATION ID="1315" RelationName="activity" Kind="2" SrcTable="1270" DestTable="1270" FKFields="id=activity_id\n" FKFieldsComments="\n" relDirection="2" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="-26" CaptionOffsetY="-24" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="32" /> ! </RELATIONS> ! <NOTES> ! </NOTES> ! <IMAGES> ! </IMAGES> ! </METADATA> ! <PLUGINDATA> ! <PLUGINDATARECORDS> ! </PLUGINDATARECORDS> ! </PLUGINDATA> ! <QUERYDATA> ! <QUERYRECORDS> ! </QUERYRECORDS> ! </QUERYDATA> ! <LINKEDMODELS> ! </LINKEDMODELS> ! </DBMODEL> --- 932,950 ---- <RELATION ID="1305" RelationName="summary" Kind="2" SrcTable="1270" DestTable="1302" FKFields="id=activity_id\n" FKFieldsComments="\n" relDirection="3" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="0" CaptionOffsetY="-24" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="31" /> <RELATION ID="1315" RelationName="activity" Kind="2" SrcTable="1270" DestTable="1270" FKFields="id=activity_id\n" FKFieldsComments="\n" relDirection="2" MidOffset="0" OptionalStart="0" OptionalEnd="0" CaptionOffsetX="-26" CaptionOffsetY="-24" StartIntervalOffsetX="0" StartIntervalOffsetY="0" EndIntervalOffsetX="0" EndIntervalOffsetY="0" CreateRefDef="0" Invisible="0" RefDef="Matching=0\nOnDelete=3\nOnUpdate=3\n" Comments="" FKRefDefIndex_Obj_id="-1" Splitted="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="32" /> ! </RELATIONS> ! <NOTES> ! </NOTES> ! <IMAGES> ! </IMAGES> ! </METADATA> ! <PLUGINDATA> ! <PLUGINDATARECORDS> ! </PLUGINDATARECORDS> ! </PLUGINDATA> ! <QUERYDATA> ! <QUERYRECORDS> ! </QUERYRECORDS> ! </QUERYDATA> ! <LINKEDMODELS> ! </LINKEDMODELS> ! </DBMODEL> |