개요
- Kubeflow pipelines frontend 코드 살펴보다가 TypeScript 관련된 내용 정리.
 
Why
- pipeline frontend side navigation 숨겨볼라고 코드 살펴보다가 확인.
 - window[‘KFP_FLAGS’] -> 이거 뭐???
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
export const KFP_FLAGS = {
  DEPLOYMENT:
    // tslint:disable-next-line:no-string-literal
    window && window['KFP_FLAGS']
      ? // tslint:disable-next-line:no-string-literal
        window['KFP_FLAGS']['DEPLOYMENT'] === Deployments.KUBEFLOW
        ? Deployments.KUBEFLOW
        : // tslint:disable-next-line:no-string-literal
        window['KFP_FLAGS']['DEPLOYMENT'] === Deployments.MARKETPLACE
        ? Deployments.MARKETPLACE
        : DEPLOYMENT_DEFAULT
      : DEPLOYMENT_DEFAULT,
  HIDE_SIDENAV: window && window['KFP_FLAGS'] ? window['KFP_FLAGS']['HIDE_SIDENAV'] : false,
};
HIDE_SIDENAV
- window.KFP_FLAGS.HIDE_SIDENAV 값으로 연결됨.
 - 쓰임새
 

true이면 아래 sideNav를 그리지 않고 null을 return
값 지정
- window.KFP_FLAGS.HIDE_SIDENAV=true;
- window는 해당 page의 global 값을 저장하는 dom 객체로 사용됨.
 - script로 위와 같이 값을 지정하면 아래와 같은 예시로 호출
 
 
1
window['KFP_FLAGS']['HIDE_SIDENAV']
위의 예시에도 나와있다.
- pipeline frontend에선 index.html에서 값을 지정할 수 있다.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="theme-color" content="#000000">
    <link rel="shortcut icon" href="%PUBLIC_URL%/static/favicon.ico">
    <title>Kubeflow Pipelines</title>
    <script>
      window.KFP_FLAGS={};
      window.KFP_FLAGS.DEPLOYMENT='KUBEFLOW';
      window.KFP_FLAGS.HIDE_SIDENAV=true;
    </script>
    <script id="kubeflow-client-placeholder"></script>
  </head>
  <body>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <div id="root"></div>
  </body>
</html>
마무리
window라고 달랑 지정되어 있고 값을 어디서 지정하는지 몰랐는데 알고보니 dom 객체… 참고로 HIDE_SIDENAV를 true로 지정하면 아래와 같이 sidebar 사라짐.
