Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Laurent S
erp5
Commits
04df0c44
Commit
04df0c44
authored
Aug 24, 2015
by
Xiaowu Zhang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_web_renderjs_ui: add draft support for filter editor which is used to make query
parent
7950d24e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1166 additions
and
32 deletions
+1166
-32
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_html.xml
...tem/web_page_module/rjs_gadget_erp5_filtereditor_html.xml
+404
-0
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_js.xml
...eItem/web_page_module/rjs_gadget_erp5_filtereditor_js.xml
+658
-0
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_html.xml
...PathTemplateItem/web_page_module/rjs_gadget_erp5_html.xml
+10
-3
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml
...i/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml
+4
-1
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_listbox_js.xml
...mplateItem/web_page_module/rjs_gadget_erp5_listbox_js.xml
+7
-3
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_formpage_js.xml
...teItem/web_page_module/rjs_gadget_erp5_pt_formpage_js.xml
+11
-5
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_html.xml
...Item/web_page_module/rjs_gadget_erp5_searchfield_html.xml
+29
-15
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_js.xml
...teItem/web_page_module/rjs_gadget_erp5_searchfield_js.xml
+43
-5
No files found.
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_html.xml
0 → 100644
View file @
04df0c44
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Page"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Access_contents_information_Permission
</string>
</key>
<value>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Change_local_roles_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Modify_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_View_Permission
</string>
</key>
<value>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
content_md5
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_filter_editor.html
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
rjs_gadget_erp5_filtereditor_html
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
<value>
<string>
en
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Page
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
text_content
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
<!DOCTYPE html>
\n
<html>
\n
<head>
\n
<meta
charset=
"utf-8"
/>
\n
<meta
name=
"viewport"
content=
"width=device-width, user-scalable=no"
/>
\n
<title>
ERP5 Filter Editor
</title>
\n
\n
<!-- renderjs -->
\n
<script
src=
"rsvp.js"
></script>
\n
<script
src=
"renderjs.js"
></script>
\n
<script
src=
"handlebars.js"
></script>
\n
\n
<!-- custom script -->
\n
<script
src=
"gadget_erp5_filter_editor.js"
></script>
\n
\n
<script
id=
"option-template"
type=
"text/x-handlebars-template"
>
\n
<option
value=
"{{value}}"
data-i18n=
"{{text}}"
>
{{text}}
</option>
\n
</script>
\n
\n
<script
id=
"selected-option-template"
type=
"text/x-handlebars-template"
>
\n
<option
selected=
"selected"
data-i18n=
"{{text}}"
value=
"{{value}}"
>
{{text}}
</option>
\n
</script>
\n
\n
\n
<script
id=
"option-template"
type=
"text/x-handlebars-template"
>
\n
<option
value=
"{{value}}"
data-i18n=
"{{text}}"
>
{{text}}
</option>
\n
</script>
\n
\n
<script
id=
"selected-option-template"
type=
"text/x-handlebars-template"
>
\n
<option
selected=
"selected"
data-i18n=
"{{text}}"
value=
"{{value}}"
>
{{text}}
</option>
\n
</script>
\n
\n
<script
id=
"filter-template"
type=
"text/x-handlebars-template"
>
\n
<div
class=
"header"
>
\n
<form
class=
"delete"
>
\n
<button
type=
"submit"
class=
"close ui-btn-c ui-override-theme ui-btn ui-icon-delete ui-btn-icon-notext"
></button>
\n
</form>
\n
<h1
data-i18n=
"Filter Editor"
>
Filter Editor
</h1>
\n
\n
<form
class=
"submit"
>
\n
<button
type=
"submit"
class=
"submit ui-btn-c ui-override-theme ui-btn ui-icon-reorder ui-btn-icon-notext"
></button>
\n
</form>
\n
</div>
\n
\n
<div
class=
"container"
>
\n
<h1
data-i18n=
"Custom Filter"
>
Custom Filter
</h1>
\n
\n
<fieldset
data-role=
"ui_controlgroup"
>
\n
<label
for=
"radio-a"
>
All criterions(AND)
</label>
\n
<input
type=
"radio"
name=
"radio_filter"
id=
"radio_a"
class=
"and"
checked
></input>
\n
<label
for=
"radio-b"
>
At least one(OR)
</label>
\n
<input
type=
"radio"
name=
"radio_filter"
id=
"radio_b"
class=
"or"
></input>
\n
</fieldset>
\n
<div
class=
"filter_item_container"
>
\n
<form
class=
"plus"
>
\n
<button
type=
"submit"
class=
"plus ui-btn-c ui-override-theme ui-btn ui-icon-plus ui-btn-icon-notext"
></button>
\n
</div>
\n
</form>
\n
</div>
\n
\n
<div
class=
"predefined_filter"
>
\n
<h1
data-i18n=
"Predefined Filter"
>
Predefined Filter
</h1>
\n
</div>
\n
\n
</script>
\n
\n
</head>
\n
<body>
\n
<div
class=
"jqm-navmenu-panel"
></div>
\n
</body>
\n
</html>
]]>
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Gadget Erp5 Filter Editor
</string>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<string>
001
</string>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
document_publication_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
processing_status_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
publish_alive
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1439819451.71
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
published_alive
</string>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
edit
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
945.13851.42970.21913
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
<value>
<string>
current
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1440425765.38
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_processing_state
</string>
</key>
<value>
<string>
empty
</string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
0.0.0.0
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1439819302.25
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_js.xml
0 → 100644
View file @
04df0c44
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Web Script"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Access_contents_information_Permission
</string>
</key>
<value>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Change_local_roles_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Modify_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_View_Permission
</string>
</key>
<value>
<tuple>
<string>
Anonymous
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Associate
</string>
<string>
Auditor
</string>
<string>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
content_md5
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
gadget_erp5_filter_editor.js
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
rjs_gadget_erp5_filtereditor_js
</string>
</value>
</item>
<item>
<key>
<string>
language
</string>
</key>
<value>
<string>
en
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Web Script
</string>
</value>
</item>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
text_content
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
/*jslint nomen: true, indent: 2, maxerr: 3 */\n
/*global window, rJS, Handlebars, jQuery, RSVP, loopEventListener, document */\n
(function (window, rJS, Handlebars, $, RSVP, loopEventListener) {\n
"use strict";\n
\n
/////////////////////////////////////////////////////////////////\n
// templates\n
/////////////////////////////////////////////////////////////////\n
// Precompile templates while loading the first gadget instance\n
var gadget_klass = rJS(window),\n
option_source = gadget_klass.__template_element\n
.getElementById("option-template")\n
.innerHTML,\n
option_template = Handlebars.compile(option_source),\n
\n
selected_option_source = gadget_klass.__template_element\n
.getElementById("selected-option-template")\n
.innerHTML,\n
selected_option_template = Handlebars.compile(selected_option_source),\n
\n
filter_source = gadget_klass.__template_element\n
.getElementById("filter-template")\n
.innerHTML,\n
filter_template = Handlebars.compile(filter_source);\n
\n
\n
\n
function submitFilterQuery(gadget) {\n
var i,\n
operator,\n
query = "",\n
value,\n
select,\n
filterforms = gadget.props.element.querySelectorAll(".filterForm"),\n
and = gadget.props.element.querySelector(".and");\n
operator = and.checked ? " AND " : " OR ";\n
for (i = 0; i < filterforms.length; i += 1) {\n
if (filterforms[i][3].value !== "") {\n
if (i !== 0) {\n
query += operator;\n
}\n
value = filterforms[i][3].value;\n
select = filterforms[i][2][filterforms[i][2].selectedIndex].value;\n
if (select === "keyword" && filterforms[i][1][filterforms[i][1].selectedIndex].value !== "Searchable Text") {\n
value = "%" + value + "%";\n
} else {\n
value = select + value;\n
}\n
if (filterforms[i][1][filterforms[i][1].selectedIndex].value === "Searchable Text") {\n
query += value;\n
} else {\n
query += filterforms[i][1][filterforms[i][1].selectedIndex].value + ":" + value;\n
}\n
}\n
}\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.pleasePublishMyState({\n
"extended_search": query\n
});\n
})\n
.push(function (url) {\n
gadget.props.jelement.panel("toggle");\n
return gadget.pleaseRedirectMyHash(url);\n
});\n
}\n
\n
\n
\n
\n
\n
function createFilterItem(gadget, select, input_value) {\n
var container = document.createElement("form"),\n
minus_button = document.createElement("input"),\n
select_reference = document.createElement("select"),\n
i,\n
tmp = "",\n
default_select = "Searchable Text",\n
select_options,\n
select_options_value,\n
options_map = {\n
"date_float": ["Equals To", "Greater Than", "Less Than", "Not Greater Than", "Not Less Than"],\n
"date_float_value": ["", ">
", "
<
", "
<
=", ">="],\n
"searchable_text": ["Contain"],\n
"searchable_text_value": [""],\n
"other": ["Exact Match", "keyword"],\n
"other_value": ["", "keyword"]\n
},\n
\n
text = document.createElement("input"),\n
select_operator = document.createElement("select");\n
\n
container.appendChild(minus_button);\n
container.appendChild(select_reference);\n
container.appendChild(select_operator);\n
text.setAttribute("type", "text");\n
text.setAttribute("value", input_value || "");\n
minus_button.setAttribute("class", "minus_button");\n
minus_button.setAttribute("type", "button");\n
container.appendChild(text);\n
container.setAttribute("class", "filterForm");\n
\n
\n
\n
\n
function createSelectOperator(event) {\n
var html = "",\n
j;\n
if (event.target.value.indexOf(\'date\') !== -1 ||\n
event.target.value.indexOf(\'quantity\') !== -1 ||\n
event.target.value.indexOf(\'price\') !== -1) {\n
select_options = options_map.date_float;\n
select_options_value = options_map.date_float_value;\n
} else if (event.target.value === "Searchable Text") {\n
select_options = options_map.searchable_text;\n
select_options_value = options_map.searchable_text_value;\n
} else {\n
select_options = options_map.other;\n
select_options_value = options_map.other_value;\n
}\n
\n
for (j = 0; j
< select_options.length
;
j
+=
1)
{\n
html
+=
option_template({\n
value:
select_options_value[j],\n
text:
select_options[j]\n
});\n
}\n
select_operator.innerHTML =
html;\n
}\n
\n
\n
tmp =
""
;\n
tmp
+=
option_template({\n
value:
"Searchable
Text",\n
text:
"Searchable
Text"\n
});\n
for
(
i =
0;
i
<
gadget.props.options.length;
i
+=
1)
{\n
if
(
select =
==
gadget.props.options[i][0])
{\n
default_select =
gadget.props.options[i][1];\n
tmp
+=
selected_option_template({\n
value:
gadget.props.options[i][0],\n
text:
gadget.props.options[i][1]\n
});\n
}
else
{\n
tmp
+=
option_template({\n
value:
gadget.props.options[i][0],\n
text:
gadget.props.options[i][1]\n
});\n
}\n
}\n
\n
select_reference.innerHTML =
tmp;\n
\n
createSelectOperator({"target":
{"value":
default_select}});\n
loopEventListener(\n
minus_button,\n
"click",\n
false,\n
function
()
{\n
container.parentElement.removeChild(container);\n
}\n
);\n
loopEventListener(\n
select_reference,\n
"change",\n
false,\n
createSelectOperator\n
);\n
loopEventListener(\n
container,\n
"submit",\n
false,\n
function
()
{\n
return
submitFilterQuery(gadget);\n
}\n
);\n
return
container;\n
}\n
\n
\n
gadget_klass\n
/////////////////////////////////////////////////////////////////\n
//
ready\n
/////////////////////////////////////////////////////////////////\n
//
Init
local
properties\n
.ready(function
(g)
{\n
g.props =
{};\n
})\n
\n
//////////////////////////////////////////////\n
//
acquired
method\n
//////////////////////////////////////////////\n
.declareAcquiredMethod("translateHtml",
"translateHtml")\n
.declareAcquiredMethod("whoWantToDisplayThisFrontPage",
"whoWantToDisplayThisFrontPage")\n
.declareAcquiredMethod("pleasePublishMyState",
"pleasePublishMyState")\n
.declareAcquiredMethod("pleaseRedirectMyHash",
"pleaseRedirectMyHash")\n
\n
//
Assign
the
element
to
a
variable\n
.ready(function
(g)
{\n
return
g.getElement()\n
.push(function
(element)
{\n
g.props.element =
element;\n
g.props.jelement =
$(element.querySelector("div"));\n
});\n
})\n
\n
.ready(function
(g)
{\n
g.props.jelement.panel({\n
display:
"overlay",\n
position:
"right",\n
theme:
"c"\n
});\n
})\n
\n
.ready(function
(g)
{\n
return
new
RSVP.Queue()\n
.push(function
()
{\n
var
tmp =
filter_template();\n
return
g.translateHtml(tmp);\n
})\n
.push(function
(translated_html)
{\n
g.props.jelement.html(translated_html);\n
g.props.jelement.trigger("create");\n
});\n
})\n
\n
/////////////////////////////////////////////////////////////////\n
//
declared
methods\n
/////////////////////////////////////////////////////////////////\n
.declareAcquiredMethod("jio_getAttachment",
"jio_getAttachment")\n
.declareMethod(\'toggle\',
function
()
{\n
var
gadget =
this,\n
options =
gadget.props.options;\n
gadget.props.jelement.panel("toggle");\n
if
(gadget.props.element.querySelector(".filterForm")
===
null
||
gadget.props.change)
{\n
gadget.props.change =
false;\n
return
new
RSVP.Queue()\n
.push(function
()
{\n
return
gadget.jio_getAttachment({"_id":
options.jio_key,
"_attachment":
options.view});\n
})\n
.push(function
(result)
{\n
gadget.props.options =
result.data._embedded._view.listbox.column_list;\n
return
createFilterItem(gadget);\n
})\n
.push(function
(item)
{\n
var
container =
gadget.props.element.querySelector(".filter_item_container");\n
container.insertBefore(item,
container.lastChild);\n
});\n
}\n
})\n
\n
.declareMethod(\'render\',
function
(options)
{\n
var
container =
this.props.element.querySelector(".filter_item_container"),\n
i,\n
gadget =
this,\n
item,\n
select_list,\n
query;\n
while
(container.firstChild
!==
container.lastChild)
{\n
container.removeChild(container.firstChild);\n
}\n
this.props.options =
options;\n
if
(options.filterEditor
!==
undefined
||
options.pg
!==
undefined)
{\n
\n
query =
options.filterEditor
?
options.filterEditor.extended_search
:
options.pg.fg.erp5_searchfield.extended_search;\n
return
new
RSVP.Queue()\n
.push(function
()
{\n
return
gadget.jio_getAttachment({"_id":
options.jio_key,
"_attachment":
options.view});\n
})\n
.push(function
(result)
{\n
gadget.props.options =
result.data._embedded._view.listbox.column_list;\n
var
query_list =
query.split("
AND
");\n
\n
for
(
i =
0;
i
<
query_list.length;
i
+=
1)
{\n
select_list =
query_list[i].split(":");\n
if
(
select_list.length =
==
1)
{\n
item =
createFilterItem(gadget,
"Searchable
Text",
query_list[i]);\n
}
else
{\n
item =
createFilterItem(gadget,
select_list[0],
select_list[1]);\n
}\n
container.insertBefore(item,
container.lastChild);\n
}\n
});\n
}\n
\n
})\n
\n
/////////////////////////////////////////////////////////////////\n
//
declared
services\n
/////////////////////////////////////////////////////////////////\n
.declareService(function
()
{\n
var
gadget =
this;\n
function
closeFilterEditor()
{\n
gadget.props.jelement.panel("toggle");\n
}\n
function
plusItem()
{\n
return
new
RSVP.Queue()\n
.push(function
()
{\n
return
createFilterItem(gadget);\n
})\n
.push(function
(item)
{\n
var
container =
gadget.props.element.querySelector(".filter_item_container");\n
container.insertBefore(item,
container.lastChild);\n
});\n
}\n
\n
loopEventListener(\n
gadget.props.element.querySelector(".plus"),\n
"submit",\n
false,\n
plusItem\n
);\n
loopEventListener(\n
gadget.props.element.querySelector(".delete"),\n
"submit",\n
false,\n
closeFilterEditor\n
);\n
loopEventListener(\n
gadget.props.element.querySelector(".submit"),\n
"submit",\n
false,\n
function
()
{\n
return
submitFilterQuery(gadget);\n
}\n
);\n
});\n
\n
}(window,
rJS,
Handlebars,
jQuery,
RSVP,
loopEventListener));
]]
></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Gadget Erp5 Filter Editor JS
</string>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<string>
001
</string>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
document_publication_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
edit_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
processing_status_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAU=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
publish_alive
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1439819594.24
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
published_alive
</string>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
edit
</string>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
945.18296.32311.54766
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
<value>
<string>
current
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1440435953.88
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record
id=
"5"
aka=
"AAAAAAAAAAU="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
error_message
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_processing_state
</string>
</key>
<value>
<string>
empty
</string>
</value>
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
0.0.0.0
</string>
</value>
</item>
<item>
<key>
<string>
time
</string>
</key>
<value>
<object>
<klass>
<global
name=
"DateTime"
module=
"DateTime.DateTime"
/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>
1439819567.59
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_html.xml
View file @
04df0c44
...
...
@@ -158,6 +158,13 @@
data-gadget-scope=
"panel"
\n
data-gadget-sandbox=
"public"
></div>
\n
\n
<div
data-gadget-url=
"gadget_erp5_filter_editor.html"
\n
data-gadget-scope=
"filterEditor"
\n
data-gadget-sandbox=
"public"
></div>
\n
\n
<div
role=
"main"
class=
"ui-content gadget-content"
></div>
\n
</div>
\n
\n
...
...
@@ -303,7 +310,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
945.
54056.18010.56797
</string>
</value>
<value>
<string>
945.
18332.59164.9181
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -321,8 +328,8 @@
</tuple>
<state>
<tuple>
<float>
144
2581000.11
</float>
<string>
GMT
</string>
<float>
144
0437597.42
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
...
...
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml
View file @
04df0c44
...
...
@@ -495,6 +495,9 @@
.allowPublicAcquisition(\'triggerPanel\', function () {\n
return route(this, "panel", "toggle");\n
})\n
.allowPublicAcquisition(\'triggerFilterEditor\', function () {\n
return route(this, "filterEditor", "toggle");\n
})\n
\n
.allowPublicAcquisition("jio_allDocs", function (param_list) {\n
return callJioGadget(this, "allDocs", param_list);\n
...
...
@@ -775,7 +778,7 @@
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
romain
</string>
</value>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
...
...
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_listbox_js.xml
View file @
04df0c44
...
...
@@ -214,7 +214,11 @@
\n
if (url_query) {\n
//query_string = field_json.column_list.reduce(buildQueryString, \' AND (\').replace(new RegExp("OR " + \'$\'), \')\');\n
query_string = \' AND \' + url_query;\n
if (field_json.list_method_template === undefined) {\n
query_string = \' AND \' + url_query;\n
} else {\n
query_string = url_query;\n
}\n
}\n
\n
for (i = 0; i < field_json.column_list.length; i += 1) {\n
...
...
@@ -604,7 +608,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
94
6.44927.40202.16725
</string>
</value>
<value>
<string>
94
5.18094.21629.29286
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -622,7 +626,7 @@
</tuple>
<state>
<tuple>
<float>
144
5939419.7
1
</float>
<float>
144
0435604.5
1
</float>
<string>
UTC
</string>
</tuple>
</state>
...
...
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_formpage_js.xml
View file @
04df0c44
...
...
@@ -171,7 +171,13 @@
});\n
})\n
.push(function (result) {\n
var sub_options = options.fg || {};\n
var sub_options = options.fg;\n
if (sub_options === undefined) {\n
sub_options = {};\n
if(options.filterEditor) {\n
sub_options.erp5_searchfield = options.filterEditor;\n
}\n
}\n
sub_options.erp5_document = erp5_document;\n
sub_options.form_definition = erp5_form;\n
sub_options.view = options.view;\n
...
...
@@ -317,7 +323,7 @@
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
romain
</string>
</value>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
...
...
@@ -331,7 +337,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
94
6.30055.63361.39150
</string>
</value>
<value>
<string>
94
5.12418.34036.47547
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -349,8 +355,8 @@
</tuple>
<state>
<tuple>
<float>
144
5267203.04
</float>
<string>
GMT
</string>
<float>
144
0083034.81
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
...
...
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_html.xml
View file @
04df0c44
...
...
@@ -120,24 +120,38 @@
<!-- custom script -->
\n
<script
src=
"gadget_erp5_searchfield.js"
></script>
\n
\n
<!-- XXX widget-status is bad! -->
\n
<script
id=
"panel-template"
type=
"text/x-handlebars-template"
>
\n
<div
class=
"center"
>
\n
<div
class=
"ui-field-contain"
>
\n
<div
class=
"ui-input-text ui-body-{{widget_theme}} ui-corner-all ui-shadow-inset ui-input-has-clear {{widget_status_class}}"
>
\n
<input
type=
"text"
data-enhanced=
"true"
value=
"{{widget_value}}"
name=
"search"
{{widget_status_attribute}}
/>
\n
<div
class=
"ui-btn ui-input-clear ui-input-btn ui-corner-all ui-icon-search ui-btn-icon-notext"
data-i18n=
"[node]header-submit"
>
\n
Submit
<input
data-enhanced=
"true"
type=
"submit"
data-i18n=
"[value]header-submit"
value=
"Submit"
{{widget_status_attribute}}
/>
\n
<script
id=
"panel-template"
type=
"text/x-handlebars-template"
>
\n
<div
class=
"field_container"
>
\n
<div
class=
"ui-field-contain"
>
\n
<div
class=
"css-compatability-helper"
>
\n
<div
class=
"ui-input-text ui-body-{{theme}} ui-input-has-icon ui-corner-all ui-shadow-inset ui-input-has-clear {{status_class}} {{css_class}}"
>
\n
<form
class=
"save_form document_form"
>
\n
<input
type=
"text"
data-enhanced=
"true"
value=
"{{widget_value}}"
name=
"search"
{{widget_status_attribute}}
/>
\n
<div
class=
"ui-btn ui-input-clear ui-input-btn ui-corner-all ui-icon-search ui-btn-icon-notext"
data-i18n=
"[node]{{search_i18n}}"
>
\n
{{search_i18n}}
<input
tabindex=
"-1"
data-role=
"button"
data-enhanced=
"true"
type=
"submit"
data-i18n=
"[value]{{search_i18n}}"
value=
" "
/>
\n
</div>
\n
</form>
\n
</div>
\n
<div
class=
"ui-shadow-inset ui-btn ui-btn-inline ui-corner-all ui-btn-{{theme}} ui-btn-icon-notext ui-icon-filter ui-override-theme "
>
\n
<form
class=
"filter_form"
>
\n
<div
class=
"ui-input-btn"
>
\n
<input
data-role=
"button"
data-enhanced=
"true"
type=
"submit"
data-i18n=
"[value]"
value=
" "
>
\n
</div>
\n
\n
</form>
\n
</div>
\n
<a
href=
"#"
data-i18n=
"filter"
class=
"ui-btn ui-btn-{{widget_theme}} ui-btn-icon-notext ui-icon-filter ui-override-theme ui-disabled"
>
Filters
</a>
\n
</div>
\n
</div>
\n
</div>
\n
</div>
\n
</script>
\n
\n
\n
\n
\n
\n
</head>
\n
<body>
\n
<div
class=
"
save_form document_form
"
></div>
\n
<div
class=
"
container
"
></div>
\n
</body>
\n
</html>
...
...
@@ -262,7 +276,7 @@
</item>
<item>
<key>
<string>
actor
</string>
</key>
<value>
<string>
romain
</string>
</value>
<value>
<string>
zope
</string>
</value>
</item>
<item>
<key>
<string>
comment
</string>
</key>
...
...
@@ -276,7 +290,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
945.
50880.23560.7150
</string>
</value>
<value>
<string>
945.
13789.16491.47428
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -294,8 +308,8 @@
</tuple>
<state>
<tuple>
<float>
144
2998364.27
</float>
<string>
GMT
</string>
<float>
144
0168925.51
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
...
...
bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_js.xml
View file @
04df0c44
...
...
@@ -135,7 +135,9 @@
// acquired method\n
//////////////////////////////////////////////\n
.declareAcquiredMethod("translateHtml", "translateHtml")\n
\n
.declareAcquiredMethod("pleasePublishMyState", "pleasePublishMyState")\n
.declareAcquiredMethod("pleaseRedirectMyHash", "pleaseRedirectMyHash")\n
.declareAcquiredMethod("triggerFilterEditor", "triggerFilterEditor")\n
/////////////////////////////////////////////////////////////////\n
// declared methods\n
/////////////////////////////////////////////////////////////////\n
...
...
@@ -161,7 +163,7 @@
}));\n
})\n
.push(function (my_translated_html) {\n
search_gadget.props.element.querySelector("
div
").innerHTML =\n
search_gadget.props.element.querySelector("
.container
").innerHTML =\n
my_translated_html;\n
return search_gadget;\n
});\n
...
...
@@ -173,6 +175,42 @@
\n
result[input.getAttribute(\'name\')] = input.value;\n
return result;\n
})\n
\n
.declareService(function () {\n
var gadget = this;\n
\n
function filterSubmit(evt) {\n
return gadget.triggerFilterEditor();\n
}\n
\n
function formSubmit(evt) {\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.getContent();\n
})\n
.push(function (data) {\n
return gadget.pleasePublishMyState({\n
"extended_search": data.search\n
});\n
})\n
.push(function (url) {\n
return gadget.pleaseRedirectMyHash(url);\n
});\n
}\n
// Listen to form submit\n
loopEventListener(\n
gadget.props.element.querySelector(\'.save_form\'),\n
\'submit\',\n
false,\n
formSubmit\n
);\n
loopEventListener(\n
gadget.props.element.querySelector(\'.filter_form\'),\n
\'submit\',\n
false,\n
filterSubmit\n
);\n
});\n
\n
}(window, rJS, RSVP, loopEventListener, Handlebars));
</string>
</value>
...
...
@@ -310,7 +348,7 @@
</item>
<item>
<key>
<string>
serial
</string>
</key>
<value>
<string>
945.
61050.10650.48093
</string>
</value>
<value>
<string>
945.
13775.30295.64870
</string>
</value>
</item>
<item>
<key>
<string>
state
</string>
</key>
...
...
@@ -328,8 +366,8 @@
</tuple>
<state>
<tuple>
<float>
144
5265843.55
</float>
<string>
GMT
</string>
<float>
144
0164409.77
</float>
<string>
UTC
</string>
</tuple>
</state>
</object>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment