RESTService key

Тема в разделе "Lotus - Xpages", создана пользователем lmike, 27 сен 2016.

Метки:
  1. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    вычисление ключа меня заинтересовало...
    принтанул в консоль - получил баден-баден
    перевожу;) - в рестсервисе вычисляю ключ
    Код (XML):
    <xe:this.keys><![CDATA[${javascript:var keys = [];
    keys.push(context.getUser().getCommonName());
    var date:NotesDateTime=session.createDateTime("01.07.2016");//java.util.Date("01.07.2016");
    //print("Language");// + getLanguage());
    //print ("DATE_FORMAT");// + DATE_FORMAT);
    var dt = @Date("07/01/2016");
    var dt1 = @Date("01.07.2016");
    keys.push(date);
    viewScope.put("curdate", date.getLocalTime());
    print("curdate:"+viewScope.get("curdate"));
    return keys;}]]></xe:this.keys>
    в консоль получаю:
    средняя запись - это получение значения в поле
    Код (XML):
        <xp:label id="label3">
            <xp:this.value><![CDATA[#{javascript:print("calc date");
    return viewScope.get("curdate");}]]></xp:this.value>
        </xp:label>
    вопрос - почему отрабатывает код, для key, два раза?
    $ ставил для кода - чтобы гарантировать значение в label (если # - "оба раза" будут после лейбла)
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    у меня - три раза :)
    Но если с $ - то один раз. Может у тебя просто в консоли строки "слились"?
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    видно что - нет
    там строки разделены другим принтом
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    я имел в виду, что в консоле отображается лог с прошлого действия. Очисти консоль и проверь.
    У меня все отображается по одному разу

    [3514:000D-0154] 28.09.2016 13:43:03 HTTP JVM: curdate:01.07.2016
    [3514:000D-0154] 28.09.2016 13:43:03 HTTP JVM: calc date

    Код (Javascript):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core"
        xmlns:xe="http://www.ibm.com/xsp/coreex">

        <xe:restService id="restService1">
            <xe:this.service>
                <xe:viewJsonService viewName="resttst">
                    <xe:this.keys><![CDATA[${javascript:var keys = [];
    keys.push(context.getUser().getCommonName());
    var date:NotesDateTime=session.createDateTime("01.07.2016");//java.util.Date("01.07.2016");
    //print("Language");// + getLanguage());
    //print ("DATE_FORMAT");// + DATE_FORMAT);
    var dt = @Date("07/01/2016");
    var dt1 = @Date("01.07.2016");
    keys.push(date);
    viewScope.put("curdate", date.getLocalTime());
    print("curdate:"+viewScope.get("curdate"));
    return keys;}]]></xe:this.keys>
                </xe:viewJsonService>
            </xe:this.service>
        </xe:restService>
       
    <xp:label id="label3">
            <xp:this.value><![CDATA[#{javascript:print("calc date");
    return viewScope.get("curdate");}]]></xp:this.value>
        </xp:label>  
       
        </xp:view>
     
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    @NickProstoNick та не - все как описал и разрыв в 4-сек
    я нажимаю обновление страницы в ФФ
    и резалт у меня именно такой
    что очень смущает
    может gridx дергает рест еще раз, но запроса-то нет (только один)
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну вот я привел свой пример, который у меня работает.
    Пробуй голый rest на странице и поймешь что работает не правильно
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    @NickProstoNick отключил создание грида - перестало
    мда... странно - обращение
    Код (Javascript):
                var store = new JsonRest( {
                    idProperty : '@noteid',
                    target : storePath
                });
    приводит к подобному (как я понимаю)
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    а пример кода показать не хочешь?
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    не проблема...
    просто не считал это интересным ;)
    Код (Javascript):
    function makeGrid() {
        require( [
                "gridx/Grid",
                "gridx/modules/ColumnResizer"
                // ,"gridx/modules/VirtualVScroller"
                , "gridx/modules/CellWidget", "gridx/modules/Edit",
                "dojo/store/JsonRest", "gridx/core/model/cache/Async",
                "dojo/domReady!" ], function(Grid, Resizer
        // , VirtualVScroller
                , CellWidget, Edit, JsonRest, Cache) {
            // return;
                var store = new JsonRest( {
                    idProperty : '@noteid',
                    target : storePath
                });
                var columns = [
                               {
                                   id : 'rpt_group_2'
                                       ,field : 'rpt_group_2'
                                       ,name : 'sub group'
                                       ,width : '100px'
                               }
                               ,{
                                   id : 'rpt_group_3'
                                   ,field : 'rpt_group_3'
                                   ,name : 'brand group'
                                   ,width : '300px'
                               }, {
                                   id : 'f_vol'
                                   ,field : 'f_vol'
                                   ,decorator:function(value) {
                                       try{
                                           return (value.length==0)? 0 : value;
                                       }
                                       catch(e){
                                       }
                                       return value;
                                   }
                                   ,name : 'volume'
                                   ,width : '100px'
                               }];
                var tmpdate=new Date(curdate);
                for(var i=1;i<25; i++){
                    tmpdate.setMonth(tmpdate.getMonth()+1);
                    columns.push({
                            id : 'fc_vol_'+i
                                ,field : 'fc_vol_'+i
                                ,name : formatDate(tmpdate)
                                ,width : '100px'
                                ,editable : true
                                ,decorator:function(value) {
                                    try{
                                        return (value.length==0)? 0 : value;
                                    }
                                    catch(e){
                                    }
                                    return value;
                                }
                                ,editorArgs : {
                                    fromEditor : processState
                                }
                            // ,alwaysEditing : true
                                    });
                }

                grid = new Grid( {
                    id : "my_gridX",
                    cacheClass : Cache,
                    store : store,
                    structure : columns,
                    vScrollerBuffSize : 10,
                    modules : [ Resizer
                    // , VirtualVScroller
                            , CellWidget, Edit ]
                });
                // Put it into the DOM tree.
                grid.connect(grid, "onRowClick", function(eventInfo) {
                    var unid = gridInfo(grid, eventInfo, '@unid');
                    // grid.row(eventInfo.rowId).item()['@unid'];
                        gunid = unid;
                        var len = flds.length;
                        for ( var i = 0; i < len; i++) {
                            gkeys[i] = gridInfo(grid, eventInfo, flds[i]);
                            console.log(flds[i] + "->" + gkeys[i]);
                        }

                        // alert(unid);
                        console.log("UNID:" + unid);
                        chartData();
                    });
                grid.placeAt(gridID);
                grid.startup();
            });
    }
    ЗЫЖ не поленись отвечать со ссылкой на меня или пост ;) - атоя не всегда обновляю страницы и спецом не отслеживаю топики, а так - будет уведомление :)
     
  10. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    @lmike, я имел в виду код страницы :)
    В общем не суть важно..все равно не успею разобраться
     
    #10 NickProstoNick, 29 сен 2016
    Последнее редактирование: 29 сен 2016
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    нопроблем, но как я понимаю - трабла именно в гриде, закомменченное не удалил
    Код (XML):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core"
       xmlns:xe="http://www.ibm.com/xsp/coreex"
       xmlns:xc="http://www.ibm.com/xsp/custom"><!--
       <xp:this.data>
           <xp:dominoView var="view1" viewName="dateLookupChart"
               keysExactMatch="true">
               <xp:this.keys><![CDATA[${javascript:var dtany:NotesDateTime=session.createDateTime(@Today());
    dtany.setAnyDate();
    var date=@Date(@Year(@Today()),@Month(@Today()),1);
    var dt:NotesDateTime = session.createDateTime(date);
    var dtPast:NotesDatetime=session.createDateTime(@Adjust(date,0,(-25),0,0,0,0));
    var dtr:DateRange = session.createDateRange(dtPast,dt);
    //dtr.setEndDateTime(dt);
    var keys=[];
    keys.push(dtr);
    keys.push(context.getUser().getCommonName());
    return keys;}]]></xp:this.keys>
           </xp:dominoView>
       </xp:this.data>
       --><xc:ccGridxResources></xc:ccGridxResources>
        <xp:this.resources>


            <xp:script src="/ViewUtils.jss" clientSide="false"></xp:script>
            <xp:script src="/FCUtils.js" clientSide="true"></xp:script>
            <xp:script src="/RowUtils.js" clientSide="true"></xp:script>
            <xp:script src="/DateUtils.js" clientSide="true"></xp:script>
            <!--
               <xp:dojoModule name="dojox.data.HtmlStore"></xp:dojoModule>
           -->
            <xp:dojoModule name="dojox.charting.widget.Chart2D"></xp:dojoModule>
            <xp:dojoModule name="dojox.charting.themes.PlotKit.blue"></xp:dojoModule>
            <xp:dojoModule name="dojox.charting.widget.Legend"></xp:dojoModule>

            <xp:dojoModule name="dojox.charting.themes.MiamiNice"></xp:dojoModule>

            <xp:script src="/loading.js" clientSide="true"></xp:script>
            <xp:script src="/OpenLogXPages.jss" clientSide="false"></xp:script>
            <!--<xp:styleSheet href="/intecReport.css"></xp:styleSheet>-->

            <xp:dojoModule name="dojox.charting.action2d.Tooltip"></xp:dojoModule>
        </xp:this.resources>
        <!--
           Need this to force compatibility mode, otherwise get error
           "this.rawNode.path is null or not an object"
       -->
        <xp:this.beforePageLoad><![CDATA[#{javascript:
    try {
       if (context.getUserAgent().isIE(8, 8)) {
           var exCon = facesContext.getExternalContext();
           var response = exCon.getResponse();
           response.setHeader("X-UA-Compatible", "IE=EmulateIE7");
           }
    } catch (e) {
    }}
    ]]></xp:this.beforePageLoad>

        <xe:keepSessionAlive id="keepSessionAlive1" delay="60" rendered="false"></xe:keepSessionAlive>

        <xe:restService id="restService1" pathInfo="gridData" rendered="false">
            <xe:this.service>
                <xe:viewJsonService defaultColumns="true"
                   keysExactMatch="true" viewName="dateLookupUser" var="entry"
                   compact="true" formName="forecast" contentType="application/json">
                    <xe:this.keys><![CDATA[${javascript:var keys = [];
    keys.push(context.getUser().getCommonName());
    var date:NotesDateTime=session.createDateTime("01.07.2016");//java.util.Date("01.07.2016");
    //print("Language");// + getLanguage());
    //print ("DATE_FORMAT");// + DATE_FORMAT);
    var dt = @Date("07/01/2016");
    var dt1 = @Date("01.07.2016");
    keys.push(date);
    //var tz=new java.util.Timezone();
    //http://www.timdown.co.uk/code/simpledateformat.php
    var sf:java.text.SimpleDateFormat=new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    viewScope.put("curdate", sf.format(date.toJavaDate()));
    viewScope.put("pageName", view.getPageName());
    print("curdate:"+viewScope.get("curdate"));
    return keys;}]]></xe:this.keys>
                </xe:viewJsonService>
            </xe:this.service>
        </xe:restService>
        <!--
         
           <xe:restService id="restService2" pathInfo="gridData1">
           <xe:this.service>
           <xe:viewItemFileService viewName="dateLookupUser"
           keysExactMatch="true" defaultColumns="true"
           contentType="application/json" var="entry">
           <xe:this.keys><![CDATA[#{javascript:var keys = [];
           keys.push(context.getUser().getCommonName());
           var dt = @Date("07/01/2016");
           var dt1 = @Date("01.07.2016");
           keys.push(dt1);
           return keys;}]]></xe:this.keys>
           </xe:viewItemFileService>
           </xe:this.service>
           </xe:restService>
       -->
        <xe:jsonRpcService id="jsonRpcService1" pathInfo="rpcScope"
           serviceName="rpcScope">
            <xe:this.methods>
                <xe:remoteMethod script="return rpcGetChartDataY(map);"
                   name="getChartData">
                <xe:this.arguments>
                    <xe:remoteMethodArg name="map" type="list"></xe:remoteMethodArg>
                </xe:this.arguments></xe:remoteMethod>
                <xe:remoteMethod name="setViewScope"
                   script="return rpcSetViewScope(xName,xVal);">
                    <xe:this.arguments>
                        <xe:remoteMethodArg name="xName" type="string"></xe:remoteMethodArg>
                        <xe:remoteMethodArg name="xVal" type="list"></xe:remoteMethodArg>
                    </xe:this.arguments>
                </xe:remoteMethod>
            </xe:this.methods>
        </xe:jsonRpcService>
        <xp:scriptBlock id="scriptBlock1">
            <xp:this.value><![CDATA[var editedRows = [];
    var gunid = "";
    var gkeys={};
    var pageName="#{javascript:@Right(view.getPageName(),"/")}";
    var curdate="#{javascript:viewScope.get('curdate')}";
    console.log("calculated page Name:"+pageName);
    console.log("date:"+curdate);
    var tmp=new Date(curdate);
    tmp.setMonth(tmp.getMonth()+1);
    console.log("month + 1:"+tmp.getMonth());
    var storePath=pageName+"/"+"gridData";
    var chartID="#{id:fc_chart}";
    var legendID="#{id:fc_legend}";
    var gridID="#{id:gridX_Here}";
    var flds=['country','region','rpt_group_1','rpt_group_2','rpt_group_3','rpt_group_4'];
    var vol=0;
    makeGrid();
    ]]></xp:this.value>
        </xp:scriptBlock>

        <xp:br></xp:br>
        <xp:table>
            <xp:tr>
                <xp:td>
                    <xp:panel id="fc_chart"
                       style="height:200px; width:600px;">
                        <!--<div class="action" type="Tooltip"></div>
                   --></xp:panel>
                    </xp:td>
                <xp:td>
                    <xp:panel id="fc_legend"></xp:panel></xp:td>
            </xp:tr>
        </xp:table>
        <xp:label value="date:" id="label4"></xp:label>

        <xp:label id="label3">
            <xp:this.value><![CDATA[#{javascript:print("calc date");
    return viewScope.get("curdate");}]]></xp:this.value>
        </xp:label>
        <xp:br></xp:br>
        <xp:panel style="height:300px;width:800px" id="gridX_Here"></xp:panel>


       
        <!--
           <xp:button id="button1" value="Сохранить">
           <xp:this.onclick><![CDATA[// Reset the list of edited rows to clear the styles
           editedRows = [];
           var args = {
           onError : function() {
           alert('error!');
           }
           };
           restService1.save(args);
         
           // Refresh the grid
           restService1.close();
           // dijit.byId('#{id:flatGrid}')._refresh();
         
           ]]></xp:this.onclick>
         
           <xp:eventHandler event="onclick" submit="true"
           refreshMode="partial" refreshId="flatGrid">
           </xp:eventHandler>
           </xp:button>
       -->
        <xp:button value="XHR" id="button1" onclick="xhr();">

        <xp:eventHandler event="onclick" submit="false">
            <xp:this.script><![CDATA[try{
    /*    var keys={};
       keys["country"]="val1";
       keys["region"]="val2";
       keys["rpt_group_1"]="";
       keys["rpt_group_2"]="";
       keys["rpt_group_3"]="";
       keys["rpt_group_4"]="";*/
       var len=flds.length;
       for(var i=0; i<Object.keys(gkeys).length;i++){
           console.log("num:"+i+"->" + gkeys[i]);
       }
       rpcScope.getChartData(gkeys).addCallback(function(xVal){
           try{
               console.log("xVal:"+xVal);
           }catch (e){
               alert(e.toString());
           }
       });
    } catch (e) {
       alert(e.toString());
    }]]></xp:this.script>
        </xp:eventHandler></xp:button>
        <xp:br></xp:br>
        <xp:label value="#{javascript:context.getUser().getCommonName()}"
           id="label1">
        </xp:label>
        <!--
           <xe:djxDataGrid storeComponentId="restService1" id="flatGrid"
           singleClickEdit="true" onRowClick="clickRow(arguments);"
           onStyleRow="styleRow(arguments);">
           <xe:djxDataGridColumn id="djxDataGridColumn1" editable="false"
           field="date" formatter="formatDate">
           </xe:djxDataGridColumn>
           <xe:djxDataGridColumn id="djxDataGridColumn2" editable="false"
           field="f_vol">
           </xe:djxDataGridColumn>
           <xe:djxDataGridColumn id="djxDataGridColumn3" field="fc_vol_1"
           editable="true">
           </xe:djxDataGridColumn>
           </xe:djxDataGrid>
       -->
        <xp:br></xp:br>
        <xp:label id="label2"><xp:this.value><![CDATA[#{javascript:var nec:NotesViewEntryCollection=historyEntries();
    var entry:NotesViewEntry=nec.getFirstEntry();
    var result:string="";
    while (entry1=null){
       result+=entry.getColumnValues(2)+";";
       entry=nec.getNextEntry(entry);
    }
    return result;}]]></xp:this.value></xp:label>
       
    </xp:view>
     
     
  12. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    @lmike , мне кажется, что тут вопрос в событии beforePageLoad как в таковом, а не в гриде.
    Может это событие перегружает страницу?
    Хотя сложно проверять, у тебя грид в кастомконтроле, на сколько я понял.
    А код страницы отрабатывает корректно
     
    #12 NickProstoNick, 30 сен 2016
    Последнее редактирование модератором: 30 сен 2016
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    отключение стораджа в гриде - эффект уходит
     
  14. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну главное локализовал проблему. Дальше уж сам :)
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    спасибо за участие :)
    но подозреваю - это не проблема, а фича ;)
     
Загрузка...
Похожие Темы - RESTService key
  1. Amfion
    Ответов:
    0
    Просмотров:
    477
  2. SvetlanaL
    Ответов:
    0
    Просмотров:
    410
  3. anna
    Ответов:
    27
    Просмотров:
    1.408
  4. SvetlanaL
    Ответов:
    1
    Просмотров:
    737
  5. alb
    Ответов:
    3
    Просмотров:
    2.043

Поделиться этой страницей