Exemple #1
0
        public static string SwitchOperation(string _filter, FilterStr item)
        {
            switch (item.Operation)
            {
            case OperationStr.GreaterThan:
                _filter += ">";
                break;

            case OperationStr.LessThan:
                _filter += "<";
                break;

            case OperationStr.GreaterThanOrEqual:
                _filter += ">=";
                break;

            case OperationStr.LessThanOrEqual:
                _filter += "<=";
                break;

            case OperationStr.NotEqual:
                _filter += "!=";
                break;

            case OperationStr.Equal:
                _filter += "==";
                break;

            case OperationStr.Like:
                _filter += ".Contains(\"";
                break;

            default:
                _filter += "==";
                break;
            }

            return(_filter);
        }
Exemple #2
0
        public IActionResult GetTask(int userid, int pageIndex, int pageSize, [FromBody] List <FilterStr> filter, string order, bool isAsc)
        {
            if (userid != -1)
            {
                if (filter is null)
                {
                    filter = new List <FilterStr>();
                }
                FilterStr _f = new FilterStr
                {
                    FieldName = "UserId",
                    Operation = OperationStr.Equal,
                    Value     = userid
                };
                filter.Add(_f);
            }
            try
            {
                string _order = string.Empty;
                Expression <Func <TaskView, string> > orderby    = null;
                Expression <Func <TaskView, int> >    orderbyint = null;
                Expression <Func <TaskView, bool> > where = null;

                GetOrder(order, ref _order, ref orderby, ref orderbyint);
                if (filter != null && filter.Count > 0)
                {
                    string _filter = string.Empty;
                    foreach (FilterStr item in filter)
                    {
                        _filter += "p." + item.FieldName;
                        _filter  = SwitchOper.SwitchOperation(_filter, item);
                        switch (item.Value.GetType().Name.ToString())
                        {
                        case "String":
                        case "string":
                            if (item.Operation == OperationStr.Like)
                            {
                                _filter += item.Value;
                                _filter += "\")";
                            }
                            else if (item.Operation == OperationStr.Equal || item.Operation == OperationStr.NotEqual)
                            {
                                _filter += "\"";
                                _filter += item.Value;
                                _filter += "\"";
                            }
                            else
                            {
                                return(Json(new
                                {
                                    state = "-1",
                                    msg = "条件无效!"
                                }));
                            }
                            break;

                        case "Int32":
                        case "Int64":
                        case "Int":
                        case "Double":
                            if (item.Operation == OperationStr.Like)
                            {
                                return(Json(new
                                {
                                    state = "-1",
                                    msg = "条件无效!"
                                }));
                            }
                            else
                            {
                                _filter += item.Value;
                            }
                            break;

                        case "DateTime":
                            if (item.Operation == OperationStr.Like)
                            {
                                return(Json(new
                                {
                                    state = "-1",
                                    msg = "条件无效!"
                                }));
                            }
                            else
                            {
                                _filter += "DateTime.Parse(\"";
                                _filter += item.Value;
                                _filter += "\")";
                            }
                            break;

                        default:
                            break;
                        }
                        _filter += "&&";
                    }
                    _filter = _filter.Substring(0, _filter.Length - 2);
                    where   = new Interpreter().ParseAsExpression <Func <TaskView, bool> >(_filter, "p");
                }

                if (orderbyint == null)
                {
                    return(Json(new
                    {
                        table = _repository.Query <TaskView, string>(pageIndex, pageSize, where, orderby, null, isAsc),
                        state = "0",
                        msg = "操作成功!"
                    }));
                }
                else
                {
                    return(Json(new
                    {
                        table = _repository.Query <TaskView, int>(pageIndex, pageSize, where, orderbyint, null, isAsc),
                        state = "0",
                        msg = "操作成功!"
                    }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new
                {
                    state = "-1",
                    msg = "非法操作!"
                }));
            }

            //return Json(new
            //{
            //    table = _repository.GetTask(id),
            //    state = "0",
            //    msg = "操作成功!"
            //});
            //return Ok();
        }
        public MainViewModel()
        {
            // タイトルに表示する文字列を指定
            var asm = Assembly.GetExecutingAssembly().GetName();

            AppName.Value = asm.Name + " - " + asm.Version.Major + "." + asm.Version.Minor;

            // 表示するリスト(filteredItemsSource)のソースとフィルタの設定
            FilteredItemsSource = new CollectionViewSource {
                Source = MemoList
            };
            FilteredItemsSource.Filter += (s, e) =>
            {
                var item = e.Item as SelfMemoItem;
                e.Accepted = CheckFilterStr(FilterStr.Value, item) && CheckCategoryFilter(item);
            };

            // ファイルが有ればロードしてMemoListを更新
            if (File.Exists(MemoFileName))
            {
                SelfMemoList.LoadMemoFile(MemoList, MemoFileName);
            }

            // MemoListが空なら、ヘルプメッセージ的な項目を追加する
            if (SelfMemoList.ItemsList.Count == 0)
            {
                MemoList.Add(new SelfMemoItem("用語", "正式名称、別名、訳語など", "用語の解説", "カテゴリ"));
                MemoList.Add(new SelfMemoItem("SelfMemo", "概要", "キーワードと関連情報(訳語、正式名称、説明など)を登録し、ど忘れした時に見返しやすくするアプリです。", "本アプリの説明"));
                MemoList.Add(new SelfMemoItem("SelfMemo", "検索機能", "検索フォームからキーワード検索ができます。", "本アプリの説明"));
                MemoList.Add(new SelfMemoItem("SelfMemo", "ショートカット", "グローバルホットキー(デフォルトでAlt+Shift+F2)でいつでもアプリ起動します。", "本アプリの説明"));
                MemoList.Add(new SelfMemoItem("SelfMemo", "項目追加", "メニューの「登録ダイアログを開く(Ctrl+R)」からキーワードの追加ができます。", "本アプリの説明"));
                MemoList.Add(new SelfMemoItem("SelfMemo", "項目編集", "編集ビューから登録内容の編集ができます。", "本アプリの説明"));
                MemoList.Add(new SelfMemoItem("SelfMemo", "カテゴリフィルタ", "「カテゴリ」メニューでカテゴリ毎の表示フィルタリングができます。", "本アプリの説明"));
            }

            // Filter文字列が更新されたら、Filterされたアイテムリストを更新
            FilterStr.Subscribe(_ =>
            {
                // 既にタイマーが走ってたら、一旦止める
                if (FilteredItemsRefreshTimer.IsEnabled)
                {
                    FilteredItemsRefreshTimer.Stop();
                }

                // タイマー開始
                FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300);
                FilteredItemsRefreshTimer.Tick    += (s, e) =>
                {
                    FilteredItems.Refresh();
                    FilteredItemsRefreshTimer.Stop();
                };
                FilteredItemsRefreshTimer.Start();
            });

            // Filter文字列の有無フラグを連動
            UseFilterStr = FilterStr.Select(x => !string.IsNullOrWhiteSpace(x)).ToReadOnlyReactivePropertySlim();

            // カテゴリ選択ComboBoxが更新されたら、Filterされたアイテムリスト更新
            CategoryListSelected.Subscribe(_ =>
            {
                if (!FilteredItemsRefreshTimer.IsEnabled)
                {
                    FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300);
                    FilteredItemsRefreshTimer.Tick    += (s, e) =>
                    {
                        FilteredItems.Refresh();
                        FilteredItemsRefreshTimer.Stop();
                    };
                    FilteredItemsRefreshTimer.Start();
                }
            });

            // 選択項目をSelectedItemに入れる処理
            FilteredItems.CurrentChanged += (s, e) =>
            {
                SelectedItem.Value = FilteredItems.CurrentItem as SelfMemoItem;
            };

            // UseCategoryListはカテゴリリストからなんか選択されてたらTrue
            UseCategoryList = CategoryListSelected.Select(x => !string.IsNullOrEmpty(x)).ToReadOnlyReactivePropertySlim();

            // カテゴリリストのON/OFFを切り替えるタイミングでもカテゴリリストの内容更新
            UseCategoryList.Subscribe(_ =>
            {
                SelfMemoList.UpdateCategoryList();
            });

            // MemoListのコレクションが更新されたらファイルに保存
            MemoList.CollectionChanged += (s, e) =>
            {
                SelfMemoList.SaveMemoFile(MemoList, MemoFileName);
            };

            WindowWidth.Subscribe(_ =>
            {
                ExpanderWidth.Value = Math.Max(400, WindowWidth.Value / 2);
            });
        }