| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Remove dead code.
|
|
|
|
|
| |
Consolidate all the sidebar collapse persistence logic.
Implement a single function to handle all the views.
|
|
|
|
|
| |
Show the proper state of the disclosure widget when a repo starts
as collapsed.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use common disk space across all the selected clients.
Show dynamic disk partition graph in the partition view.
Limit partition sizes dynamically in the form.
Move js code to handle the addition and removal of
partitions into the html file to debloat ogcp.js and keep
the functions local to the only file they manipulate.
|
|
|
|
|
| |
Enable center checkboxes and implement selection of clients from
multiple rooms in the same center.
|
|
|
|
|
| |
Improve html structure inside client pills so the values can be
obtained with jquery by matching the name field of the div.
|
|
|
|
|
| |
Add a red inner pill to the link speed value when the speed is
lower than 1Gb/s.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Disable all checkboxes of scopes of level higher than room in the
$(window).on('pageshow', function) callback.
Set checkboxes as "indeterminate" when not every children is
selected but have some of its children selected.
[x] center
[x] room1
[x] client1
[x] client1
[-] center
[ ] room1
[-] room2
[ ] client1
[x] client1
Send all selected sidebar fields as form fields. This requires
setting disabled to false and replacing indeterminate = true
to checked = true in the .on('submit', function) callback.
When a checkbox is clicked:
1. Find the room branch of the checked input.
[ ] center
[ ] room1
[ ] room2 <- root of the room branch
[ ] client1 <-- clicked item
2. Uncheck all the checkboxes outside of the room branch.
3. Set all the children of the clicked item to the same value
as the clicked item.
4. Set the parent checked or indeterminate values.
5. Save checkbox status.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add visual indicator to the disclosure widget when its branch has
any clients in live mode.
Ease the search of systems in ogLive in need of being booted or
turned off.
Add id= to the HTML component containing the disclosure widget.
Set the id to the value scope_type-scope_name for type='server' and
scope_type-scope_id for the rest.
Add the CSS class 'live-report' to the HTML components with live
children. Assign the class field in the js function updateScopes.
|
|
|
|
|
|
|
|
|
|
|
| |
Prevent cases where the client pills would stay locked reporting a
specific system.
Remove pill-* classes instead of text-* classes in function
updatePillStatus().
This fixes out-of-sync state representation between sidebar and main
section.
|
|
|
|
|
| |
Add the class "collapsed" to the html elements defined as
not shown in the local storage for the images list sidebar.
|
|
|
|
|
|
|
|
|
|
|
| |
Allow the selection of multiple client checkboxes if they belong
to the same room.
Each checkbox input in the DOM has a "data-parent-room" attribute
whose value is the value of the "name" attribute of its parent
room scope component.
To check if a checkbox is a client and a sibling of the one being
checked we check if "data-parent-room" is available for both nodes
and if they have the same value.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add cache buster to soleta.css in base.html to have control over
cache expirity.
Bump soleta.css version to ensure browser does not used older (cached)
version.
Add CSS rules to show a disclosure widget in the sidebar.
Show center checkboxes as disabled in the commands view sidebar
for visual consistency.
Add class "collapsed" to the proper HTML components to keep a
proper state on page reload.
|
|
|
|
|
|
|
|
|
|
|
| |
Maintain selections made in scope sidebar after clicking an action
(ie. client add, room delete, etc.)
Use ids instead of names as the name html property is the same for
every room and center.
Call keepSelectedClients() in macros.html for both Scope Management
and Commands instead of only in Commands.
Add a "context" value to the checkbox id to separate scope and
commands values in local storage.
|
|
|
|
|
|
|
| |
Improve selection logic to deselect the checkbox of a folder's
parent when the checkbox is unchecked.
Based on work from Javier Hernandez.
|
|
|
|
|
| |
Remove declaration of 'container' variable as it is no longer
used in the function.
|
|
|
|
|
| |
Exclude folders, centers servers and rooms from the scope pills so
only clients are shown.
|
|
|
|
|
|
| |
Ignore any room, center or folder as they don't have a MAC address.
Trying to get the MAC of an scope element without one leads to a
JS exception.
|
|
|
|
| |
Remove print statement generating noise in the browser logs.
|
|
|
|
|
| |
Add check to test if a pill control has been found and don't try
to add mac data to non existent client pill controls.
|
|
|
|
|
|
|
| |
Show the partition id as a non editable label in each partition
of the Partition and Format form.
Assign sequential partition id from top to down and recalculate
every partition id when a partition is removed.
|
|
|
|
|
|
|
| |
Update all the name and id fields of the elements in the partition
form after a delete operation.
Inconsistent ids make form.validate() to always return False, this
causes all the form validation code to be skipped.
|
|
|
|
|
|
|
|
|
|
| |
Add support for adding computers to a folder.
It uses a js script that when selecting a folder in the html form, it
will also select the parent of the folder. For instance, if the user
were to select a folder that is contained inside a room, the room would
also get selected. This allows the view to know which parent contains
the folder.
|
|
|
|
|
| |
Make the sidebar from the images menu display the list of repos grouped
by repos
|
|
|
|
|
|
| |
Bubbles depicting clients were previously displaying in the format
<client_name>_<client_id>. This commit changes that to only display the
name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix a bug that made the 'add a new partition' button unusable if all
partitions (rows) were deleted.
The reason for this bug was that the AddPartition() function would add a
new partition by cloning an already present html row element. This would
fail if no more rows were present in the table.
The solution implemented checks, previous to delete a partition, if it
is the last partition. If it is, then, instead of removing the whole
row, it just empties it.
Html button element needs to contain 'type="button"' attribute for this to
work. Otherwise, default action for the button is submit and it would
redirect after clicking.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
allow the user to delete a repo by selecting one and pressing the delete
button. Previous to deletion, show the user a confirmation page (a form)
with the details of the repo to delete
the confirmation form is constructed with the fields of Repoform.
RepoForm is also used in template used to create a repo. To make both
templates work with RepoForm, RepoForm's field 'create' has been renamed to
'submit'
ogcp.js: add a function to make that, when the user selects a
repository, the server in which it is contained is automatically
checked. We need it checked so that action_repo_delete can know the
server to which it has to send the delete request. Use data-server in
repos_details.html to make this work
Validate, in action_delete_repo, that user has only selected one repo to
delete. In order to do that, action_delete_repo view needs to be able to
get a list of all selected repos. This is only possible if <input>
elements that are associated with repos info contain a different name
attribute per repo. In this case, template repos.html has been modified
to use name={repo name}-{repo_id}. After this, parse_elements() will
work and parse a set containing all selected repos.
modify html input associated to repos server in order to follow same
convention as in other templates. For example, images uses image-server;
scopes, scope-server.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The menu includes a list of the repos of each server. The user can
select a server or a repo to make changes.
As of now, the only action possible is to add a repo to selected
server.
The work contained in this commit can be structured in:
1. Add the repos menu:
- Add a 'repos' button in the menus bar (base.html).
- Add repos.html template to create the management repos menu.
- In ogcp.js, add function to store in browser's local storage which
elements of the sidebar are uncollapsed. This saves the sidebar state
after a page refresh.
- Add manage_repos() in views.py
2. Allow to add a repo:
- Add template with form to add a repo (repos_details.html)
- Create RepoForm(FlaskForm) in action_forms.py
- Add repo_add_get() and repo_add_post() in views.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Any operation inside "Images" view fails with error message 'missing
"image-server" key'. Operations under images view section are loading
image info and "delete image".
Previously, a hidden checkbox entry was added to support multiple
ogServer images entries. This hidden checkbox value holds the
corresponding ogServer address of some image list. This hidden
'image-server' checkbox is checked or unchecked whenever some visible
image from this server is checked in the list by the user.
Commit 70eb7389bb5d introduces checkImageServer javascript function that
mainly attaches an onchange event to each image checkbox so that
checking or unchecking it updates the hidden 'image-server' checkboxes
holding the ogserver address associated with each ogserver entry list.
When loading "Images" view each configured ogServer entry is collapsed
(thus each image checkbox is hidden). The current selector is ignoring
hidden checkboxes and thus checkImageServer is unable to attach the
necessary onchange event to each image checkbox.
The hidden 'image-server' checkbox is always hidden and does not need
attaching any onchange event. Fix selector by not ignoring hidden
elements and omitting any checkbox with name 'image-server'.
Fixes: 70eb7389bb5d ("Add ogServer parameter to imagesForm")
|
|
|
|
|
| |
Scopes tree shows clients booted in Linux and Windows with ogClient
installed. It also shows if the user logs in.
|
|
|
|
|
|
|
| |
Commit 648a1a315e1d35f67c5301833bddd3753cc51793 changes do not work well
with large scopes trees. It takes several minutes to check a scope.
Improve javascript code to speed up scope selection.
|
|
|
|
| |
Otherwise, retrieving do not work on clients inside folders.
|
|
|
|
|
|
|
|
|
|
| |
From MDN:
Technically, the value for an id attribute may contain any character,
except whitespace characters. However, to avoid inadvertent errors, only
ASCII letters, digits, '_', and '-' should be used and the value for an
id attribute should start with a letter.
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When users select an image, its ogServer is sent too. Then, the back-end
(flask) processes the form to obtain this ogServer and send it the
pertinent requests.
It also makes "Image details" view use this new parameter, and adds
javascript code to ensure that users can only work with several images
at the same time if they belong to the same ogServer.
|
|
|
|
|
|
|
|
|
| |
With this commit when users select a scope, the ogServer to
which it belongs is also sent. Then when processing the form we obtain
this ogServer and we can send it the pertinent requests.
This commit also makes action "Add client" to use the ogServer sent in
the form.
|
|
|
|
|
|
|
|
|
|
|
| |
This patch moves login password hashing from the frontend/javascript to
the backend/flask.
This patch moves password hashing of login and user management forms.
Related commits:
* c7b0024 ("Add password hashing")
* 661254b ("Add 'Add user' to Users section")
|
|
|
|
|
| |
If link speed is greater than 1000 Mb/s, show it in Gb/s to improve
readability.
|
|
|
|
|
| |
If the last command sent to a client/s finishes with errors, their icons
in the scopes tree change to a yellow circle with an times sign inside.
|
|
|
|
|
| |
If the clients API response include link speed information, show it in
clients' pills.
|
|
|
|
| |
Retrieve and cache MACs one by one as users select clients.
|
|
|
|
|
| |
Creates "Add user" form with the following inputs: username, password,
password confirmation, role (administrator or regular), allowed scopes.
|
|
|
|
|
|
|
|
|
|
|
| |
The front-end now hashes passwords before sending them to the back-end.
It uses SHA-512.
This commit adds a hidden input which sends the password hash to not
interfere with browsers' save password functionality.
Also change passwords of the template configuration file for their
hashed/digested versions.
|
|
|
|
|
|
|
| |
Each checkbox may have child checkboxes. If all those children are
checked, it be checked. If none are checked, it is unchecked. If some of
them are checked, then it’s in an indeterminate state (in this case
symbolically meaning “partially” checked).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Otherwise, scopes with whitespaces in their names breaks the javascript
code.
From
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id:
---
Note: Technically, in HTML5, the value for an id attribute may contain
any character, except whitespace characters. However, to avoid
inadvertent errors, only ASCII letters, digits, '_', and '-' should be
used and the value for an id attribute should start with a letter. For
example, . has a special meaning in CSS (it acts as a class selector).
Unless you are careful to escape it in the CSS, it won't be recognized
as part of the value of an id attribute. It is easy to forget to do
this, resulting in bugs in your code that could be hard to detect.
---
|
|
|
|
| |
Set the same width to all pills.
|
|
|
|
|
|
|
| |
Some css classes are common to all pills statuses, so we do not need to
add or delete those classes on status change.
It also remove "badge-info" class because is never used.
|
|
|
|
| |
Otherwise, undesired removal of selected clients pills occurs.
|
|
|
|
| |
Color pills to represent their state, like scopes tree.
|