summaryrefslogtreecommitdiffstats
path: root/modules-available/roomplanner/templates/edit-composed-room.html
diff options
context:
space:
mode:
authorSimon Rettberg2019-07-17 16:52:02 +0200
committerSimon Rettberg2019-07-17 16:52:02 +0200
commit3da096142d44c31e180fb54c02ae9e9ff01b7dda (patch)
treec715a36c2fbbcd8e17bf7f80395fd4677416ec95 /modules-available/roomplanner/templates/edit-composed-room.html
parent[roomplanner] Use .cachedScript() from slx-fixes (diff)
downloadslx-admin-3da096142d44c31e180fb54c02ae9e9ff01b7dda.tar.gz
slx-admin-3da096142d44c31e180fb54c02ae9e9ff01b7dda.tar.xz
slx-admin-3da096142d44c31e180fb54c02ae9e9ff01b7dda.zip
[roomplanner] First prototype of composed room editor
Saving/loading works, but no entry is generated for pvs.ini. Also this approach fails to meaningfully handle rooms with two removable walls where you also want to use both possible combinations of two combined rooms and a single one.
Diffstat (limited to 'modules-available/roomplanner/templates/edit-composed-room.html')
-rw-r--r--modules-available/roomplanner/templates/edit-composed-room.html150
1 files changed, 150 insertions, 0 deletions
diff --git a/modules-available/roomplanner/templates/edit-composed-room.html b/modules-available/roomplanner/templates/edit-composed-room.html
new file mode 100644
index 00000000..64a02d61
--- /dev/null
+++ b/modules-available/roomplanner/templates/edit-composed-room.html
@@ -0,0 +1,150 @@
+<h1>{{lang_editComposedRoom}}</h1>
+<h2>{{location.locationname}}</h2>
+
+<form id="main-form" method="post" action="?do=roomplanner&amp;locationid={{location.locationid}}">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="isleaf" value="0">
+ <input type="hidden" name="action" value="save">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <div class="checkbox">
+ <input id="check-enable" type="checkbox" name="enabled" value="1" {{enabled_checked}}>
+ <label for="check-enable">{{lang_exposeAsComposedRoom}}</label>
+ </div>
+ </div>
+ <div class="panel-body">
+ <div id="main-controls">
+ <h4>{{lang_composedLayout}}</h4>
+ <div class="radio radio-inline">
+ <input id="type-horz" type="radio" name="orientation" value="horizontal" {{horizontal_checked}}>
+ <label for="type-horz">{{lang_horizontal}}</label>
+ </div>
+ <div class="radio radio-inline">
+ <input id="type-vert" type="radio" name="orientation" value="vertical" {{vertical_checked}}>
+ <label for="type-vert">{{lang_vertical}}</label>
+ </div>
+ <br><br>
+ <div id="roomsort">
+ {{#locations}}
+ <div class="box1">
+ <div class="box2">
+ <div class="name text-nowrap small">{{locationname}}</div>
+ <div class="img">
+ <input type="hidden" class="sort-val" name="sort[{{locationid}}]">
+ <img src="api.php?do=roomplanner&amp;show=svg&amp;locationid={{locationid}}&amp;scale=2.2">
+ </div>
+ <div class="clearfix"></div>
+ </div>
+ <div class="clearfix"></div>
+ </div>
+ {{/locations}}
+ </div>
+ <div class="clearfix"></div>
+ <br>
+ <h4>{{lang_controllingRoom}}</h4>
+ <p>{{lang_controlRoomDesc}}</p>
+ {{#locations}}
+ <div>
+ <div class="radio">
+ <input id="control-{{locationid}}" type="radio" name="controlroom"
+ value="{{locationid}}" {{checked}}>
+ <label for="control-{{locationid}}">{{locationname}}</label>
+ </div>
+ </div>
+ {{/locations}}
+ </div>
+ <div class="buttonbar pull-right">
+ <button type="button" class="btn btn-default" id="btn-cancel">
+ {{lang_cancel}}
+ </button>
+ <button id="btn-save" type="submit" class="btn btn-primary">
+ <span class="glyphicon glyphicon-floppy-disk"></span>
+ {{lang_save}}
+ </button>
+ </div>
+ <div class="clearfix"></div>
+ <div class="alert alert-danger" style="display:none" id="error-msg"></div>
+ <div class="alert alert-success" style="display:none" id="success-msg">{{lang_planSuccessfullySaved}}</div>
+ <div class="alert alert-info" style="display:none" id="saving-msg">{{lang_planBeingSaved}}</div>
+ </div>
+ </div>
+</form>
+
+<script>
+ document.addEventListener('DOMContentLoaded', function () {
+
+ var reassignSortValues = function () {
+ var startValue = 1;
+ $('.sort-val').each(function (index, element) {
+ element.value = startValue * 10;
+ startValue++;
+ });
+ };
+
+ var $rs = $('#roomsort');
+ var $mc = $('#main-controls');
+
+ $rs.disableSelection().sortable({
+ opacity: 0.8,
+ start: function (evt, ui) {
+ ui.placeholder.css("visibility", "visible");
+ ui.placeholder.css("opacity", "0.352");
+ ui.placeholder.css("background-color", "#ddd");
+ },
+ stop: reassignSortValues
+ });
+
+ var setLayout = function () {
+ $rs.removeClass('horizontal vertical').addClass($('input[name=orientation]:checked').val());
+ };
+ $('input[name=orientation]').change(setLayout);
+
+ $('#btn-cancel').click(function () {
+ window.close();
+ });
+
+ var $ce = $('#check-enable');
+
+ var checkEnable = function () {
+ if ($ce.is(':checked')) {
+ $mc.show();
+ } else {
+ $mc.hide();
+ }
+ };
+
+ $ce.change(checkEnable);
+
+ var $mf = $('#main-form');
+ var $sb = $('#btn-save');
+ var success = false;
+ $sb.click(function(e) {
+ $sb.prop('disabled', true);
+ $('#error-msg').hide();
+ $('#success-msg').hide();
+ $('#saving-msg').show();
+ var str = $mf.serialize();
+ $.post($mf.attr('action'), str).done(function (data) {
+ if (data.indexOf('SUCCESS') !== -1) {
+ window.close();
+ // If window.close() failed, we give some feedback and remember the state as saved
+ $('#success-msg').show();
+ success = true;
+ return;
+ }
+ $('#error-msg').text('Error: ' + data).show();
+ }).fail(function (jq, textStatus, errorThrown) {
+ $('#error-msg').text('AJAX save call failed: ' + textStatus + ' (' + errorThrown + ')').show();
+ }).always(function() {
+ $sb.prop('disabled', success);
+ $('#saving-msg').hide();
+ });
+ e.preventDefault();
+ });
+
+ setLayout();
+ reassignSortValues();
+ checkEnable();
+
+ });
+</script> \ No newline at end of file