diff --git a/lib/GADS.pm b/lib/GADS.pm index 64238c880..5bbe97b8b 100644 --- a/lib/GADS.pm +++ b/lib/GADS.pm @@ -3499,8 +3499,8 @@ prefix '/:layout_name' => sub { my $params = params; my $columns = ref param('column') ? param('column') : [ param('column') // () ]; # Ensure array $view->columns($columns); - $view->global(param('global') ? 1 : 0); - $view->is_admin(param('is_admin') ? 1 : 0); + $view->global(param('viewType') == 2 ? 1 : 0); + $view->is_admin(param('viewType') == 3 ? 1 : 0); $view->group_id(param 'group_id'); $view->name (param 'name'); $view->filter->as_json(param 'filter'); diff --git a/src/frontend/components/form-group/radio-group/radio-reveal/index.js b/src/frontend/components/form-group/radio-group/radio-reveal/index.js new file mode 100644 index 000000000..717a97c90 --- /dev/null +++ b/src/frontend/components/form-group/radio-group/radio-reveal/index.js @@ -0,0 +1,4 @@ +import { initializeComponent } from 'component' +import RadioRevealComponent from './lib/component' + +export default (scope) => initializeComponent(scope, '.radio-reveal', RadioRevealComponent) diff --git a/src/frontend/components/form-group/radio-group/radio-reveal/lib/component.ts b/src/frontend/components/form-group/radio-group/radio-reveal/lib/component.ts new file mode 100644 index 000000000..dcb34fa01 --- /dev/null +++ b/src/frontend/components/form-group/radio-group/radio-reveal/lib/component.ts @@ -0,0 +1,39 @@ +import { Component } from "component"; +import { hideElement, showElement } from "util/common"; + +export default class RadioRevealComponent extends Component { + private el: JQuery; + + constructor(element: HTMLElement) { + super(element); + this.el = $(this.element); + this.init(); + } + + private init() { + const target = this.el.data("radio-target"); + const value = this.el.data("radio-value"); + + if (!target || !value) { + console.error("RadioRevealComponent: Missing data-radio-target or data-radio-value attribute."); + return; + } + + const radioButtons = $(`input[name="${target}"]`); + + radioButtons.on("change", () => { + this.toggleVisibility(radioButtons, value); + }); + + // Initial check + this.toggleVisibility(radioButtons, value); + } + + toggleVisibility(radioButtons: JQuery, value: string) { + if (radioButtons.filter(":checked").val() == value) { + showElement(this.el); + } else { + hideElement(this.el); + } + } +} diff --git a/src/frontend/js/site.js b/src/frontend/js/site.js index 7780c57f8..3584b2f66 100644 --- a/src/frontend/js/site.js +++ b/src/frontend/js/site.js @@ -37,6 +37,7 @@ import TextareaComponent from 'components/form-group/textarea'; import TimelineComponent from 'components/timeline'; import TippyComponent from 'components/timeline/tippy'; import TreeComponent from 'components/form-group/tree'; +import RadioRevealComponent from 'components/form-group/radio-group/radio-reveal'; import UserModalComponent from 'components/modal/modals/user'; import ValueLookupComponent from 'components/form-group/value-lookup'; import MarkdownComponent from "components/markdown"; @@ -69,6 +70,7 @@ registerComponent(MultipleSelectComponent); registerComponent(OrderableSortableComponent); registerComponent(PopoverComponent); registerComponent(RadioGroupComponent); +registerComponent(RadioRevealComponent); registerComponent(RecordPopupComponent); registerComponent(SelectComponent); registerComponent(SelectWidgetComponent); diff --git a/views/view.tt b/views/view.tt index e16ef02a1..76f883fb2 100644 --- a/views/view.tt +++ b/views/view.tt @@ -49,28 +49,21 @@
-
- [% - INCLUDE fields/sub/checkbox.tt - id = "global" - name = "global" - label = "Shared view" - value = 1 - checked = view_edit.global ? 1 : 0 - input_class = "mb-lg-0 checkbox--reveal"; - %] -
- -
- [% - INCLUDE fields/sub/checkbox.tt - id = "is_admin" - name = "is_admin" - label = "Administration view (only visible to table administrators)" - value = 1 - checked = view_edit.is_admin ? 1 : 0 - input_class = "mb-lg-0"; - %] +
+
+
+ + +
+
+ + +
+
+ + +
+
@@ -79,7 +72,7 @@
-
+
[% group_id_items = layout.user_can("layout") ? [{id="", name=""}] : [];