From 92edf5b6b4531aedd009764e814379f4dbdf7560 Mon Sep 17 00:00:00 2001 From: dbs Date: Thu, 6 Nov 2008 22:37:59 +0000 Subject: [PATCH] Backport r11085, r11086, r11087, r11088 from trunk: partially addresses #26 (thanks for the assist from Craig Ricciuto) git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_4@11090 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/examples/apache/eg_vhost.conf | 6 +- .../web/js/dojo/openils/reports/nls/reports.js | 82 ++++++++++++++++++++++ Open-ILS/web/reports/oils_rpt.xhtml | 13 +++- Open-ILS/web/reports/oils_rpt_builder.js | 4 +- Open-ILS/web/reports/oils_rpt_builder.xhtml | 9 ++- Open-ILS/web/reports/oils_rpt_common.xhtml | 61 ++++++++++------ Open-ILS/web/reports/oils_rpt_filters.js | 42 ++++++----- Open-ILS/web/reports/oils_rpt_folder_window.js | 21 +++--- Open-ILS/web/reports/oils_rpt_folders.js | 22 +++--- Open-ILS/web/reports/oils_rpt_report_editor.js | 16 +++-- Open-ILS/web/reports/oils_rpt_tforms.js | 66 +++++++++-------- Open-ILS/web/reports/oils_rpt_widget.js | 18 ++--- Open-ILS/web/reports/xul/template_builder.xul | 25 ++++++- 13 files changed, 275 insertions(+), 110 deletions(-) create mode 100644 Open-ILS/web/js/dojo/openils/reports/nls/reports.js diff --git a/Open-ILS/examples/apache/eg_vhost.conf b/Open-ILS/examples/apache/eg_vhost.conf index ebf4217d38..e35c13ec96 100644 --- a/Open-ILS/examples/apache/eg_vhost.conf +++ b/Open-ILS/examples/apache/eg_vhost.conf @@ -269,16 +269,16 @@ RewriteRule ^/opac/[^/]+/extras/slimpac/(.*)$ /opac/%1/extras/slimpac/$1? [redir # ---------------------------------------------------------------------------------- # Reports GUI # ---------------------------------------------------------------------------------- - + Options +Includes SetEnvIfNoCase Accept-Language "en" locale=en-US SetEnvIfNoCase Accept-Language "fr-CA" locale=fr-CA SetEnvIfNoCase Accept-Language "hy-AM" locale=hy-AM - AddOutputFilter INCLUDES .xhtml + AddOutputFilter INCLUDES;XMLENT .xhtml Options +Includes - XMLEntStripDoctype "no" + XMLEntStripDoctype "yes" XMLEntStripComments "no" XMLEntContentType "text/xml; charset=utf-8" AddOutputFilter INCLUDES;XMLENT .xml diff --git a/Open-ILS/web/js/dojo/openils/reports/nls/reports.js b/Open-ILS/web/js/dojo/openils/reports/nls/reports.js new file mode 100644 index 0000000000..b9c6df856f --- /dev/null +++ b/Open-ILS/web/js/dojo/openils/reports/nls/reports.js @@ -0,0 +1,82 @@ +{ + "RPT_BUILDER_CONFIRM_SAVE": "Name : ${0}\nDescription: ${1}\nSave Template?", + + "FILTERS_LABEL_EQUALS":"Equals", + "FILTERS_LABEL_LIKE": "Contains Matching substring", + "FILTERS_LABEL_ILIKE": "Contains Matching substring (ignore case)", + "FILTERS_LABEL_GREATER_THAN": "Greater than", + "FILTERS_LABEL_GT_TIME": "After (Date/Time)", + "FILTERS_LABEL_GT_EQUAL": "Greater than or equal to", + "FILTERS_LABEL_GTE_TIME": "On or After (Date/Time)", + "FILTERS_LABEL_LESS_THAN": "Less than", + "FILTERS_LABEL_LT_TIME": "Before (Date/Time)", + "FILTERS_LABEL_LT_EQUAL": "Less than or equal to", + "FILTERS_LABEL_LSE_TIME": "On or Before (Date/Time)", + "FILTERS_LABEL_IN": "In list", + "FILTERS_LABEL_NOT_IN": "Not in list", + "FILTERS_LABEL_BETWEEN": "Between", + "FILTERS_LABEL_NOT_BETWEEN": "Not between", + "FILTERS_LABEL_NULL": "Is NULL", + "FILTERS_LABEL_NOT_NULL": "Is not NULL", + "FILTERS_LABEL_NULL_BLANK": "Is NULL or Blank", + "FILTERS_LABEL_NOT_NULL_BLANK": "Is not NULL or Blank", + + "FOLDERS_TEMPLATES": "Templates", + "FOLDERS_TEMPLATE": "Template", + "FOLDERS_REPORTS": "Reports", + "FOLDERS_REPORT": "Report", + "FOLDERS_OUTPUT": "Output", + + "FOLDER_WINDOW_SELECT_ITEM": "Please select an item from the list", + "FOLDER_WINDOW_CHANGE_FOLDERS": "Change Folders", + "FOLDER_WINDOW_REPORT_OUTPUT": "Report Output: ${0}", + "FOLDER_WINDOW_COLNAME_SELECT": "Select", + "FOLDER_WINDOW_COLNAME_ALL": "All", + "FOLDER_WINDOW_COLNAME_NONE": "None", + + "REPORT_EDITOR_REPORT_FOLDERS": "Report Folders", + "REPORT_EDITOR_OUTPUT_FOLDERS": "Output Folders", + "REPORT_EDITOR_PROVIDE_FOLDER_ALERT": "Please provide a report folder", + "REPORT_EDITOR_ENTER_NAME_ALERT": "Please enter a report name", + "REPORT_EDITOR_INVALID_DATE_ALERT": "invalid start date - YYYY-MM-DD", + "REPORT_EDITOR_PROVIDE_OUTPUT_ALERT": "Please provide an output folder", + + "TFORMS_LABEL_RAW_DATA": "Raw Data", + "TFORMS_LABEL_FIRST": "First Value", + "TFORMS_LABEL_LAST": "Last Value", + "TFORMS_LABEL_COUNT": "Count", + "TFORMS_LABEL_COUNT_DISTINCT": "Count Distinct", + "TFORMS_LABEL_MIN": "Min", + "TFORMS_LABEL_MAX": "Max", + "TFORMS_LABEL_LOWER": "Lower case", + "TFORMS_LABEL_UPPER": "Upper case", + "TFORMS_LABEL_FIRST5": "First 5 characters (for US ZIP code)", + "TFORMS_LABEL_FIRST_WORD": "First contiguous non-space string", + "TFORMS_LABEL_DOW": "Day of Week", + "TFORMS_LABEL_DOM": "Day of Month", + "TFORMS_LABEL_DOY": "Day of Year", + "TFORMS_LABEL_WOY": "Week of Year", + "TFORMS_LABEL_MOY": "Month of Year", + "TFORMS_LABEL_QOY": "Quarter of Year", + "TFORMS_LABEL_HOD": "Hour of day", + "TFORMS_LABEL_DATE": "Date", + "TFORMS_LABEL_MONTH_TRUNC": "Year + Month", + "TFORMS_LABEL_YEAR_TRUNC": "Year", + "TFORMS_LABEL_HOUR_TRUNC": "Hour", + "TFORMS_LABEL_DAY_NAME": "Day Name", + "TFORMS_LABEL_MONTH_NAME": "Month Name'", + "TFORMS_LABEL_AGE": "Age", + "TFORMS_LABEL_MONTHS_AGO": "Months ago", + "TFORMS_LABEL_QUARTERS_AGO": "Quarters ago", + "TFORMS_LABEL_SUM": "Sum", + "TFORMS_LABEL_AVERAGE": "Average", + "TFORMS_LABEL_ROUND": "Round", + "TFORMS_LABEL_INT": "Drop trailing decimals", + + "WIDGET_DAYS": "Day(s)", + "WIDGET_MONTHS": "Month(s)", + "WIDGET_YEARS": "Year(s)", + "WIDGET_QUARTERS": "Quarter(s)", + "WIDGET_REAL_DATE": "Real Date", + "WIDGET_RELATIVE_DATE": "Relative Date" +} diff --git a/Open-ILS/web/reports/oils_rpt.xhtml b/Open-ILS/web/reports/oils_rpt.xhtml index 3b58958d20..fdda302318 100644 --- a/Open-ILS/web/reports/oils_rpt.xhtml +++ b/Open-ILS/web/reports/oils_rpt.xhtml @@ -11,9 +11,20 @@ Evergreen: Reports + - +
You are logged in as
diff --git a/Open-ILS/web/reports/oils_rpt_builder.js b/Open-ILS/web/reports/oils_rpt_builder.js index 285807a946..0b82c21dc7 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.js +++ b/Open-ILS/web/reports/oils_rpt_builder.js @@ -1,7 +1,9 @@ /** initializes reports, some basid display settings, * grabs and builds the IDL tree */ +dojo.requireLocalization("openils.reports", "reports"); +var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports"); var __dblclicks = {}; /* retain a cache of the selector value doubleclick event handlers */ function oilsInitReportBuilder() { @@ -105,7 +107,7 @@ function oilsReportBuilderSave() { tmpl.folder(new CGI().param('folder')); tmpl.data(js2JSON(oilsRpt.def)); - if(!confirm('Name : '+tmpl.name() + '\nDescription: ' + tmpl.description()+'\nSave Template?')) + if(!confirm(dojo.string.substitute( rpt_strings.RPT_BUILDER_CONFIRM_SAVE, [tmpl.name(), tmpl.description()] )) ) return; debugFMObject(tmpl); diff --git a/Open-ILS/web/reports/oils_rpt_builder.xhtml b/Open-ILS/web/reports/oils_rpt_builder.xhtml index 8054e005c2..4a68835ea4 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.xhtml +++ b/Open-ILS/web/reports/oils_rpt_builder.xhtml @@ -11,9 +11,16 @@ Evergreen: Report Builder + + - +
You are logged in as diff --git a/Open-ILS/web/reports/oils_rpt_common.xhtml b/Open-ILS/web/reports/oils_rpt_common.xhtml index 570b8a98e0..bbb4b4a1ce 100644 --- a/Open-ILS/web/reports/oils_rpt_common.xhtml +++ b/Open-ILS/web/reports/oils_rpt_common.xhtml @@ -1,22 +1,43 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Open-ILS/web/reports/oils_rpt_filters.js b/Open-ILS/web/reports/oils_rpt_filters.js index 07bdce31fe..714cb7b545 100644 --- a/Open-ILS/web/reports/oils_rpt_filters.js +++ b/Open-ILS/web/reports/oils_rpt_filters.js @@ -1,67 +1,71 @@ +dojo.requireLocalization("openils.reports", "reports"); + +var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports"); + var OILS_RPT_FILTERS = { '=' : { - label : 'Equals', + label : rpt_strings.FILTERS_LABEL_EQUALS }, 'like' : { - label : 'Contains Matching substring', + label : rpt_strings.FILTERS_LABEL_LIKE }, ilike : { - label : 'Contains Matching substring (ignore case)', + label : rpt_strings.FILTERS_LABEL_ILIKE }, '>' : { - label : 'Greater than', - labels : { timestamp : 'After (Date/Time)' } + label : rpt_strings.FILTERS_LABEL_GREATER_THAN, + labels : { timestamp : rpt_strings.FILTERS_LABEL_GT_TIME } }, '>=' : { - label : 'Greater than or equal to', - labels : { timestamp : 'On or After (Date/Time)' } + label : rpt_strings.FILTERS_LABEL_GT_EQUAL, + labels : { timestamp : rpt_strings.FILTERS_LABEL_GTE_TIME } }, '<' : { - label : 'Less than', - labels : { timestamp : 'Before (Date/Time)' } + label : rpt_strings.FILTERS_LABEL_LESS_THAN, + labels : { timestamp : rpt_strings.FILTERS_LABEL_LT_TIME } }, '<=' : { - label : 'Less than or equal to', - labels : { timestamp : 'On or Before (Date/Time)' } + label : rpt_strings.FILTERS_LABEL_LT_EQUAL, + labels : { timestamp : rpt_strings.FILTERS_LABEL_LSE_TIME } }, 'in' : { - label : 'In list', + label : rpt_strings.FILTERS_LABEL_IN }, 'not in' : { - label : 'Not in list', + label : rpt_strings.FILTERS_LABEL_NOT_IN }, 'between' : { - label : 'Between', + label : rpt_strings.FILTERS_LABEL_BETWEEN }, 'not between' : { - label : 'Not between', + label : rpt_strings.FILTERS_LABEL_NOT_BETWEEN }, 'is' : { - label : 'Is NULL' + label : rpt_strings.FILTERS_LABEL_NULL }, 'is not' : { - label : 'Is not NULL' + label : rpt_strings.FILTERS_LABEL_NOT_NULL }, 'is blank' : { - label : 'Is NULL or Blank' + label : rpt_strings.FILTERS_LABEL_NULL_BLANK }, 'is not blank' : { - label : 'Is not NULL or Blank' + label : rpt_strings.FILTERS_LABEL_NOT_NULL_BLANK } } diff --git a/Open-ILS/web/reports/oils_rpt_folder_window.js b/Open-ILS/web/reports/oils_rpt_folder_window.js index 8fdcb11a50..49f6645e94 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_window.js +++ b/Open-ILS/web/reports/oils_rpt_folder_window.js @@ -1,3 +1,6 @@ +dojo.requireLocalization("openils.reports", "reports"); + +var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports"); var OILS_TEMPLATE_INTERFACE = 'xul/template_builder.xul'; var OILS_LEGACY_TEMPLATE_INTERFACE = 'oils_rpt_builder.xhtml'; @@ -209,7 +212,7 @@ oilsRptFolderWindow.prototype.doFolderAction = function() { objs = objs.concat( this.fmTable2.getSelected() ); if( objs.length == 0 ) - return alert('Please select an item from the list'); + return alert(rpt_strings.FOLDER_WINDOW_SELECT_ITEM); var action = getSelectorVal(DOM.oils_rpt_folder_contents_action_selector); var obj = this; @@ -326,7 +329,7 @@ oilsRptFolderWindow.prototype.drawFolderOptions = function(type, callback) { type, DOM.oils_rpt_move_folder_picker, 'tree9807897', - 'Change Folders', + rpt_strings.FOLDER_WINDOW_CHANGE_FOLDERS, function(node) { appendClear(DOM.oils_rpt_move_folder_selected, node.folder.name()); selectedFolder = node.folder.id(); @@ -368,7 +371,7 @@ oilsRptFolderWindow.prototype.showOutput = function(sched) { _debug("launching report output view at URL: " + url); if(isXUL()) xulG.new_tab('/xul/server/util/rbrowser.xul?url=' + url, /* this comes from urls.XUL_REMOTE_BROWSER */ - {tab_name:'Report Output: ' + r.name(), browser:true}, + {tab_name: dojo.string.substitute( rpt_strings.FOLDER_WINDOW_REPORT_OUTPUT, [r.name] ), browser:true}, {no_xulG:false, show_nav_buttons:true, show_print_button:true}); else { //goTo(url); @@ -505,9 +508,9 @@ oilsRptFolderWindow.prototype.fetchFolderData = function(callback) { dest : obj.selector, obj : res, selectCol : true, - selectColName : 'Select', - selectAllName : 'All', - selectNoneName : 'None' + selectColName : rpt_strings.FOLDER_WINDOW_COLNAME_SELECT, + selectAllName : rpt_strings.FOLDER_WINDOW_COLNAME_ALL, + selectNoneName : rpt_strings.FOLDER_WINDOW_COLNAME_NONE } ); } @@ -570,9 +573,9 @@ oilsRptFolderWindow.prototype.fleshSchedules = function(list, idx, selector, isS dest : selector, obj : [sched], selectCol : true, - selectColName : 'Select', - selectAllName : 'All', - selectNoneName : 'None' + selectColName : rpt_strings.FOLDER_WINDOW_COLNAME_SELECT, + selectAllName : rpt_strings.FOLDER_WINDOW_COLNAME_ALL, + selectNoneName : rpt_strings.FOLDER_WINDOW_COLNAME_NONE } ); diff --git a/Open-ILS/web/reports/oils_rpt_folders.js b/Open-ILS/web/reports/oils_rpt_folders.js index adf5a6aa80..028e939041 100644 --- a/Open-ILS/web/reports/oils_rpt_folders.js +++ b/Open-ILS/web/reports/oils_rpt_folders.js @@ -1,3 +1,7 @@ +dojo.requireLocalization("openils.reports", "reports"); + +var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports"); + var oilsRptFolderNodeCache = {}; oilsRptFolderNodeCache.template = {}; oilsRptFolderNodeCache.report = {}; @@ -46,12 +50,12 @@ oilsRptFolderManager.prototype.draw = function(auth) { 'oilsRptTemplateFolderTree'); //'images/template-page.gif'); - oilsRptTemplateFolderTree.addNode(this.tId, -1, 'Templates', + oilsRptTemplateFolderTree.addNode(this.tId, -1, rpt_strings.FOLDERS_TEMPLATES, function() { unHideMe(DOM.oils_rpt_folder_table_alt_td); unHideMe(DOM.oils_rpt_top_folder); hideMe(DOM.oils_rpt_editor_div); - appendClear(DOM.oils_rpt_top_folder_type,text('Template')); + appendClear(DOM.oils_rpt_top_folder_type,text(rpt_strings.FOLDERS_TEMPLATE)); hideMe(DOM.oils_rpt_folder_table_right_td); DOM.oils_rpt_top_folder_create.onclick = function() { obj.createTopFolder('template', orgsel); @@ -66,13 +70,13 @@ oilsRptFolderManager.prototype.draw = function(auth) { //'images/report-page.gif'); - oilsRptReportFolderTree.addNode(this.rId, -1, 'Reports', + oilsRptReportFolderTree.addNode(this.rId, -1, rpt_strings.FOLDERS_REPORTS, function() { unHideMe(DOM.oils_rpt_folder_table_alt_td); unHideMe(DOM.oils_rpt_top_folder); hideMe(DOM.oils_rpt_editor_div); hideMe(DOM.oils_rpt_folder_table_right_td); - appendClear(DOM.oils_rpt_top_folder_type,text('Report')); + appendClear(DOM.oils_rpt_top_folder_type,text(rpt_strings.FOLDERS_REPORT)); DOM.oils_rpt_top_folder_create.onclick = function() { obj.createTopFolder('report', orgsel); } @@ -87,13 +91,13 @@ oilsRptFolderManager.prototype.draw = function(auth) { 'oilsRptOutputFolderTree'); //'images/output-page.gif'); - oilsRptOutputFolderTree.addNode(this.oId, -1, 'Output', + oilsRptOutputFolderTree.addNode(this.oId, -1, rpt_strings.FOLDERS_OUTPUT, function() { unHideMe(DOM.oils_rpt_folder_table_alt_td); unHideMe(DOM.oils_rpt_top_folder); hideMe(DOM.oils_rpt_editor_div); hideMe(DOM.oils_rpt_folder_table_right_td); - appendClear(DOM.oils_rpt_top_folder_type,text('Output')); + appendClear(DOM.oils_rpt_top_folder_type,text(rpt_strings.FOLDERS_OUTPUT)); DOM.oils_rpt_top_folder_create.onclick = function() { obj.createTopFolder('output', orgsel); } @@ -107,7 +111,7 @@ oilsRptFolderManager.prototype.draw = function(auth) { 'oilsRptSharedTemplateFolderTree'); //'images/template-page.gif'); - oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, 'Templates') + oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, rpt_strings.FOLDERS_TEMPLATES) oilsRptSharedReportFolderTree = @@ -116,7 +120,7 @@ oilsRptFolderManager.prototype.draw = function(auth) { 'oilsRptSharedReportFolderTree'); //'images/report-page.gif'); - oilsRptSharedReportFolderTree.addNode(this.srId, -1, 'Reports') + oilsRptSharedReportFolderTree.addNode(this.srId, -1, rpt_strings.FOLDERS_REPORTS) oilsRptSharedOutputFolderTree = new SlimTree( @@ -124,7 +128,7 @@ oilsRptFolderManager.prototype.draw = function(auth) { 'oilsRptSharedOutputFolderTree'); //'images/output-page.gif'); - oilsRptSharedOutputFolderTree.addNode(this.soId, -1, 'Output') + oilsRptSharedOutputFolderTree.addNode(this.soId, -1, rpt_strings.FOLDERS_OUTPUT) this.fetchFolders(auth); } diff --git a/Open-ILS/web/reports/oils_rpt_report_editor.js b/Open-ILS/web/reports/oils_rpt_report_editor.js index f51348dddb..b613e29a85 100644 --- a/Open-ILS/web/reports/oils_rpt_report_editor.js +++ b/Open-ILS/web/reports/oils_rpt_report_editor.js @@ -1,3 +1,7 @@ +dojo.requireLocalization("openils.reports", "reports"); + +var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports"); + oilsRptSetSubClass('oilsRptReportEditor', 'oilsRptObject'); var oilsRptReportEditorFolderTree; @@ -76,7 +80,7 @@ oils_rpt_editor_pivot_data 'report', DOM.oils_rpt_report_editor_dest_folder, 'oilsRptReportEditorFolderTree', - 'Report Folders', + rpt_strings.REPORT_EDITOR_REPORT_FOLDERS, function(node) { appendClear(DOM.oils_rpt_report_editor_selected_folder, node.folder.name()); obj.selectedFolder = node; }); @@ -86,7 +90,7 @@ oils_rpt_editor_pivot_data 'output', DOM.oils_rpt_output_dest_folder, 'oilsRptReportEditorOutputTree', - 'Output Folders', + rpt_strings.REPORT_EDITOR_OUTPUT_FOLDERS, function(node) { appendClear(DOM.oils_rpt_output_selected_folder, node.folder.name()); obj.selectedOutputFolder = node; }); @@ -105,10 +109,10 @@ oilsRptReportEditor.prototype.save = function() { var report = new rr(); if(!this.selectedFolder) - return alert('Please provide a report folder'); + return alert(rpt_strings.REPORT_EDITOR_PROVIDE_FOLDER_ALERT); if(!DOM.oils_rpt_report_editor_name.value) - return alert('Please enter a report name'); + return alert(rpt_strings.REPORT_EDITOR_ENTER_NAME_ALERT); report.owner( USER.id() ); report.template( this.template.id() ); @@ -163,7 +167,7 @@ oilsRptReportEditor.prototype.save = function() { var dt = DOM.oils_rpt_param_editor_sched_start_date.value; if(!dt || !dt.match(/^\d{4}-\d{2}-\d{2}$/) ) { /* for now.. make this better in the future */ - alert('invalid start date - YYYY-MM-DD'); + alert(rpt_strings.REPORT_EDITOR_INVALID_DATE_ALERT); return; } var hour = getSelectorVal(DOM.oils_rpt_param_editor_sched_start_hour); @@ -172,7 +176,7 @@ oilsRptReportEditor.prototype.save = function() { } if(!this.selectedOutputFolder) - return alert('Please provide an output folder'); + return alert(rpt_strings.REPORT_EDITOR_PROVIDE_OUTPUT_ALERT); var schedule = new rs(); schedule.folder(this.selectedOutputFolder.folder.id()); diff --git a/Open-ILS/web/reports/oils_rpt_tforms.js b/Open-ILS/web/reports/oils_rpt_tforms.js index 38781f85d3..ff9da5577c 100644 --- a/Open-ILS/web/reports/oils_rpt_tforms.js +++ b/Open-ILS/web/reports/oils_rpt_tforms.js @@ -1,35 +1,39 @@ +dojo.requireLocalization("openils.reports", "reports"); + +var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports"); + var OILS_RPT_TRANSFORMS = { Bare : { - label : 'Raw Data' + label : rpt_strings.TFORMS_LABEL_RAW_DATA }, first : { - label : 'First Value' + label : rpt_strings.TFORMS_LABEL_FIRST }, last : { - label : 'Last Value' + label : rpt_strings.TFORMS_LABEL_LAST }, count : { aggregate : true, - label : 'Count' + label : rpt_strings.TFORMS_LABEL_COUNT }, count_distinct : { aggregate : true, - label : 'Count Distinct' + label : rpt_strings.TFORMS_LABEL_COUNT_DISTINCT }, min : { aggregate : true, - label : 'Min' + label : rpt_strings.TFORMS_LABEL_MIN }, max : { aggregate : true, - label : 'Max' + label : rpt_strings.TFORMS_LABEL_MAX }, /* string transforms ------------------------- */ @@ -43,69 +47,69 @@ var OILS_RPT_TRANSFORMS = { lower : { datatype : [OILS_RPT_DTYPE_STRING, 'text'], - label : 'Lower case' + label : rpt_strings.TFORMS_LABEL_LOWER }, upper : { datatype : [OILS_RPT_DTYPE_STRING, 'text'], - label : 'Upper case' + label : rpt_strings.TFORMS_LABEL_UPPER }, first5 : { datatype : [OILS_RPT_DTYPE_STRING, 'text'], - label : 'First 5 characters (for US ZIP code)' + label : rpt_strings.TFORMS_LABEL_FIRST5 }, first_word : { datatype : [OILS_RPT_DTYPE_STRING, 'text'], - label : 'First contiguous non-space string' + label : rpt_strings.TFORMS_LABEL_FIRST_WORD }, /* timestamp transforms ----------------------- */ dow : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Day of Week', + label : rpt_strings.TFORMS_LABEL_DOW, regex : /^[0-6]$/ }, dom : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Day of Month', + label : rpt_strings.TFORMS_LABEL_DOM, regex : /^[0-9]{1,2}$/ }, doy : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Day of Year', + label : rpt_strings.TFORMS_LABEL_DOY, regex : /^[0-9]{1,3}$/ }, woy : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Week of Year', + label : rpt_strings.TFORMS_LABEL_WOY, regex : /^[0-9]{1,2}$/ }, moy : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Month of Year', + label : rpt_strings.TFORMS_LABEL_MOY, regex : /^\d{1,2}$/ }, qoy : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Quarter of Year', + label : rpt_strings.TFORMS_LABEL_QOY, regex : /^[1234]$/ }, hod : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Hour of day', + label : rpt_strings.TFORMS_LABEL_HOD, regex : /^\d{1,2}$/ }, date : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Date', + label : rpt_strings.TFORMS_LABEL_DATE, regex : /^\d{4}-\d{2}-\d{2}$/, hint : 'YYYY-MM-DD', cal_format : '%Y-%m-%d', @@ -114,7 +118,7 @@ var OILS_RPT_TRANSFORMS = { month_trunc : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Year + Month', + label : rpt_strings.TFORMS_LABEL_MONTH_TRUNC, regex : /^\d{4}-\d{2}$/, hint : 'YYYY-MM', cal_format : '%Y-%m', @@ -123,7 +127,7 @@ var OILS_RPT_TRANSFORMS = { year_trunc : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Year', + label : rpt_strings.TFORMS_LABEL_YEAR_TRUNC, regex : /^\d{4}$/, hint : 'YYYY', cal_format : '%Y', @@ -132,7 +136,7 @@ var OILS_RPT_TRANSFORMS = { hour_trunc : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Hour', + label : rpt_strings.TFORMS_LABEL_HOUR_TRUNC, regex : /^\d{2}$/, hint : 'HH', cal_format : '%H', @@ -141,49 +145,49 @@ var OILS_RPT_TRANSFORMS = { day_name : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Day Name' + label : rpt_strings.TFORMS_LABEL_DAY_NAME }, month_name : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Month Name' + label : rpt_strings.TFORMS_LABEL_MONTH_NAME }, age : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Age' + label : rpt_strings.TFORMS_LABEL_AGE }, months_ago : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Months ago' + label : rpt_strings.TFORMS_LABEL_MONTHS_AGO }, quarters_ago : { datatype : OILS_RPT_DTYPE_TIMESTAMP, - label : 'Quarters ago' + label : rpt_strings.TFORMS_LABEL_QUARTERS_AGO }, /* int / float transforms ----------------------------------- */ sum : { datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ], - label : 'Sum', + label : rpt_strings.TFORMS_LABEL_SUM, aggregate : true }, average : { datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ], - label : 'Average', + label : rpt_strings.TFORMS_LABEL_AVERAGE, aggregate : true }, round : { datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ], - label : 'Round', + label : rpt_strings.TFORMS_LABEL_ROUND, }, 'int' : { datatype : OILS_RPT_DTYPE_FLOAT, - label : 'Drop trailing decimals' + label : rpt_strings.TFORMS_LABEL_INT } } diff --git a/Open-ILS/web/reports/oils_rpt_widget.js b/Open-ILS/web/reports/oils_rpt_widget.js index 8c333e59f1..7e644ec7c5 100644 --- a/Open-ILS/web/reports/oils_rpt_widget.js +++ b/Open-ILS/web/reports/oils_rpt_widget.js @@ -309,9 +309,9 @@ oilsRptAgeWidget.prototype.draw = function() { insertSelectorVal(this.count, -1, i, i); //insertSelectorVal(this.type, -1, ' -- Select One -- ', ''); - insertSelectorVal(this.type, -1, 'Day(s)', 'days'); - insertSelectorVal(this.type, -1, 'Month(s)', 'months'); - insertSelectorVal(this.type, -1, 'Year(s)', 'years'); + insertSelectorVal(this.type, -1, rpt_strings.WIDGET_DAYS, 'days'); + insertSelectorVal(this.type, -1, rpt_strings.WIDGET_MONTHS, 'months'); + insertSelectorVal(this.type, -1, rpt_strings.WIDGET_YEARS, 'years'); this.node.appendChild(this.count); this.node.appendChild(this.type); } @@ -433,17 +433,17 @@ function oilsRptTruncPicker(args) { args.node = this.node; this.selector = elem('select'); - insertSelectorVal(this.selector,-1,'Real Date',1); - insertSelectorVal(this.selector,-1,'Relative Date',2); + insertSelectorVal(this.selector,-1,rpt_strings.WIDGET_REAL_DATE,1); + insertSelectorVal(this.selector,-1,rpt_strings.WIDGET_RELATIVE_DATE,2); this.numberPicker = new oilsRptNumberWidget({node:this.relSpan,size:90,start:1}); this.label = 'Day(s)'; - if(this.type == 'month') this.label = 'Month(s)'; - if(this.type == 'quarter') this.label = 'Quarter(s)'; - if(this.type == 'year') this.label = 'Year(s)'; - if(this.type == 'date') this.label = 'Day(s)'; + if(this.type == 'month') this.label = rpt_strings.WIDGET_MONTHS; + if(this.type == 'quarter') this.label = rpt_strings.WIDGET_QUARTERS; + if(this.type == 'year') this.label = rpt_strings.WIDGET_YEARS; + if(this.type == 'date') this.label = rpt_strings.WIDGET_DAYS; } oilsRptTruncPicker.prototype.draw = function() { diff --git a/Open-ILS/web/reports/xul/template_builder.xul b/Open-ILS/web/reports/xul/template_builder.xul index b62a41ae23..766923a9c9 100644 --- a/Open-ILS/web/reports/xul/template_builder.xul +++ b/Open-ILS/web/reports/xul/template_builder.xul @@ -2,8 +2,25 @@ + - + + + + + + +