Skip to content

Instantly share code, notes, and snippets.

@kagawa23
Forked from mitsuruog/Detail.fragments.coffee
Created December 29, 2019 01:46
Show Gist options
  • Save kagawa23/c444ac403f02870f2a2a1a55a2071c89 to your computer and use it in GitHub Desktop.
Save kagawa23/c444ac403f02870f2a2a1a55a2071c89 to your computer and use it in GitHub Desktop.
Fragments in SAPUI5
sap.ui.jsfragment "util.Detail",
createContent: (oController) ->
# ここに普通のJSViewのcreateContentと同様にUIコントロールを追加して
# 最後にreturnします。
sap.ui.jsfragment "util.Dialog",
createContent: (oController) ->
dialog = new sap.m.Dialog
title: "Dialog"
content: [
#入力用のFragmentsを再利用します
sap.ui.jsfragment "util.Edit", oController
]
beginButton: new sap.m.Button
type: "Accept"
text: "OK"
press: [oController.pressedOk, oController]
endButton: new sap.m.Button
text: "NG"
press: [oController.pressedNg, oController]
sap.ui.jsfragment "util.Edit",
createContent: (oController) ->
# ここに普通のJSViewのcreateContentと同様にUIコントロールを追加して
# 最後にreturnします。
sap.ui.jsview "view.Fragment",
getControllerName: ->
"view.Fragment"
createContent: (oController) ->
@page = new sap.m.Page
title: "Fragment Sample"
# Fragmentsを呼び出します
fragment = sap.ui.jsfragment "util.Edit", oController
@page.addContent fragment
@page
jQuery.sap.require "sap.m.MessageToast"
sap.ui.controller "view.Fragment",
_fragments: {}
_mode: "Detail"
_getFragments: (name) ->
#fragmentsを取得してキャッシュ
unless @_fragments[name]
@_fragments[name] = sap.ui.jsfragment "util.#{name}", @
@_fragments[name]
_toggleFragment: (name) ->
fragment = @_getFragments name
container = sap.ui.getCore().getElementById "fragContainer"
#コンテナの0番目にfragmentsで取得したFormを追加します
#[MEMO]ここではViewの中のContentはfragmentsのみの想定で書いています
#[MEMO]Contentが複数ある場合は、removeContentとinsertContentのindexを変更してください
container.removeContent 0
container.insertContent fragment, 0
@_mode = name
onInit: ->
@_toggleFragment "Detail"
#入力用と参照用のFormを切り替る処理
pressedToggle: (oEvt) ->
if @_mode is "Detail"
@_toggleFragment "Edit"
else
@_toggleFragment "Detail"
sap.ui.jsview "view.Fragment",
getControllerName: ->
"view.Fragment"
createContent: (oController) ->
@page = new sap.m.Page
title: "Fragment Sample"
# Fragmentsを呼び出します
# -> controllerで呼び出すようにします
#fragment = sap.ui.jsfragment "util.Edit", oController
#@page.addContent fragment
@page
jQuery.sap.require "sap.m.MessageToast"
sap.ui.controller "view.Fragment",
_fragments: {}
_getFragments: (name) ->
#fragmentsを取得してキャッシュ
unless @_fragments[name]
@_fragments[name] = sap.ui.jsfragment "util.#{name}", @
@_fragments[name]
onInit: ->
#ダイアログを表示します
openDialog: (oEvt) ->
dialog = @_getFragments "Dialog"
dialog.open()
#ダイアログでOKをPressした時の処理
pressedOk: (oEvt) ->
oEvt.getSource().getParent().close()
sap.m.MessageToast.show "pressed OK"
#ダイアログでNGをPressした時の処理
pressedNg: (oEvt) ->
oEvt.getSource().getParent().close()
sap.m.MessageToast.show "pressed NG"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment