* 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