favのタグ付け管理 メモ
Twitterのお気に入りをリマインドのために使うことがあるので、
タグ付け管理したいなーと思って作りました。
Java(Play!)です。め、めんどくさかっt…ごほん。
ローカルでしか動いていないのでサーバーをなんとかしないといけません…。
直さなければならない点をメモメモ。
- 同じタグは付けられないようにする
- タグを削除できるようにする
jQueryたのしい!!!!
以下ハマったところを覚え書き。
いつまでも自分だけが得をする日記しかかけません…
クリックしたらsubmitする(GET)
タグ名をクリックしたら、そのタグが付けられたお気に入りの一覧を表示します。
- JavaScript(test.js)
- ※submit処理の部分だけを抜き出しています
$('.tag').each( function(){ if('[]'==$(this).text())$(this).hide(); } ); $('.tag').click( function(){ $(this).attr("action","/index"); $(this).submit(); } ); $('.tag').hover( function () { $(this).addClass("point"); }, function () { $(this).removeClass("point"); } );
package controllers; import java.util.ArrayList; import java.util.Collections; import java.util.List; import models.FavData; import models.TagData; import play.mvc.*; import play.mvc.Scope.Params; import twitter4j.ResponseList; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.User; import twitter4j.http.AccessToken; import twitter4j.http.RequestToken; public class Application extends Controller { //略 private static int personalId = 0; //略 public static void index(String tag,String statusid,String tagselect,String clicktag){ //略 personalId = twitter.getId(); if(clicktag!=null){ List<TagData> newtaglist = TagData.find("personalId like ?",personalId).fetch(); List<FavData> favdatas = FavData.find("personalId like ?",personalId).fetch(); List<FavData> newfavdatas = new ArrayList<FavData>(); for(FavData fav:favdatas){ for(int i = 0;fav.tag[i]!=null;i++){ if(fav.tag[i].equals(clicktag)){ newfavdatas.add(fav); } } } System.out.println(newfavdatas.size()); render(newtaglist,newfavdatas); } //略 } }
package models; import javax.persistence.Entity; import play.db.jpa.Model; @Entity public class FavData extends Model{ private static final long serialVersionUID = 1L; public String imageURL; public String name; public String text; public long statusId; public int personalId; public String[] tag = new String[10]; public FavData(String imageURL,String name,String text,long statusId,int personalId,String tag){ this.imageURL = imageURL; this.name = name; this.text = text; this.statusId = statusId; this.personalId = personalId; this.tag[0] = tag; } }
package models; import javax.persistence.Entity; import play.db.jpa.Model; @Entity public class TagData extends Model{ private static final long serialVersionUID = 1L; public int personalId; public String tagname; public int size; public TagData(int personalId,String tagname,int size){ this.personalId = personalId; this.tagname = tagname; this.size = size; } }
- HTML(index.html)
- タグ表示部分をなんとかしたいです…!
#{extends 'main.html' /} #{set title:'Home' /} #{set 'moreScripts'} <script src="@{'/public/javascripts/test.js'}" type="text/javascript" ></script> #{/set} <h1>MyFavorites</h1> <div class="tag_list"> #{list items:newtaglist, as:'tag'} <form class="tag"><input type="hidden" name="clicktag" value="${tag.tagname}" />${tag.tagname}(${tag.size})</form> #{/list} </div> <table class="cell_table"> #{list items:newfavdatas, as:'fav'} <tr class="cell"> <td class="image"><img src="${fav.imageURL}" border="0"/></td> <td><a class="screen_name" href="http://twitter.com/${fav.name}" target="_blank">${fav.name}</a><br /> ${fav.text}<br /> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[0]}" />[${fav.tag[0]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[1]}" />[${fav.tag[1]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[2]}" />[${fav.tag[2]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[3]}" />[${fav.tag[3]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[4]}" />[${fav.tag[4]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[5]}" />[${fav.tag[5]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[6]}" />[${fav.tag[6]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[7]}" />[${fav.tag[7]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[8]}" />[${fav.tag[8]}]</form> <form class="tag"><input type="hidden" name="clicktag" value="${fav.tag[9]}" />[${fav.tag[9]}]</form> <div class="create_tag">タグをつける<span class="status_id">${fav.statusId}</span></div></td> <td>×<br />○</td> </tr> #{/list} </table> <div><a href="@{Application.logout}">ログアウト</a></div>
.tag{ color:#52b7cf; display:inline; } .point{ cursor:pointer; }