MZL-SUBJECTS (LMU Fächerkombinator Module )
src/app/shared/components/mzl-subjects/templates
Demo Section
Each variation will be presented in the following section.
Readme
mzlSubjects (component
)
Description
This module generate the Fächerkombinator within Vue.js. The JSON-File with Information from the Database is loaded with a external URL from FS-DEV-SErver. You need to use a Browser with no Cros-Origin-Defense. How to start a browser without it see Wiki ‘Veams Komponente mit externen JSON-Daten’. The HTML-Code with the Komponent-specific CSS-Klass are located in the Vue.js-App in the same Komponent Folder
Requirements
Veams#5.0.0
Installation
Installation with Veams from local machine
veams install bp absolute/filepath/to/mzl-subjects
Fields
mzl-subjects.hbs
Settings
Parameter | Type | Default | Description |
---|---|---|---|
settings.mzlSubjectsClasses | String | '' |
Modifier classes for component |
settings.mzlSubjectsContextClass | String | 'default' |
Context class of component |
settings.mzlSubjectsJsOptions | Object | null |
JavaScript options object which gets stringified |
Content
Parameter | Type | Description |
---|---|---|
content.mzlSubjectsField | String | Please add a description! |
SASS
Variables
There are multiple variables which you can change:
Variable | Value | Description |
---|---|---|
$mzl-subjects-my-custom-var | 0px |
Please add a description! |
Modifier Classes
There are modifier classes you can add to c-mzl-subjects
:
Modifier | Description |
---|---|
is-modifier | Please add a description! |
Templates
mzl-subjects.hbs
<script type="text/javascript">
var facherKombinatorJsonUrl = '/api/facher-kombinator';
{{#if (prod)}}
facherKombinatorJsonUrl = '/assets/mocks/facher-kombinator/data.json';
{{/if}}
function facherKombinatorLoad() {
window.LmuFacherkombinator.init({
container : "#mzl-subjects",
jsonUrl : facherKombinatorJsonUrl,
text: {
defaultOptionText : "Please select...",
startAgainText: "Start Again",
selectSubjectCombinationText: "Selected Subject Combination",
teachingSubjectText: "Teaching Subject",
didaktikSubjectText: "Didactic Subject",
}
});
}
window.addEventListener("load", facherKombinatorLoad);
</script>
<!-- App start -->
<div id="mzl-subjects"></div>
<!-- App end -->
<!--
<div id="mzl-subjects" class="c-mzl-subjects--default" data-css="c-mzl-subjects">
{{#if content.headline}}
<h2 class="mzl-subjects__headline">{{content.headline}}</h2>
{{/if}}
<form action="" method="" data-css="c-form" onsubmit="return false;" class="mzl-subjects__form">
<fieldset class="mzl-subjects__fieldset">
<div class="mzl-subjects__select form__select-free ">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">Unterrichtsfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select1" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Psychologie mit schulpsychologischem Schwerpunkt</option>
<option>Sport</option>
<option>Biologie</option>
<option>Deutsch</option>
<option>Chemie</option>
</select>
</div>
</div>
<div class="mzl-subjects__select form__select-free">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">1. Didaktikfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select2" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Deutsch</option>
</select>
</div>
</div>
<div class="mzl-subjects__select form__select-free">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">2. Didaktikfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select3" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Geographie</option>
<option>Englisch</option>
</select>
</div>
</div>
<div class="mzl-subjects__select form__select-free">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">3. Didaktikfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select4" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Geschichte</option>
<option>Chemie</option>
</select>
</div>
</div>
<div class="c-definition-list--default mzl-subjects__definition-list" data-css="c-definition-list">
<h3 class="definition-list__headline">Gewählte Fächerkombination</h3>
<dl class="definition-list__list"><dt class="definition-list__title">Unterrichtsfach</dt> <dd class="definition-list__description">Sport</dd> <dt class="definition-list__title">1. Didaktikfach</dt> <dd class="definition-list__description">Deutsch</dd> <dt class="definition-list__title">2. Didaktikfach</dt> <dd class="definition-list__description">Geographie</dd> <dt class="definition-list__title">3. Didaktikfach</dt> <dd class="definition-list__description">Geschichte</dd></dl>
</div>
<button class="form__submit-ci"><span class="form__submit-ci-text">Start again</span></button>
</fieldset>
</form>
</div>
-->
Data File
mzl-subjects.hjson
{
"variations": {
"default": {
"docs": {
"variationName": "Default"
},
"settings": {
"mzlSubjectsContextClass": "default",
"mzlSubjectsClasses": "",
"mzlSubjectsJsOptions": {}
},
"content": {
"headline":"Headline für den Fächerkombinator"
}
}
}
}
Styles
mzl-subjects.scss
/* ===================================================
component: mzl-subjects
=================================================== */
/* ---------------------------------------------------
Global Styles
--------------------------------------------------- */
[data-css="c-mzl-subjects"] {
.mzl-subjects__headline {
@include headline-h2-styles();
}
.mzl-subjects__select {
padding-top: 16px;
&:first-child {padding-top: 0px;}
}
.mzl-subjects__definition-list {
width: 100%;
margin-left: 0;
margin-bottom: 16px;
margin-top: 0px;
}
}
/* ---------------------------------------------------
Context: Default
--------------------------------------------------- */
.c-mzl-subjects--default {
margin-bottom: 60px;
@include bp($bp-mobile-p) {
margin-bottom: 80px;
}
@include bp($bp-tablet-p) {
margin-bottom: 100px;
}
@include bp(1920px) {
margin-bottom: 120px;
}
}
.c-mzl-subjects--rte {
@include rte-dimensions();
margin-bottom: 15px;
@include bp($bp-desktop-m) {
margin-bottom: 10px;
}
}
Scripts
mzl-subjects.js
/**
* Description of MzlSubjects.
* Class properties and decorators are supported.
*
* @module MzlSubjects
* @version v1.0.0
*
* @author your_name
*/
// Imports
import Component from '@veams/component';
class MzlSubjects extends Component {
/**
* Class Properties
*/
/**
* Constructor for our class
*
* @see module.js
*
* @param {Object} obj - Object which is passed to our class
* @param {Object} obj.el - element which will be saved in this.el
* @param {Object} obj.options - options which will be passed in as JSON object
*/
constructor(obj) {
let options = {
selectors: {},
classes: {}
};
super(obj, options);
}
didMount() {
console.log('Component MzlSubjects mounted!');
}
/**
* Render class
*/
render() {
return this;
}
}
export default MzlSubjects;
HTML Output
Default
<script type="text/javascript">
var facherKombinatorJsonUrl = '/api/facher-kombinator';
facherKombinatorJsonUrl = '/assets/mocks/facher-kombinator/data.json';
function facherKombinatorLoad() {
window.LmuFacherkombinator.init({
container: "#mzl-subjects",
jsonUrl: facherKombinatorJsonUrl,
text: {
defaultOptionText: "Please select...",
startAgainText: "Start Again",
selectSubjectCombinationText: "Selected Subject Combination",
teachingSubjectText: "Teaching Subject",
didaktikSubjectText: "Didactic Subject",
}
});
}
window.addEventListener("load", facherKombinatorLoad);
</script>
<!-- App start -->
<div id="mzl-subjects"></div>
<!-- App end -->
<!--
<div id="mzl-subjects" class="c-mzl-subjects--default" data-css="c-mzl-subjects">
<h2 class="mzl-subjects__headline">Headline für den Fächerkombinator</h2>
<form action="" method="" data-css="c-form" onsubmit="return false;" class="mzl-subjects__form">
<fieldset class="mzl-subjects__fieldset">
<div class="mzl-subjects__select form__select-free ">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">Unterrichtsfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select1" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Psychologie mit schulpsychologischem Schwerpunkt</option>
<option>Sport</option>
<option>Biologie</option>
<option>Deutsch</option>
<option>Chemie</option>
</select>
</div>
</div>
<div class="mzl-subjects__select form__select-free">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">1. Didaktikfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select2" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Deutsch</option>
</select>
</div>
</div>
<div class="mzl-subjects__select form__select-free">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">2. Didaktikfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select3" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Geographie</option>
<option>Englisch</option>
</select>
</div>
</div>
<div class="mzl-subjects__select form__select-free">
<div class="form__label-wrapper">
<label for="" class="form__select-free-label">3. Didaktikfach</label>
</div>
<div class="form__select-free-wrapper">
<select id="mzl_select4" class="form__select-free-el">
<option selected="selected" value="">Bitte wählen Sie...</option>
<option>Geschichte</option>
<option>Chemie</option>
</select>
</div>
</div>
<div class="c-definition-list--default mzl-subjects__definition-list" data-css="c-definition-list">
<h3 class="definition-list__headline">Gewählte Fächerkombination</h3>
<dl class="definition-list__list"><dt class="definition-list__title">Unterrichtsfach</dt> <dd class="definition-list__description">Sport</dd> <dt class="definition-list__title">1. Didaktikfach</dt> <dd class="definition-list__description">Deutsch</dd> <dt class="definition-list__title">2. Didaktikfach</dt> <dd class="definition-list__description">Geographie</dd> <dt class="definition-list__title">3. Didaktikfach</dt> <dd class="definition-list__description">Geschichte</dd></dl>
</div>
<button class="form__submit-ci"><span class="form__submit-ci-text">Start again</span></button>
</fieldset>
</form>
</div>
-->