mirror of https://github.com/portainer/portainer
				
				
				
			fix(rolling-restart): wording and icon changes [EE-4834] (#8239)
* icon and wording changes * fix inconsistencies and grammar * fix(ui/buttons): show tooltip * Change icon and confirmation dialog * edit icon * rename be-only-button to be-teaser-button for consistency Co-authored-by: Chaim Lev-Ari <chaim.levi-ari@portainer.io>pull/8280/head
							parent
							
								
									1d42db93f1
								
							
						
					
					
						commit
						4dc643acd9
					
				| 
						 | 
				
			
			@ -22,12 +22,12 @@
 | 
			
		|||
      <pr-icon class="vertical-center" icon="'check'" size="'md'" mode="'success'"></pr-icon> copied
 | 
			
		||||
    </span>
 | 
			
		||||
 | 
			
		||||
    <be-only-button
 | 
			
		||||
    <be-teaser-button
 | 
			
		||||
      class="float-right"
 | 
			
		||||
      feature-id="$ctrl.limitedFeature"
 | 
			
		||||
      message="'Applies any changes that you make in the YAML editor by calling the Kubernetes API to patch the relevant resources. Any resource removals or unexpected resource additions that you make in the YAML will be ignored. Note that editing is disabled for resources in namespaces marked as system.'"
 | 
			
		||||
      heading="'Apply YAML changes'"
 | 
			
		||||
      button-text="'Apply changes'"
 | 
			
		||||
    ></be-only-button>
 | 
			
		||||
    ></be-teaser-button>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,6 @@ import { r2a } from '@/react-tools/react2angular';
 | 
			
		|||
import { withCurrentUser } from '@/react-tools/withCurrentUser';
 | 
			
		||||
import { withReactQuery } from '@/react-tools/withReactQuery';
 | 
			
		||||
import { withUIRouter } from '@/react-tools/withUIRouter';
 | 
			
		||||
import { BEOnlyButton } from '@/kubernetes/react/views/beOnlyButton';
 | 
			
		||||
import { IngressesDatatableView } from '@/react/kubernetes/ingresses/IngressDatatable';
 | 
			
		||||
import { CreateIngressView } from '@/react/kubernetes/ingresses/CreateIngressView';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -20,15 +19,4 @@ export const viewsModule = angular
 | 
			
		|||
  .component(
 | 
			
		||||
    'kubernetesIngressesCreateView',
 | 
			
		||||
    r2a(withUIRouter(withReactQuery(withCurrentUser(CreateIngressView))), [])
 | 
			
		||||
  )
 | 
			
		||||
  .component(
 | 
			
		||||
    'beOnlyButton',
 | 
			
		||||
    r2a(withUIRouter(withReactQuery(withCurrentUser(BEOnlyButton))), [
 | 
			
		||||
      'featureId',
 | 
			
		||||
      'heading',
 | 
			
		||||
      'message',
 | 
			
		||||
      'buttonText',
 | 
			
		||||
      'className',
 | 
			
		||||
      'icon',
 | 
			
		||||
    ])
 | 
			
		||||
  ).name;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -223,7 +223,7 @@
 | 
			
		|||
              style="margin-left: 0"
 | 
			
		||||
              data-cy="k8sAppDetail-editAppButton"
 | 
			
		||||
            >
 | 
			
		||||
              <pr-icon icon="'code'" class="mr-1"></pr-icon>Edit this application
 | 
			
		||||
              <pr-icon icon="'pencil'" class="mr-1"></pr-icon>Edit this application
 | 
			
		||||
            </button>
 | 
			
		||||
            <button
 | 
			
		||||
              authorization="K8sApplicationDetailsW"
 | 
			
		||||
| 
						 | 
				
			
			@ -233,15 +233,17 @@
 | 
			
		|||
              ui-sref="kubernetes.applications.application.edit"
 | 
			
		||||
              data-cy="k8sAppDetail-editAppButton"
 | 
			
		||||
            >
 | 
			
		||||
              <pr-icon icon="'code'" class-name="'mr-1'"></pr-icon>Edit External application
 | 
			
		||||
              <pr-icon icon="'pencil'" class-name="'mr-1'"></pr-icon>Edit external application
 | 
			
		||||
            </button>
 | 
			
		||||
            <be-only-button
 | 
			
		||||
            <be-teaser-button
 | 
			
		||||
              icon="'refresh-cw'"
 | 
			
		||||
              feature-id="ctrl.limitedFeature"
 | 
			
		||||
              message="'A rolling restart of the application is performed.'"
 | 
			
		||||
              heading="'Rolling restart'"
 | 
			
		||||
              button-text="'Rolling restart'"
 | 
			
		||||
            ></be-only-button>
 | 
			
		||||
              class-name="'be-tooltip-teaser'"
 | 
			
		||||
              className="'be-tooltip-teaser'"
 | 
			
		||||
            ></be-teaser-button>
 | 
			
		||||
            <button
 | 
			
		||||
              ng-if="ctrl.application.ApplicationType !== ctrl.KubernetesApplicationTypes.POD"
 | 
			
		||||
              type="button"
 | 
			
		||||
| 
						 | 
				
			
			@ -249,7 +251,7 @@
 | 
			
		|||
              ng-click="ctrl.redeployApplication()"
 | 
			
		||||
              data-cy="k8sAppDetail-redeployButton"
 | 
			
		||||
            >
 | 
			
		||||
              <pr-icon icon="'rotate-cw'" class="'mr-1'"></pr-icon>Redeploy
 | 
			
		||||
              <pr-icon icon="'rotate-cw'" class="'mr-1'"></pr-icon>Terminate and restart
 | 
			
		||||
            </button>
 | 
			
		||||
            <button
 | 
			
		||||
              ng-if="!ctrl.isExternalApplication()"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -224,7 +224,7 @@ class KubernetesApplicationController {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  rollbackApplication() {
 | 
			
		||||
    this.ModalService.confirmUpdate('Rolling back the application to a previous configuration may cause a service interruption. Do you wish to continue?', (confirmed) => {
 | 
			
		||||
    this.ModalService.confirmUpdate('Rolling back the application to a previous configuration may cause service interruption. Do you wish to continue?', (confirmed) => {
 | 
			
		||||
      if (confirmed) {
 | 
			
		||||
        return this.$async(this.rollbackApplicationAsync);
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -234,6 +234,15 @@ class KubernetesApplicationController {
 | 
			
		|||
   * REDEPLOY
 | 
			
		||||
   */
 | 
			
		||||
  async redeployApplicationAsync() {
 | 
			
		||||
    const confirmed = await this.ModalService.confirmAsync({
 | 
			
		||||
      title: 'Are you sure?',
 | 
			
		||||
      message: 'Terminating and restarting the application will cause service interruption. Do you wish to continue?',
 | 
			
		||||
      buttons: { confirm: { label: 'Terminate and restart', className: 'btn-primary' } },
 | 
			
		||||
    });
 | 
			
		||||
    if (!confirmed) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      const promises = _.map(this.application.Pods, (item) => this.KubernetesPodService.delete(item));
 | 
			
		||||
      await Promise.all(promises);
 | 
			
		||||
| 
						 | 
				
			
			@ -245,11 +254,7 @@ class KubernetesApplicationController {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  redeployApplication() {
 | 
			
		||||
    this.ModalService.confirmUpdate('Redeploying the application may cause a service interruption. Do you wish to continue?', (confirmed) => {
 | 
			
		||||
      if (confirmed) {
 | 
			
		||||
        return this.$async(this.redeployApplicationAsync);
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    return this.$async(this.redeployApplicationAsync);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,6 +35,7 @@ import { TeamsSelector } from '@@/TeamsSelector';
 | 
			
		|||
import { PortainerSelect } from '@@/form-components/PortainerSelect';
 | 
			
		||||
import { Slider } from '@@/form-components/Slider';
 | 
			
		||||
import { TagButton } from '@@/TagButton';
 | 
			
		||||
import { BETeaserButton } from '@@/BETeaserButton';
 | 
			
		||||
 | 
			
		||||
import { fileUploadField } from './file-upload-field';
 | 
			
		||||
import { switchField } from './switch-field';
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +47,17 @@ export const componentsModule = angular
 | 
			
		|||
    'tagSelector',
 | 
			
		||||
    r2a(withReactQuery(TagSelector), ['allowCreate', 'onChange', 'value'])
 | 
			
		||||
  )
 | 
			
		||||
  .component(
 | 
			
		||||
    'beTeaserButton',
 | 
			
		||||
    r2a(BETeaserButton, [
 | 
			
		||||
      'featureId',
 | 
			
		||||
      'heading',
 | 
			
		||||
      'message',
 | 
			
		||||
      'buttonText',
 | 
			
		||||
      'className',
 | 
			
		||||
      'icon',
 | 
			
		||||
    ])
 | 
			
		||||
  )
 | 
			
		||||
  .component(
 | 
			
		||||
    'tagButton',
 | 
			
		||||
    r2a(TagButton, ['value', 'label', 'title', 'onRemove'])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ interface Props {
 | 
			
		|||
  icon?: ReactNode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function BEOnlyButton({
 | 
			
		||||
export function BETeaserButton({
 | 
			
		||||
  featureId,
 | 
			
		||||
  heading,
 | 
			
		||||
  message,
 | 
			
		||||
| 
						 | 
				
			
			@ -29,16 +29,18 @@ export function BEOnlyButton({
 | 
			
		|||
      BEFeatureID={featureId}
 | 
			
		||||
      message={message}
 | 
			
		||||
    >
 | 
			
		||||
      <Button
 | 
			
		||||
        icon={icon}
 | 
			
		||||
        type="button"
 | 
			
		||||
        color="warninglight"
 | 
			
		||||
        size="small"
 | 
			
		||||
        onClick={() => {}}
 | 
			
		||||
        disabled
 | 
			
		||||
      >
 | 
			
		||||
        {buttonText}
 | 
			
		||||
      </Button>
 | 
			
		||||
      <span>
 | 
			
		||||
        <Button
 | 
			
		||||
          icon={icon}
 | 
			
		||||
          type="button"
 | 
			
		||||
          color="warninglight"
 | 
			
		||||
          size="small"
 | 
			
		||||
          onClick={() => {}}
 | 
			
		||||
          disabled
 | 
			
		||||
        >
 | 
			
		||||
          {buttonText}
 | 
			
		||||
        </Button>
 | 
			
		||||
      </span>
 | 
			
		||||
    </TooltipWithChildren>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue