0byt3m1n1
Path:
/
home
/
mgatv524
/
public_html
/
fmd
/
cache
/
07
/
[
Home
]
File: 073071ad9b98a65f7cb870d7a3a558095d280565091ff0a44c0780617db9683b.php
<?php /* displaygroup-page.twig */ class __TwigTemplate_46baf78a77272553525678049c7e3f68f4a8350cc24fd7923da818c1739c5b4b extends Twig_Template { public function __construct(Twig_Environment $env) { parent::__construct($env); // line 9 $this->parent = $this->loadTemplate("authed.twig", "displaygroup-page.twig", 9); $this->blocks = array( 'actionMenu' => array($this, 'block_actionMenu'), 'pageContent' => array($this, 'block_pageContent'), 'javaScript' => array($this, 'block_javaScript'), ); } protected function doGetParent(array $context) { return "authed.twig"; } protected function doDisplay(array $context, array $blocks = array()) { // line 10 $context["inline"] = $this->loadTemplate("inline.twig", "displaygroup-page.twig", 10); // line 9 $this->parent->display($context, array_merge($this->blocks, $blocks)); } // line 12 public function block_actionMenu($context, array $blocks = array()) { // line 13 echo " <ul class=\"nav nav-pills pull-right\"> <li class=\"btn btn-success btn-xs\"><a class=\"XiboFormButton btns\" title=\""; // line 14 echo __("Add a new Display Group"); echo "\" href=\""; echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("displayGroup.add.form"), "html", null, true); echo "\"> <i class=\"fa fa-desktop\" aria-hidden=\"true\"></i> "; echo __("Add Display Group"); echo "</a></li> </ul> "; } // line 18 public function block_pageContent($context, array $blocks = array()) { // line 19 echo " <div class=\"widget\"> <div class=\"widget-title\">"; // line 20 echo __("Display Groups"); echo "</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\""; // line 22 echo twig_escape_filter($this->env, twig_random($this->env), "html", null, true); echo "\"> <div class=\"XiboFilter well\"> <div class=\"FilterDiv\" id=\"Filter\"> <form class=\"form-inline\"> "; // line 26 ob_start(); echo __("Name"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 27 echo " "; echo $context["inline"]->getinput("displayGroup", ($context["title"] ?? null)); echo " "; // line 29 $context["attributes"] = array(0 => array("name" => "data-live-search", "value" => "true"), 1 => array("name" => "data-selected-text-format", "value" => "count > 4")); // line 33 echo " "; ob_start(); echo __("Display"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 34 echo " "; ob_start(); echo __("Return Display Groups that directly contain the selected Display."); $context["helpText"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 35 echo " "; echo $context["inline"]->getdropdown("displayId", "single", ($context["title"] ?? null), "", twig_array_merge(array(0 => array("displayId" => null, "display" => null)), ($context["displays"] ?? null)), "displayId", "display", ($context["helpText"] ?? null), "selectPicker", "", "", "", ($context["attributes"] ?? null)); echo " "; // line 37 ob_start(); echo __("Nested Display"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 38 echo " "; ob_start(); echo __("Return Display Groups that contain the selected Display somewhere in the nested Display Group relationship tree."); $context["helpText"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 39 echo " "; echo $context["inline"]->getdropdown("nestedDisplayId", "single", ($context["title"] ?? null), "", twig_array_merge(array(0 => array("displayId" => null, "display" => null)), ($context["displays"] ?? null)), "displayId", "display", ($context["helpText"] ?? null), "selectPicker", "", "", "", ($context["attributes"] ?? null)); echo " "; // line 41 ob_start(); echo __("Dynamic Criteria"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 42 echo " "; echo $context["inline"]->getinput("dynamicCriteria", ($context["title"] ?? null)); echo " "; // line 44 ob_start(); echo __("Tags"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 45 echo " "; ob_start(); echo __("A comma separated list of tags to filter by. Enter --no-tag to see items without tags."); $context["helpText"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 46 echo " "; echo $context["inline"]->getinputWithTags("tags", ($context["title"] ?? null), null, ($context["helpText"] ?? null)); echo " </form> </div> </div> <div class=\"XiboData\"> <table id=\"displaygroups\" class=\"table table-striped\"> <thead> <tr> <th>"; // line 54 echo __("ID"); echo "</th> <th>"; // line 55 echo __("Name"); echo "</th> <th>"; // line 56 echo __("Description"); echo "</th> <th>"; // line 57 echo __("Is Dynamic?"); echo "</th> <th>"; // line 58 echo __("Criteria"); echo "</th> <th>"; // line 59 echo __("Tags"); echo "</th> <th></th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> "; } // line 73 public function block_javaScript($context, array $blocks = array()) { // line 74 echo " <script type=\"text/javascript\"> var table = \$(\"#displaygroups\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, stateLoadCallback: function (settings, callback) { var data; \$.ajax({ type: \"GET\", async: false, url: \""; // line 82 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("user.pref"), "html", null, true); echo "?preference=displayGroupGrid\", dataType: 'json', success: function (json) { if (json.success) data = JSON.parse(json.data.value); } }); return data; }, stateSaveCallback: function (settings, data) { \$.ajax({ type: \"POST\", url: \""; // line 94 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("user.pref"), "html", null, true); echo "\", data: { preference: [{ option: \"displayGroupGrid\", value: JSON.stringify(data) }] } }); }, \"filter\": false, searchDelay: 3000, \"order\": [[ 1, \"asc\"]], ajax: { \"url\": \""; // line 107 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("displayGroup.search"), "html", null, true); echo "\", \"data\": function(d) { \$.extend(d, \$(\"#displaygroups\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); } }, \"columns\": [ { \"data\": \"displayGroupId\" }, { \"data\": \"displayGroup\", \"render\": dataTableSpacingPreformatted }, { \"data\": \"description\" }, { \"data\": \"isDynamic\", \"render\": dataTableTickCrossColumn }, { \"data\": \"dynamicCriteria\" }, { \"name\": \"tags\", \"sortable\": false, \"data\": dataTableCreateTags }, { \"orderable\": false, \"data\": dataTableButtonsColumn } ] }); table.on('draw', dataTableDraw); table.on('draw', { form: \$(\"#displaygroups\").closest(\".XiboGrid\").find(\".FilterDiv form\") }, dataTableCreateTagEvents); table.on('processing.dt', dataTableProcessing); dataTableAddButtons(table, \$('#displaygroups_wrapper').find('.col-sm-6').eq(1)); var displayTable; var criteria; function displayGroupFormOpen(dialog) { displayTable = null; \$(dialog).find(\"input[name=dynamicCriteria]\").on(\"keyup\", \$.debounce(500, function() { displayGroupQueryDynamicMembers(dialog); })); // First time in there displayGroupQueryDynamicMembers(dialog); } function displayGroupQueryDynamicMembers(dialog) { if (\$(dialog).find(\"input[name=isDynamic]\")[0].checked) { criteria = \$(dialog).find(\"input[name=dynamicCriteria]\").val(); if (criteria == \"\") { if (displayTable != null) { displayTable.destroy(); displayTable = null; \$(\"#displays tbody\").empty(); } return; } if (displayTable != null) { displayTable.ajax.reload(); } else { displayTable = \$(\"#displays\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[1, \"asc\"]], ajax: { \"url\": \""; // line 176 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("display.search"), "html", null, true); echo "\", \"data\": function (d) { console.log(criteria); \$.extend(d, {display: criteria}); } }, \"columns\": [ {\"data\": \"displayId\"}, {\"data\": \"display\"}, { \"data\": \"mediaInventoryStatus\", \"render\": function (data, type, row) { if (type != \"display\") return data; var icon = \"\"; if (data == 1) icon = \"fa-check\"; else if (data == 0) icon = \"fa-times\"; else icon = \"fa-cloud-download\"; return \"<span class='fa \" + icon + \"'></span>\"; } }, {\"data\": \"licensed\", \"render\": dataTableTickCrossColumn} ] }); displayTable.on('processing.dt', dataTableProcessing); } } } function displayGroupMembersFormOpen(dialog) { var control = \$(dialog).find(\".controlDiv\"); // This contains the changes made since the form open if (control.data().members == undefined) control.data().members = { displays: {}, displayGroups: {} }; var table = \$(\"#displaysMembersTable\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[1, \"asc\"]], ajax: { \"url\": \""; // line 230 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("display.search"), "html", null, true); echo "\", \"data\": function(dataDisplay) { \$.extend(dataDisplay, \$(dialog).find(\"#displayForm\").serializeObject()); return dataDisplay; } }, \"columns\": [ { \"data\": \"displayId\"}, { \"data\": \"display\" }, { \"data\": \"mediaInventoryStatus\", \"render\": function (data, type, row) { if (type != \"display\") return data; var icon = \"\"; if (data == 1) icon = \"fa-check\"; else if (data == 0) icon = \"fa-times\"; else icon = \"fa-cloud-download\"; return \"<span class='fa \" + icon + \"'></span>\"; } }, { \"data\": \"loggedIn\", \"render\": dataTableTickCrossColumn}, { \"name\": \"clientVersion\", \"data\": function (data, type) { if (type != \"display\") return data.clientVersion; return data.clientType + ' ' + data.clientVersion + '-' + data.clientCode; }, \"visible\": false }, { \"name\": \"member\", \"orderable\": false, \"data\": function (data, type, row) { if (type != \"display\") return data; var checked = ''; // Check if the element is already been checked/unchecked if( typeof control.data().members != \"undefined\" && control.data().members.displays[data.displayId] != undefined){ checked = (control.data().members.displays[data.displayId]) ? 'checked' : ''; } else { // If its not been altered, check for the original state if( dialog.data().extra ){ dialog.data().extra.displaysAssigned.forEach(function(extraElement) { if( extraElement.displayId == data.displayId ){ checked = 'checked'; } }); } } var checkBox = '<input type=\"checkbox\" class=\"checkbox\" data-member-id=' + data.displayId + ' data-member-type=\"display\" ' + checked + '>'; // Create checkbox return checkBox; } }, ] }); table.on('draw', dataTableDraw); table.on('processing.dt', dataTableProcessing); var tableGroup = \$(\"#displaysGroupsMembersTable\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[1, \"asc\"]], ajax: { \"url\": \""; // line 309 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("displayGroup.search"), "html", null, true); echo "\", \"data\": function(dataGroup) { \$.extend(dataGroup, \$(\"#displaysGroupsMembersTable\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); return dataGroup; } }, \"columns\": [ { \"data\": \"displayGroupId\"}, { \"data\": \"displayGroup\"}, { \"name\": \"member\", \"orderable\": false, \"data\": function (data, type, row) { if (type != \"display\") return data; var checked = ''; // Check if the element is already been checked/unchecked if( typeof control.data().members != \"undefined\" && control.data().members.displayGroups[data.displayGroupId] != undefined){ checked = (control.data().members.displayGroups[data.displayGroupId]) ? 'checked' : ''; } else { // If its not been altered, check for the original state if( dialog.data().extra ){ dialog.data().extra.displayGroupsAssigned.forEach(function(extraElement) { if( extraElement.displayGroupId == data.displayGroupId ){ checked = 'checked'; } }); } } var checkBox = '<input type=\"checkbox\" class=\"checkbox\" data-member-id=' + data.displayGroupId + ' data-member-type=\"displayGroup\" ' + checked + '>'; // Create checkbox return checkBox; } }, ] }); tableGroup.on('draw', dataTableDraw); tableGroup.on('processing.dt', dataTableProcessing); // Bind to the checkboxes change event control.on(\"change\", \".checkbox\", function() { // Update our global members data with this var memberId = \$(this).data().memberId; var memberType = \$(this).data().memberType; var value = \$(this).is(\":checked\"); if (memberType == \"display\") control.data().members.displays[memberId] = (value) ? 1 : 0; else if (memberType == \"displayGroup\") control.data().members.displayGroups[memberId] = (value) ? 1 : 0; }); } function displayGroupMembersFormSubmit(id) { var form = \$(\"#\" + id); var members = form.data().members; // There may not have been any changes if (members == undefined) { // No changes XiboDialogClose(); return; } // Create a new queue. window.queue = \$.jqmq({ // Next item will be processed only when queue.next() is called in callback. delay: -1, // Process queue items one-at-a-time. batch: 1, // For each queue item, execute this function, making an AJAX request. Only // continue processing the queue once the AJAX request's callback executes. callback: function( data ) { // Make an AJAX call \$.ajax({ type: \"POST\", url: data.url, cache: false, dataType: \"json\", data: \$.param(data.data), success: function(response, textStatus, error) { if (response.success) { // Success - what do we do now? if (response.message != '') SystemMessage(response.message, true); // Process the next item queue.next(); } else { // Why did we fail? if (response.login) { // We were logged out LoginBox(response.message); } else { // Likely just an error that we want to report on form.find(\".saving\").remove(); SystemMessageInline(response.message, form.closest(\".modal\")); } } }, error: function(responseText) { SystemMessage(responseText, false); } }); }, // When the queue completes naturally, execute this function. complete: function() { // Remove the save button form.find(\".saving\").parent().remove(); // Refresh the grids // (this is a global refresh) XiboRefreshAllGrids(); // Close the dialog XiboDialogClose(); } }); var addedToQueue = false; // Build an array of id's to assign and an array to unassign var assign = []; var unassign = []; \$.each(members.displays, function(name, value) { if (value == 1) assign.push(name); else unassign.push(name); }); if (assign.length > 0 || unassign.length > 0) { var data = { data: {}, url: form.data().url }; data.data[form.data().param] = assign; data.data[form.data().paramUnassign] = unassign; // Queue queue.add(data); addedToQueue = true; } // Build an array of id's to assign and an array to unassign var assignGroup = []; var unassignGroup = []; \$.each(members.displayGroups, function(name, value) { if (value == 1) assignGroup.push(name); else unassignGroup.push(name); }); if (assignGroup.length > 0 || unassignGroup.length > 0) { var dataGroup = { data: {}, url: form.data().groupsUrl }; dataGroup.data[form.data().groupsParam] = assignGroup; dataGroup.data[form.data().groupsParamUnassign] = unassignGroup; // Queue queue.add(dataGroup); addedToQueue = true; } if (!addedToQueue) { XiboDialogClose(); } else { // Start the queue queue.start(); } } </script> "; } public function getTemplateName() { return "displaygroup-page.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 434 => 309, 352 => 230, 295 => 176, 223 => 107, 207 => 94, 192 => 82, 182 => 74, 179 => 73, 162 => 59, 158 => 58, 154 => 57, 150 => 56, 146 => 55, 142 => 54, 130 => 46, 125 => 45, 121 => 44, 115 => 42, 111 => 41, 105 => 39, 100 => 38, 96 => 37, 90 => 35, 85 => 34, 80 => 33, 78 => 29, 72 => 27, 68 => 26, 61 => 22, 56 => 20, 53 => 19, 50 => 18, 39 => 14, 36 => 13, 33 => 12, 29 => 9, 27 => 10, 11 => 9,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Twig_Source("{# /* * Spring Signage Ltd - http://www.springsignage.com * Copyright (C) 2015 Spring Signage Ltd * (\${FILE_NAME}) */ #} {% extends \"authed.twig\" %} {% import \"inline.twig\" as inline %} {% block actionMenu %} <ul class=\"nav nav-pills pull-right\"> <li class=\"btn btn-success btn-xs\"><a class=\"XiboFormButton btns\" title=\"{% trans \"Add a new Display Group\" %}\" href=\"{{ urlFor(\"displayGroup.add.form\") }}\"> <i class=\"fa fa-desktop\" aria-hidden=\"true\"></i> {% trans \"Add Display Group\" %}</a></li> </ul> {% endblock %} {% block pageContent %} <div class=\"widget\"> <div class=\"widget-title\">{% trans \"Display Groups\" %}</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\"{{ random() }}\"> <div class=\"XiboFilter well\"> <div class=\"FilterDiv\" id=\"Filter\"> <form class=\"form-inline\"> {% set title %}{% trans \"Name\" %}{% endset %} {{ inline.input(\"displayGroup\", title) }} {% set attributes = [ { name: \"data-live-search\", value: \"true\" }, { name: \"data-selected-text-format\", value: \"count > 4\" } ] %} {% set title %}{% trans \"Display\" %}{% endset %} {% set helpText %}{% trans \"Return Display Groups that directly contain the selected Display.\" %}{% endset %} {{ inline.dropdown(\"displayId\", \"single\", title, \"\", [{displayId:null, display: null}]|merge(displays), \"displayId\", \"display\", helpText, \"selectPicker\", \"\", \"\", \"\", attributes) }} {% set title %}{% trans \"Nested Display\" %}{% endset %} {% set helpText %}{% trans \"Return Display Groups that contain the selected Display somewhere in the nested Display Group relationship tree.\" %}{% endset %} {{ inline.dropdown(\"nestedDisplayId\", \"single\", title, \"\", [{displayId:null, display: null}]|merge(displays), \"displayId\", \"display\", helpText, \"selectPicker\", \"\", \"\", \"\", attributes) }} {% set title %}{% trans \"Dynamic Criteria\" %}{% endset %} {{ inline.input(\"dynamicCriteria\", title) }} {% set title %}{% trans \"Tags\" %}{% endset %} {% set helpText %}{% trans \"A comma separated list of tags to filter by. Enter --no-tag to see items without tags.\" %}{% endset %} {{ inline.inputWithTags(\"tags\", title, null, helpText) }} </form> </div> </div> <div class=\"XiboData\"> <table id=\"displaygroups\" class=\"table table-striped\"> <thead> <tr> <th>{% trans \"ID\" %}</th> <th>{% trans \"Name\" %}</th> <th>{% trans \"Description\" %}</th> <th>{% trans \"Is Dynamic?\" %}</th> <th>{% trans \"Criteria\" %}</th> <th>{% trans \"Tags\" %}</th> <th></th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> {% endblock %} {% block javaScript %} <script type=\"text/javascript\"> var table = \$(\"#displaygroups\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, stateLoadCallback: function (settings, callback) { var data; \$.ajax({ type: \"GET\", async: false, url: \"{{ urlFor(\"user.pref\") }}?preference=displayGroupGrid\", dataType: 'json', success: function (json) { if (json.success) data = JSON.parse(json.data.value); } }); return data; }, stateSaveCallback: function (settings, data) { \$.ajax({ type: \"POST\", url: \"{{ urlFor(\"user.pref\") }}\", data: { preference: [{ option: \"displayGroupGrid\", value: JSON.stringify(data) }] } }); }, \"filter\": false, searchDelay: 3000, \"order\": [[ 1, \"asc\"]], ajax: { \"url\": \"{{ urlFor(\"displayGroup.search\") }}\", \"data\": function(d) { \$.extend(d, \$(\"#displaygroups\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); } }, \"columns\": [ { \"data\": \"displayGroupId\" }, { \"data\": \"displayGroup\", \"render\": dataTableSpacingPreformatted }, { \"data\": \"description\" }, { \"data\": \"isDynamic\", \"render\": dataTableTickCrossColumn }, { \"data\": \"dynamicCriteria\" }, { \"name\": \"tags\", \"sortable\": false, \"data\": dataTableCreateTags }, { \"orderable\": false, \"data\": dataTableButtonsColumn } ] }); table.on('draw', dataTableDraw); table.on('draw', { form: \$(\"#displaygroups\").closest(\".XiboGrid\").find(\".FilterDiv form\") }, dataTableCreateTagEvents); table.on('processing.dt', dataTableProcessing); dataTableAddButtons(table, \$('#displaygroups_wrapper').find('.col-sm-6').eq(1)); var displayTable; var criteria; function displayGroupFormOpen(dialog) { displayTable = null; \$(dialog).find(\"input[name=dynamicCriteria]\").on(\"keyup\", \$.debounce(500, function() { displayGroupQueryDynamicMembers(dialog); })); // First time in there displayGroupQueryDynamicMembers(dialog); } function displayGroupQueryDynamicMembers(dialog) { if (\$(dialog).find(\"input[name=isDynamic]\")[0].checked) { criteria = \$(dialog).find(\"input[name=dynamicCriteria]\").val(); if (criteria == \"\") { if (displayTable != null) { displayTable.destroy(); displayTable = null; \$(\"#displays tbody\").empty(); } return; } if (displayTable != null) { displayTable.ajax.reload(); } else { displayTable = \$(\"#displays\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[1, \"asc\"]], ajax: { \"url\": \"{{ urlFor(\"display.search\") }}\", \"data\": function (d) { console.log(criteria); \$.extend(d, {display: criteria}); } }, \"columns\": [ {\"data\": \"displayId\"}, {\"data\": \"display\"}, { \"data\": \"mediaInventoryStatus\", \"render\": function (data, type, row) { if (type != \"display\") return data; var icon = \"\"; if (data == 1) icon = \"fa-check\"; else if (data == 0) icon = \"fa-times\"; else icon = \"fa-cloud-download\"; return \"<span class='fa \" + icon + \"'></span>\"; } }, {\"data\": \"licensed\", \"render\": dataTableTickCrossColumn} ] }); displayTable.on('processing.dt', dataTableProcessing); } } } function displayGroupMembersFormOpen(dialog) { var control = \$(dialog).find(\".controlDiv\"); // This contains the changes made since the form open if (control.data().members == undefined) control.data().members = { displays: {}, displayGroups: {} }; var table = \$(\"#displaysMembersTable\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[1, \"asc\"]], ajax: { \"url\": \"{{ urlFor(\"display.search\") }}\", \"data\": function(dataDisplay) { \$.extend(dataDisplay, \$(dialog).find(\"#displayForm\").serializeObject()); return dataDisplay; } }, \"columns\": [ { \"data\": \"displayId\"}, { \"data\": \"display\" }, { \"data\": \"mediaInventoryStatus\", \"render\": function (data, type, row) { if (type != \"display\") return data; var icon = \"\"; if (data == 1) icon = \"fa-check\"; else if (data == 0) icon = \"fa-times\"; else icon = \"fa-cloud-download\"; return \"<span class='fa \" + icon + \"'></span>\"; } }, { \"data\": \"loggedIn\", \"render\": dataTableTickCrossColumn}, { \"name\": \"clientVersion\", \"data\": function (data, type) { if (type != \"display\") return data.clientVersion; return data.clientType + ' ' + data.clientVersion + '-' + data.clientCode; }, \"visible\": false }, { \"name\": \"member\", \"orderable\": false, \"data\": function (data, type, row) { if (type != \"display\") return data; var checked = ''; // Check if the element is already been checked/unchecked if( typeof control.data().members != \"undefined\" && control.data().members.displays[data.displayId] != undefined){ checked = (control.data().members.displays[data.displayId]) ? 'checked' : ''; } else { // If its not been altered, check for the original state if( dialog.data().extra ){ dialog.data().extra.displaysAssigned.forEach(function(extraElement) { if( extraElement.displayId == data.displayId ){ checked = 'checked'; } }); } } var checkBox = '<input type=\"checkbox\" class=\"checkbox\" data-member-id=' + data.displayId + ' data-member-type=\"display\" ' + checked + '>'; // Create checkbox return checkBox; } }, ] }); table.on('draw', dataTableDraw); table.on('processing.dt', dataTableProcessing); var tableGroup = \$(\"#displaysGroupsMembersTable\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[1, \"asc\"]], ajax: { \"url\": \"{{ urlFor(\"displayGroup.search\") }}\", \"data\": function(dataGroup) { \$.extend(dataGroup, \$(\"#displaysGroupsMembersTable\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); return dataGroup; } }, \"columns\": [ { \"data\": \"displayGroupId\"}, { \"data\": \"displayGroup\"}, { \"name\": \"member\", \"orderable\": false, \"data\": function (data, type, row) { if (type != \"display\") return data; var checked = ''; // Check if the element is already been checked/unchecked if( typeof control.data().members != \"undefined\" && control.data().members.displayGroups[data.displayGroupId] != undefined){ checked = (control.data().members.displayGroups[data.displayGroupId]) ? 'checked' : ''; } else { // If its not been altered, check for the original state if( dialog.data().extra ){ dialog.data().extra.displayGroupsAssigned.forEach(function(extraElement) { if( extraElement.displayGroupId == data.displayGroupId ){ checked = 'checked'; } }); } } var checkBox = '<input type=\"checkbox\" class=\"checkbox\" data-member-id=' + data.displayGroupId + ' data-member-type=\"displayGroup\" ' + checked + '>'; // Create checkbox return checkBox; } }, ] }); tableGroup.on('draw', dataTableDraw); tableGroup.on('processing.dt', dataTableProcessing); // Bind to the checkboxes change event control.on(\"change\", \".checkbox\", function() { // Update our global members data with this var memberId = \$(this).data().memberId; var memberType = \$(this).data().memberType; var value = \$(this).is(\":checked\"); if (memberType == \"display\") control.data().members.displays[memberId] = (value) ? 1 : 0; else if (memberType == \"displayGroup\") control.data().members.displayGroups[memberId] = (value) ? 1 : 0; }); } function displayGroupMembersFormSubmit(id) { var form = \$(\"#\" + id); var members = form.data().members; // There may not have been any changes if (members == undefined) { // No changes XiboDialogClose(); return; } // Create a new queue. window.queue = \$.jqmq({ // Next item will be processed only when queue.next() is called in callback. delay: -1, // Process queue items one-at-a-time. batch: 1, // For each queue item, execute this function, making an AJAX request. Only // continue processing the queue once the AJAX request's callback executes. callback: function( data ) { // Make an AJAX call \$.ajax({ type: \"POST\", url: data.url, cache: false, dataType: \"json\", data: \$.param(data.data), success: function(response, textStatus, error) { if (response.success) { // Success - what do we do now? if (response.message != '') SystemMessage(response.message, true); // Process the next item queue.next(); } else { // Why did we fail? if (response.login) { // We were logged out LoginBox(response.message); } else { // Likely just an error that we want to report on form.find(\".saving\").remove(); SystemMessageInline(response.message, form.closest(\".modal\")); } } }, error: function(responseText) { SystemMessage(responseText, false); } }); }, // When the queue completes naturally, execute this function. complete: function() { // Remove the save button form.find(\".saving\").parent().remove(); // Refresh the grids // (this is a global refresh) XiboRefreshAllGrids(); // Close the dialog XiboDialogClose(); } }); var addedToQueue = false; // Build an array of id's to assign and an array to unassign var assign = []; var unassign = []; \$.each(members.displays, function(name, value) { if (value == 1) assign.push(name); else unassign.push(name); }); if (assign.length > 0 || unassign.length > 0) { var data = { data: {}, url: form.data().url }; data.data[form.data().param] = assign; data.data[form.data().paramUnassign] = unassign; // Queue queue.add(data); addedToQueue = true; } // Build an array of id's to assign and an array to unassign var assignGroup = []; var unassignGroup = []; \$.each(members.displayGroups, function(name, value) { if (value == 1) assignGroup.push(name); else unassignGroup.push(name); }); if (assignGroup.length > 0 || unassignGroup.length > 0) { var dataGroup = { data: {}, url: form.data().groupsUrl }; dataGroup.data[form.data().groupsParam] = assignGroup; dataGroup.data[form.data().groupsParamUnassign] = unassignGroup; // Queue queue.add(dataGroup); addedToQueue = true; } if (!addedToQueue) { XiboDialogClose(); } else { // Start the queue queue.start(); } } </script> {% endblock %}", "displaygroup-page.twig", "/home2/mgatv524/public_html/fmd/views/displaygroup-page.twig"); } }