Class LiveWallView
- All Implemented Interfaces:
ExtensionPoint,Describable<View>,DescriptorByNameOwner,DirectlyModifiableView,ModelObject,Saveable,SearchableModelObject,SearchItem,AccessControlled,Badgeable,ModelObjectWithChildren,HasWidgets
It extends ListView so that job selection, folder recursion, the include regex and
job filters all behave exactly as people already expect; everything this class adds is about how
the result is drawn. The rendering itself lives in the browser: the page ships a static
shell and then polls wallData for a small JSON document, so a wall can sit open for weeks
without leaking DOM or hammering the controller with full page loads.
Three deliberate departures from the older build-monitor style of wall:
- No pagination. Tiles are scaled to fit the screen, so nothing is ever on the page you are not looking at. Walls too large to shrink can scroll continuously instead.
- No per-tile detail. A tile carries the job name and a colour. Anything else is off by default, because at four metres you cannot read a commit message anyway.
- Palettes designed for large panels. Saturated fills and automatically contrasting ink, rather than the washed-out pastels that disappear under office lighting.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class hudson.model.ListView
ListView.ListenerNested classes/interfaces inherited from class hudson.model.View
View.PropertyListNested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson -
Field Summary
Fields inherited from class hudson.model.View
CONFIGURE, CREATE, DELETE, description, filterExecutors, filterQueue, LIST, name, NEW_PRONOUN, owner, PERMISSIONS, READ, SORTER -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddoSaveLook(org.kohsuke.stapler.StaplerResponse2 rsp, String palette, String shape, String animation, String packing, String sortBy, String gap, String seam) Persists the settings the preview bar can reach, so that a look arrived at by eye becomes the look the television gets.voiddoWall(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) The standalone full-screen page, at<view>/wall.voiddoWallData(org.kohsuke.stapler.StaplerResponse2 rsp, String sortBy, String include, String exclude) Serves the wall contents.The custom colours that survived validation, keyed bybackground,success,failure,unstable,abortedandidle.What to say when the wall has nothing on it.intPacking[]Palette[]intintWidth of the hairline of background colour drawn inside each tile's outline.getShape()SortBy[]intSpace between tiles in pixels.getTiles()Snapshots every job in the view that the current user may see, in the configured order.Snapshots the wall in a given order.Snapshots the wall in a given order, keeping only the jobs a filter accepts.booleanbooleanbooleanWhether the viewer may use the Save button, which is also enforced bydoSaveLook(org.kohsuke.stapler.StaplerResponse2, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String).booleanbooleanbooleanprotected ObjectvoidsetAnimation(String animation) voidsetBurnInProtection(boolean burnInProtection) voidsetCustomAborted(String customAborted) voidsetCustomBackground(String customBackground) voidsetCustomFailure(String customFailure) voidsetCustomIdle(String customIdle) voidsetCustomSuccess(String customSuccess) voidsetCustomUnstable(String customUnstable) voidsetExcludeNames(String excludeNames) voidsetHideDisabled(boolean hideDisabled) voidsetIncludeNames(String includeNames) voidsetMinTileHeight(int minTileHeight) voidsetNameReplaceRegex(String nameReplaceRegex) voidsetPacking(String packing) voidsetPalette(String palette) voidsetRefreshSeconds(int refreshSeconds) voidsetSeamWidth(int seamWidth) voidvoidsetShowBuildNumber(boolean showBuildNumber) voidsetShowFolderPath(boolean showFolderPath) voidsetShowHeader(boolean showHeader) voidvoidvoidsetStatusScope(String statusScope) voidsetTileGap(int tileGap) protected voidsubmit(org.kohsuke.stapler.StaplerRequest2 req) Methods inherited from class hudson.model.ListView
add, contains, doAddJobToView, doCreateItem, doRemoveJobFromView, getColumns, getDefaultColumns, getIncludeRegex, getItems, getJobFilters, getJobNames, getStatusFilter, hasJobFilterExtensions, initColumns, initJobFilters, isAddToCurrentView, isRecurse, jobNamesContains, makeSearchIndex, remove, setColumns, setIncludeRegex, setJobFilters, setJobNames, setRecurse, setStatusFilter, submitMethods inherited from class hudson.model.View
all, allInstantiable, create, create, createViewFromXML, doCheckJobName, doChildrenContextMenu, doConfigDotXml, doConfigDotXml, doConfigSubmit, doCreateItem, doDoDelete, doItemCategories, doRssAll, doRssFailed, doRssLatest, doSubmitDescription, doSubmitDescription, getAbsoluteUrl, getACL, getActions, getAllItems, getAllProperties, getApi, getApplicablePropertyDescriptors, getApproximateQueueItemsQuickly, getBuilds, getComputers, getDescription, getDescriptor, getDisplayName, getDynamic, getIconFileName, getIndenter, getItem, getItemCreatePermission, getJob, getNewPronoun, getOwner, getOwnerItemGroup, getOwnerPrimaryView, getOwnerViewActions, getPostConstructLandingPage, getProperties, getQueueItems, getSearchGroup, getSearchIcon, getSearchUrl, getTimeline, getUrl, getViewName, getViewUrl, getVisiblePropertyDescriptors, isAutomaticRefreshEnabled, isDefault, isEditable, isFilterExecutors, isFilterQueue, isMyViewsProperty, makeSearchIndex, onJobRenamed, registerPermissions, rename, save, setDescription, setFilterExecutors, setFilterQueue, toString, updateByXml, updateTransientActions, writeXmlMethods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, requirePOST, sendError, sendError, sendError, sendError, sendError, sendError, sendError, sendErrorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface hudson.security.AccessControlled
checkAnyPermission, checkPermission, hasAnyPermission, hasPermission, hasPermission, hasPermission2Methods inherited from interface hudson.model.DescriptorByNameOwner
getDescriptorByNameMethods inherited from interface jenkins.widgets.HasWidgets
getWidget, getWidgetsMethods inherited from interface jenkins.model.ModelObjectWithChildren
doChildrenContextMenu
-
Constructor Details
-
LiveWallView
-
LiveWallView
-
-
Method Details
-
readResolve
- Overrides:
readResolvein classListView
-
getPalette
-
setPalette
-
getShape
-
setShape
-
getAnimation
-
setAnimation
-
getSizing
-
setSizing
-
getSortBy
-
setSortBy
-
getStatusScope
-
setStatusScope
-
getPacking
-
setPacking
-
getTileGap
public int getTileGap()Space between tiles in pixels. Zero by design: a wall, not a set of cards. -
setTileGap
@DataBoundSetter public void setTileGap(int tileGap) -
getSeamWidth
public int getSeamWidth()Width of the hairline of background colour drawn inside each tile's outline. -
setSeamWidth
@DataBoundSetter public void setSeamWidth(int seamWidth) -
getRefreshSeconds
public int getRefreshSeconds() -
setRefreshSeconds
@DataBoundSetter public void setRefreshSeconds(int refreshSeconds) -
getMinTileHeight
public int getMinTileHeight() -
setMinTileHeight
@DataBoundSetter public void setMinTileHeight(int minTileHeight) -
isShowHeader
public boolean isShowHeader() -
setShowHeader
@DataBoundSetter public void setShowHeader(boolean showHeader) -
isShowFolderPath
public boolean isShowFolderPath() -
setShowFolderPath
@DataBoundSetter public void setShowFolderPath(boolean showFolderPath) -
isShowBuildNumber
public boolean isShowBuildNumber() -
setShowBuildNumber
@DataBoundSetter public void setShowBuildNumber(boolean showBuildNumber) -
isHideDisabled
public boolean isHideDisabled() -
setHideDisabled
@DataBoundSetter public void setHideDisabled(boolean hideDisabled) -
isBurnInProtection
public boolean isBurnInProtection() -
setBurnInProtection
@DataBoundSetter public void setBurnInProtection(boolean burnInProtection) -
getIncludeNames
-
setIncludeNames
-
getExcludeNames
-
setExcludeNames
-
getNameReplaceRegex
-
setNameReplaceRegex
-
getCustomBackground
-
setCustomBackground
-
getCustomSuccess
-
setCustomSuccess
-
getCustomFailure
-
setCustomFailure
-
getCustomUnstable
-
setCustomUnstable
-
getCustomAborted
-
setCustomAborted
-
getCustomIdle
-
setCustomIdle
-
getCustomColors
The custom colours that survived validation, keyed bybackground,success,failure,unstable,abortedandidle. Emitted asdata-color-*attributes and applied by the browser as CSS custom properties, so an unset colour simply falls through to the built-in palette. -
getEmptyMessage
What to say when the wall has nothing on it. A problems-only wall being empty is the good outcome, and should read like one rather than like a misconfigured view. -
getPaletteOptions
-
getShapeOptions
-
getAnimationOptions
-
getPackingOptions
-
getSortByOptions
-
getTiles
Snapshots every job in the view that the current user may see, in the configured order.Cheap by design: for a job that is not building this touches nothing beyond the last build that rendering any Jenkins page would touch anyway, which is what makes a two second refresh across several hundred jobs affordable.
-
getTiles
Snapshots the wall in a given order. The order is a parameter rather than always the saved one so that the preview controls, and a kiosk URL, can try an ordering without anyone having to save it first. -
getTiles
@NonNull public List<Tile> getTiles(@NonNull SortBy sort, @NonNull io.jenkins.plugins.livewall.NameFilter filter) Snapshots the wall in a given order, keeping only the jobs a filter accepts.Order and filter are parameters rather than always the saved ones so that one view can feed several screens: the office TV shows everything, the team's monitor adds
?exclude=dev-*, and nobody has to maintain three views that drift apart. -
doWall
@GET public void doWall(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException The standalone full-screen page, at<view>/wall. This is the URL a television points at: no Jenkins header, no side panel, nothing but the wall.- Throws:
IOExceptionjakarta.servlet.ServletException
-
doWallData
@GET public void doWallData(org.kohsuke.stapler.StaplerResponse2 rsp, @QueryParameter String sortBy, @QueryParameter String include, @QueryParameter String exclude) throws IOException Serves the wall contents. Polled bywall.js; also a perfectly usable API.- Parameters:
sortBy- optional ordering for this request only, so that the preview controls and a kiosk URL can try one without changing what is saved. Anything unrecognised falls back to the view's own setting.- Throws:
IOException
-
doSaveLook
public void doSaveLook(org.kohsuke.stapler.StaplerResponse2 rsp, @QueryParameter String palette, @QueryParameter String shape, @QueryParameter String animation, @QueryParameter String packing, @QueryParameter String sortBy, @QueryParameter String gap, @QueryParameter String seam) throws IOException Persists the settings the preview bar can reach, so that a look arrived at by eye becomes the look the television gets.The preview controls deliberately change nothing on the server: you can try a palette on a wall of real jobs without committing to it. That leaves a gap, though — having found the right one, the only way to keep it was to reproduce the same choices in Configure from memory. This closes that gap without making the preview itself destructive.
Only the seven settings the bar exposes are touched. Everything else the view carries is left exactly as it was, so this can never quietly undo something set in Configure.
- Throws:
IOException
-
isLookSavable
public boolean isLookSavable()Whether the viewer may use the Save button, which is also enforced bydoSaveLook(org.kohsuke.stapler.StaplerResponse2, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String). -
submit
protected void submit(org.kohsuke.stapler.StaplerRequest2 req) throws IOException, jakarta.servlet.ServletException, Descriptor.FormException - Overrides:
submitin classListView- Throws:
IOExceptionjakarta.servlet.ServletExceptionDescriptor.FormException
-