* chore(log-viewer): add the ability to use`since` parameter #1942https://github.com/portainer/portainer/issues/1942#issuecomment-430246378
* chore(log-viewer): change lineCount to 100 #1942https://github.com/portainer/portainer/issues/1942#issuecomment-430246378
* fix(log-viewer): js syntax typo for `;` and `'`
forget to lint the code, reported by codeclimate
* fix(log-viewer): use mementjs to format timestamp
1. use moment lib instead of define a function in filter.js(not the right place for this function, removed)
2. set sinceTimestamp init value to `24 hours ago`, as we just need to focus on the relative latest logs after the log-viewer loading, not all the logs(to speedup the process)
3. use moment().unix() to convert the `sinceTimestamp` to local unix timestamp(not utc)
* chore(log-viewer): add the ability to select the datetime for `since`
* chore(log-viewer): add the ability to fetch logs from specific time
* feat(back): saved data in snapshot
* feat(endpoints): adding interceptors to retrieve saved data on offline endpoints
* feat(endpoints): offline dashboard working - need tests on offline views
* refactor(endpoints): interceptors cleaning and saving/loading offline endpoints data in/from localstorage
* feat(endpoints): browsing offline endpoints
* feat(endpoints): removing all the link in offline mode - sidebar not working when switching between off and on modes w/ stateManager logic
* feat(endpoints): endpoint status detection in real time
* fix(endpoints): offline swarm endpoint are not accessible anymore
* fix(endpoints): refactor message + disable offline browsing for an endpoint when no snapshot is available for it
* fix(endpoints): adding timeout and enabling loading bar for offline requests
* fix(endpoints): trying to access a down endpoint wont remove sidebar items if it fails
* feat(endpoints): disable checkboxes on offline views for offline mode
* feat(endpoints): updating endpoint status when detecting a change
* refactor(host): moved offline status panel from engine view to new host view
* fix(endpoints): missing endpoint update on ping from home view
* fix(api): rework EndpointUpdate operation
* refactor(offline): moved endpoint status to EndpointProvider and refactor the status-changed detection
* fix(offline): moved status detection to callback on views -> prevent displaying the offline message when endpoint is back online on view change
* fix(offline): offline message is now displayed online when browsing an offline endpoint
* fix(offline): sidebar updates correctly on endpoint status change
* fix(offline): offline panel not displayed and hidden on online mode
* refactor(offline): rework of OfflineMode management
* refactor(offline): extract information-panel for offlineMode into a component
* refactor(offline): remove redundant binding of informationPanel + endpointStatusInterceptor patter as service
* refactor(interceptors): moved interceptors pattern to service pattern
* feat(stacks): prevent inspection of a stack in offline mode
* feat(host): hide devices/disk panels in offline mode
* feat(host): disable browse action in offline mode
* refactor(home): remove comments
* feat(jobs): adding the ability to run scripts on endpoints
fix(job): click on containerId in JobsDatatable redirects to container's logs
refactor(job): remove the jobs datatable settings + texts changes on JobCreation view
fix(jobs): jobs payloads are now following API rules and case
feat(jobs): adding the capability to run scripts on hosts
* feat(jobs): adding the ability to purge jobs containers
* refactor(job): apply review changes
* feat(job-creation): store image name in local storage
* feat(host): disable job exec link in non-agent Swarm setup
* feat(host): only display execute job in agent setups or standalone
* feat(job): job execution overhaul
* docs(swagger): update EndpointJob documentation
* Linting updates to api/swagger.yaml
* Security updates to api/swagger.yml
* Add api/swagger_config.json for swagger-codegen
* Add swagger_config.json packageVersion to match swagger.yml
* feat(agent): get agent's version from ping
* feat(agent): add version to api url
* feat(agent): query agent with api version
* feat(agent): rename agent api version name on state
* feat(agent): disable feature based on agent's api version
* style(agent): rename ping rest service + remove whitespaces
* style(state): remove whitespace
* style(agent): add whitespace
* fix(agent): remove check for error status 403
* refactor(agent): rename ping file name
* refactor(agent): move old services to v1 folder
* refactor(agent): turn ping service to usual pattern
* refactor(agent): change version to a global variable
* refactor(agent): move ping to version2
* refactor(agent): restore ping to use root ping
* fix(volumes): add volumeID to browse api path
* feat(volume): add upload button to volume browser
* fix(containers): creating a container with default runtime let the docker daemon assume the correct value
* refactor(containers): implementation simplification of default runtime value
* feat(backend): wrap init enpoint with goroutine
* feat(backend): wrap job snapshot with goroutine
* feat(snapshots): reset changes for main and job_endpoint
* feat(snapshot): run first job.snapshot as a goroutine
* feat(stack-details): add duplicate-stack button
* feat(stack-details): add stack-duplication-form component
* feat(stack-details): add duplicate stack method on controller
* feat(stack-details): add duplicate stack method
* feat(stack-details): remove old duplication in progress flag
* feat(stack-details): combine migration and duplication forms
* feat(stack-details): pass new stack name to server
* feat(stack-details): add option to rename migrated stack
* feat(stack-details): disable both migrate/duplicate buttons
* feat(stack-details): disable migration button on same endpoint
* feat(stack-details): change duplicate icon
* style(stack-details): remove whitespaces and fix pattern
* feat(stack-details): add name to migration payload in swagger.yml
* style(stack-details): add semicolon
* bug(stack-details): toggle endpoints before and after duplication
* feat(home): search multiple fields (group/tag)
* feat(home): change search from "OR" to "AND"
* feat(home): search only for a tag or a group
* feat(home): search by keywords in name,group,tag
* feat(home): support case insensitive search
* style(home): remove unused $filter
* feat(home): search state
* style(home): update search input placeholder
* containersDatable: add containers name if error on executeActionOnContainerList
* Update containersDatatableActionsController.js
* Update containersDatatableActionsController.js
* Initial pass at adding webhook controller and routes
* Moving some objects around
* Cleaning up comments
* Fixing syntax, switching to using the docker sdk over building an http client
* Adding delete and list functionality
* Updating the handler to use the correct permissions. Updating some comments
* Fixing some comments
* Code cleanup per pull request comments
* Cleanup per PR feedback. Syntax error fix
* Initial creation of webhook app code
* Moving ClientFactory creation out of handler code and instead using the one created by the main process. Removing webhookInspect method and updating the list function to use json filters
* Delete now works on the webhook ID vs service ID
* WIP - Service creates a webhook. Display will show an existing webhook URL.
* Adding the webhook field to the service view. There is now the ability to add or remove a webhook from a service
* Moving all api calls to be webhooks vs webhook
* Code cleanup. Moving all api calls to be webhooks vs webhook
* More conversion of webhook to webhooks?
* Moving UI elements around. Starting function for copying to clipboard
* Finalizing function for copying to clipboard. Adding button that calls function and copies webhook to clipboard.
* Fixing UI issues. Hiding field entirely when there is no webhook
* Moving URL crafting to a helper method. The edit pane for service now creates/deletes webhooks immidiately.
* style(service-details): update webhook line
* feat(api): strip sha when updating an image via the update webhook
* Fixing up some copy. Only displying the port if it is not http or https
* Fixing tooltip copy. Setting the forceupdate to be true to require an update to occur
* Fixing code climate errors
* Adding WebhookType field and setting to ServiceWebhook for new webhooks. Renaming ServiceID to resourceID so future work can add new types of webhooks in other resource areas.
* Adding the webhook type to the payload to support more types of webhooks in the future. Setting the type correctly when creating one for a service
* feat(webhooks): changes related to webhook management
* API code cleanup, removing unneeded functions, and updating validation logic
* Incorrectly ignoring the error that the webhook did not exist
* Re-adding missing error handling. Changing error response to be a 404 vs 500 when token can't find an object
* fix(webhooks): close Docker client after service webhook execution