Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
|
Mattias Nissler (ping if slow)
2011/08/09 13:20:40
I guess all this stuff should go into some object
simo
2011/08/10 14:28:19
Okay, I wasn't sure what the policy on this was be
| |
| 5 localStrings = new LocalStrings(); | |
| 6 /** | |
| 7 * This variable structure is here to document the structure that the template | |
| 8 * expects to correctly populate the page. | |
| 9 */ | |
| 10 var policyDataformat = { | |
| 11 'policies': [ | |
| 12 { | |
| 13 'level': 'managed', | |
| 14 'name': 'AllowXYZ', | |
| 15 'set': true, | |
| 16 'source_type': 'Device', | |
| 17 'status': 'ok', | |
| 18 'value': 'Allow', | |
| 19 }, | |
| 20 ] | |
| 21 } | |
| 22 | |
| 23 /** | |
| 24 * Takes the |policyData| input argument which represents data about the | |
| 25 * policies supported by the device/client and populates the html jstemplate | |
| 26 * with that data. It expects an object structure like the above. | |
| 27 * @param {Object} policyData Detailed info about policies | |
| 28 */ | |
| 29 function renderTemplate(policyData) { | |
| 30 // This is the javascript code that processes the template: | |
| 31 var input = new JsEvalContext(policyData); | |
| 32 var output = document.getElementById('policiesTemplate'); | |
| 33 jstProcess(input, output); | |
| 34 } | |
| 35 | |
| 36 /** | |
| 37 * Asks the C++ PolicyUIHandler to get details about policies. The | |
| 38 * PolicyDOMHandler should reply to returnPolicyData() (below). | |
| 39 */ | |
| 40 function requestPolicyData() { | |
| 41 chrome.send('requestPolicyData', []); | |
| 42 } | |
| 43 | |
| 44 /** | |
| 45 * Called by the C++ PolicyUIHandler when it has the requested policy data. | |
| 46 */ | |
| 47 function returnPolicyData(policyData) { | |
| 48 renderTemplate(policyData); | |
| 49 } | |
| 50 | |
| 51 /** | |
| 52 * Determines whether a policy should be visible or not. | |
| 53 * @param {policy} policy information in the format given by above the | |
| 54 * PolicyDataFormat | |
| 55 */ | |
| 56 function shouldDisplayPolicy(policy) { | |
| 57 return $('toggle-unsent-policies').checked || policy.set; | |
| 58 } | |
| 59 | |
| 60 /** | |
| 61 * Returns true if the given policy was actually set and false otherwise (i.e. it | |
| 62 * is just one of the policies supported by the client but isn't set to a value). | |
| 63 * | |
| 64 * @policy {policy} information in the format given by above PolicyDataFormat | |
| 65 */ | |
| 66 function isPolicySet(policy) { | |
| 67 return policy.set; | |
| 68 } | |
| 69 | |
| 70 /** | |
| 71 * Initializes the page and loads the list of policies. | |
| 72 */ | |
| 73 function load() { | |
| 74 i18nTemplate.process(document, templateData); | |
| 75 requestPolicyData(); | |
| 76 | |
| 77 // Set HTML event handlers. | |
| 78 $('toggle-unsent-policies').onchange = function (event) { | |
| 79 var table_rows = document.getElementsByClassName('policy-unset'); | |
| 80 for (var i = 0; i < table_rows.length; ++i) { | |
| 81 if ($('toggle-unsent-policies').checked) | |
| 82 table_rows[i].style.display = 'table-row'; | |
| 83 else | |
| 84 table_rows[i].style.display = 'none'; | |
| 85 } | |
| 86 | |
| 87 // Filter table again in case a search was active. | |
| 88 filterTable(search_term); | |
| 89 }; | |
| 90 | |
| 91 $('search-field').onsearch = function(event) { | |
| 92 filterTable(this.value); | |
| 93 }; | |
| 94 | |
| 95 $('search-field').placeholder = localStrings.getString('filterPoliciesText'); | |
| 96 } | |
| 97 | |
| 98 // The current search text for filtering the policy table. | |
| 99 var search_term = ''; | |
| 100 | |
| 101 /** | |
| 102 * Filters the table of policies by name. | |
| 103 * @param {term} The search string | |
| 104 */ | |
| 105 function filterTable (term) { | |
| 106 search_term = term.toLowerCase(); | |
| 107 var table = document.getElementById('policy-table'); | |
| 108 var show_unsent = $('toggle-unsent-policies').checked; | |
| 109 for (var r = 1; r < table.rows.length; ++r) { | |
| 110 var row = table.rows[r]; | |
| 111 | |
| 112 // Don't change visibility of policies that aren't set if the checkbox | |
| 113 // isn't checked. | |
| 114 if (!show_unsent && row.className == 'policy-unset') | |
| 115 continue; | |
| 116 | |
| 117 var name_cell = row.getElementsByClassName('policy-name')[0]; | |
| 118 var cell_contents = name_cell.innerHTML.replace(/<[^>]+>/g,""); | |
| 119 if (cell_contents.toLowerCase().indexOf(search_term) >= 0) | |
| 120 row.style.display = 'table-row'; | |
| 121 else | |
| 122 row.style.display = 'none'; | |
| 123 } | |
| 124 } | |
| 125 | |
| 126 // Get data and have it displayed upon loading. | |
| 127 document.addEventListener('DOMContentLoaded', load); | |
| 128 | |
|
Mattias Nissler (ping if slow)
2011/08/09 13:20:40
remove trailing whitespace.
| |
| 129 | |
| OLD | NEW |