Commit 3e39c536 authored by Roque's avatar Roque

erp5_web_project_ui: worklist in project page

parent c88925b1
......@@ -11,7 +11,7 @@ from Products.ERP5Type.Log import log
portal = context.getPortalObject()
portal_catalog = portal.portal_catalog
reference = context.getReference() + "-Home.Page"
reference = str(context.getReference()) + "-Home.Page"
home_page = portal_catalog.getResultValue(
portal_type = 'Web Page',
reference = reference)
......
......@@ -8,8 +8,21 @@
<script src="renderjs.js"></script>
<!-- <script src="handlebars.js" type="text/javascript"></script>
<script id="panel-template-body-list" type="text/x-handlebars-template"></script>-->
<script src="handlebars.js" type="text/javascript"></script>
<script src="gadget_project_info.js"></script>
<link rel="stylesheet" type="text/css" href="gadget_project_info.css">
<!-- worklist -->
<script id="table-template" type="text/x-handlebars-template">
{{#if document_list }}
<ul data-role="listview" data-theme="c" class="document-listview ui-listview-inset ui-corner-all">
{{#each document_list}}
<li class="ui-li-has-count" data-icon="false" ><a class="ui-body-inherit" href="{{link}}">{{title}} <span id="{{id}}" class="ui-li-count">{{count}}</span></a></li>
{{/each}}
</ul>
{{else}}
<p>All work caught up!</p>
{{/if}}
</script>
</head>
<body>
......@@ -17,7 +30,7 @@
<div class="ui-field-contain" style="top:50px;">
<div class="bottom">
<a id="forum_link" target="_blank" class="first-line-buttons ui-disabled" data-i18n="[value]Forum" disabled >Forum</a>
<a id="description_link" target="_blank" class="first-line-buttons ui-disabled" data-i18n="[value]Project Description" disabled >Project Description</a>
<!-- <a id="description_link" target="_blank" class="first-line-buttons ui-disabled" data-i18n="[value]Project Description" disabled >Project Description</a> -->
<a id="rss_link" target="_blank" class="first-line-buttons ui-disabled" data-i18n="[value]Generate RSS" disabled >Generate RSS</a>
</div>
</div>
......@@ -57,6 +70,12 @@
<a id="test_suite_link" class="first-line-buttons ui-disabled" data-i18n="[value]Test suite" disabled >Test suite</a>
</p>
</div>
<div class="ui-field-contain" style="top:320px;">
<h1 data-i18n="[value]Project WorkList" class="ui-title ui-override-theme worklist-title">Project WorkList</h1>
</div>
<div class="ui-field-contain" style="top:325px;">
<section class="document_list" style="width: 100%;"></section>
</div>
<div class="ui-field-contain" style="top:350px;">
<div id="home_page_content"></div>
</div>
......
/*jslint nomen: true, indent: 2 */
/*global window, rJS, RSVP, document, FileReader, Blob, jIO, ensureArray, //Handlebars,
lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
(function (window, rJS, RSVP, document, FileReader, Blob, jIO, ensureArray, //Handlebars,
lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue) {
/*global window, rJS, RSVP, document, FileReader, Blob, jIO, ensureArray,
lockGadgetInQueue, unlockGadgetInQueue, Handlebars*/
(function (window, rJS, RSVP, document, FileReader, Blob, jIO, ensureArray,
lockGadgetInQueue, unlockGadgetInQueue, Handlebars) {
"use strict";
/*var gadget_klass = rJS(window),
template_element = gadget_klass.__template_element,
panel_template_body_list = Handlebars.compile(template_element
.getElementById("panel-template-body-list")
.innerHTML);*/
// Precompile the templates while loading the first gadget instance
var gadget_klass = rJS(window),
source = gadget_klass.__template_element
.getElementById("table-template")
.innerHTML,
table_template = Handlebars.compile(source);
function enableLink(link_element, url) {
link_element.href = url;
......@@ -19,13 +20,6 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
function generateLink(gadget, link_element, command, options) {
return gadget.getUrlFor({command: command, options: options})
/*.push(function (result) {
return gadget.translateHtml(
panel_template_body_list({
"form_href": result
})
);
})*/
.push(function (result) {
enableLink(link_element, result);
});
......@@ -47,17 +41,47 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
});
}
rJS(window)
function generateAjaxPromise(url) {
return new RSVP.Queue()
.push(function () {
return jIO.util.ajax({
url: url,
dataType: 'text'
});
})
.push(function (evt) {
return evt.target.responseText.split('\n');
});
}
function setHTMLelementWithPromise(span_element, promise) {
return new RSVP.Queue()
.push(function () {
return promise;
})
.push(function (result) {
span_element.innerHTML = result;
});
}
function getActionListByName(view_list, name) {
return view_list.filter(d => d.name === name)[0].href;
}
//rJS(window)
gadget_klass
.declareAcquiredMethod("getUrlFor", "getUrlFor")
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")
.declareMethod('render', function (options) {
//console.log("info gadget render options:");
//console.log(options);
var state_dict = {
jio_key: options.jio_key || "",
//HACK
forum_link: options.forum_link || "https://www.erp5.com/group_section/forum",
description_link: options.description_link || "https://www.erp5.com/project_section/nexedi-erp5",
//description_link: options.description_link || "https://www.erp5.com/project_section/nexedi-erp5",
project_title: options.project_title,
home_page_content: options.home_page_content
};
......@@ -67,21 +91,31 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
.onStateChange(function (modification_dict) {
var gadget = this,
base_site = window.location.origin + window.location.pathname,
project_url = base_site + modification_dict.jio_key;
project_url = base_site + modification_dict.jio_key,
work_item_list = [],
task_count_promise = generateAjaxPromise(project_url + "/Project_tasks"),
bug_count_promise = generateAjaxPromise(project_url + "/Project_bugs");
document.getElementById("home_page_content").innerHTML = modification_dict.home_page_content;
return gadget.jio_getAttachment(modification_dict.jio_key, "links")
.push(function (erp5_document) {
var view_list = ensureArray(erp5_document._links.view),
task_view = view_list.filter(d => d.name === "task_list")[0].href,
bug_view = view_list.filter(d => d.name === "bug_list")[0].href,
milestone_view = view_list.filter(d => d.name === "milestone")[0].href,
task_report_view = view_list.filter(d => d.name === "task_report_list")[0].href;
return new RSVP.Queue()
.push(function () {
return RSVP.all([
gadget.jio_getAttachment(modification_dict.jio_key, "links")
]);
})
.push(function (result_list) {
var view_list = ensureArray(result_list[0]._links.view),
task_view = getActionListByName(view_list, "task_list"),
bug_view = getActionListByName(view_list, "bug_list"),
milestone_view = getActionListByName(view_list, "milestone"),
task_report_view = getActionListByName(view_list, "task_report_list"),
request_view = getActionListByName(view_list, "request_list");
gadget.element.querySelectorAll("h1")[0].innerHTML = modification_dict.project_title;
enableLink(document.getElementById("forum_link"), modification_dict.forum_link);
enableLink(document.getElementById("description_link"), modification_dict.description_link);
//enableLink(document.getElementById("description_link"), modification_dict.description_link);
generateLink(gadget, document.getElementById("milestone_link"), 'display_with_history', {
'jio_key': 'milestone_module', 'page': 'form', 'view': milestone_view,
......@@ -91,35 +125,34 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
generateLink(gadget, document.getElementById("support_request_link"), 'display_with_history', {
'jio_key': 'support_request_module',
'page': 'form',
'view': 'view',
'view': request_view,
'field_listbox_sort_list:json': [["delivery.start_date", "descending"]],
'extended_search': ('destination_project_title: "' + modification_dict.project_title + '" AND selection_domain_state_support_domain: "validated"')
//'extended_search': ('destination_project_title: "' + modification_dict.project_title + '" AND translated_simulation_state_title: "Submitted"')
'extended_search': ('selection_domain_state_support_domain: "validated"')
});
var bug_options = {
'jio_key': 'bug_module', 'page': 'form', 'view': 'view',//bug_view,
'jio_key': 'bug_module', 'page': 'form', 'view': bug_view,
'field_listbox_sort_list:json': [["delivery.start_date", "descending"]],
'field_listbox_column_list:json': ["title", "description", "delivery.start_date"],
'extended_search': ('source_project_title: "' + modification_dict.project_title + '" AND selection_domain_state_bug_domain: "started"')
//'extended_search': ('source_project_title: "' + modification_dict.project_title + '" AND translated_simulation_state_title: "Open"')
'extended_search': ('selection_domain_state_bug_domain: "started"')
}, closed_bug_options = {};
generateLink(gadget, document.getElementById("bug_link"), 'display', bug_options);
Object.assign(closed_bug_options, bug_options);
//closed_bug_options.extended_search = ('source_project_title: "' + modification_dict.project_title + '" AND translated_simulation_state_title: "Resolved"');
closed_bug_options.extended_search = ('source_project_title: "' + modification_dict.project_title + '" AND selection_domain_state_bug_domain: "closed"');
closed_bug_options.extended_search = ('selection_domain_state_bug_domain: "closed"');
generateLink(gadget, document.getElementById("closed_bug_link"), 'display', closed_bug_options);
generateInfo(gadget, document.getElementById("bug_count"), project_url + "/Project_bugs");
//generateInfo(gadget, document.getElementById("bug_count"), project_url + "/Project_bugs");
setHTMLelementWithPromise(document.getElementById("bug_count"), bug_count_promise);
generateInfo(gadget, document.getElementById("closed_bug_count"), project_url + "/Project_bugs?closed=1");
generateLink(gadget, document.getElementById("task_link"), 'display_with_history', {
'jio_key': 'task_module', 'page': 'form', 'view': 'view',
'jio_key': 'task_module', 'page': 'form', 'view': task_view,
'field_listbox_sort_list:json': [["delivery.start_date", "descending"]],
'field_listbox_column_list:json': ["title", "delivery.start_date", "delivery.stop_date", "destination_decision_title",
"source_title", "destination_title", "total_quantity", "task_line_quantity_unit_title"],
'extended_search': ('source_project_title: "' + modification_dict.project_title + '" AND selection_domain_state_task_domain: "confirmed"')
'extended_search': ('selection_domain_state_task_domain: "confirmed"')
});
generateInfo(gadget, document.getElementById("task_count"), project_url + "/Project_tasks");
//generateInfo(gadget, document.getElementById("task_count"), project_url + "/Project_tasks");
setHTMLelementWithPromise(document.getElementById("task_count"), task_count_promise);
generateInfo(gadget, document.getElementById("unassigned_task_count"), project_url + "/Project_tasksToAssigne");
var task_report_options = {
......@@ -153,6 +186,67 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
'extended_search': ('source_project_title: "' + modification_dict.project_title + '"')
});
var i, promise_list = [];
work_item_list.push({
display_options: {
'jio_key': 'bug_module', 'page': 'form', 'view': bug_view,
'field_listbox_sort_list:json': [["delivery.start_date", "descending"]],
'field_listbox_column_list:json': ["title", "description", "delivery.start_date"],
'extended_search': ('selection_domain_state_bug_domain: "started"')
},
action_name: "Open bugs",
action_count: "......",
span_id: "open_bug_id",
count_promise: bug_count_promise
});
work_item_list.push({
display_options: {
'jio_key': 'task_module', 'page': 'form', 'view': task_view,
'field_listbox_sort_list:json': [["delivery.start_date", "descending"]],
'field_listbox_column_list:json': ["title", "delivery.start_date", "delivery.stop_date", "destination_decision_title",
"source_title", "destination_title", "total_quantity", "task_line_quantity_unit_title"],
'extended_search': ('selection_domain_state_task_domain: "confirmed"')
},
action_name: "Tasks",
action_count: "......",
span_id: "task_id",
count_promise: task_count_promise
});
work_item_list.push({
display_options: {
'jio_key': 'support_request_module',
'page': 'form',
'view': request_view,//'view',
'field_listbox_sort_list:json': [["delivery.start_date", "descending"]],
'extended_search': ('selection_domain_state_support_domain: "validated"')
},
action_name: "Support Requests",
action_count: "......",
span_id: "support_id",
count_promise: task_count_promise
});
for (i = 0; i < work_item_list.length; i += 1) {
promise_list.push(gadget.getUrlFor({command: 'display', options: work_item_list[i].display_options}));
}
return RSVP.all(promise_list);
})
.push(function (link_list) {
var i, line_list = [];
for (i = 0; i < work_item_list.length; i += 1) {
line_list.push({
link: link_list[i],
title: work_item_list[i].action_name,
count: work_item_list[i].action_count,
id: work_item_list[i].span_id
});
}
gadget.element.querySelector('.document_list').innerHTML = table_template({
document_list: line_list
});
for (i = 0; i < work_item_list.length; i += 1) {
setHTMLelementWithPromise(document.getElementById(work_item_list[i].span_id), work_item_list[i].count_promise);
//generateInfo(gadget, document.getElementById(work_item_list[i].span_id), project_url + work_item_list[i].count_script);
}
});
})
......@@ -164,5 +258,5 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
return true;
});
}(window, rJS, RSVP, document, FileReader, Blob, jIO, ensureArray, //Handlebars,
lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue));
\ No newline at end of file
}(window, rJS, RSVP, document, FileReader, Blob, jIO, ensureArray,
lockGadgetInQueue, unlockGadgetInQueue, Handlebars));
\ No newline at end of file
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