Small feature and fixes
Added field_widgets to asyncron.base.admin models fixed language config not working
This commit is contained in:
parent
07fe648b9c
commit
9d7e1b080d
|
|
@ -12,6 +12,11 @@ class BaseModelAdmin( admin.ModelAdmin ):
|
|||
formfield = super().formfield_for_dbfield(db_field, **kwargs)
|
||||
if isinstance( formfield, JSONField ):
|
||||
formfield.widget = Codearea( language = "json" )
|
||||
|
||||
custom_widget = getattr(self, "field_widgets", {}).get(db_field.name, None)
|
||||
if custom_widget:
|
||||
formfield.widget = custom_widget()
|
||||
|
||||
return formfield
|
||||
|
||||
def explain_gather_results( self, request, results, fails_to_show = 2 ):
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<div id="codearea_{{ target }}">
|
||||
{{ textarea }}
|
||||
<pre>{{ value }}</pre>
|
||||
<code class="language-{{ language }}">{{ value }}</code>
|
||||
</div>
|
||||
<style media="screen">
|
||||
#codearea_{{ target }} {
|
||||
|
|
@ -22,10 +22,10 @@
|
|||
color: transparent;
|
||||
text-shadow: none;
|
||||
}
|
||||
#codearea_{{ target }} > pre {
|
||||
#codearea_{{ target }} > code {
|
||||
position: absolute; pointer-events: none;
|
||||
left: 0; right: 0; top: 0; bottom: 0;
|
||||
white-space: wrap;
|
||||
white-space: pre-wrap;
|
||||
opacity: 1;
|
||||
background: transparent;
|
||||
}
|
||||
|
|
@ -38,19 +38,17 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
{{ hljs_config | json_script:"hlsj-config" }}
|
||||
<script>
|
||||
(function(){
|
||||
const codearea = document.getElementById("codearea_{{ target }}");
|
||||
const textarea = codearea.querySelector('textarea');
|
||||
const pre = codearea.querySelector('pre');
|
||||
const config = JSON.parse(document.getElementById('hlsj-config').textContent);
|
||||
const code = codearea.querySelector('code');
|
||||
|
||||
textarea.addEventListener('input', (e) => {
|
||||
pre.innerText = e.target.value;
|
||||
delete pre.dataset.highlighted;
|
||||
hljs.highlightElement( pre, config )
|
||||
code.innerHTML = textarea.value;
|
||||
delete code.dataset.highlighted;
|
||||
hljs.highlightElement( code )
|
||||
});
|
||||
hljs.highlightElement( pre, config )
|
||||
hljs.highlightElement( code )
|
||||
})()
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -10,13 +10,9 @@ class Codearea( Textarea ):
|
|||
super().__init__( *args, **kwargs )
|
||||
|
||||
def render( self, name, value, attrs = None, renderer = None ):
|
||||
print( self )
|
||||
print(f"RENDERING: {name=} {value=} {attrs=} {renderer=}")
|
||||
return loader.get_template("asyncron/codearea-widget.html").render({
|
||||
"textarea": super().render( name, value, attrs, renderer ),
|
||||
"value": value,
|
||||
"target": name,
|
||||
"hljs_config": {
|
||||
"language": self.language
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user