Preload data with nested and multiple values: Difference between revisions

From Visual Data Wiki
Jump to navigation Jump to search
No edit summary
Tag: 2017 source edit
(VisualData update)
 
(24 intermediate revisions by the same user not shown)
Line 1: Line 1:
This example shows an concept, how to handle the VisualData form parameter 'preload-data' with nested and multiple values. This makes it possible to generate dynamical forms.
== Syntax ==
This example shows a concept, how to handle the VisualData form parameter 'preload-data' with nested and multiple values. This makes it possible to generate dynamical forms, e.g. to collect data differentiated by district, gender and age categories:


<syntaxhighlight lang="wikitext">
<syntaxhighlight lang="wikitext">
{{#visualdataform: Dataset
...
|title = {{int:webmo-add-dataset}}
|action = create
|return-page = {{FULLPAGENAME}}
|view = popup
|popup-size = larger
|css-class = form-dataset
|pagename-formula = <unique title>
|edit-freetext = false
|edit-categories = false
|edit-content-model = false
|edit-target-slot = false
|target-slot = main
|default-content-model = json
|preload-data?belongs to = {{PAGEID}}
|preload-data?classes/$/class name = District 1@@@@District 2@@@@District 3
|preload-data?classes/$/class name = District 1@@@@District 2@@@@District 3
|preload-data?classes/$/sub-classes/$/sub-class name = female@@@@male@@@@diverse
|preload-data?classes/$/sub-classes/$/sub-class name = female@@@@male@@@@diverse
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = 0 - 14@@@@15 - 29@@@@30 - 44@@@@45 - 59@@@@60 +
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = 0 - 14@@@@15 - 29@@@@30 - 44@@@@45 - 59@@@@60 +
}}
...
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang="wikitext">
Notice the placeholder <code>$</code> and the value separator <code>@@@@</code>. The value separator can be set in VisualData queries, see below.
 
{{#visualdataform: Dataset
{{#visualdataform: Dataset
|title = {{int:webmo-add-dataset}}
|title = {{int:webmo-add-dataset}}
Line 39: Line 27:
|default-content-model = json
|default-content-model = json
|preload-data?belongs to = {{PAGEID}}
|preload-data?belongs to = {{PAGEID}}
|preload-data?classes/$/class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/class name = District 1@@@@District 2@@@@District 3
|preload-data?classes/$/sub-classes/$/sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-class name = female@@@@male@@@@diverse
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-sub-classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = 0 - 14@@@@15 - 29@@@@30 - 44@@@@45 - 59@@@@60 +
}}
}}
</syntaxhighlight>


See corresponding form [[VisualDataSchema:Data_classes|Data Classes]]


{{{title}}} {{{articleid}}}
(For styling see [[MediaWiki:Common.css]])


<div><small>{{#advancedlink:{{{pagetitle}}}?slot=jsondata|JSON data}}</small></div>
== Workflow example ==


<div class="webmo-float-button webmo-float-button-edit">
=== Step 1: Define one or more statistical class sets ===
{{#visualdataform: Indicator key data, Indicator classes
|title = {{int:webmo-edit-indicator}}
|action = edit
|edit-page = {{{pagetitle}}}
|return-page = {{FULLPAGENAME}}
|view = popup
|popup-size = larger
|css-class =
|edit-freetext = false
|edit-categories = false
|edit-content-model = false
|edit-target-slot = false
|layout-align = top
|popup-help = true
|submit-button-text =
|layout =
|submit-button-text =
|validate-button-text =
|selected-schema = Indicator key data
}}</div>
 
{{#if:{{#visualdataquery:[[belongs to::{{PAGEID}}]]|?belongs to|schema = Dataset|format = raw}}||
<div class="webmo-float-button webmo-float-button-edit">
{{#visualdataform: Indicator key data, Indicator classes
|title = {{int:webmo-select-data-classes}}
|action = edit
|edit-page = {{{pagetitle}}}
|return-page = {{FULLPAGENAME}}
|view = popup
|popup-size = larger
|css-class =  
|edit-freetext = false
|edit-categories = false
|edit-content-model = false
|edit-target-slot = false
|layout-align = top
|popup-help = true
|submit-button-text =
|layout =
|submit-button-text =
|validate-button-text =
|selected-schema = Indicator classes
}}</div>
<div class="webmo-add-button webmo-add-classes">
{{#visualdataform: Data classes
{{#visualdataform: Data classes
|title = {{int:webmo-create-data-classes}}
|title = Create class set
|action = create
|action = create
|edit-page =
|return-page = {{FULLPAGENAME}}
|return-page = {{FULLPAGENAME}}
|view = popup
|view = popup
Line 111: Line 54:
|default-categories = classes
|default-categories = classes
|default-content-model = json
|default-content-model = json
|layout-align = top
|preload-data?belongs to = {{PAGEID}}
|popup-help = true
|submit-button-text =
|layout =
|submit-button-text =
|validate-button-text =
}}
}}
[{{canonicalurl:Help:Available_data_classes}} See Available data classes]</div>
[{{canonicalurl:Help:Available_data_classes}} See available class sets]
}}<!-- end if -->


<div class="card webmo-dataset-table">
{{#invoke: Indicator_datasets_table
|generateTable
|dateFormat = {{#time: xg }}
|articleids = {{#visualdataquery:[[belongs to::{{PAGEID}}]]|?articleid|schema = Dataset|format = template|template = Webmo comma separartor}}
|entity = {{#visualdataprint:[[articleid::{{PAGEID}}]]|?entity|schema = Indicator classes|format = raw}}
}}
</div>


<!-- {{#visualdataquery:[[belongs to::{{PAGEID}}]]
=== Step 2: Attach class sets to this page ===
|?articleid
|schema = Dataset
}}
-->
<!--
{{#visualdataquery:[[belongs to::{{PAGEID}}]]
|?date
|?dataset type
|?classes/class name
|?classes/sub-classes/sub-class name
|?classes/sub-classes/sub-sub-classes/sub-sub-class name
|?classes/sub-classes/sub-sub-classes/value
|schema = Dataset
|format = template
|template = Webmo datasets table
|template?classes = Webmo datasets table classes
|template?classes/sub-classes = Webmo datasets table sub-classes
|template?classes/sub-classes/sub-sub-classes = Webmo datasets table sub-sub-classes
}}
-->


<!--<div class="webmo-add-button webmo-add-dataset">
{{#visualdataform: Page classes
{{#visualdataform: Dataset 1
|title = Add class sets to page
|title = {{int:webmo-add-dataset}} 1
|action = edit
|action = create
|edit-page = {{FULLPAGENAME}}
|edit-page =  
|return-page = {{FULLPAGENAME}}
|return-page = {{FULLPAGENAME}}
|view = popup
|view = popup
|popup-size = full
|popup-size = larger
|css-class = form-dataset
|css-class =  
|pagename-formula = <unique title>
|edit-freetext = false
|edit-freetext = false
|edit-categories = false
|edit-categories = false
|edit-content-model = false
|edit-content-model = false
|edit-target-slot = false
|edit-target-slot = false
|target-slot = main
|preload-data?belongs to = {{PAGEID}}
|preload-data?classes/$/class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|default-categories =
|default-content-model = json
|layout-align = top
|layout-align = top
|popup-help = true
|submit-button-text =
|layout =
|submit-button-text =
|validate-button-text =
}}
}}
</div>


<div class="webmo-add-button webmo-add-dataset">
{{#visualdataform: Dataset 2
|title = {{int:webmo-add-dataset}} 2
|action = create
|edit-page =
|return-page = {{FULLPAGENAME}}
|view = popup
|popup-size = full
|css-class = form-dataset
|pagename-formula = <unique title>
|edit-freetext = false
|edit-categories = false
|edit-content-model = false
|edit-target-slot = false
|target-slot = main
|preload-data?belongs to = {{PAGEID}}
|preload-data?classes/$/class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|default-categories =
|default-content-model = json
|layout-align = top
|popup-help = true
|submit-button-text =
|layout =
|submit-button-text =
|validate-button-text =
}}
</div>-->


<div class="webmo-add-button webmo-add-dataset">
=== Step 3: Add datasets to this page ===
 
<syntaxhighlight lang="wikitext">
...
|preload-data?classes/$/class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-sub-classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
...
</syntaxhighlight>
 
{{#visualdataform: Dataset
{{#visualdataform: Dataset
|title = {{int:webmo-add-dataset}}
|title = {{int:webmo-add-dataset}}
|action = create
|action = create
|edit-page =
|return-page = {{FULLPAGENAME}}
|return-page = {{FULLPAGENAME}}
|view = popup
|view = popup
|popup-size = full
|popup-size = larger
|css-class = form-dataset
|css-class = form-dataset
|pagename-formula = <unique title>
|pagename-formula = <unique title>
Line 224: Line 100:
|edit-target-slot = false
|edit-target-slot = false
|target-slot = main
|target-slot = main
|default-content-model = json
|preload-data?belongs to = {{PAGEID}}
|preload-data?belongs to = {{PAGEID}}
|preload-data?classes/$/class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-sub-classes|schema = Indicator classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-sub-classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|default-categories =
|default-content-model = json
|layout-align = top
|popup-help = true
|submit-button-text =
|layout =
|submit-button-text =
|validate-button-text =
}}
}}
</div>
jsondata
Line 1: Line 1:
{}
{
    "schemas": {
        "Page classes": {
            "classes": "594",
            "add sub-classes": "true",
            "sub-classes": "596",
            "add sub-sub-classes": "true",
            "sub-sub-classes": "535"
        }
    }
}

Latest revision as of 06:30, 16 May 2024

Syntax[edit | edit source]

This example shows a concept, how to handle the VisualData form parameter 'preload-data' with nested and multiple values. This makes it possible to generate dynamical forms, e.g. to collect data differentiated by district, gender and age categories:

...
|preload-data?classes/$/class name = District 1@@@@District 2@@@@District 3
|preload-data?classes/$/sub-classes/$/sub-class name = female@@@@male@@@@diverse
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = 0 - 14@@@@15 - 29@@@@30 - 44@@@@45 - 59@@@@60 +
...

Notice the placeholder $ and the value separator @@@@. The value separator can be set in VisualData queries, see below.

form is loading...

See corresponding form Data Classes

(For styling see MediaWiki:Common.css)

Workflow example[edit | edit source]

Step 1: Define one or more statistical class sets[edit | edit source]

form is loading...

See available class sets


Step 2: Attach class sets to this page[edit | edit source]

form is loading...


Step 3: Add datasets to this page[edit | edit source]

...
|preload-data?classes/$/class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
|preload-data?classes/$/sub-classes/$/sub-sub-classes/$/sub-sub-class name = {{#visualdataprint:{{#visualdataprint:{{PAGEID}}|?sub-sub-classes|schema = Page classes|format = raw}}|?class names|schema = Data classes|format = raw|values-separator = @@@@}}
...
form is loading...