20221120 - 외부경로 이미지로 버튼 이미지 변경 후 카카오내비 연계

1. 버튼 생성

Identification - 

Button Name : BTN_NAVI

Label : <img src="https://developers.kakao.com/assets/img/about/buttons/navi/kakaonavi_btn_small.png"> 


Appearance - 

Template Option : Use Template Option, Tiny, Remove UI Decoration


Dynamic Action - Execute Javascript Code 

var vCordX = parseFloat(apex.item("P632_CORDX").getValue());

var vCordY = parseFloat(apex.item("P632_CORDY").getValue());

var vNM    = apex.item("P632_CUST_NM").getValue();


Kakao.Navi.start({

    name: vNM+' 님',

    x: vCordX,

    y: vCordY,

    coordType: 'wgs84',

});



======================

사전에 별도의 Static HTML 리전을 만들어 카카오내비 API를 사용할 수 있어야 함.

<script src="https://t1.kakaocdn.net/kakao_js_sdk/2.0.1/kakao.min.js" 

    integrity="sha384-eKjgHJ9+vwU/FCSUG3nV1RKFolUXLsc6nLQ2R1tD0t4YFPCvRmkcF8saIfOZNWf/" crossorigin="anonymous">

</script>

<script>Kakao.init('{카카오 Javascript API 키}');</script>


샘플예제 by Kakao DEV


<script src="https://t1.kakaocdn.net/kakao_js_sdk/2.0.1/kakao.min.js"
  integrity="sha384-eKjgHJ9+vwU/FCSUG3nV1RKFolUXLsc6nLQ2R1tD0t4YFPCvRmkcF8saIfOZNWf/" crossorigin="anonymous"></script>
<script>
  Kakao.init('c089c8172def97eb00c07217cae17495'); // 사용하려는 앱의 JavaScript 키 입력
</script>

<a id="start-navigation" href="javascript:startNavigation()">
  <img src="https://developers.kakao.com/assets/img/about/buttons/navi/kakaonavi_btn_medium.png"
    alt="길 안내하기 버튼" />
</a>

<script>
  function startNavigation() {
    Kakao.Navi.start({
      name: '현대백화점 판교점',
      x: 127.11205203011632,
      y: 37.39279717586919,
      coordType: 'wgs84',
    });
  }
</script>



참고

https://developers.kakao.com/tool/demo/navi/start

https://developers.kakao.com/assets/img/about/buttons/navi/kakaonavi_btn_small.png

https://developers.kakao.com/assets/img/about/buttons/navi/kakaonavi_btn_medium.png


20221103 - 삭제 메세지 번역 또는 조정 DELETE_CONFIRM_MSG

 삭제 버튼 클릭시 기본적으로 영문 메세지가 확인 됨



이 메세지를 번역 또는 조정하기 위해서는

Shared Component >> Shortcuts : DELETE_CONFIRM_MSG 수정





20221017 - 로고 위치 및 설정

1. 로고

User Interface - Logo




<img src='#APP_FILES#android-chrome-192x192.png'></img>
<span style='font-family: "Hahmlet";font-size: 20px;'>&nbsp;&nbsp;발주배송 시스템 DEV -
<font color='orange'>&nbsp;&G_COMPNM.</font></span>









참고


20221016 - IG Validation

사용자 관리 테이블의 로그인 ID를 중복되지 않도록 하기 위해 일단 해당 컬럼에 Unique 제약을 걸어 두었고 실제 입력할 때도 Server Validation 으로 체크하였음.



    login_id                       varchar2(50 char)
                                   constraint login_id_unq unique,







참고 설명
1) 역할이 없는 것 OK
2) biz_role 배송이고 선택한 :ROLE 이 HQ%아 아닌(not) 경우 OK


:ROLE is null or
not ((select biz_role from comp_mstx where comp_id = :P402_COMPID) = '배송'
and :ROLE like 'HQ%')


아래 John의 데모 앱을 설치하면 여러가지 확인 가능




참고

https://hardlikesoftware.com/weblog/2022/04/25/interactive-grid-validation/

20220730 - 컨펌 Confirm 메세지 활용하기

배송 예정일에 값이 없을 경우에 한번 더 확인하는 컨펌 메세지를 보여줌.


1. DA 설정 (기본)

- Identification - Action : Confirm

- Setting - Message :

{if !P54_PDATE/}

입력된 날짜가 없는 것 맞습니까? 기존 데이터에 예정일이 있으면 지워집니다.

{endif/}

- Style : Warning





2. DA 설정 (추가)

만약에 P54_PDATE 에 데이터가 있어도 Confirm DA를 수행하고 빈 메세지가 보이게 되므로 Confirm 메세지는 P54_PDATE에 값이 없을 경우만 수행하도록 조치

- Client-side Condition - Type : Item is null

- Item : P54_PDATE




참고

https://blogs.oracle.com/apex/post/alert-and-confirm-dialogs-in-oracle-apex-212#:~:text=As%20of%20APEX%2021.2%2C%20you,from%20the%20main%20button%20label.

20220601 - APEX JSON을 활용한 AJAX Return

1. PL/SQL with cursor


DECLARE
  l_cursor SYS_REFCURSOR;
BEGIN
  OPEN l_cursor FOR
    select po_mst.cust_nm
         , po_mst.cust_addr
         , po_mst.delivery_req
         , po_mst.memo
      from po_mst
     where rownum <= 2;

  APEX_JSON.initialize_clob_output;
  APEX_JSON.open_object;
  APEX_JSON.write('targetlist', l_cursor);
  APEX_JSON.close_object;
  DBMS_OUTPUT.put_line(APEX_JSON.get_clob_output);

  APEX_JSON.free_output;
END;


2. 결과

{
"targetlist":[
{
"CUST_NM":"OOOO"
,"CUST_ADDR":"주소는 XXXX"
,"DELIVERY_REQ":"감사합니다"
}
,{
"CUST_NM":"OOO"
,"CUST_ADDR":"주소는 OOOOO"
,"DELIVERY_REQ":"네. 감사합니다."
}
]
}



참고

https://oracle-base.com/articles/misc/apex_json-package-generate-and-parse-json-documents-in-oracle


20220601 - 스피너 spinner 보이기/감추기

1. dynamic action for JavaScript

  //execute spinner

  var spinner = apex.util.showSpinner();


2. dynamic action for plsql code

  your plsql code

    

3. dynamic action for JavaScript

  //remove spinner

  $("#apex_wait_overlay").remove();

  $(".u-Processing").remove();



참고

https://parthiban037.wordpress.com/2020/01/03/show-spinner-in-oracle-apex-dynamic-action/

20250315 - 글로벌 변수 Global Variables

G_USER Specifies the currently logged in user. G_FLOW_ID Specifies the ID of the currently running application. G_FLOW_STEP_ID Specifi...