summaryrefslogtreecommitdiffstats
path: root/ogcp/static/js
Commit message (Collapse)AuthorAgeFilesLines
* js: add ogStorage to prevent localStorage key collissionAlejandro Sirgo Rica2024-09-161-40/+73
| | | | | | | | | | | Define ogStorage class to manage the localStorage operations. The new keys are constructed with the following structure: "group-context-id" Where group is either "show" for the collapsed items in the sidebar, or "check" for the selected checkboxes of the sidebar. Add sotrage versioning to delete obsolete localStorage when a new design for the storage is included in ogCP.
* js: remove outdated local storage dataAlejandro Sirgo Rica2024-09-161-1/+24
| | | | | | Remove the invalid keys from local storage when the page loads. Creating and deleting elements from the sidebar accumulates dead entries in the local storage.
* templates: save checkbox state in images and reposAlejandro Sirgo Rica2024-09-161-39/+16
| | | | | Store the checked checkboxes of the sidebar in Images and Repos. Autoselect the correct server after updating the checkboxes.
* js: restrict the checkbox filter to the sidebarAlejandro Sirgo Rica2024-09-161-6/+6
| | | | Prevent accidental processing of checkboxes outside the sidebar.
* js: remove unused function unfoldAllAlejandro Sirgo Rica2024-09-161-4/+0
| | | | Remove dead code.
* js: consolidate sidebar collapse persistence logicAlejandro Sirgo Rica2024-09-161-46/+5
| | | | | Consolidate all the sidebar collapse persistence logic. Implement a single function to handle all the views.
* templates: fix initial repos disclosure widget statusAlejandro Sirgo Rica2024-09-161-0/+2
| | | | | Show the proper state of the disclosure widget when a repo starts as collapsed.
* ogcp: add disk restrictions in partition and formatAlejandro Sirgo Rica2024-08-221-44/+0
| | | | | | | | | | | | 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.
* js: enable center selection in CommandsAlejandro Sirgo Rica2024-08-051-6/+6
| | | | | Enable center checkboxes and implement selection of clients from multiple rooms in the same center.
* js: use div instead of br in client pillsAlejandro Sirgo Rica2024-07-251-4/+6
| | | | | Improve html structure inside client pills so the values can be obtained with jquery by matching the name field of the div.
* js: add red highlight to slow client link speed in client pillsAlejandro Sirgo Rica2024-07-251-1/+3
| | | | | Add a red inner pill to the link speed value when the speed is lower than 1Gb/s.
* ogcp: improve sidebar logic in CommandsAlejandro Sirgo Rica2024-07-221-44/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* ogcp: show an indicator in each sidebar branch with live childrenAlejandro Sirgo Rica2024-07-091-2/+21
| | | | | | | | | | | | | | 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.
* ogcp: fix client pill status reportAlejandro Sirgo Rica2024-07-091-1/+1
| | | | | | | | | | | 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.
* js: show correct initial disclosure widget stateAlejandro Sirgo Rica2024-06-171-0/+2
| | | | | Add the class "collapsed" to the html elements defined as not shown in the local storage for the images list sidebar.
* js: allow selection of multiple clients in scopes sidebarAlejandro Sirgo Rica2024-06-141-2/+15
| | | | | | | | | | | 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.
* ogcp: add disclosure widget to sidebarAlejandro Sirgo Rica2024-06-141-0/+2
| | | | | | | | | | | | 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.
* src: revisit sidebar context storage approachAlejandro Sirgo Rica2024-06-141-14/+18
| | | | | | | | | | | 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.
* js: uncheck parent folder when a child folder is uncheckedAlejandro Sirgo Rica2024-06-141-1/+1
| | | | | | | Improve selection logic to deselect the checkbox of a folder's parent when the checkbox is unchecked. Based on work from Javier Hernandez.
* js: remove unused variable in showSelectedClientsOnEventsAlejandro Sirgo Rica2024-06-131-1/+0
| | | | | Remove declaration of 'container' variable as it is no longer used in the function.
* js: show only clients in the scope pillsAlejandro Sirgo Rica2024-06-131-10/+8
| | | | | Exclude folders, centers servers and rooms from the scope pills so only clients are shown.
* js: only add MAC to client pills1.1.3-19Alejandro Sirgo Rica2024-05-131-1/+3
| | | | | | 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.
* js: remove console.log statementAlejandro Sirgo Rica2024-05-131-1/+0
| | | | Remove print statement generating noise in the browser logs.
* js: prevent js exception in pages without pill controlAlejandro Sirgo Rica2024-05-131-0/+5
| | | | | 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.
* Make partition id non editable in partition formAlejandro Sirgo Rica2024-05-121-0/+5
| | | | | | | 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.
* js: fix id update in partition form deletionAlejandro Sirgo Rica2024-05-101-2/+4
| | | | | | | 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.
* views: Add computers to folderJavier Hernandez2024-01-111-0/+8
| | | | | | | | | | 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.
* Group images by reposJavier Hernandez2023-12-141-0/+19
| | | | | Make the sidebar from the images menu display the list of repos grouped by repos
* ogcp.js: Remove id part from client bubblesJavier Hernandez2023-12-131-1/+2
| | | | | | Bubbles depicting clients were previously displaying in the format <client_name>_<client_id>. This commit changes that to only display the name
* ogcp.js: Fix bug when adding a new partitionJavier Hernandez2023-12-111-7/+15
| | | | | | | | | | | | | | | | | 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.
* views: add action to delete repoJavier Hernandez2023-12-051-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* src: add menu to manage reposJavier Hernandez2023-12-011-0/+19
| | | | | | | | | | | | | | | | | | | | | | | 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
* ogcp.js: fix images selector in "images" sectionJose M. Guisado2023-07-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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")
* Add clients in Linux and Windows modeJavier Sánchez Parra2022-11-171-3/+20
| | | | | Scopes tree shows clients booted in Linux and Windows with ogClient installed. It also shows if the user logs in.
* Improve scopes tree from CommandsJavier Sánchez Parra2022-09-271-3/+10
| | | | | | | 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.
* Fix client room retrievingJavier Sánchez Parra2022-09-271-1/+1
| | | | Otherwise, retrieving do not work on clients inside folders.
* Replace parentheses in pills idsJavier Sánchez Parra2022-09-271-1/+1
| | | | | | | | | | 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
* Implement single room selection for commands viewDaniel García Moreno2022-09-271-1/+21
|
* Add different selection mode for the tree viewDaniel García Moreno2022-09-271-0/+25
|
* Add ogServer parameter to imagesFormJavier Sánchez Parra2022-09-271-0/+17
| | | | | | | | | | 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.
* Add current ogServer to scopesFormJavier Sánchez Parra2022-09-271-0/+6
| | | | | | | | | 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.
* Move password hashing to the backendJavier Sánchez Parra2022-06-301-45/+0
| | | | | | | | | | | 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")
* Show link speed in Gb/sJavier Sánchez Parra2022-05-271-3/+9
| | | | | If link speed is greater than 1000 Mb/s, show it in Gb/s to improve readability.
* Show last command result for clients in ogLiveJavier Sánchez Parra2022-05-131-5/+10
| | | | | 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.
* Add link speed to pillsJavier Sánchez Parra2022-05-111-2/+8
| | | | | If the clients API response include link speed information, show it in clients' pills.
* Add MAC to pillsJavier Sánchez Parra2022-05-061-1/+18
| | | | Retrieve and cache MACs one by one as users select clients.
* Add 'Add user' to Users sectionJavier Sánchez Parra2022-04-271-0/+22
| | | | | Creates "Add user" form with the following inputs: username, password, password confirmation, role (administrator or regular), allowed scopes.
* Add password hashingJavier Sánchez Parra2022-04-221-0/+24
| | | | | | | | | | | 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.
* Add indeterminate checkboxes to scopes treeJavier Sánchez Parra2022-04-081-0/+20
| | | | | | | 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).
* Replace " " with "_" in HTML scopes IDsJavier Sánchez Parra2022-03-251-2/+2
| | | | | | | | | | | | | | | | | | | 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. ---