Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
ecommerce-ui
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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
ecommerce-ui
Commits
bc1320d5
Commit
bc1320d5
authored
Sep 26, 2013
by
Sven Franck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added generic formField generator function
parent
065b1ad6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
217 additions
and
0 deletions
+217
-0
js/erp5_loader.js
js/erp5_loader.js
+217
-0
No files found.
js/erp5_loader.js
View file @
bc1320d5
...
...
@@ -3976,6 +3976,9 @@
);
};
/* ********************************************************************** */
/* JQM Listview */
/* ********************************************************************** */
/*
* Generate a JQM listview
* @method generateListview
...
...
@@ -3986,11 +3989,225 @@
};
/* ********************************************************************** */
/* JQM Form Field */
/* ********************************************************************** */
/* Generate a form field (input, select, checkbox...)
* @method generateFormField
* @param {object} config Default parameters usable for this form field
* @param {object} overrides Overrides for this instance
* @param {object} properties Object with data to fill
* @return {object} HTML document fragment
*/
priv
.
generateFormField
=
function
(
config
,
overrides
,
data
)
{
var
wrap
,
element_wrap
,
validate
,
value
=
data
||
undefined
,
element
=
document
.
createDocumentFragment
();
if
(
config
!==
undefined
||
(
overrides
.
enabled
||
config
.
validator
.
enabled
)
!==
true
)
{
// validation string
if
(
overrides
.
external
||
config
.
validator
.
external
)
{
validate
=
overrides
.
external_validator
||
config
.
validator
.
external_validator
;
}
if
(
overrides
.
maximum_length
||
config
.
validator
.
maximum_length
)
{
validate
+=
"
|
"
+
"
max_length:
"
+
(
overrides
.
maximum_length
||
config
.
validator
.
maximum_length
)
+
"
&truncate
"
+
(
overrides
.
truncate
||
config
.
validator
.
truncate
);
}
if
(
overrides
.
maximum_lines
||
config
.
validator
.
maximum_lines
)
{
validate
+=
"
|
"
+
"
max_lines:
"
+
(
overrides
.
maximum_lines
||
config
.
validator
.
maximum_lines
);
}
if
(
overrides
.
maximum_lenght_of_line
||
config
.
validator
.
maximum_lenght_of_line
)
{
validate
+=
"
|
"
+
"
max_length_lines:
"
+
(
overrides
.
maximum_lenght_of_line
||
config
.
validator
.
maximum_lenght_of_line
);
}
if
(
overrides
.
preserve_whitespace
||
config
.
validator
.
preserve_whitespace
)
{
validate
+=
"
|preserve_whitespace:true
"
;
}
if
(
overrides
.
start
||
config
.
validator
.
start
)
{
validate
+=
"
|start:
"
+
(
overrides
.
start
||
config
.
validator
.
start
);
}
if
(
overrides
.
end
||
config
.
validator
.
end
)
{
validate
+=
"
|end:
"
+
(
overrides
.
start
||
config
.
validator
.
start
);
}
// field wrapper
wrap
=
priv
.
generateElement
(
"
div
"
,
{
"
className
"
:
"
ui-fieldcontain translate
"
},
{
"
title
"
:
(
overrides
.
description
||
config
.
widget
.
description
||
""
),
"
data-i18n
"
:
(
overrides
.
description_i18n
||
config
.
widget
.
description_i18n
||
""
)
}
);
// field label
wrap
.
appendChild
(
priv
.
generateElement
(
"
label
"
,
{
"
className
"
:
"
translate
"
},
{
"
for
"
:
overrides
.
id
||
config
.
widget
.
id
,
"
data-i18n
"
:
overrides
.
title_i18n
||
config
.
widget
.
title_i18n
},
{
"
text
"
:
overrides
.
title
||
config
.
widget
.
title
}
));
// relationStringField
// TODO: crap
if
(
overrides
.
type
===
"
RelationStringField
"
||
config
.
type
===
"
RelationStringField
"
)
{
element_wrap
=
priv
.
generateElement
(
"
div
"
,
{
"
className
"
:
"
ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-input-has-clear ui-input-has-action
"
}
);
element_wrap
.
appendChild
(
priv
.
generateElement
(
"
input
"
,
{
"
id
"
:
overrides
.
id
||
config
.
widget
.
id
,
"
className
"
:
""
},
{
"
data-enhanced
"
:
"
true
"
,
"
data-inset
"
:
"
false
"
,
"
data-clear-btn
"
:
"
true
"
}
));
element_wrap
.
appendChild
(
priv
.
generateElement
(
"
a
"
,
{
"
href
"
:
""
,
"
className
"
:
"
ui-input-clear ui-input-clear-hidden ui-btn ui-icon-delete ui-btn-icon-notext ui-corner-all
"
,
"
title
"
:
"
Clear input element
"
},
{
"
data-role
"
:
"
button
"
,
"
data-i18n
"
:
"
[title]generic.buttons.clear;generic.buttons.clear
"
},
{
"
text
"
:
"
clear input element
"
}
));
element_wrap
.
appendChild
(
priv
.
generateElement
(
"
a
"
,
{
"
href
"
:
""
,
"
className
"
:
"
ui-disabled ui-input-action ui-btn ui-icon-plane ui-btn-icon-notext ui-corner-all
"
,
"
title
"
:
"
jump to selected object
"
},
{
"
data-role
"
:
"
button
"
,
"
data-i18n
"
:
"
[title]generic.buttons.jump;generic.buttons.jump
"
},
{
"
text
"
:
"
jump to selected object
"
}
));
wrap
.
appendChild
(
element_wrap
);
wrap
.
appendChild
(
priv
.
generateElement
(
"
ul
"
,
{
"
className
"
:
""
},{
"
data-role
"
:
"
listview
"
,
"
data-inset
"
:
"
true
"
,
"
data-enhanced
"
:
"
true
"
,
"
data-filter
"
:
"
true
"
,
"
data-filter-reveal
"
:
"
true
"
,
"
data-input
"
:
"
#relation-
"
+
portal_type
}
));
}
else
{
// element
wrap
.
appendChild
(
priv
.
generateElement
(
priv
.
mapFieldType
(
overrides
.
type
||
config
.
type
),
{
"
className
"
:
(
overrides
.
css_class
||
config
.
widget
.
css_class
||
""
)
+
"
"
+
((
overrides
.
required
||
config
.
validator
.
required
)
?
"
required
"
:
""
),
"
id
"
:
overrides
.
id
||
config
.
widget
.
id
},
{},
{
"
data-relation
"
:
overrides
.
portal_type
||
config
.
widget
.
portal_type
||
null
,
"
size
"
:
overrides
.
display_width
||
config
.
widget
.
display_width
||
overrides
.
size
||
config
.
widget
.
size
||
undefined
,
"
rows
"
:
overrides
.
width
||
config
.
widget
.
width
||
undefined
,
"
cols
"
:
overrides
.
height
||
config
.
widget
.
height
||
undefined
,
"
disabled
"
:
(
overrides
.
enabled
||
config
.
validator
.
enabled
)
?
undefined
:
true
,
"
name
"
:
overrides
.
alternate_name
||
config
.
validator
.
alternate_name
||
undefined
,
"
value
"
:
(
value
||
(
overrides
.
default
===
0
?
"
0
"
:
overrides
.
default
)
||
config
.
widget
.
default
||
undefined
),
"
data-vv-validations
"
:
validate
||
null
,
"
type
"
:
(
overrides
.
hidden
||
config
.
widget
.
hidden
)
===
true
?
"
hidden
"
:
priv
.
mapInputType
(
overrides
.
type
||
config
.
type
),
"
extra
"
:
overrides
.
extra
||
config
.
widget
.
extra
||
null
,
"
readonly
"
:
(
overrides
.
editable
===
false
||
config
.
validator
.
editable
===
false
)
?
true
:
undefined
,
"
options
"
:
(
overrides
.
items
||
config
.
widget
.
items
)
?
([
overrides
.
items
||
config
.
widget
.
items
||
null
,
overrides
.
extra_per_item
||
config
.
widget
.
extra_per_item
||
null
,
overrides
.
select_first_item
||
config
.
widget
.
select_first_item
||
null
])
:
null
}
));
}
element
.
appendChild
(
wrap
);
}
return
element
;
};
/* ====================================================================== */
/* CONSTRUCTORS */
/* ====================================================================== */
// Constructors generate gadgets utilizing generators!
/* ********************************************************************** */
/* field menu */
/* ********************************************************************** */
/** Construct a simple field menu
* @method constructFieldList
* @param {object} element Base element to enhance
* @returns {object } HTML fragment
*/
priv
.
constructFieldlist
=
function
(
element
)
{
var
i
,
k
,
j
,
field
,
config
,
overrides
,
content
,
box
,
section
,
fragment
,
gadget_id
=
element
.
getAttribute
(
"
data-gadget-id
"
),
settings
=
priv
.
gadget_properties
[
gadget_id
],
portal_type
=
settings
.
portal_type_title
,
$parent
=
$
(
element
.
parentNode
);
if
(
settings
!==
undefined
)
{
if
(
settings
.
form
!==
undefined
)
{
fragment
=
priv
.
generateElement
(
"
form
"
,
settings
.
form
.
direct
,
(
settings
.
form
.
attributes
||
undefined
),
(
settings
.
form
.
logic
||
undefined
)
);
}
else
{
fragment
=
window
.
document
.
createDocumentFragment
();
}
for
(
i
=
0
;
i
<
settings
.
layout
.
length
;
i
+=
1
)
{
section
=
settings
.
layout
[
i
];
if
(
section
.
blocks
)
{
for
(
j
=
0
;
j
<
section
.
blocks
.
length
;
j
+=
1
)
{
box
=
section
.
blocks
[
j
];
content
=
priv
.
generateElement
(
"
div
"
,
{
"
className
"
:
"
content_element
"
+
(
box
.
fullscreen
?
"
content_element_fullscreen
"
:
""
)}
);
// fields
if
(
box
.
fields
)
{
for
(
k
=
0
;
k
<
box
.
fields
.
length
;
k
+=
1
)
{
field
=
box
.
fields
[
k
];
config
=
priv
.
field_definitions
[
portal_type
][
field
];
overrides
=
box
.
overrides
[
field
]
||
{};
// all-in-one...
content
.
appendChild
(
priv
.
generateFormField
(
config
,
overrides
));
}
fragment
.
appendChild
(
content
);
}
if
(
box
.
actions
)
{
for
(
l
=
0
;
l
<
box
.
actions
.
length
;
l
+=
1
)
{
content
.
appendChild
(
priv
.
generateControlgroup
(
box
.
actions
[
l
]));
}
}
}
}
}
}
$parent
.
empty
().
append
(
fragment
).
enhanceWithin
();
};
/* ********************************************************************** */
/* tab view */
/* ********************************************************************** */
...
...
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