summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorTristan Zur <tzur@ccwn.org>2012-05-18 19:03:16 +0200
committerTristan Zur <tzur@ccwn.org>2012-05-18 19:03:16 +0200
commit0567da9fd246e495345df1bdf8fc947d5fbe695d (patch)
tree8743516939a5256f45143e989ba545f268dce270 /js
parent586e35130d97d2829620e03167797b06d7fe07f2 (diff)
- Speis & Trank (Vereine): Bedienung vereinfacht, Implementierung zur
Erstellung neuer Angebote gesäubert - SiteController: Schreibfehler in URL korrigiert - Html component: Wrapper zum registrieren von JS-Dateien hinzugefügt - main layout: Javascript-String Funktionen JS-Datei registriert
Diffstat (limited to 'js')
-rw-r--r--js/angebotverein.js92
1 files changed, 92 insertions, 0 deletions
diff --git a/js/angebotverein.js b/js/angebotverein.js
new file mode 100644
index 0000000..f10bd09
--- /dev/null
+++ b/js/angebotverein.js
@@ -0,0 +1,92 @@
+function angebotVereinDialog(data) {
+ if (data.status == 'failure') {
+ $('#angebotDialog div.divForForm').html(data.div);
+ // Submit the form via function createAngebot
+ $('#angebotDialog div.divForForm form').submit(createAngebot);
+ } else {
+ $('#angebotDialog div.divForForm').html(data.div);
+ setTimeout("$('#angebotDialog').dialog('close')", 3000);
+ selectAngebot(data);
+ }
+}
+
+function selectAngebot(angebot) {
+ $("#AngebotVerein_angebot_id").val(angebot.value);
+ $("#angebot_name").val(angebot.label);
+ var newSelectObj = clearSelectBox("#AngebotVerein_einheit");
+ $("#emptyEinheitenTxt")[0].style.display = "none";
+
+ var count = 0;
+ var einheiten = angebot.einheiten.split(",");
+ for (i in einheiten) {
+ var einheit = einheiten[i].trim();
+ newSelectObj.options[count++] = new Option(einheit, einheit);
+ }
+ newSelectObj.style.display = "inline";
+ return false;
+}
+
+function changeAngebot(event) {
+ var autocomplete = $(this).data("autocomplete");
+ if (autocomplete.selectedItem) {
+ return;
+ }
+ var userEnteredValue = $(this).val();
+ if (null != userEnteredValue && !userEnteredValue.isEmpty()) { // User has entered at list one non-whitespace character
+ var escapedValue = $.ui.autocomplete.escapeRegex(userEnteredValue);
+ // Matcher to check if the user entered value is in element list
+ var fullMatcher = new RegExp("^" + escapedValue + "$", "i");
+ // Matcher to check if an element exists that starts with the user entered value
+ var partMatcher = new RegExp("^" + escapedValue, "i");
+ var items = autocomplete.widget().children(".ui-menu-item");
+ if (1 == items.length) {
+ items.each(function() {
+ // The current item in iteration
+ var item = $(this).data("item.autocomplete");
+ if (null != item.label && !item.label.isEmpty()) { // Check only if current item has a label
+ if (fullMatcher.test(item.label)) { // The label is identical with the user value
+ autocomplete.selectedItem = item; // Set the selected item to the current item
+ return false; // Return -> item already found
+ } else if (partMatcher.test(item.label)) { // The label starts with the user value
+ var conf = confirm("Meinten Sie \""+item.label+"\"?"); // Ask the user if the item is the one to choose
+ if (conf) { // The item is the one to choose
+ autocomplete.selectedItem = item; // Set the selected item to the current item
+ return false; // Return -> item already found
+ }
+ }
+ }
+ });
+ }
+
+ if (autocomplete.selectedItem) {
+ autocomplete._trigger("select", event, { item: autocomplete.selectedItem });
+ } else {
+ resetEinheiten();
+ // Ask the user to create the non-existing Angebot
+ var conf = confirm("Das eingegebene Angebot existiert noch nicht. Wollen Sie dieses Angebot neu erstellen?");
+ if (conf) { // The Angebot should be created
+ openAngebotDialog(); // initialize and open Angebot dialog
+ }
+ }
+ } else { // User has not entered anything or only entered whitespace characters
+ $("#AngebotVerein_angebot_id").val("");
+ resetEinheiten();
+ }
+}
+
+function resetEinheiten() {
+ clearSelectBox("#AngebotVerein_einheit");
+ $("#emptyEinheitenTxt")[0].style.display = "inline";
+}
+
+function clearSelectBox(id) {
+ var selectObj = $(id)[0];
+ if (null != selectObj) {
+ selectObj.style.display = "none";
+ var selectParentNode = selectObj.parentNode;
+ var newSelectObj = selectObj.cloneNode(false); // Make a shallow copy
+ selectParentNode.replaceChild(newSelectObj, selectObj);
+ return newSelectObj;
+ }
+ return null;
+} \ No newline at end of file