Aipoの最大化画面で呼んでいるaipo.viewPageについて

Aipoの最大化画面で他の画面を呼ぶときにaipo.viewPageを使うケースが多いと思います。

この処理の中身は

https://github.com/aipocom/aipo/blob/master/war/src/main/webapp/javascript/aipo/aipo.js#L138

aipo.viewPage = function(url, portletId, params) {
     var portlet = dijit.byId('portlet_' + portletId);
     if(! portlet){
       portlet = new aimluck.widget.Contentpane({},'portlet_' + portletId);
     }

     if(portlet){
       ptConfig[portletId].reloadUrl= url;

       if(params){
         for(i = 0 ; i < params.length; i++ ) {
            portlet.setParam(params[i][0], params[i][1]);
         }
       }

       portlet.onLoad=dojo.hitch(portlet.onLoad, setMouseListener);
       portlet.viewPage(url);
     }
};

のようになっています。途中でptConfig[portletId].reloadUrl= url;

をしています。

ptConfigをセットしているのは、ToDoの場合だと

https://github.com/aipocom/aipo/blob/master/portlets/todo/src/main/webapp/WEB-INF/templates/vm/portlets/html/ja/todo-list.vm

 

<script language="JavaScript" type="text/javascript">
//<![CDATA[
    dojo.provide('aipo.todo');

    ptConfig['$!portlet.ID'] = { group:"todo", initUrl:'$!utils.escapeXML($!jslink.getPortletById($!portlet.ID).addQueryData("template","ToDoListScreen"))', reloadFunction:aipo.reloadPage };
    aipo.todo.menuSelected = 0;

//]]>
</script>

になります。ここのところで初期のスクリーンで呼ぶテンプレートやリロード関数を指定しています。

Aipoではデータの登録・更新・削除とかをした後に画面を更新します。

aipo.portletReload('todo');

みたいな関数でリロードしています。

https://github.com/aipocom/aipo/blob/master/war/src/main/webapp/javascript/aipo/aipo.js#L97

aipo.portletReload = function(group, portletId) {
    for(var index in ptConfig) {
        if (index != portletId) {
            if(ptConfig[index].group == group) {
                ptConfig[index].reloadFunction.call(ptConfig[index].reloadFunction, index);
            }
        }
    }
};

この3箇所の設定が連携しています。