diff --git a/src/assets/js/step-by-step-nav.js b/src/assets/js/step-by-step-nav.js deleted file mode 100644 index a87fd5122..000000000 --- a/src/assets/js/step-by-step-nav.js +++ /dev/null @@ -1,516 +0,0 @@ -//= require govuk/vendor/polyfills/Element/prototype/classList.js -//= require ../vendor/polyfills/closest.js -//= require ../vendor/polyfills/indexOf.js - -window.GOVUK = window.GOVUK || {} -window.GOVUK.Modules = window.GOVUK.Modules || {}; - -(function (Modules) { - function Gemstepnav ($module) { - this.$module = $module - this.$module.actions = {} // stores text for JS appended elements 'show' and 'hide' on steps, and 'show/hide all' button - this.$module.rememberShownStep = false - this.$module.stepNavSize = false - this.$module.sessionStoreLink = 'govuk-step-nav-active-link' - this.$module.activeLinkClass = 'gem-c-step-nav__list-item--active' - this.$module.activeStepClass = 'gem-c-step-nav__step--active' - this.$module.activeLinkHref = '#content' - this.$module.uniqueId = false - } - - Gemstepnav.prototype.init = function () { - // Indicate that js has worked - this.$module.classList.add('gem-c-step-nav--active') - - // Prevent FOUC, remove class hiding content - this.$module.classList.remove('js-hidden') - - this.$module.stepNavSize = this.$module.classList.contains('gem-c-step-nav--large') ? 'Big' : 'Small' - this.$module.rememberShownStep = !!this.$module.hasAttribute('data-remember') && this.$module.stepNavSize === 'Big' - - this.$module.steps = this.$module.querySelectorAll('.js-step') - this.$module.stepHeaders = this.$module.querySelectorAll('.js-toggle-panel') - this.$module.totalSteps = this.$module.querySelectorAll('.js-panel').length - this.$module.totalLinks = this.$module.querySelectorAll('.gem-c-step-nav__link').length - this.$module.showOrHideAllButton = false - - this.$module.uniqueId = this.$module.getAttribute('data-id') || false - - if (this.$module.uniqueId) { - this.$module.sessionStoreLink = this.$module.sessionStoreLink + '_' + this.$module.uniqueId - } - - const stepNavTracker = new this.StepNavTracker(this.$module.uniqueId, this.$module.totalSteps, this.$module.totalLinks) - - this.getTextForInsertedElements() - this.addButtonstoSteps() - this.addShowHideAllButton() - this.addShowHideToggle() - this.addAriaControlsAttrForShowHideAllButton() - - this.ensureOnlyOneActiveLink() - this.showPreviouslyOpenedSteps() - - this.bindToggleForSteps(stepNavTracker) - this.bindToggleShowHideAllButton(stepNavTracker) - this.bindComponentLinkClicks(stepNavTracker) - } - - Gemstepnav.prototype.getTextForInsertedElements = function () { - this.$module.actions.showText = this.$module.getAttribute('data-show-text') - this.$module.actions.hideText = this.$module.getAttribute('data-hide-text') - this.$module.actions.showAllText = this.$module.getAttribute('data-show-all-text') - this.$module.actions.hideAllText = this.$module.getAttribute('data-hide-all-text') - } - - Gemstepnav.prototype.addShowHideAllButton = function () { - const showAll = document.createElement('div') - const steps = this.$module.querySelectorAll('.gem-c-step-nav__steps')[0] - - showAll.className = 'gem-c-step-nav__controls govuk-!-display-none-print' - showAll.innerHTML = - '' - - this.$module.insertBefore(showAll, steps) - this.$module.showOrHideAllButton = this.$module.querySelectorAll('.js-step-controls-button')[0] - } - - Gemstepnav.prototype.addShowHideToggle = function () { - for (let i = 0; i < this.$module.stepHeaders.length; i++) { - const thisel = this.$module.stepHeaders[i] - - if (!thisel.querySelectorAll('.js-toggle-link').length) { - const showHideSpan = document.createElement('span') - const showHideSpanText = document.createElement('span') - const showHideSpanIcon = document.createElement('span') - const showHideSpanFocus = document.createElement('span') - const thisSectionSpan = document.createElement('span') - - showHideSpan.className = 'gem-c-step-nav__toggle-link js-toggle-link govuk-!-display-none-print' - showHideSpanText.className = 'gem-c-step-nav__button-text js-toggle-link-text' - showHideSpanIcon.className = 'gem-c-step-nav__chevron js-toggle-link-icon' - showHideSpanFocus.className = 'gem-c-step-nav__toggle-link-focus' - thisSectionSpan.className = 'govuk-visually-hidden' - - showHideSpan.appendChild(showHideSpanFocus) - showHideSpanFocus.appendChild(showHideSpanIcon) - showHideSpanFocus.appendChild(showHideSpanText) - - thisSectionSpan.innerHTML = ' this section' - showHideSpan.appendChild(thisSectionSpan) - - thisel.querySelectorAll('.js-step-title-button')[0].appendChild(showHideSpan) - } - } - } - - Gemstepnav.prototype.headerIsOpen = function (stepHeader) { - return (typeof stepHeader.parentNode.getAttribute('show') !== 'undefined') - } - - Gemstepnav.prototype.addAriaControlsAttrForShowHideAllButton = function () { - const ariaControlsValue = this.$module.querySelectorAll('.js-panel')[0].getAttribute('id') - - this.$module.showOrHideAllButton.setAttribute('aria-controls', ariaControlsValue) - } - - // called by show all/hide all, sets all steps accordingly - Gemstepnav.prototype.setAllStepsShownState = function (isShown) { - const data = [] - - for (let i = 0; i < this.$module.steps.length; i++) { - const stepView = new this.StepView(this.$module.steps[i], this.$module) - stepView.setIsShown(isShown) - - if (isShown) { - data.push(this.$module.steps[i].getAttribute('id')) - } - } - - if (isShown) { - this.saveToSessionStorage(this.$module.uniqueId, JSON.stringify(data)) - } else { - this.removeFromSessionStorage(this.$module.uniqueId) - } - } - - // called on load, determines whether each step should be open or closed - Gemstepnav.prototype.showPreviouslyOpenedSteps = function () { - const data = this.loadFromSessionStorage(this.$module.uniqueId) || [] - - for (let i = 0; i < this.$module.steps.length; i++) { - const thisel = this.$module.steps[i] - const id = thisel.getAttribute('id') - const stepView = new this.StepView(thisel, this.$module) - const shouldBeShown = thisel.hasAttribute('data-show') - - // show the step if it has been remembered or if it has the 'data-show' attribute - if ((this.$module.rememberShownStep && data.indexOf(id) > -1) || (shouldBeShown && shouldBeShown !== 'undefined')) { - stepView.setIsShown(true) - } else { - stepView.setIsShown(false) - } - } - - if (data.length > 0) { - this.$module.showOrHideAllButton.setAttribute('aria-expanded', true) - this.setShowHideAllText() - } - } - - Gemstepnav.prototype.addButtonstoSteps = function () { - for (let i = 0; i < this.$module.steps.length; i++) { - const thisel = this.$module.steps[i] - const title = thisel.querySelectorAll('.js-step-title')[0] - const contentId = thisel.querySelectorAll('.js-panel')[0].getAttribute('id') - const titleText = title.textContent || title.innerText // IE8 fallback - - title.outerHTML = - '' + - '' + - '' - } - } - - Gemstepnav.prototype.bindToggleForSteps = function (stepNavTracker) { - const that = this - const togglePanels = this.$module.querySelectorAll('.js-toggle-panel') - - for (let i = 0; i < togglePanels.length; i++) { - togglePanels[i].addEventListener('click', function (event) { - const stepView = new that.StepView(this.parentNode, that.$module) - stepView.toggle() - - const stepIsOptional = this.parentNode.hasAttribute('data-optional') - const toggleClick = new that.StepToggleClick(event, stepView, stepNavTracker, stepIsOptional, that.$module.stepNavSize) - toggleClick.trackClick() - - that.setShowHideAllText() - that.rememberStepState(this.parentNode) - }) - } - } - - // if the step is open, store its id in session store - // if the step is closed, remove its id from session store - Gemstepnav.prototype.rememberStepState = function (step) { - if (this.$module.rememberShownStep) { - const data = JSON.parse(this.loadFromSessionStorage(this.$module.uniqueId)) || [] - const thisstep = step.getAttribute('id') - const shown = step.classList.contains('step-is-shown') - - if (shown) { - data.push(thisstep) - } else { - const i = data.indexOf(thisstep) - if (i > -1) { - data.splice(i, 1) - } - } - this.saveToSessionStorage(this.$module.uniqueId, JSON.stringify(data)) - } - } - - // tracking click events on links in step content - Gemstepnav.prototype.bindComponentLinkClicks = function (stepNavTracker) { - const jsLinks = this.$module.querySelectorAll('.js-link') - const that = this - - for (let i = 0; i < jsLinks.length; i++) { - jsLinks[i].addEventListener('click', function (event) { - const dataPosition = this.getAttribute('data-position') - const linkClick = new that.ComponentLinkClick(event, stepNavTracker, dataPosition, that.$module.stepNavSize) - linkClick.trackClick() - - if (this.getAttribute('rel') !== 'external') { - that.saveToSessionStorage(that.$module.sessionStoreLink, dataPosition) - } - - if (this.getAttribute('href') === that.$module.activeLinkHref) { - that.setOnlyThisLinkActive(this) - that.setActiveStepClass() - } - }) - } - } - - Gemstepnav.prototype.saveToSessionStorage = function (key, value) { - window.sessionStorage.setItem(key, value) - } - - Gemstepnav.prototype.loadFromSessionStorage = function (key, value) { - return window.sessionStorage.getItem(key) - } - - Gemstepnav.prototype.removeFromSessionStorage = function (key) { - window.sessionStorage.removeItem(key) - } - - Gemstepnav.prototype.setOnlyThisLinkActive = function (clicked) { - const allActiveLinks = this.$module.querySelectorAll('.' + this.$module.activeLinkClass) - for (let i = 0; i < allActiveLinks.length; i++) { - allActiveLinks[i].classList.remove(this.$module.activeLinkClass) - } - clicked.parentNode.classList.add(this.$module.activeLinkClass) - } - - // if a link occurs more than once in a step nav, the backend doesn't know which one to highlight - // so it gives all those links the 'active' attribute and highlights the last step containing that link - // if the user clicked on one of those links previously, it will be in the session store - // this code ensures only that link and its corresponding step have the highlighting - // otherwise it accepts what the backend has already passed to the component - Gemstepnav.prototype.ensureOnlyOneActiveLink = function () { - const activeLinks = this.$module.querySelectorAll('.js-list-item.' + this.$module.activeLinkClass) - - if (activeLinks.length <= 1) { - return - } - - const loaded = this.loadFromSessionStorage(this.$module.sessionStoreLink) - const activeParent = this.$module.querySelectorAll('.' + this.$module.activeLinkClass)[0] - const activeChild = activeParent.firstChild - const foundLink = activeChild.getAttribute('data-position') - let lastClicked = loaded || foundLink // the value saved has priority - - // it's possible for the saved link position value to not match any of the currently duplicate highlighted links - // so check this otherwise it'll take the highlighting off all of them - const checkLink = this.$module.querySelectorAll('[data-position="' + lastClicked + '"]')[0] - - if (checkLink) { - if (!checkLink.parentNode.classList.contains(this.$module.activeLinkClass)) { - lastClicked = checkLink - } - } else { - lastClicked = foundLink - } - - this.removeActiveStateFromAllButCurrent(activeLinks, lastClicked) - this.setActiveStepClass() - } - - Gemstepnav.prototype.removeActiveStateFromAllButCurrent = function (activeLinks, current) { - for (let i = 0; i < activeLinks.length; i++) { - const thisel = activeLinks[i] - if (thisel.querySelectorAll('.js-link')[0].getAttribute('data-position').toString() !== current.toString()) { - thisel.classList.remove(this.$module.activeLinkClass) - const visuallyHidden = thisel.querySelectorAll('.visuallyhidden') - if (visuallyHidden.length) { - visuallyHidden[0].parentNode.removeChild(visuallyHidden[0]) - } - } - } - } - - Gemstepnav.prototype.setActiveStepClass = function () { - // remove the 'active/open' state from all steps - const allActiveSteps = this.$module.querySelectorAll('.' + this.$module.activeStepClass) - for (let i = 0; i < allActiveSteps.length; i++) { - allActiveSteps[i].classList.remove(this.$module.activeStepClass) - allActiveSteps[i].removeAttribute('data-show') - } - - // find the current page link and apply 'active/open' state to parent step - const activeLink = this.$module.querySelectorAll('.' + this.$module.activeLinkClass)[0] - if (activeLink) { - const activeStep = activeLink.closest('.gem-c-step-nav__step') - activeStep.classList.add(this.$module.activeStepClass) - activeStep.setAttribute('data-show', '') - } - } - - Gemstepnav.prototype.bindToggleShowHideAllButton = function (stepNavTracker) { - const that = this - - this.$module.showOrHideAllButton.addEventListener('click', function (event) { - const textContent = this.textContent || this.innerText - const shouldShowAll = textContent === that.$module.actions.showAllText - - // Fire GA click tracking - stepNavTracker.trackClick('pageElementInteraction', (shouldShowAll ? 'stepNavAllShown' : 'stepNavAllHidden'), { - label: (shouldShowAll ? that.$module.actions.showAllText : that.$module.actions.hideAllText) + ': ' + that.$module.stepNavSize - }) - - that.setAllStepsShownState(shouldShowAll) - that.$module.showOrHideAllButton.setAttribute('aria-expanded', shouldShowAll) - that.setShowHideAllText() - - return false - }) - } - - Gemstepnav.prototype.setShowHideAllText = function () { - const shownSteps = this.$module.querySelectorAll('.step-is-shown').length - const showAllChevon = this.$module.showOrHideAllButton.querySelector('.js-step-controls-button-icon') - const showAllButtonText = this.$module.showOrHideAllButton.querySelector('.js-step-controls-button-text') - // Find out if the number of is-opens == total number of steps - const shownStepsIsTotalSteps = shownSteps === this.$module.totalSteps - - if (shownStepsIsTotalSteps) { - showAllButtonText.innerHTML = this.$module.actions.hideAllText - showAllChevon.classList.remove('gem-c-step-nav__chevron--down') - } else { - showAllButtonText.innerHTML = this.$module.actions.showAllText - showAllChevon.classList.add('gem-c-step-nav__chevron--down') - } - } - - Gemstepnav.prototype.StepView = function (stepElement, $module) { - this.stepElement = stepElement - this.stepContent = this.stepElement.querySelectorAll('.js-panel')[0] - this.titleButton = this.stepElement.querySelectorAll('.js-step-title-button')[0] - const textElement = this.stepElement.querySelectorAll('.js-step-title-text')[0] - this.title = textElement.textContent || textElement.innerText - this.title = this.title.replace(/^\s+|\s+$/g, '') // this is 'trim' but supporting IE8 - this.showText = $module.actions.showText - this.hideText = $module.actions.hideText - this.upChevronSvg = $module.upChevronSvg - this.downChevronSvg = $module.downChevronSvg - - this.show = function () { - this.setIsShown(true) - } - - this.hide = function () { - this.setIsShown(false) - } - - this.toggle = function () { - this.setIsShown(this.isHidden()) - } - - this.setIsShown = function (isShown) { - const toggleLink = this.stepElement.querySelectorAll('.js-toggle-link')[0] - const toggleLinkText = toggleLink.querySelector('.js-toggle-link-text') - const stepChevron = toggleLink.querySelector('.js-toggle-link-icon') - - if (isShown) { - this.stepElement.classList.add('step-is-shown') - this.stepContent.classList.remove('js-hidden') - toggleLinkText.innerHTML = this.hideText - stepChevron.classList.remove('gem-c-step-nav__chevron--down') - this.stepContent.style.display = 'block' - } else { - this.stepElement.classList.remove('step-is-shown') - this.stepContent.classList.add('js-hidden') - toggleLinkText.innerHTML = this.showText - stepChevron.classList.add('gem-c-step-nav__chevron--down') - this.stepContent.style.display = 'none' - } - this.titleButton.setAttribute('aria-expanded', isShown) - } - - this.isShown = function () { - return this.stepElement.classList.contains('step-is-shown') - } - - this.isHidden = function () { - return !this.isShown() - } - - this.numberOfContentItems = function () { - return this.stepContent.querySelectorAll('.js-link').length - } - } - - Gemstepnav.prototype.StepToggleClick = function (event, stepView, stepNavTracker, stepIsOptional, stepNavSize) { - this.target = event.target - this.stepIsOptional = stepIsOptional - this.stepNavSize = stepNavSize - - this.trackClick = function () { - const trackingOptions = { label: this.trackingLabel(), dimension28: stepView.numberOfContentItems().toString() } - stepNavTracker.trackClick('pageElementInteraction', this.trackingAction(), trackingOptions) - } - - this.trackingLabel = function () { - const clickedNearbyToggle = this.target.closest('.js-step').querySelectorAll('.js-toggle-panel')[0] - return clickedNearbyToggle.getAttribute('data-position') + ' - ' + stepView.title + ' - ' + this.locateClickElement() + ': ' + this.stepNavSize + this.isOptional() - } - - // returns index of the clicked step in the overall number of steps - this.stepIndex = function () { // eslint-disable-line no-unused-vars - return this.$module.steps.index(stepView.element) + 1 - } - - this.trackingAction = function () { - return (stepView.isHidden() ? 'stepNavHidden' : 'stepNavShown') - } - - this.locateClickElement = function () { - if (this.clickedOnIcon()) { - return this.iconType() + ' click' - } else if (this.clickedOnHeading()) { - return 'Heading click' - } else { - return 'Elsewhere click' - } - } - - this.clickedOnIcon = function () { - return this.target.classList.contains('js-toggle-link') - } - - this.clickedOnHeading = function () { - return this.target.classList.contains('js-step-title-text') - } - - this.iconType = function () { - return (stepView.isHidden() ? 'Minus' : 'Plus') - } - - this.isOptional = function () { - return (this.stepIsOptional ? ' ; optional' : '') - } - } - - Gemstepnav.prototype.ComponentLinkClick = function (event, stepNavTracker, linkPosition, size) { - this.size = size - this.target = event.target - - this.trackClick = function () { - const trackingOptions = { label: this.target.getAttribute('href') + ' : ' + this.size } - const dimension28 = this.target.closest('.gem-c-step-nav__list').getAttribute('data-length') - - if (dimension28) { - trackingOptions.dimension28 = dimension28 - } - - stepNavTracker.trackClick('stepNavLinkClicked', linkPosition, trackingOptions) - } - } - - // A helper that sends a custom event request to Google Analytics if - // the GOVUK module is setup - Gemstepnav.prototype.StepNavTracker = function (uniqueId, totalSteps, totalLinks) { - this.totalSteps = totalSteps - this.totalLinks = totalLinks - this.uniqueId = uniqueId - - this.trackClick = function (category, action, options) { - // dimension26 records the total number of expand/collapse steps in this step nav - // dimension27 records the total number of links in this step nav - // dimension28 records the number of links in the step that was shown/hidden (handled in click event) - if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) { - options = options || {} - options.dimension26 = options.dimension26 || this.totalSteps.toString() - options.dimension27 = options.dimension27 || this.totalLinks.toString() - options.dimension96 = options.dimension96 || this.uniqueId - window.GOVUK.analytics.trackEvent(category, action, options) - } - } - } - - Modules.Gemstepnav = Gemstepnav -})(window.GOVUK.Modules) diff --git a/src/assets/scss/components/_sub-navigation.scss b/src/assets/scss/components/_sub-navigation.scss index f63d0112f..d474b66e1 100644 --- a/src/assets/scss/components/_sub-navigation.scss +++ b/src/assets/scss/components/_sub-navigation.scss @@ -1,8 +1,19 @@ +.app-grid-row--flex { + display: flex; + flex-wrap: wrap; + + &::after { + display: none; + } +} + .app-subnav { // Since the back to top link is outside the flow of the document we need to create a space for it. // This number is magic and was determined by manually judging the visual spacing. margin-bottom: 100px; padding: 0 govuk-spacing(3) 0 0; + position: sticky; + top: govuk-spacing(3); @include govuk-font(16); } diff --git a/src/assets/scss/index.scss b/src/assets/scss/index.scss index 95cbd7998..25ec38cfd 100644 --- a/src/assets/scss/index.scss +++ b/src/assets/scss/index.scss @@ -4,7 +4,6 @@ $govuk-global-styles: true; @import "node_modules/@x-govuk/govuk-prototype-components/x-govuk/all"; @import "node_modules/maplibre-gl/dist/maplibre-gl"; @import "src/assets/scss/_scrollable-container.scss"; -@import "./step-by-step-nav.scss"; @import "./overrides"; @import "./components/dataset-navigation"; @import "./components/cookie-banner"; diff --git a/src/assets/scss/step-by-step-nav.scss b/src/assets/scss/step-by-step-nav.scss deleted file mode 100644 index 40d6318e3..000000000 --- a/src/assets/scss/step-by-step-nav.scss +++ /dev/null @@ -1,857 +0,0 @@ -.gem-c-step-nav { - margin-bottom: 30px -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav.gem-c-step-nav--large { - margin-bottom:60px - } -} - -.js-enabled .gem-c-step-nav.js-hidden { - display: none -} - -.gem-c-step-nav__controls { - padding: 3px 3px 0 0 -} - -.gem-c-step-nav____title-text-focus { - margin-bottom: 13px; - display: inline-block -} - -.gem-c-step-nav__chevron { - box-sizing: border-box; - display: inline-block; - position: relative; - width: 1.25rem; - height: 1.25rem; - border: .0625rem solid; - border-radius: 50%; - vertical-align: text-top -} - -.gem-c-step-nav--large .gem-c-step-nav__chevron { - vertical-align: top -} - -.gem-c-step-nav__chevron::after { - content: ""; - box-sizing: border-box; - display: block; - position: absolute; - bottom: .3125rem; - left: .375rem; - width: .375rem; - height: .375rem; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); - border-top: .125rem solid; - border-right: .125rem solid -} - -.gem-c-step-nav__chevron--down { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg) -} - -.gem-c-step-nav__button { - color: #1d70b8; - cursor: pointer; - background: none; - border: 0; - margin: 0 -} - -.gem-c-step-nav__button:hover { - background: #f3f2f1 -} - -.gem-c-step-nav__button:hover .gem-c-step-nav__chevron { - color: #0b0c0c; - background: #0b0c0c -} - -.gem-c-step-nav__button:hover .gem-c-step-nav__chevron::after { - color: #f3f2f1 -} - -.gem-c-step-nav__button:hover .gem-c-step-nav__button-text { - color: #0b0c0c -} - -.gem-c-step-nav__button:focus { - outline: 0 -} - -.gem-c-step-nav__button:focus .gem-c-step-nav__chevron { - color: #0b0c0c; - background: #0b0c0c -} - -.gem-c-step-nav__button:focus .gem-c-step-nav__chevron::after { - color: #fd0 -} - -.gem-c-step-nav__button:focus .gem-c-step-nav____title-text-focus,.gem-c-step-nav__button:focus .gem-c-step-nav__toggle-link-focus { - outline: 3px solid rgba(0,0,0,0); - color: #0b0c0c; - background-color: #fd0; - box-shadow: 0 -2px #fd0,0 4px #0b0c0c; - text-decoration: none; - -webkit-box-decoration-break: clone; - box-decoration-break: clone -} - -.gem-c-step-nav__button:focus .gem-c-step-nav__toggle-link-focus { - padding-bottom: 2px -} - -.gem-c-step-nav__button::-moz-focus-inner { - border: 0 -} - -.gem-c-step-nav__button--title { - display: inline-block; - padding: 5px 0 0; - text-align: left; - color: #0b0c0c; - width: 100%; - font-size: 19px; - font-weight: bold; - line-height: 1.2; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav__button--title { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav__button--title { - font-size:19px; - line-height: 1.2 - } -} - -.gem-c-step-nav--large .gem-c-step-nav__button--title { - font-size: 19px; - font-weight: bold; - line-height: 1.3; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav--large .gem-c-step-nav__button--title { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__button--title { - font-size:24px; - line-height: 1.3 - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__button--title { - padding-top:10px - } -} - -.gem-c-step-nav__button--controls { - position: relative; - z-index: 1; - margin: .5em 0 14px; - padding: 5px 0 5px; - font-size: 15px; - font-weight: normal; - line-height: 1.3; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav__button--controls { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav__button--controls { - font-size:15px; - line-height: 1.3 - } -} - -.gem-c-step-nav--large .gem-c-step-nav__button--controls { - font-size: 15px; - font-weight: normal; - line-height: 1.3; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav--large .gem-c-step-nav__button--controls { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__button--controls { - font-size:19px; - line-height: 1.3 - } -} - -.gem-c-step-nav__button--controls:focus { - outline: 3px solid rgba(0,0,0,0); - color: #0b0c0c; - background-color: #fd0; - box-shadow: 0 -2px #fd0,0 4px #0b0c0c; - text-decoration: none; - -webkit-box-decoration-break: clone; - box-decoration-break: clone -} - -.gem-c-step-nav__button--controls:focus .gem-c-step-nav__button-text { - text-decoration: none -} - -.gem-c-step-nav__button-text { - display: inline-block; - text-align: left; - min-width: 2.5em; - margin-left: 5px -} - -.gem-c-step-nav--large .gem-c-step-nav__button-text { - min-width: 2.5em; - margin-left: 5px -} - -.gem-c-step-nav__button-text--all { - min-width: 6.2142857143em -} - -.gem-c-step-nav--large .gem-c-step-nav__button-text--all { - min-width: 6.25em -} - -.gem-c-step-nav__steps { - padding: 0; - margin: 0 -} - -.gem-c-step-nav__step { - position: relative; - padding-left: 2.8125em; - list-style: none -} - -.gem-c-step-nav__step::after { - content: ""; - position: absolute; - z-index: 2; - width: 0; - height: 100%; - border-left: solid 1px #b1b4b6; - background: #fff; - left: 0; - margin-left: .90625em; - top: .9375em -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__step { - padding-left:3.75em - } - - .gem-c-step-nav--large .gem-c-step-nav__step::after { - left: 0; - margin-left: 1.0625em; - top: 1.875em - } -} - -.gem-c-step-nav__step:last-child::before { - content: ""; - position: absolute; - z-index: 6; - bottom: 0; - left: 0; - margin-left: 7.5px; - width: 15px; - height: 0; - border-bottom: solid 1px #b1b4b6 -} - -.gem-c-step-nav__step:last-child::after { - height: -webkit-calc(100% - 15px); - height: calc(100% - 15px) -} - -.gem-c-step-nav__step:last-child .gem-c-step-nav__help::after { - height: 100% -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__step:last-child::before { - margin-left:8.75px; - width: 17.5px - } - - .gem-c-step-nav--large .gem-c-step-nav__step:last-child::after { - height: calc(100% - 30px) - } -} - -.gem-c-step-nav__step--active:last-child::before,.gem-c-step-nav__step--active .gem-c-step-nav__circle--number,.gem-c-step-nav__step--active::after,.gem-c-step-nav__step--active .gem-c-step-nav__help::after { - border-color: #0b0c0c -} - -.gem-c-step-nav__circle { - box-sizing: border-box; - position: absolute; - z-index: 5; - top: 3px; - left: 0; - width: 1.875em; - height: 1.875em; - color: #0b0c0c; - background: #fff; - border-radius: 100px; - text-align: center -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__circle { - top:11px; - width: 1.8421052632em; - height: 1.8421052632em - } -} - -.gem-c-step-nav__circle--number { - border: solid 1px #b1b4b6; - font-size: 16px; - font-weight: bold; - line-height: 29px; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav__circle--number { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav__circle--number { - font-size:16px; - line-height: 29px - } -} - -.gem-c-step-nav--large .gem-c-step-nav__circle--number { - font-size: 16px; - font-weight: bold; - line-height: 29px; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav--large .gem-c-step-nav__circle--number { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__circle--number { - font-size:19px; - line-height: 34px - } -} - -.gem-c-step-nav__step--active .gem-c-step-nav__circle--number { - background-color: #0b0c0c -} - -.gem-c-step-nav__step--active .gem-c-step-nav__circle--number .gem-c-step-nav__circle-background { - text-shadow: none; - color: #fff -} - -.gem-c-step-nav__circle--logic { - left: 3px; - width: 1.5789473684em; - height: 1.5789473684em; - font-size: 19px; - font-weight: bold; - line-height: 28px; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav__circle--logic { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav__circle--logic { - font-size:19px; - line-height: 28px - } -} - -.gem-c-step-nav--large .gem-c-step-nav__circle--logic { - font-size: 19px; - font-weight: bold; - line-height: 28px; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav--large .gem-c-step-nav__circle--logic { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__circle--logic { - font-size:24px; - line-height: 34px - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__circle--logic { - width:1.4583333333em; - height: 1.4583333333em - } -} - -.gem-c-step-nav__circle-inner { - float: right; - min-width: 100% -} - -.gem-c-step-nav__circle-background { - text-shadow: 0 -0.1em 0 #fff,.1em 0 0 #fff,0 .1em 0 #fff,-0.1em 0 0 #fff -} - -.gem-c-step-nav__circle-step-label,.gem-c-step-nav__circle-step-colon { - position: absolute !important; - width: 1px !important; - height: 1px !important; - margin: 0 !important; - padding: 0 !important; - overflow: hidden !important; - clip: rect(0 0 0 0) !important; - -webkit-clip-path: inset(50%) !important; - clip-path: inset(50%) !important; - border: 0 !important; - white-space: nowrap !important; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none -} - -.gem-c-step-nav__circle-step-label::before,.gem-c-step-nav__circle-step-colon::before { - content: " " -} - -.gem-c-step-nav__circle-step-label::after,.gem-c-step-nav__circle-step-colon::after { - content: " " -} - -.gem-c-step-nav__header { - border-top: solid 1px #b1b4b6; - padding: 5px 0 30px -} - -.gem-c-step-nav--large .gem-c-step-nav__header { - padding-top: 10px -} - -.js-enabled .gem-c-step-nav__header { - padding: 0 -} - -.gem-c-step-nav--active .gem-c-step-nav__header { - cursor: pointer -} - -.gem-c-step-nav__title { - margin: 0; - font-size: 19px; - font-weight: bold; - line-height: 1.4; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #0b0c0c -} - -@media print { - .gem-c-step-nav__title { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav__title { - font-size:19px; - line-height: 1.4 - } -} - -@media print { - .gem-c-step-nav__title { - color: #000 - } -} - -.gem-c-step-nav--large .gem-c-step-nav__title { - font-size: 19px; - font-weight: bold; - line-height: 1.4; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav--large .gem-c-step-nav__title { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__title { - font-size:24px; - line-height: 1.4 - } -} - -.gem-c-step-nav__toggle-link { - display: block; - color: #1d70b8; - text-transform: capitalize; - padding-bottom: 30px; - font-size: 15px; - font-weight: normal; - line-height: 1.2; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav__toggle-link { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav__toggle-link { - font-size:15px; - line-height: 1.2 - } -} - -.gem-c-step-nav--large .gem-c-step-nav__toggle-link { - font-size: 15px; - font-weight: normal; - line-height: 1.2; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav--large .gem-c-step-nav__toggle-link { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__toggle-link { - font-size:19px; - line-height: 1.2 - } -} - -.gem-c-step-nav__panel { - padding-bottom: 25px; - font-size: 16px; - font-weight: normal; - line-height: 1.3; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #0b0c0c -} - -@media print { - .gem-c-step-nav__panel { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav__panel { - font-size:16px; - line-height: 1.3 - } -} - -@media print { - .gem-c-step-nav__panel { - color: #000 - } -} - -.gem-c-step-nav--large .gem-c-step-nav__panel { - font-size: 16px; - font-weight: normal; - line-height: 1.3; - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale -} - -@media print { - .gem-c-step-nav--large .gem-c-step-nav__panel { - font-family: sans-serif - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__panel { - font-size:19px; - line-height: 1.3 - } -} - -.js-enabled .gem-c-step-nav__panel.js-hidden { - display: none -} - -.gem-c-step-nav__paragraph { - padding-bottom: 15px; - margin: 0; - font-size: inherit -} - -.gem-c-step-nav__paragraph+.gem-c-step-nav__list { - margin-top: -5px -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__paragraph { - padding-bottom:30px - } -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__paragraph+.gem-c-step-nav__list { - margin-top:-15px - } -} - -.gem-c-step-nav__list { - padding: 0; - padding-bottom: 10px; - list-style: none -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__list { - padding-bottom:20px - } -} - -.gem-c-step-nav__list--choice { - margin-left: 20px; - list-style: disc -} - -.gem-c-step-nav__list--choice .gem-c-step-nav__list-item--active::before { - left: -65px -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__list--choice .gem-c-step-nav__list-item--active::before { - left:-80px - } -} - -.gem-c-step-nav__list-item { - margin-bottom: 10px -} - -.gem-c-step-nav__link { - font-family: "GDS Transport",arial,sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-decoration: underline; - text-decoration-thickness: max(1px, .0625rem); - text-underline-offset: .1578em -} - -@media print { - .gem-c-step-nav__link { - font-family: sans-serif - } -} - -.gem-c-step-nav__link:hover { - text-decoration-thickness: max(3px, .1875rem, .12em); - -webkit-text-decoration-skip-ink: none; - text-decoration-skip-ink: none; - -webkit-text-decoration-skip: none; - text-decoration-skip: none -} - -.gem-c-step-nav__link:focus { - outline: 3px solid rgba(0,0,0,0); - color: #0b0c0c; - background-color: #fd0; - box-shadow: 0 -2px #fd0,0 4px #0b0c0c; - text-decoration: none; - -webkit-box-decoration-break: clone; - box-decoration-break: clone -} - -.gem-c-step-nav__link:link { - color: #1d70b8 -} - -.gem-c-step-nav__link:visited { - color: #4c2c92 -} - -.gem-c-step-nav__link:hover { - color: #003078 -} - -.gem-c-step-nav__link:active { - color: #0b0c0c -} - -.gem-c-step-nav__link:focus { - color: #0b0c0c -} - -.gem-c-step-nav__link-active-context { - position: absolute !important; - width: 1px !important; - height: 1px !important; - margin: 0 !important; - padding: 0 !important; - overflow: hidden !important; - clip: rect(0 0 0 0) !important; - -webkit-clip-path: inset(50%) !important; - clip-path: inset(50%) !important; - border: 0 !important; - white-space: nowrap !important; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none -} - -.gem-c-step-nav__link-active-context::before { - content: " " -} - -.gem-c-step-nav__link-active-context::after { - content: " " -} - -.gem-c-step-nav__list-item--active { - position: relative -} - -.gem-c-step-nav__list-item--active::before { - box-sizing: border-box; - content: ""; - position: absolute; - z-index: 5; - top: .6em; - left: -45px; - margin-top: -0.5px; - margin-left: 15px; - width: 15px; - height: 1px; - background: #0b0c0c -} - -@media(min-width: 40.0625em) { - .gem-c-step-nav--large .gem-c-step-nav__list-item--active::before { - left:-60px; - margin-left: 17.5px - } -} - -.gem-c-step-nav__list-item--active .gem-c-step-nav__link:link,.gem-c-step-nav__list-item--active .gem-c-step-nav__link:visited { - color: #0b0c0c -} - -@media print { - .gem-c-step-nav__list-item--active .gem-c-step-nav__link:link,.gem-c-step-nav__list-item--active .gem-c-step-nav__link:visited { - color: #000 - } -} - -.gem-c-step-nav__list-item--active .gem-c-step-nav__link:hover { - color: rgba(11,12,12,.99) -} - -.gem-c-step-nav__list-item--active .gem-c-step-nav__link:active,.gem-c-step-nav__list-item--active .gem-c-step-nav__link:focus { - color: #0b0c0c -} - -@media print { - .gem-c-step-nav__list-item--active .gem-c-step-nav__link:active,.gem-c-step-nav__list-item--active .gem-c-step-nav__link:focus { - color: #000 - } -} - -.gem-c-step-nav__context { - display: inline-block; - font-weight: normal; - color: #505a5f -} - -.gem-c-step-nav__context::before { - content: " – " -} - -@media print { - .gem-c-step-nav__panel { - display: block !important - } -} diff --git a/src/views/includes/_dataset-page-header.html b/src/views/includes/_dataset-page-header.html index 5f929868b..b56fad4be 100644 --- a/src/views/includes/_dataset-page-header.html +++ b/src/views/includes/_dataset-page-header.html @@ -1,4 +1,3 @@ -
{% if authority and authority === "some" %} {{ organisation.name }}

Review alternative source of {{ dataset.dataset | datasetSlugToReadableName }} data

@@ -9,5 +8,4 @@

{{ dataset.dataset | datasetSlugToReadableName(true {% if notice %} {{ deadlineNotice(dataset.dataset, notice, organisation) }} {% endif %} -{% endif %} -

\ No newline at end of file +{% endif %} \ No newline at end of file diff --git a/src/views/organisations/dataset-overview.html b/src/views/organisations/dataset-overview.html index eeac90bc9..28f5335d0 100644 --- a/src/views/organisations/dataset-overview.html +++ b/src/views/organisations/dataset-overview.html @@ -180,7 +180,9 @@ {% block content %}
+
{% include "includes/_dataset-page-header.html" %} +
{% include "includes/_planning-group-notice.html" %} diff --git a/src/views/organisations/datasetTaskList.html b/src/views/organisations/datasetTaskList.html index ebed926c1..f7864ab9b 100644 --- a/src/views/organisations/datasetTaskList.html +++ b/src/views/organisations/datasetTaskList.html @@ -38,7 +38,9 @@ {% block content %}
- {% include "includes/_dataset-page-header.html" %} +
+ {% include "includes/_dataset-page-header.html" %} +
{% include "includes/_planning-group-notice.html" %} diff --git a/src/views/organisations/dataview.html b/src/views/organisations/dataview.html index dfae18e28..a1d82125b 100644 --- a/src/views/organisations/dataview.html +++ b/src/views/organisations/dataview.html @@ -41,7 +41,9 @@ {% block content %}
- {% include "includes/_dataset-page-header.html" %} +
+ {% include "includes/_dataset-page-header.html" %} +
{% include "includes/_planning-group-notice.html" %} diff --git a/src/views/organisations/get-started.html b/src/views/organisations/get-started.html index 1c6f21789..c9f7b1395 100644 --- a/src/views/organisations/get-started.html +++ b/src/views/organisations/get-started.html @@ -6,6 +6,18 @@ {{organisation.name}} - {{dataset.dataset | datasetSlugToReadableName(true)}} - Get started {% endset %} +{% set navigation = { + title: "Contents", + items: [ + { label: "Prepare your data", url: "#prepare-your-data" }, + { label: "Check your data", url: "#check-your-data" }, + { label: "Publish your data", url: "#publish-your-data" }, + { label: "Provide your data", url: "#provide-your-data" }, + { label: "View your data", url: "#view-your-data" }, + { label: "Update your data", url: "#update-your-data" } + ] +} %} + {% extends "layouts/main.html" %} {% block beforeContent %} @@ -36,228 +48,143 @@ {% block content %} -
- {% include "includes/_dataset-page-header.html" %} -
+ {% include "includes/_planning-group-notice.html" %} -
+
+
+ {% include "components/sub-navigation.html" %} +
+
+
+
+ {% include "includes/_dataset-page-header.html" %} +
+
{% if authority and authority === "some" %}

How to improve {{ organisation.name }}'s data

{% else %}

How to prepare and provide your {{ dataset.dataset | datasetSlugToReadableName }} data

{% endif %} -
-
    -
  1. -
    -

    - - - - Step 1 - - - - - - Prepare your data - -

    -
    - -
    -

    Read the guidance to understand what - data is required. Start with - the fields you already have, you can update and - improve your data over time.

    - {% if authority and authority === "some" %} -

    - If we have data from alternative sources, you can download this from your dataset details page to help you get started. -

    - {% endif %} -
    - -
  2. - -
  3. -
    -

    - - - - Step 2 - - - - - - Check your data meets the specifications - -

    -
    - -
    -
      -
    1. -

      - The check service can help you understand - if - your data is ready to provide or if you need to change anything before you publish it on your website. -

      - -

      You need to choose to provide your data in one of these file formats: -

      - -
        -
      • CSV
      • -
      • GeoJSON
      • -
      • GML
      • -
      • GeoPackage
      • -
      - -

      Alternatively you can provide us with a URL.

      - -
        -
      1. - Check your data -
      2. -
      -
    2. -
    -
    - -
  4. - -
  5. -
    -

    - - - - Step 3 - - - - - Publish your data - -

    -
    - -
    -

    Your data must be hosted on a URL the public can access (this is your - endpoint URL).

    - -

    You must link to that URL from a webpage about the data (your - webpage URL).

    - -

    Your webpage URL needs to be on your official planning authority - website, usually ending in gov.uk.

    - -

    It should also include a statement that the data is provided under the - Open Government Licence.

    -
    - -
  6. - -
  7. -
    -

    - - - - Step 4 - - - - - - Provide your data - -

    -
    - -
    -

    Check your endpoint URL — once the check is complete you will be able to submit your data details to us.

    -

    - When you're ready to provide your data to the Planning Data Platform, you will need to submit your: -

    -
      -
    • - full name -
    • -
    • - work email address -
    • -
    • - webpage URL -
    • -
    - -

    - Check your data and provide it -

    -
    -
  8. - -
  9. -
    -

    - - - - Step 5 - - - - - - Update your data - -

    -
    - -
    -

    - Whenever the data changes, update it on your endpoint URL. We will collect data from your endpoint URL - every day. -

    - -

    - Your endpoint URL needs to remain the same, don’t change it when you make updates. -

    - -
    - -
  10. - -
-
+
+

Prepare your data

+

Your data does not need to be complete or perfect to start. You can start with what you have and improve it over time.

+ {% if authority and authority === "some" %} +

If we have data from alternative sources, you can download it from your dataset details page to help you get started.

+ {% endif %} +

Find out more about how to prepare your data

+
+ +
+

Check your data

+

Check your data to find out if it is ready to publish or if you need to make any changes.

+

When your data is ready, you can publish it on your website.

+

You can check your data using any of the following:

+
    +
  • CSV
  • +
  • GeoJSON
  • +
  • GML
  • +
  • GeoPackage
  • +
  • your endpoint URL - the URL of the data file or feed itself
  • +
+
+ +
+

Publish your data

+

You must publish your data:

+
    +
  • on a webpage on your official planning authority's website - which usually ends in gov.uk
  • +
  • in a format that is clear and easy to understand
  • +
+

You can publish your data using any of the following:

+
    +
  • CSV
  • +
  • GeoJSON
  • +
  • GML
  • +
  • GeoPackage
  • +
+

You must include a statement to confirm that you provided the data under the Open Government Licence.

+ +

Hosting your data

+

An endpoint URL is where anyone can download your data.

+

Endpoints are usually either a:

+
    +
  • file hosted on your web server - like URLs that end in .json or .csv
  • +
  • live data feed from an API - hosted by your Geographic Information System (GIS) software or open data platform
  • +
+
+

Help with providing data using an ArcGIS data layer

+

An ArcGIS data layer URL usually looks like this:

+

https://maps.example.gov.uk/arcgis/rest/services/Planning/LocalPlans/FeatureServer/0

+

This URL is made up of:

+
    +
  • the organisation's website (maps.example.gov.uk)
  • +
  • the ArcGIS REST services path (/arcgis/rest/services)
  • +
  • the name of the service (Planning/LocalPlans)
  • +
  • the type of service (for example FeatureServer or MapServer)
  • +
  • a number that identifies the layer within the service (/0)
  • +
+
+

You only need to make changes to your data at your endpoint URL. Do not change your endpoint URL when you make updates.

+ +

Create your webpage

+

For each dataset, your webpage must include a:

+
    +
  • link to the endpoint URL
  • +
  • summary of what the data is about
  • +
  • statement that the data is provided under the Open Government Licence
  • +
+

Within your endpoint, you will need a documentation-url for each record in your dataset.

+ +

Give each record a documentation-URL

+

Each record in your dataset needs a documentation-url, so that we can find the part of your webpage that includes the record.

+

Each documentation-URL must be unique. There are 2 ways that you can create a unique URL.

+

1. One page per record

+

Give each record its own webpage, so that the documentation-url is the full page address. For example, www.yourwebsite.gov.uk/planning/article-4-directions/smith-road.

+

2. Multiple records

+

List all records on a single page and add an anchor link for each one. For example, yourwebsite.gov.uk/planning/article-4-directions#smith-road.

+

You need to check that your publishing system supports anchor links (also called fragment identifiers).

+ +

Legal documents

+

If a record is for a legal document, you need to add a document-url that links straight to the file. For example, a direction notice or order.

+ +

Examples

+

View example webpages that show how to publish planning data.

+
+ +
+

Provide your data

+

After you publish, you should provide your data to the Planning Data Platform.

+

You need to submit:

+
    +
  • your full name
  • +
  • your work email address
  • +
  • the URL where anyone can download your data – called your 'endpoint URL'
  • +
  • the URL for your gov.uk website where you can view or select a link to view the data – called your 'source webpage URL'
  • +
+

Providing your data will help to:

+
    +
  • maintain and improve your data quality
  • +
  • make land and housing data easier to find, use and trust
  • +
+
+ +
+

View your data

+

Visit your organisation's dashboard anytime to view the data you have provided and the datasets you still need to provide.

+

If there are any issues with your data after you provide it, we will let you know what you can do to improve it.

+
+ +
+

Update your data

+

If you use the check and provide your data service, you only need to make changes to your data at your endpoint URL. Planning.data.gov.uk will update automatically.

+

If you create a new endpoint URL, you will need to provide your data again.

+
{% endblock %} - -{% block scripts %} - {{super()}} - - -{% endblock %} diff --git a/src/views/organisations/http-error.html b/src/views/organisations/http-error.html index 2d6060228..8d2b7d44a 100644 --- a/src/views/organisations/http-error.html +++ b/src/views/organisations/http-error.html @@ -37,7 +37,9 @@ {% block content %}
- {% include "includes/_dataset-page-header.html" %} +
+ {% include "includes/_dataset-page-header.html" %} +
diff --git a/src/views/organisations/issueDetails.html b/src/views/organisations/issueDetails.html index b85022c8a..b9f93030c 100644 --- a/src/views/organisations/issueDetails.html +++ b/src/views/organisations/issueDetails.html @@ -63,7 +63,9 @@ {% endif %}
- {% include "includes/_dataset-page-header.html" %} +
+ {% include "includes/_dataset-page-header.html" %} +
diff --git a/webpack.config.mjs b/webpack.config.mjs index 9428656d9..4ff17e6c0 100644 --- a/webpack.config.mjs +++ b/webpack.config.mjs @@ -24,7 +24,6 @@ export default { map: '/src/assets/js/map.js', application: '/src/assets/js/application.js', statusPage: '/src/assets/js/statusPage.js', - 'step-by-step-nav': '/src/assets/js/step-by-step-nav.js', 'list-filter': '/src/assets/js/list-filter.js', 'cookie-banner': '/src/assets/js/components/cookie-banner.js' },