Commit 6b3d884d authored by cvs2svn's avatar cvs2svn

This commit was manufactured by cvs2svn to create branch 'b4-1-1-patches'.

Sprout from po 2015-06-23 07:01:39 UTC Frank Bergmann  <frank.bergmann@project-open.com> 'Initial Import'
Cherrypick from master 2015-11-22 07:52:38 UTC Frank Bergmann  <frank.bergmann@project-open.com> '-- minor improvements':
    intranet-trans-project-feedback.info
    lib/graph-panel.adp
    lib/graph-panel.tcl
    lib/survey-component.tcl
    sql/postgresql/intranet-trans-project-feedback-create.sql
    sql/postgresql/intranet-trans-project-feedback-drop.sql
parent d0622c20
Pipeline #509 failed with stages
......@@ -15,6 +15,12 @@
<owner>mailto:frank.bergmann@project-open.com</owner>
<summary>Managing and evaluate feedback on Translation Projects</summary>
<vendor url="www.project-open.com">Project Open Business Solutions S.L.</vendor>
<provides url="sencha-core" version="4.1.0.0.0"/>
<requires url="sencha-extjs-v421" version="4.1.0.0.0"/>
<requires url="simple-survey" version="0.4"/>
<requires url="intranet-simple-survey" version="4.1.0.0.0"/>
<description format="text/html">Provides a portlet to track feedback on Translation Projects plus some graphs and reports </description>
<maturity>0</maturity>
......
......@@ -11,7 +11,15 @@ Ext.onReady(function () {
// STORES
//
var translationProjectFeedbackNonComformityStore = Ext.create('Ext.data.Store', {
// ////////////////////////////////////////////////
// CHART TYPES
//
<if @chart_type@ eq "column_chart">
var translationProjectFeedbackNonConformityStore = Ext.create('Ext.data.Store', {
fields: [
{ name: 'first_day_period', type: 'string'},
{ name: 'number_projects', type: 'int'},
......@@ -34,33 +42,6 @@ Ext.onReady(function () {
}
});
var translationProjectFeedbackNonComformityProportionStore = Ext.create('Ext.data.Store', {
fields: [
{ name: 'choice', type: 'string' },
{ name: 'count', type: 'int'}
],
autoLoad: true,
proxy: {
type: 'rest',
url: '/intranet-reporting/view', // This is the generic ]po[ REST interface
extraParams: {
format: 'json', // Ask for data in JSON format
limit: @diagram_limit@, // Limit the number of returned rows
report_code: '@diagram_report_code@', // The code of the data-source to retreive
start_date: '@start_date@',
end_date: '@end_date@',
period: '@period@'
},
reader: { type: 'json', root: 'data' } // Standard reader: Data are prefixed by "data".
}
});
// ////////////////////////////////////////////////
// CHART TYPES
//
<if @chart_type@ eq "column_chart">
var ticketAgingChart = new Ext.chart.Chart({
xtype: 'chart',
width: @diagram_width@,
......@@ -98,6 +79,14 @@ Ext.onReady(function () {
style: {
opacity: 0.80
},
label: {
display: 'outside',
'text-anchor': 'middle',
field: ['number_projects', 'number_projects_non_conform'],
renderer: Ext.util.Format.numberRenderer('0'),
// orientation: 'horizontal',
color: '#333'
},
tips: {
trackMouse: false,
width: @diagram_tooltip_width@,
......@@ -112,6 +101,27 @@ Ext.onReady(function () {
</if>
<elseif @chart_type@ eq "pie_chart">
var translationProjectFeedbackNonConformityProportionStore = Ext.create('Ext.data.Store', {
fields: [
{ name: 'category', type: 'string' },
{ name: 'count', type: 'int'}
],
autoLoad: true,
proxy: {
type: 'rest',
url: '/intranet-reporting/view', // This is the generic ]po[ REST interface
extraParams: {
format: 'json', // Ask for data in JSON format
limit: @diagram_limit@, // Limit the number of returned rows
report_code: '@diagram_report_code@', // The code of the data-source to retreive
start_date: '@start_date@',
end_date: '@end_date@',
period: '@period@'
},
reader: { type: 'json', root: 'data' } // Standard reader: Data are prefixed by "data".
}
});
chart = new Ext.chart.Chart({
width: @diagram_width@,
height: @diagram_height@,
......@@ -134,16 +144,16 @@ Ext.onReady(function () {
}
},
label: {
field: 'choice',
field: 'category',
display: 'rotate',
contrast: true,
font: '11px "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',
renderer: function(val, label, storeItem, item, i, display, animate, index) {
var sumNonComformityProjects = translationProjectFeedbackNonComformityProportionStore.sum('count');
// console.log('sumNonComformityProjects:' + sumNonComformityProjects);
var sumNonConformityProjects = translationProjectFeedbackNonConformityProportionStore.sum('count');
// console.log('sumNonConformityProjects:' + sumNonConformityProjects);
// console.log('val:' + val);
// console.log('count:' + storeItem.get('count'));
var ret = (parseFloat(storeItem.get('count') / sumNonComformityProjects) * 100.0).toFixed(2) + '%';
var ret = (parseFloat(storeItem.get('count') / sumNonConformityProjects) * 100.0).toFixed(2) + '%';
return ret + ' ' + val.substring(0,20);
}
},
......@@ -155,6 +165,29 @@ Ext.onReady(function () {
<elseif @chart_type@ eq "line_chart">
var translationProjectFeedbackNonConformityStore = Ext.create('Ext.data.Store', {
fields: [
{ name: 'first_day_period', type: 'string'},
{ name: 'number_projects', type: 'int'},
{ name: 'number_projects_non_conform', type: 'int'},
{ name: 'percentage_non_conform', type: 'int'}
],
autoLoad: true,
proxy: {
type: 'rest',
url: '/intranet-reporting/view', // This is the generic ]po[ REST interface
extraParams: {
format: 'json', // Ask for data in JSON format
limit: @diagram_limit@, // Limit the number of returned rows
report_code: '@diagram_report_code@', // The code of the data-source to retreive
start_date: '@start_date@',
end_date: '@end_date@',
period: '@period@'
},
reader: { type: 'json', root: 'data' } // Standard reader: Data are prefixed by "data".
}
});
chart = new Ext.chart.Chart({
renderTo: @diagram_id@,
width: @diagram_width@,
......
......@@ -35,13 +35,35 @@ set package_url "/simple-survey"
set report_code_found_p 1
if ![info exists return_url] { set return_url "/intranet-trans-project-feedback/dashboard" }
# Set dynamic width
set num_days [db_string get_number_days "select '$end_date'::date - '$start_date'::date" -default 0]
switch $period {
month {
set data_points_horiz [expr $num_days / 30]
}
quarter {
set data_points_horiz [expr $num_days / 120]
}
year {
set data_points_horiz [expr $num_days / 365]
}
default {
set data_points_horiz 0
}
}
set data_points_horiz [format "%.2f" [expr {double(round(100*$data_points_horiz))/100}]]
# Determine size based on number od datapoints found
if { $data_points_horiz < 7 } { set diagram_width 500} else { set diagram_width 1000 }
# Set Report Code
switch $title {
"Non Comformity" {
set store "translationProjectFeedbackNonComformityStore"
"Non Conformity" {
set store "translationProjectFeedbackNonConformityStore"
set chart_type "column_chart"
set diagram_report_code "translation_project_feedback_non_comformity"
if {![info exists diagram_width] || "" == $diagram_width} { set diagram_width 600 }
set diagram_report_code "translation_project_feedback_non_conformity"
if {![info exists diagram_height] || "" == $diagram_height } { set diagram_height 350 }
if {![info exists diagram_font] || "" == $diagram_font} { set diagram_font "10px Helvetica, sans-serif" }
if {![info exists diagram_theme] || "" == $diagram_theme} { set diagram_theme "Custom" }
......@@ -51,26 +73,30 @@ switch $title {
if {![info exists diagram_tooltip_height] || "" == $diagram_tooltip_height} { set diagram_tooltip_height 20 }
if {![info exists diagram_legend_width] || "" == $diagram_legend_width} { set diagram_legend_width 150 }
if {![info exists diagram_title] || "" == $diagram_title} { set diagram_title [lang::message::lookup "" intranet-trans-project-feedback.$title $title] }
set diagram_id "translation_project_feedback_non_comformity"
set diagram_id "translation_project_feedback_non_conformity"
}
"Non-Comformity - Proportions" {
set store "translationProjectFeedbackNonComformityProportionStore"
"Non Conformity - Proportions" {
set store "translationProjectFeedbackNonConformityProportionStore"
set chart_type "pie_chart"
set diagram_report_code "translation_project_feedback_non_comformity_proportions"
if {![info exists diagram_limit] || "" == $diagram_limit} { set diagram_limit 100 }
if {![info exists diagram_width] || "" == $diagram_width} { set diagram_width 800 }
if {![info exists diagram_height] || "" == $diagram_height } { set diagram_height 350 }
set diagram_id "translation_project_feedback_non_comformity_proportions"
set diagram_report_code "translation_project_feedback_non_conformity_proportions"
if {![info exists diagram_limit] || "" == $diagram_limit} { set diagram_limit 100 }
# if {![info exists diagram_width] || "" == $diagram_width} { set diagram_width 350 }
# if {![info exists diagram_height] || "" == $diagram_height } { set diagram_height 350 }
set diagram_width 1000
set diagram_height 300
set diagram_id "translation_project_feedback_non_conformity_proportions"
}
"Conformity vs Non-Comformity" {
"Conformity vs Non-Conformity" {
if {![info exists diagram_font] || "" == $diagram_font} { set diagram_font "10px Helvetica, sans-serif" }
set store "translationProjectFeedbackNonComformityStore"
set store "translationProjectFeedbackNonConformityStore"
set chart_type "line_chart"
set diagram_report_code "translation_project_feedback_non_comformity"
set diagram_report_code "translation_project_feedback_non_conformity"
if {![info exists diagram_limit] || "" == $diagram_limit} { set diagram_limit 100 }
if {![info exists diagram_width] || "" == $diagram_width} { set diagram_width 600 }
if {![info exists diagram_height] || "" == $diagram_height } { set diagram_height 350 }
set diagram_id "translation_project_feedback_comformity_vs_non_comformity"
set diagram_id "translation_project_feedback_conformity_vs_non_conformity"
}
default {
set report_code_found_p 0
......
......@@ -67,7 +67,8 @@ if {$single_response_p == "t"} {
set button_label "Submit response"
set edit_previous_response_p "f"
} else {
set button_label "Modify submited response"
# Review label
set button_label "Submit response"
set edit_previous_response_p "t"
}
set previous_responses_link ""
......
......@@ -58,5 +58,45 @@ DROP FUNCTION inline_0 ();
-- Delete REST reports
delete from im_reports where report_code = 'translation-project-feedback-non-comformity';
delete from im_reports where report_code = 'translation_project_feedback_non_comformity_proportions';
delete from im_reports where report_code = 'translation-project-feedback-non-conformity';
delete from im_reports where report_code = 'translation_project_feedback_non_conformity_proportions';
-- delete component
CREATE OR REPLACE FUNCTION inline_0 ()
RETURNS INTEGER AS $BODY$
declare
v_plugin_id integer;
v_employees integer;
foo integer;
begin
select group_id into v_employees from groups where group_name = 'Employees';
select plugin_id into v_plugin_id from im_component_plugins where plugin_name = 'Project Translation Feedback' limit 1;
select im_revoke_permission(v_plugin_id, v_employees, 'read') into foo;
select im_component_plugin__delete(v_plugin_id) into foo;
select plugin_id into v_plugin_id from im_component_plugins where plugin_name = 'Non-Conformity' limit 1;
select im_revoke_permission(v_plugin_id, v_employees, 'read') into foo;
select im_component_plugin__delete(v_plugin_id) into foo;
select plugin_id into v_plugin_id from im_component_plugins where plugin_name = 'Non-Conformity - Proportions' limit 1;
select im_revoke_permission(v_plugin_id, v_employees, 'read') into foo;
select im_component_plugin__delete(v_plugin_id) into foo;
select plugin_id into v_plugin_id from im_component_plugins where plugin_name = 'Non-Conformity - Percentage' limit 1;
select im_revoke_permission(v_plugin_id, v_employees, 'read') into foo;
select im_component_plugin__delete(v_plugin_id) into foo;
select plugin_id into v_plugin_id from im_component_plugins where plugin_name = 'Conformity vs. Non-Conformity' limit 1;
select im_revoke_permission(v_plugin_id, v_employees, 'read') into foo;
select im_component_plugin__delete(v_plugin_id) into foo;
return 0;
end;$BODY$ LANGUAGE 'plpgsql';
SELECT inline_0 ();
DROP FUNCTION inline_0 ();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment