diff --git a/index.html b/index.html index 9ccfb3295366a3e9e59283c2da145e5cec44b379..23033cf01e07eb97326d5e11bb9538436bd23e10 100644 --- a/index.html +++ b/index.html @@ -49,6 +49,7 @@ <script type="text/javascript" src="js/authoring/controllers/tabs/contextTabController.js"></script> <script type="text/javascript" src="js/authoring/controllers/tabs/generalTabController.js"></script> <script type="text/javascript" src="js/authoring/controllers/tabs/locationInfoMapViewController.js"></script> + <script type="text/javascript" src="js/authoring/controllers/tabs/metadataTabController.js"></script> <script type="text/javascript" src="js/authoring/controllers/tabs/propertiesTabController.js"></script> <!-- modal window controllers --> @@ -193,6 +194,7 @@ <ul> <li><a id="firstTab" href="#tab1" title="Eigenschaften" class="fui-gear"></a> </li> <li><a href="#tab2" title="Kontextinformationen">K</a></li> + <li><a href="#tab3" title="Metadaten">M</a></li> </ul> </div> @@ -260,27 +262,16 @@ <select id="selectPossibleValues" class="form-control select select-primary select-block mbl" style="min-width: 235px; display: none"> </select> </div> - <div id="divContextParameters" style="display: none"> + <div id="divContextParameter"> </div> - - <!-- This workaround is needed since select2 only supports elements existent at DOM load. --> - <div id="divContextParameterTemplates" style="display: none"> - <div id="divParameterSelectionTemplate"> - <label class="label-tabs label" for="selectParameterTemplate">Parameter</label> - <select id="selectParameterTemplate" class="form-control select select-primary select-block mbl" style="min-width: 235px;"></select> - </div> - <div id="divParameterInputTemplate"> - <label class="label-tabs label" for="inputTemplate">Parameter</label> - <input id="inputTemplate" class="form-control"> - </div> - <div id="divMaps"> + <div id="divMapsTemplate" style="display:none"> + <div id="divMaps" style="display:block"> <div class="maps-row"> <input id="pac-input" class="controls" type="text" placeholder="Suchen"> <div id="maps" style="height: 250px;"></div> </div> </div> </div> - <div> <div id="btnConfirmContextInfo" class="btn btn-info"> <b class="fui-check-circle"> </b> @@ -290,6 +281,30 @@ </div> </form> </div> + <div id="tab3" class="tabContents"> + <form> + <div> + <div style="padding-bottom: 20px"> + <label class="label-tabs label">Gewählt</label> + <select id="selectMultiMetaData" class="form-control multiselect multiselect-info" multiple="multiple" style="min-width: 235px"> + </select> + </div> + <div> + <label class="label-tabs label">Auswahl Metadaten</label> + <select id="selectMetaData" class="form-control select select-primary select-block mbl" style="min-width: 235px;"> + <option disabled selected>METADATEN</option> + <!--<option value="0">Bild</option> + <option value="1">Film</option> + <option value="2">Text</option> + <option value="3">Navigation</option> + <option value="4">Test</option> + <option value="5">Audio</option>--> + </select> + </div> + </div> + + </form> + </div> </div> <!-- content of label relations --> diff --git a/js/authoring/controllers/modalWindows/newScenarioModalWindowController.js b/js/authoring/controllers/modalWindows/newScenarioModalWindowController.js index 7072dbfdf4601a5d4b301c8e1915760b95138c9f..f18d6f2c6279dc8780735cc6ba210ed6fce5c26b 100644 --- a/js/authoring/controllers/modalWindows/newScenarioModalWindowController.js +++ b/js/authoring/controllers/modalWindows/newScenarioModalWindowController.js @@ -5,13 +5,9 @@ var global_ScenarioLiNumber = 0; $(function() { - // make sure that after pressing enter in modal window "Neues Szenario erstellen" + // make sure that after pressing enter in input or modal window "Neues Szenario erstellen" // the same steps were gone like clicking on the create button - $("#modal-new-szenario").on("keyup", function(e) { return checkScenarioName(e); }); - - // make sure that after pressing enter in input "Neues Szenario erstellen" - // the same steps were gone like clicking on the create button - $("#sname").on("keypress", function(e) { return checkScenarioName(e); }); + $("#modal-new-szenario, #sname").on("keyup", checkScenarioName ); // set the trigger for the new scenario modal window $("#showNewScenario").on("click", showNewScenario); @@ -38,6 +34,10 @@ function checkScenarioName(e) { function showNewScenario() { var newScenarioElement = $("#modal-new-szenario"); + newScenarioElement.submit(function(e){ + e.preventDefault(); + }); + // set focus to scenario name input field newScenarioElement.on("shown.bs.modal", function () { $("#sname").focus(); diff --git a/js/authoring/controllers/tabs/contextTabController.js b/js/authoring/controllers/tabs/contextTabController.js index 388170e5571ad0994dd14d1e201cb9938f5a5e22..abe4d30c4fd912e2631c0c4f9a127a4c811c23e1 100644 --- a/js/authoring/controllers/tabs/contextTabController.js +++ b/js/authoring/controllers/tabs/contextTabController.js @@ -262,7 +262,6 @@ function showDetailContextInfo() { cleanSection("#selectContextInfos"); cleanSection("#selectOperator"); cleanSection("#selectPossibleValues"); - cleanSection("#selectParameterTemplate"); // clean input fields $("#formContextInformation")[0].reset(); @@ -272,7 +271,7 @@ function showDetailContextInfo() { $("#inputContextValue").css("display", "none"); $("#selectPossibleValues").css("display", "none"); $("#s2id_selectPossibleValues").css("display", "none"); - $("#divContextParameters").css("display", "none"); + $("#divContextParameter").css("display", "none"); // fill selection "Kontextinformation" fillSelectionContextInformation(); @@ -411,8 +410,13 @@ function fillParameterSelection(cp) { var coordIdentRegex = /CP_.*(LONGITUDE|LATITUDE)/; - // remove all parameter fields from previous editing - cleanSection("#divContextParameters"); + var id, div, child; + var divContextParams = $("#divContextParameter"); + var divMaps = $("#divMaps"); + + // remove all parameter fields from previous editing (except maps div) + $("#divMapsTemplate").append(divMaps); + cleanSection("#divContextParameter"); // iterate through all parameters for (var i in cp) { @@ -423,71 +427,72 @@ function fillParameterSelection(cp) { var type = cp[i].type; var possibleValues = cp[i].values; - // prepare DOM elements - var id = "parameter"+i; - var divContainer = $("#divContextParameters"); switch (type) { // type enum needs a drop down selection for only possible values case "ENUM": + id = "selectParameter" + i; + div = createNamedDOMElement("div", "divParameterSelection"+i) + .css("display", "block") + .append(createParameterLabelDOM(id, parameterTranslation)); + child = createNamedDOMElement("select", id) + .addClass("form-control select select-primary select-block mbl") + .attr("style", "min-width: 235px;"); - // This does not work properly since select2 does not support dynamically added elements yet. - // See initContainer() in flat-ui.js --> only gets called on DOM load; does things like addClass "select2-offscreen" - // For details see: https://github.com/select2/select2/issues/2830 - - var div = $("#divParameterSelectionTemplate").clone(); - div.attr("id", "divParameter"+i); - div.css("display", "block"); - divContainer.append(div); - - var select = $("#divParameter"+i+" select"); - select.attr("id",id); // append all possible values for (var j in possibleValues) { - select.append(new Option(translate_parameterValue(possibleValues[j]), j.toString())); + child.append( + $("<option>") + .attr("value", j.toString()) + .html(translate_parameterValue(possibleValues[j])) + ); } + div.append(child); + divContextParams.append(div); + $("#" + id).select2(); + $("#" + id).select2("data", {id:"\r",text:"\r"}); break; // type float or integer each need an input field and a specific label case "INTEGER": case "FLOAT": - var div = $("#divParameterInputTemplate").clone(); - div - .attr("id", "divParameter"+i) + id = "inputContextParameter"+i; + div = createNamedDOMElement("div", "divParameterInput"+i) .addClass("divParameterInputs") - .css("display", "table-cell"); - - var input = $("#inputParameterTemplate").clone() - .attr("id", id) + .css("display", "table-cell") + .append(createParameterLabelDOM(id, parameterTranslation)); + child = createNamedDOMElement("input", id) + .addClass("form-control") .attr("type", "number") .attr("onkeyup", "getParameterInput(this,"+i+")"); - div.append(input); - setMinMaxDefault(possibleValues[0], input); - $("#divContextParameters").append(div); + setMinMaxDefault(possibleValues[0], child); + div.append(child); + divContextParams.append(div); // display google maps if coordinates are expected input if (coordIdentRegex.test(parameterOriginal)) { - $("#divMaps").css("display", "block"); - $("#divContextParameters").append($("#divMaps")); + divContextParams.append(divMaps); resizeMap(); } break; // type string needs an input field and a specific label case "STRING": - div.css("display", "block"); - div.append($("#inputParameterTemplate").clone() - .attr("id", id) - .attr("type", "text")); - $("#divContextParameters").append(div); + id = "inputParameterString"+i; + div = createNamedDOMElement("div", "divParameterString"+i) + .css("display", "block") + .append(createParameterLabelDOM(id, parameterTranslation)); + child = createNamedDOMElement("input", id) + .addClass("form-control") + .attr("type", "text"); + div.append(child); + divContextParams.append(div); break; } - // update parameter label - $("#divParameter"+i+" label").attr("for", id).html(parameterTranslation); // show context parameter section - $("#divContextParameters").css("display", "block"); + divContextParams.css("display", "block"); } } @@ -500,7 +505,7 @@ function fillParameterSelection(cp) { * */ function setMinMaxDefault(values, inputField) { - if (values == undefined) + if (typeof values == undefined) return; var min = (values.min != undefined) ? values.min : false; @@ -782,4 +787,20 @@ function getFirstMatchingClassIndex(contextItem, contextClasses) { break; } return classIndex; +} + + +/**************************tiny little helper******************************/ +// create any new DOM element with an ID +function createNamedDOMElement(elem, id) { + return $("<"+elem+">") + .attr("id", id); +} + +// create a new label (which is also a DOM element) +function createParameterLabelDOM(elem, label) { + return $("<label>") + .attr("class", "label-tabs label") + .attr("for", elem) + .html(label); } \ No newline at end of file