diff --git a/superset/assets/stylesheets/superset.less b/superset/assets/stylesheets/superset.less index bacc18adc0efa..fcdece9fb0133 100644 --- a/superset/assets/stylesheets/superset.less +++ b/superset/assets/stylesheets/superset.less @@ -243,13 +243,88 @@ div.widget .slice_container { /** table on both sides of the gap **/ .panel .table-responsive{ - margin: 0 1%; + padding: 0 1%; } @media screen and (max-width: 767px) { .panel .table-responsive{ width: 98%; } } + +.list-container { + position: relative; +} + +.list-search-container { + position: relative; +} + +.list-search-container .dropdown-toggle { + position: absolute; + top: -43px; + right: 25px; + border: 0; + padding: 0 18px; +} + +.list-search-container .fa-filter { + position: relative; + left: -8px; +} + +.list-search-container .dropdown-menu { + top: -19px; + right: 0; + left: auto; + float: none; +} + +.list-container .pagination-container { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: center; + align-items: center; + padding-bottom: 20px; +} +.list-container .pagination-container .pagination { + margin: 0 15px; +} +.list-container .pagination-container strong { + margin-right: 5px; +} + +.list-container .list-add-action { + position: absolute; + top: -30px; + right: 15px; +} + +.list-container .form-actions-container { + padding: 0 0 20px 10px; + display: inline; +} + +.list-container .filter-action { + margin: 10px 10px 0 10px; + padding-bottom: 15px; +} + +.list-container .filters-container table tr:first-child td { + border-top: none; +} +.list-container .filters-container table tr:last-child td { + border-bottom: 1px solid #b3b3b3; +} + +.list-add-action .btn.btn-sm { + padding: 5px 6px; + font-size: 10px; + line-height: 2px; + border-radius: 50%; + box-shadow: 2px 2px 4px -1px rgba(0, 0, 0, 1); +} + iframe { border: none; width: 100%; diff --git a/superset/templates/appbuilder/general/model/list.html b/superset/templates/appbuilder/general/model/list.html new file mode 100644 index 0000000000000..73710fd2fe578 --- /dev/null +++ b/superset/templates/appbuilder/general/model/list.html @@ -0,0 +1,18 @@ +{% extends "appbuilder/base.html" %} +{% import 'appbuilder/general/lib.html' as lib %} + +{% block content %} + {{ lib.panel_begin(title) }} + +
+ {% block list_search scoped %} + {{ widgets.get('search')()|safe }} + {% endblock %} + + {% block list_list scoped %} + {{ widgets.get('list')()|safe }} + {% endblock %} +
+ + {{ lib.panel_end() }} +{% endblock %} \ No newline at end of file diff --git a/superset/templates/appbuilder/general/widgets/base_list.html b/superset/templates/appbuilder/general/widgets/base_list.html new file mode 100644 index 0000000000000..69ebf14479cfd --- /dev/null +++ b/superset/templates/appbuilder/general/widgets/base_list.html @@ -0,0 +1,47 @@ +{% import 'appbuilder/general/lib.html' as lib %} + +{% set can_add = "can_add" | is_item_visible(modelview_name) %} +{% set can_show = "can_show" | is_item_visible(modelview_name) %} +{% set can_edit = "can_edit" | is_item_visible(modelview_name) %} +{% set can_delete = "can_delete" | is_item_visible(modelview_name) %} +{% set actions = actions | get_actions_on_list(modelview_name) %} + +{% if can_add %} + + {% set path = url_for(modelview_name + '.add') %} + {% set path = path | set_link_filters(filters) %} +  {{ lib.lnk_add(path) }} + +{% endif %} + +{% if count > 0 %} + + {% block begin_content scoped %} + {% endblock %} + + {% block begin_loop_header scoped %} + {% endblock %} + + {% block begin_loop_values %} + {% endblock %} + + {% block end_content scoped %} + {% endblock %} + +
+ {{ lib.render_actions(actions, modelview_name) }} +
+ {{ lib.action_form(actions,modelview_name) }} + +
+ {{ _('Record Count') }}: {{ count }} + {{ lib.render_pagination(page, page_size, count, modelview_name) }} + {{ lib.render_set_page_size(page, page_size, count, modelview_name) }} +
+ + +{% else %} + {{_("No records found")}} +{% endif %} diff --git a/superset/templates/appbuilder/general/widgets/search.html b/superset/templates/appbuilder/general/widgets/search.html new file mode 100644 index 0000000000000..688936ff1f5f9 --- /dev/null +++ b/superset/templates/appbuilder/general/widgets/search.html @@ -0,0 +1,56 @@ +{% import 'appbuilder/general/lib.html' as lib %} + +
+ +
+ +