TagToDo、はい、もう1つのToDoボックス



「忘れられない」と書く夢がいつもありました。 私は何度もこのタスクに着手しましたが、レイアウトの段階で欲求が消えたか、友人が「なぜもう1つのToDoキャビネットが必要なのか、たくさんあります」と言っていました。 しかし、彼自身のものを書きたいという欲求は消えませんでした。 そして仕事では、比較的穏やかな日々が目立ち、私は再び自分自身の暗い目標を設定しました。最後に「忘れられない」ことを書くことです。 そして、私は村の前ではデスクトップアプリケーションのみを使用し、Webに足を踏み入れていなかったため、学習と長年の夢を組み合わせることにしました。 私の主なパンが.Net + WPFであることを考えると。 Silverlightプラットフォームを選択しました。 .Net + WPFのように見えますが、何か新しいものです。 彼はすぐに目標を設定しましたが、理想的には5日で完了するはずです。



目標があります。



プロジェクトの目的、主なアイデア:タスクをすばやく追加し、タグを(すばやく)ハングアップして、タグでフィルタリングできるようにします! それだけです 別の素晴らしいアイデアが現れたら、メインアイデアに彼女の鼻を突っ込みます。 そして先送り。 すべてのアイデアは、あるべき姿で頭の中で回転し、絶えず増殖しています。 しかし、私はそれらに抵抗することができました。 計画はこれを助けてくれました。



計画はこれです。



1. 1日でプロトタイプインターフェイスを作成します。

2.データベースを作成し、ビジネスレイヤーの背後で閉じます。 (1日)

3.通常、最初のベータ版を入力して取得します。 (1日)

4.バグの撮影(2日間)

計画は良いニュースではありませんが、私はそれに従いました。 プロトタイプはKaxamlプログラムで作成されました(紙や特別なプログラムではなく、まだxamlコードの形でプロトタイプを作成しています)。そこで最初の間違いを犯し、WPFのプロトタイプを作成しましたが、Silverlightとは大きく異なります。 その後、外観には影響しませんでしたが、私はかなり小さなものを転送しました。



洋服



最終的なビューはあまり変更されていません。

画像

私はデザイナーではないので、さまざまなiPhoneモックアップからインターフェイスを「なめる」ことにしました。 とはいえ、私はこの電話のファン(所有者)ではありませんが、インターフェースは本当に好きです。 この段階については詳しく説明せず、主な問題についてのみ説明します。 何よりもまず、SilverlightのXamlはWPF-xamlのサブセットではなく、細部が大きく異なります。 これは dotCypress によってすでに参照されています。 トリッキーなアニメーションはすべて、 VisualStateManagerを使用して作成しました。その主なアイデアは、ちなみに、名前から、制御状態の編成、および状態間の遷移の制御です。 非常に便利ですが、WPFでトリガーを操作した人には馴染みがありません。

-

ビジネスロジックはどこにありますか?



WindowsとMS SQL 2008データベースで既に小規模なホスティングを行っているため、明らかな理由で、そこにデータベースを作成しました。 私が言い訳をしているのは、Microsoftの拠点でのみ私の人生を尽くしているからです。少し後悔していません。 幼児全体が1枚のプレートと2つのストアドプロシージャに入り、そのうちの1つは、存在しない場合は幼児を追加し、存在する場合は更新し、本文が空の場合は削除します(3つの部分を行う必要がありましたが、ここでは3%を残しました、3% DBビジネスロジックは殺されませんでした)。 2番目のストアにタスクリストが追加されました。 タスクIDとして作成日を取りました。 記事を念頭に置いて、ビジネス層は完全にサービス(silverlight対応のサービス)に移行されました。このサービスはすべて97%アクセスする必要があります。 最初は、すべてのストアドプロシージャを「ハンドル」でプルしたかったのですが、素晴らしいRsdn.Framework.Dataを思い出すことにしました 。 したがって、すべてが彼を通して書かれました。 RsdnおよびWCFから属性をハングさせた後のタスククラス自体は、次のようになりました。

[DataContract]

public class ToDo {

[MapField("id")]

[DataMember]

public DateTime Id { get; set; }



[MapField("text")]

[DataMember]

public string Text { get; set; }



[MapField("completed")]

[DataMember]

public bool Completed { get; set; }



[MapField("tags")]

[DataMember]

public string Tags { get; set; }



[MapField("parentid")]

[DataMember]

public DateTime? ParentId { get; set; }




[IgnoreDataMember]

[MapField("userid")]

public int UserId { get; set; }

}







ParentId、これは私の保護障壁を突破し、後で実装された唯一のアイデアのヒントです。 (こんにちはgmail)。 ご覧のとおり、クラスは非常に単純ですが、属性でハングしています。 フォームの属性[DataMember]、このデータがSilverlightアプリケーションに送信されることを示すヒント、および[IgnoreDataMember]-それぞれ送信されないことを示します。 [MapField( "XXX")]は、クラスフィールドとデータベースのレコードフィールドのマッピングです。 率直に言って、Rsdn.Framework内のこのような魔法のために、私はその時点でc#に切り替えました。



この段階での主な間違いは、既製のASP.Netメカニズムなどがありますが、自転車の認証とユーザー登録の作成です。 なぜ私はそれらを使用しなかったのか分かりません。 コードの80%とその他の追加のプレートは、承認と登録のためにのみ作成されました...悔い改めましたが、そうです。



コード



この段階はまったく面白くありません。ここに、独自のフレームワークを備えた通常のC#があります。コードは簡単かつ迅速に記述されています。 すべてが素晴らしいです。 しかし、いつものようにプラグがあります。 たとえば、さまざまな要素を「再スタイル」(新しいスタイルを作成)する場合、それらの動作は非常に適切であり、通常は記述内容に対応しますが、ListBoxには迷惑なバグがあります。 その子は、親の幅全体を占有するのではなく、必要なだけ占有します。 汚いハックがそれらを打ち負かしました。 残念ながら、きれいなxamlソリューションはうまくいきませんでした。 または、たとえば、DoubleClick'aはありません。これは深刻ですが、完全に解決可能です。



遊ぶ。 テスト中です。



いつものように、これは芽に絞められる必要がある多くの素晴らしいアイデアがある最も長い段階です。 また、修正が必要な誤解を伴うあらゆる種類の問題。 この段階で、彼らは私に「Googleのような」というアイデアを与えました。 タスクを階層化します。 その後、すぐにDrag'n'Dropによるハックが登場し(SilverlightでのDrag'n'Dropについては、おもしろければ、別に説明します)、あらゆる種類の非論理性。 しかし、すべてが無効になっているようです。誇らしげにバージョン1.0をインストールし、プロジェクトを公開します。



TagTodo。 判断した。



だから、私が得たものの説明。 機能。

1.タスクをオンラインで保存し、どこからでもアクセスできます。

2.タグは各タスクでハングアップし、それによってタグをフィルタリングできます。 タグは、コンテンツに基づいて自動的に色付けされます。 タグは削除およびドラッグできます。

3.タスクはサブタスクに分割でき、サブタスクも順番に分割できます。 そして、タスクを階層的に配置します。

4.リスト全体をXMLとしてエクスポートできます。

5.スピードとシンプルさ。 タスクを作成するときは、メインテキストからバックスラッシュ「\」でタグを区切ります。 Enterボタンを押すと、タスクが追加され、入力したタグも表示されます。 たとえば、「象を洗う\洗車、象」。 タスク「象を洗う」が追加され、2つのタグ「洗う」と「象」が追加されます。

6.タスクを子として追加するには、将来の父親を選択し、バックスラッシュ「\」でタスク名を開始します。 ただし、通常のドラッグアンドドロップで同じことをする人はいません。

7.面白いタグ「時は金なり」。 彼は、このタスクを作成してからどれくらい時間が経過したかをあなたに書きます。 (上の写真を参照)



さあ 、遊びましょう 。 Silverlight 3が必要です。

すぐに警告したい 。 登録画面はかなり非論理的で、ほとんど影響を受けていません。 登録ボタンをクリックすると、名前とパスワードに加えて、メールを入力できます。 もう一度このボタンを押すと、メールに対して(すべてが正常であれば、ログインはビジーではなく、そのようなメールがありますなど)確認リンクがなくなります。 メールを確認したら。 アカウントのロックが解除され、ゲームをプレイできます。



PSハブに関する私の最初のトピックは、ラベル(タグ?)「Julyata」を白塗りしたかったことです。 それが判明したかどうかは、判断するのはあなた次第です。 アイデア、改善は歓迎されますが、彼らの脳はいっぱいです。



All Articles