めまぴークライアントのデモ8のソース

めまぴークライアントのデモ8の記事はこちらです。

■Application.cfm

<cfsetting enableCFoutputOnly="yes">

<cfapplication name="#hash( getCurrentTemplatePath() )#"
    clientmanagement="Yes"
    sessionmanagement="yes"
    loginStorage="session"
    sessiontimeout=#CreateTimeSpan(1, 0, 0, 0)# >

<!---===================================
設定
====================================--->
<!---
現在のサーバー時刻から
世界標準時 (UTC: Universal Time Coordinated) からの相対情報を取得し、
9時間プラスすることにより日本時間とする。
--->
<cfset info = GetTimeZoneInfo()>
<cfset UTC = DateAdd("h", info.utcHourOffset, now())>
<cfset request.now = DateAdd("h", 9, UTC)>

<cfif findNoCase("ie", cgi.HTTP_USER_AGENT)>
    <cfset request.js_chkNum = "
    if(event.keyCode<'0'.charCodeAt(0) || event.keyCode>'9'.charCodeAt(0)) return false;
    ">
    <cfset request.js_chkNumP = "
    if((event.keyCode>='0'.charCodeAt(0) && event.keyCode<='9'.charCodeAt(0))||(event.keyCode=='\.'.charCodeAt(0))) return true;
    else return false;
    ">
<cfelse>
    <cfset request.js_chkNum = "
    if(event.charCode<'0'.charCodeAt(0) || event.charCode>'9'.charCodeAt(0)) return false;
    ">
    <cfset request.js_chkNumP = "
    if((event.charCode>='0'.charCodeAt(0) && event.charCode<='9'.charCodeAt(0))||(event.charCode=='\.'.charCodeAt(0))) return true;
    else return false;
    ">
</cfif>

<cfparam name="cookie.user_id"  default="">
<cfparam name="cookie.key"      default="">
<cfparam name="session.yyyy"    default="#dateformat(request.now, 'yyyy')#">
<cfparam name="session.mm"      default="#dateformat(request.now, 'mm')#">
<cfparam name="session.dd"      default="#dateformat(request.now, 'dd')#">
<cfparam name="session.chk1"    default="30">
<cfset request.user_id  = cookie.user_id>
<cfset request.key      = cookie.key>
<cfset request.cat_id   = 13>
<!--- 通常
<cfset request.proxyServer      = "">
<cfset request.proxyPort        = "80">
--->
<!--- 会社
<cfset request.proxyServer      = "xx.xx.xx.xx">
<cfset request.proxyPort        = "xx">
--->
<cfset request.proxyServer      = "">
<cfset request.proxyPort        = "80">
<cfset request.url              = "http://memapi.utalab.com/index.cfm?go=">

■index.cfm

<cfprocessingdirective pageEncoding = "UTF-8">
<!---/////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////--->
<cfparam name="url.p"       default="">
<cfparam name="url.page"    default="1">
<cfparam name="url.id"      default="">

<cfparam name="form.id"     default="#url.id#">
<cfparam name="form.yyyy"   default="">
<cfparam name="form.mm"     default="">
<cfparam name="form.dd"     default="">
<cfparam name="form.s_yyyy" default="">
<cfparam name="form.s_mm"   default="">
<cfparam name="form.s_dd"   default="">
<cfparam name="form.i1"     default="">
<cfparam name="form.i2"     default="">
<cfparam name="form.m1"     default="">

<cfswitch expression = "#url.p#">
    <!--- srch --->
    <cfcase value="srch">
        <cfset session.yyyy = form.s_yyyy>
        <cfset session.mm   = form.s_mm>
        <cfset session.dd   = form.s_dd>
        <cfset session.chk1 = form.chk1>
    </cfcase>
    <!--- addEnd --->
    <cfcase value="addEnd">
        <cfhttp url="#request.url#dataAddEx"
            proxyServer = "#request.proxyServer#"
            proxyPort   = "#request.proxyPort#"
            method="post">

            <cfset local.i1 = form.i1 * 10>
            <cfset local.i2 = form.i2 * 10>

            <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
            <cfhttpparam type="formField" name="key"        value="#request.key#">
            <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
            <cfhttpparam type="formField" name="c1"         value="#form.yyyy#/#form.mm#/#form.dd#">
            <cfhttpparam type="formField" name="i1"         value="#local.i1#">
            <cfhttpparam type="formField" name="i2"         value="#local.i2#">
            <cfhttpparam type="formField" name="m1"         value="#form.m1#">
        </cfhttp>
    </cfcase>
    <!--- updEnd --->
    <cfcase value="updEnd">
        <cfhttp url="#request.url#dataUpdEx"
            proxyServer = "#request.proxyServer#"
            proxyPort   = "#request.proxyPort#"
            method="post">

            <cfset local.i1 = form.i1 * 10>
            <cfset local.i2 = form.i2 * 10>

            <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
            <cfhttpparam type="formField" name="key"        value="#request.key#">
            <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
            <cfhttpparam type="formField" name="id"         value="#form.id#">
            <cfhttpparam type="formField" name="c1"         value="#form.yyyy#/#form.mm#/#form.dd#">
            <cfhttpparam type="formField" name="i1"         value="#local.i1#">
            <cfhttpparam type="formField" name="i2"         value="#local.i2#">
            <cfhttpparam type="formField" name="m1"         value="#form.m1#">
        </cfhttp>

    </cfcase>
    <!--- delEnd --->
    <cfcase value="delEnd">
        <cfhttp url="#request.url#dataDelEx"
            proxyServer = "#request.proxyServer#"
            proxyPort   = "#request.proxyPort#"
            method="post">

            <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
            <cfhttpparam type="formField" name="key"        value="#request.key#">
            <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
            <cfhttpparam type="formField" name="id"         value="#form.id#">
        </cfhttp>
    </cfcase>
</cfswitch>
<cfif findnocase("end", url.p)>
    <cflocation url="index.cfm" addtoken="no">
</cfif>

<cfset st = cst_getData("", url.page)>
<cfset fm = "">
<cfswitch expression = "#url.p#">
    <!--- add --->
    <cfcase value="add">
        <cfset form.yyyy    = session.yyyy>
        <cfset form.mm      = session.mm>
        <cfset form.dd      = session.dd>
        <cfset fm = cst_fm()>
    </cfcase>
    <!--- upd --->
    <cfcase value="upd">
        <cfset sttmp = cst_getData(form.id)>
        <cfset form.yyyy    = mid(sttmp.data.c1,1,4)>
        <cfset form.mm      = mid(sttmp.data.c1,6,2)>
        <cfset form.dd      = mid(sttmp.data.c1,9,2)>
        <cfset form.i1      = sttmp.data.i1>
        <cfset form.i2      = sttmp.data.i2>
        <cfset form.m1      = sttmp.data.m1>
        <cfset fm = cst_fm()>
    </cfcase>
</cfswitch>
<cfset cst_layout(st, fm)>
<!---=================================================================
cst_fm
==================================================================--->
<cffunction name="cst_fm" access="public" returnType="string" output="yes">
    <cfset var local = structNew()>

    <cfsavecontent variable = "local.tmp">
    <cfoutput>
    <form name="frm" method="post">
    <input type="hidden" name="id"      value="#form.id#">
    <table>
        <tr>
            <th>日付</th>
            <td>
                <select name="yyyy">
                <cfset local.from   = dateformat(DateAdd("yyyy", -1, request.now), "yyyy")>
                <cfset local.to     = local.from + 2>
                <cfloop index="local.idx" from="#local.from#" to="#local.to#">
                    <option value="#local.idx#" <cfif form.yyyy eq local.idx>selected</cfif>>#local.idx#</option>
                </cfloop>
                </select><select name="mm">
                <cfloop index="local.idx" from="1" to="12">
                    <cfset local.tmp = right("0" & local.idx, 2)>
                    <option value="#local.tmp#" <cfif form.mm eq local.tmp>selected</cfif>>#local.tmp#</option>
                </cfloop>
                </select><select name="dd">
                <cfloop index="local.idx" from="1" to="31">
                    <cfset local.tmp = right("0" & local.idx, 2)>
                    <option value="#local.tmp#" <cfif form.dd eq local.tmp>selected</cfif>>#local.tmp#</option>
                </cfloop>
                </select></td>
        </tr>
        <tr>
            <th>体重</th>
            <td><input type="text" name="i1" size="15" value="#form.i1#" style="text-align:right;" onKeypress="#request.js_chkNumP#"></td>
        </tr>
        <tr>
            <th>体脂肪</th>
            <td><input type="text" name="i2" size="15" value="#form.i2#" style="text-align:right;" onKeypress="#request.js_chkNumP#"></td>
        </tr>
        <tr>
            <th colspan="2">メモ</th>
        </tr>
        <tr>
            <td colspan="2">
                <textarea name="m1" cols="70" rows="3">#form.m1#</textarea>
            </td>
        </tr>
    </table>
    <cfif url.p eq "add">
        <input type="button" value="add" onClick="js_add()">
    </cfif>
    <cfif url.p eq "upd">
        <input type="button" value="upd" onClick="js_upd()">
        <input type="button" value="del" onClick="js_del()">
    </cfif>
    </form>

    <br>
    <br>

    <script language="JavaScript">
    <!--
    function js_add(){
        with(document.frm){
            if(confirm("add OK?")){
                action = "index.cfm?p=addEnd";
                submit();
            }
        }
    }
    function js_upd(){
        with(document.frm){
            if(confirm("upd OK?")){
                action = "index.cfm?p=updEnd";
                submit();
            }
        }
    }
    function js_del(){
        with(document.frm){
            if(confirm("del OK?")){
                action = "index.cfm?p=delEnd";
                submit();
            }
        }
    }
    //-->
    </script>
    </cfoutput>
    </cfsavecontent>

    <cfreturn local.tmp>
</cffunction>
<!---=================================================================
cst_getData
==================================================================--->
<cffunction name="cst_getData" access="public" returnType="struct" output="no">
    <cfargument name="id" type="string" required="yes">
    <cfargument name="page" type="string" default="1">

    <cfhttp url         = "#request.url#dataGetEx"
            proxyServer = "#request.proxyServer#"
            proxyPort   = "#request.proxyPort#"
            method="post">

        <cfhttpparam type="formField" name="user_id"    value="#request.user_id#">
        <cfhttpparam type="formField" name="key"        value="#request.key#">
        <cfhttpparam type="formField" name="id"         value="#arguments.id#">
        <cfhttpparam type="formField" name="cat_id"     value="#request.cat_id#">
        <cfhttpparam type="formField" name="fil_id"     value="c1_desc">
        <cfhttpparam type="formField" name="fld_list"   value="id,cat_id,c1,i1,i2,m1">
        <cfhttpparam type="formField" name="fromto_fld" value="c1">
        <cfhttpparam type="formField" name="to"         value="#session.yyyy#/#session.mm#/#session.dd#">
        <cfhttpparam type="formField" name="row"        value="#session.chk1#">
        <cfhttpparam type="formField" name="page"       value="#arguments.page#">
        <cfhttpparam type="formField" name="type"       value="wddx">
        <cfhttpparam type="formField" name="debug"      value="">
    </cfhttp>

    <cfwddx action="wddx2cfml" input="#cfhttp.filecontent#" output="outData">

    <!--- i1,i2を10で割る --->
    <cfloop query="outData.data">
        <cfset QuerySetCell(outData.data, "i1", outData.data.i1 / 10, outData.data.currentRow)>
        <cfset QuerySetCell(outData.data, "i2", outData.data.i2 / 10, outData.data.currentRow)>
    </cfloop>

    <cfreturn outdata>
</cffunction>
<!---=================================================================
cst_layout
==================================================================--->
<cffunction name="cst_layout" access="public" returnType="void" output="yes">
    <cfargument name="stru" type="struct" required="yes">
    <cfargument name="frm" type="string" required="yes">

    <cfset var st = arguments.stru>
    <cfset var fm = arguments.frm>

    <cfoutput>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="content-style-type" content="text/css; charset=utf-8" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <title>めまぴークライアントのデモ(体重体脂肪)</title>
        <meta name="keywords" content="めまぴー,memapi" />
        <meta name="description" content="めまぴークライアントのデモ(体重体脂肪)です。" />
        <link href="common.css" rel="stylesheet" type="text/css" media="all" />
        <script type="text/javascript" src="common.js"></script>
        <script type="text/javascript" src="index.js"></script>
    </head>
    <body>
    <!-- container -->
    <div id="container">

        <!-- header -->
        <div id="header">
            <!-- left -->
            <div class="left">
                <h1><a href="index.cfm" accesskey="1">めまぴークライアントのデモ(体重体脂肪)</a></h1>
                <h2>by <a href="http://memapi.utalab.com/" target="_blank">めまぴー</a></h2>
            <!-- /.left --></div>

            <!-- right -->
            <div class="right">
            <!-- /.right --></div>

        <!-- /##header --></div>

        <div class="clearblock"/>

        <!-- left -->
        <div id="left">
            <!-- menu -->
            <div class="menu">
                <p class="title">STATUS</p>

                <table>
                    <tr>
                        <th>ret</th>
                        <td align="right" id="ret">#st.ret#</td>
                    </tr>
                    <tr>
                        <th>pageCount</th>
                        <td align="right" id="pageCount">#st.pageCount#</td>
                    </tr>
                    <tr>
                        <th>recCount</th>
                        <td align="right" id="recCount">#st.recCount#</td>
                    </tr>
                </table>

            <!-- /.menu --></div>

            <!-- menu -->
            <div class="menu">
                <p class="title">検索</p>

                <form name="frm_srch" action="index.cfm?p=srch" method="post">
                <table>
                    <tr>
                        <td>
                            <select name="s_yyyy">
                            <cfset local.from   = dateformat(DateAdd("yyyy", -1, request.now), "yyyy")>
                            <cfset local.to     = local.from + 2>
                            <cfloop index="local.idx" from="#local.from#" to="#local.to#">
                                <option value="#local.idx#" <cfif session.yyyy eq local.idx>selected</cfif>>#local.idx#</option>
                            </cfloop>
                            </select><br>

                            <select name="s_mm">
                            <cfloop index="local.idx" from="1" to="12">
                                <cfset local.tmp = right("0" & local.idx, 2)>
                                <option value="#local.tmp#" <cfif session.mm eq local.tmp>selected</cfif>>#local.tmp#</option>
                            </cfloop>
                            </select><br>

                            <select name="s_dd">
                            <cfloop index="local.idx" from="1" to="31">
                                <cfset local.tmp = right("0" & local.idx, 2)>
                                <option value="#local.tmp#" <cfif session.dd eq local.tmp>selected</cfif>>#local.tmp#</option>
                            </cfloop>
                            </select></td>
                    </tr>
                    <tr>
                        <td>
                            <select name="chk1">
                            <cfloop index="idx" list="30,60,90,180,360">
                                <option value="#idx#" <cfif session.chk1 eq idx>selected</cfif>>#idx#</option>
                            </cfloop>
                            </select>
                            日間
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input type="submit" value="検索">
                            <input type="button" value="本日にリセット" onClick="js_today()">
                        </td>
                    </tr>
                </table>
                </form>
            <!-- /.menu --></div>

            <!-- menu -->
            <div class="menu">
                <p class="title">
                <input type="button" value="新規登録" onClick="js_entry()">
                </p>

            <!-- /.menu --></div>
        <!-- /##left --></div>

        <!-- center -->
        <div id="center">
            <!-- content -->
            <div id="content">
                <h3>体重体脂肪</h3>

                #fm#

                <cfset qry_tmp=st.data>

                <cfif qry_tmp.recordCount neq 0>
                    <cfquery name="qry_maxmin" dbtype="query">
                    select
                        max(i1) as max_i1,
                        max(i2) as max_i2,
                        min(i1) as min_i1,
                        min(i2) as min_i2
                    from qry_tmp
                    </cfquery>
                    <cfquery name="qry_tmp" dbtype="query">
                    select *
                    from qry_tmp
                    order by c1
                    </cfquery>

                    <table>
                        <tr>
                            <td>
                                <cfchart format = "flash"
                                    chartHeight = "200"
                                    chartWidth  = "290"
                                    title       = "体重"
                                    scaleFrom   = "#qry_maxmin.min_i1#"
                                    scaleTo     = "#qry_maxmin.max_i1#"
                                    showMarkers = "no"
                                    >

                                    <cfchartseries type="line">
                                        <cfloop query="qry_tmp">
                                            <cfchartdata
                                                item = "#qry_tmp.c1#"
                                                value = "#qry_tmp.i1#">
                                        </cfloop>
                                    </cfchartseries>
                                </cfchart>
                            </td>
                            <td>
                                <cfchart format ="flash"
                                    chartHeight ="200"
                                    chartWidth  ="290"
                                    title       = "体脂肪"
                                    scaleFrom   ="#qry_maxmin.min_i2#"
                                    scaleTo     ="#qry_maxmin.max_i2#"
                                    showMarkers = "no"
                                    >

                                    <cfchartseries type="line">
                                        <cfloop query="qry_tmp">
                                            <cfchartdata
                                                item = "#qry_tmp.c1#"
                                                value = "#qry_tmp.i2#">
                                        </cfloop>
                                    </cfchartseries>
                                </cfchart>
                            </td>
                        </tr>
                    </table>
                    <br>
                    <table border="1" id="list">
                        <tr>
                            <th nowrap>日付</th>
                            <th nowrap>体重</th>
                            <th nowrap>体脂肪</th>
                            <th>メモ</th>
                        </tr>

                        <cfloop query="st.data">
                                <tr>

                                <td><a href="index.cfm?p=upd&id=#st.data.id#">#st.data.c1#</a></td>
                                <td align="right">#numberformat(st.data.i1,".9")#</td>
                                <td align="right">#numberformat(st.data.i2,".9")#</td>
                                <td>#st.data.m1#</td>
                            </tr>
                        </cfloop>
                    </table>
                    page:
                    <cfloop index="local.idx" from="1" to="#st.pageCount#">
                        <cfif local.idx eq url.page>
                            <strong>#local.idx#</strong>
                        <cfelse>
                            <a href="index.cfm?page=#local.idx#">#local.idx#</a>
                        </cfif>
                    </cfloop>
                </cfif>
            <!-- /##content --></div>
        <!-- /##center --></div>

        <div class="clearblock"/>

        <!-- footer -->
        <div id="footer">
            <form name="frm_cookie">
                <table border="0" width="100%">
                    <tr>
                        <td>user_id:<input type="text" name="user_id" id="user_id" value="#request.user_id#"></td>
                        <td>key:<input type="text" name="key" id="key" value="#request.key#"></td>
                        <td>
                            <input type="button" value="cookie change" onClick="js_cookie()">
                            <input type="button" value="cookie delete" onClick="js_cookie_del()">
                        </td>
                    </tr>
                </table>
            </form>
        <!-- /##footer --></div>
    <!-- /##container --></div>
    </body>
    </html>
    </cfoutput>
</cffunction>