Commit 6649ceb1 by aagusti

penambahan widget

1 parent 518b9f53
...@@ -18,7 +18,9 @@ def provinsi_widget(node, kw): ...@@ -18,7 +18,9 @@ def provinsi_widget(node, kw):
url = node and hasattr(node, 'slave_url') and node.slave_url or "" url = node and hasattr(node, 'slave_url') and node.slave_url or ""
slave = node and hasattr(node, 'slave') and node.slave or "" slave = node and hasattr(node, 'slave') and node.slave or ""
values.insert(0, ("", "Pilih Propinsi...")) values.insert(0, ("", "Pilih Propinsi..."))
readonly = kw.get("readonly", False)
return widget_os.Select2MsWidget(values=values, return widget_os.Select2MsWidget(values=values,
readonly=readonly,
url=url, url=url,
slave=slave, slave=slave,
placeholder="Pilih Provinsi") placeholder="Pilih Provinsi")
......
...@@ -55,7 +55,9 @@ ...@@ -55,7 +55,9 @@
<!-- LOOP FORM CSS INCLUDED--> <!-- LOOP FORM CSS INCLUDED-->
<tal:loop tal:repeat="css_resource css"> <tal:loop tal:repeat="css_resource css">
<link rel="stylesheet" href="${home}${request.static_path(css_resource)}" <link rel="stylesheet" href="${home}${request.static_path(css_resource)}"
type="text/css"> type="text/css" tal:condition="css_resource[:4]!='http'">
<link rel="stylesheet" href="${css_resource}"
type="text/css" tal:condition="css_resource[:4]=='http'">
</tal:loop> </tal:loop>
<!--? <link href="${home}/static/v3/js/plugin/bootstrap-datepicker/css/bootstrap-datepicker.min.css"--> <!--? <link href="${home}/static/v3/js/plugin/bootstrap-datepicker/css/bootstrap-datepicker.min.css"-->
<!--? rel="stylesheet">--> <!--? rel="stylesheet">-->
...@@ -273,7 +275,8 @@ ...@@ -273,7 +275,8 @@
<script src="${home}/static/v3/js/osipkd.js"></script> <script src="${home}/static/v3/js/osipkd.js"></script>
<!-- LOOP ON JS RESOURCE --> <!-- LOOP ON JS RESOURCE -->
<tal:loop tal:repeat="js_resource js"> <tal:loop tal:repeat="js_resource js">
<script src="${home}${request.static_path(js_resource)}"></script> <script src="${home}${request.static_path(js_resource)}" tal:condition="js_resource[:4]!='http'"></script>
<script src="${js_resource}" tal:condition="js_resource[:4]=='http'"></script>
</tal:loop> </tal:loop>
<metal:js define-slot="js_files"></metal:js> <metal:js define-slot="js_files"></metal:js>
......
<html metal:use-macro="load: ./base3.1.pt"> <html metal:use-macro="load: ./base3.1.pt">
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-fw fa-plus"></i>&nbsp;${request.title}</h3> <h3 class="panel-title"><i class="fa fa-fw fa-plus"></i>&nbsp;${request.title}</h3>
</div>
<div class="panel-body">
<div tal:content="structure form"></div>
<div class="jarviswidget jarviswidget-color-blueLight">
<div tal:content="structure table"></div>
</div>
</div>
</div> </div>
<div class="panel-body">
<div tal:content="structure form"></div>
<div class="container">
<div tal:content="structure table"></div>
</div>
</div>
</div>
</div> </div>
<div metal:fill-slot="scripts"> <div metal:fill-slot="scripts">
<script> <script>
</script> </script>
<div metal:define-slot="scripts"></div> <div metal:define-slot="scripts"></div>
</div> </div>
</html> </html>
......
...@@ -112,8 +112,14 @@ class DeTable(field.Field): ...@@ -112,8 +112,14 @@ class DeTable(field.Field):
data=[], data=[],
allow_edit=True, allow_edit=True,
allow_delete=True, allow_delete=True,
allow_view=True,
**kw **kw
): ):
# field.Field.__init__(self, schema, **kw)
super().__init__(schema, **kw)
self.request = kw.get("request")
self.rows = kw.get("rows")
params = params and f"?{params}" or "" params = params and f"?{params}" or ""
btn_close_js = "{window.location = '/'; return false;}" btn_close_js = "{window.location = '/'; return false;}"
btn_add_js = "{window.location = o%sUri+'/add%s';}" % (tableid, params) btn_add_js = "{window.location = o%sUri+'/add%s';}" % (tableid, params)
...@@ -128,11 +134,10 @@ class DeTable(field.Field): ...@@ -128,11 +134,10 @@ class DeTable(field.Field):
btn_csv_js = "{window.location = o%sUri+'/csv/act%s';}" % ( btn_csv_js = "{window.location = o%sUri+'/csv/act%s';}" % (
tableid, params) tableid, params)
btn_pdf_js = "{window.open(o%sUri+'/pdf/act%s');}" % (tableid, params) btn_pdf_js = "{window.open(o%sUri+'/pdf/act%s');}" % (tableid, params)
btn_upload_js = "{window.location = o%sUri+'/upload%s';}" % (tableid, params) btn_upload_js = "{window.location = o%sUri+'/upload%s';}" % (
tableid, params)
action_suffix = f"{action_suffix}{params}" action_suffix = f"{action_suffix}{params}"
field.Field.__init__(self, schema, **kw)
self.request = kw.get("request")
_buttons = [] _buttons = []
for button in buttons: for button in buttons:
if isinstance(button, compat.string_types): if isinstance(button, compat.string_types):
...@@ -152,12 +157,13 @@ class DeTable(field.Field): ...@@ -152,12 +157,13 @@ class DeTable(field.Field):
""") """)
_scripts.append(f'$("#{tableid + button.name}").click(function ()' + _scripts.append(f'$("#{tableid + button.name}").click(function ()' +
eval('btn_' + button.name + '_js') + ');') eval('btn_' + button.name + '_js') + ');')
self.buttons = "','".join(_buttons).replace('\n', "").replace(';', self.buttons = "','".join(_buttons).replace('\n', ""). \
';\n') replace(';', ';\n')
self.tableid = tableid self.tableid = tableid
self.scripts = ''.join(_scripts).replace(';', ";\n") self.scripts = ''.join(_scripts).replace(';', ";\n")
self.allow_edit = json.dumps(allow_edit) self.allow_edit = json.dumps(allow_edit)
self.allow_delete = json.dumps(allow_delete) self.allow_delete = json.dumps(allow_delete)
self.allow_view = json.dumps(allow_view)
table_widget = getattr(schema, "widget", None) table_widget = getattr(schema, "widget", None)
if table_widget is None: if table_widget is None:
table_widget = widget.TableWidget() table_widget = widget.TableWidget()
...@@ -187,7 +193,7 @@ class DeTable(field.Field): ...@@ -187,7 +193,7 @@ class DeTable(field.Field):
d["orderable"] = f.orderable d["orderable"] = f.orderable
data.append(f"orderable: {f.orderable}") data.append(f"orderable: {f.orderable}")
if hasattr(f, "url"): if hasattr(f, "url"):
d["url"]=f.url d["url"] = f.url
# request = kw.get("request") # request = kw.get("request")
# if request: # if request:
# d["url"] = request.static_url(f.url) # d["url"] = request.static_url(f.url)
...@@ -240,7 +246,6 @@ class DeTable(field.Field): ...@@ -240,7 +246,6 @@ class DeTable(field.Field):
self.sorts = sorts self.sorts = sorts
self.paginates = paginates self.paginates = paginates
self.filters = filters self.filters = filters
print(self.headers)
class Button(object): class Button(object):
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
data data|field.data; data data|field.data;
allow_edit allow_edit|field.allow_edit; allow_edit allow_edit|field.allow_edit;
allow_delete allow_delete|field.allow_delete; allow_delete allow_delete|field.allow_delete;
allow_view allow_delete|field.allow_view;
" "
tal:attributes="style style; class css_class; attributes|field.widget.attributes|{};" tal:attributes="style style; class css_class; attributes|field.widget.attributes|{};"
i18n:domain="detable" i18n:domain="detable"
...@@ -80,14 +81,17 @@ ...@@ -80,14 +81,17 @@
let url = ${tableid}Columns[co].url; let url = ${tableid}Columns[co].url;
${tableid}Columns[co].render = function (data) { ${tableid}Columns[co].render = function (data) {
let result = "No Data" let result = "No Data"
if (data!=null) { if (data != null) {
result = '<a href="' + url + data + '" target="_blank">Link</a>&nbsp;'; result = '<a href="' + url + data + '" target="_blank">Link</a>&nbsp;';
} }
return result; return result;
} }
} else if (${tableid}Columns[co].data === "id" && ${tableid}Columns[co].action === true) { } else if (${tableid}Columns[co].data === "id" && ${tableid}Columns[co].action === true) {
${tableid}Columns[co].render = function (id) { ${tableid}Columns[co].render = function (id) {
let result = '<a href="${url}/' + id + '/view"><i class="fas fa-eye" aria-hidden="true"></i></a>&nbsp;'; let result = ""
if (${allow_view}) {
result = '<a href="${url}/' + id + '/view"><i class="fas fa-eye" aria-hidden="true"></i></a>&nbsp;';
}
if (${allow_edit}) { if (${allow_edit}) {
result += '<a href="${url}/' + id + '/edit"><i class="fas fa-edit" aria-hidden="true"></i></a>&nbsp;' result += '<a href="${url}/' + id + '/edit"><i class="fas fa-edit" aria-hidden="true"></i></a>&nbsp;'
} }
......
...@@ -44,7 +44,7 @@ class CommonModel(object): ...@@ -44,7 +44,7 @@ class CommonModel(object):
for column in self.__table__.columns: for column in self.__table__.columns:
value = getattr(self, column.name) value = getattr(self, column.name)
if value or null: if value or null:
if type(column.type)==DateTime: if type(column.type) == DateTime and date_format:
if value: if value:
values[column.name] = value.strftime(date_format) values[column.name] = value.strftime(date_format)
else: else:
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!