예제 #1
0
        public static async Task <bool> Update(Dictionary <int, Project> projects)
        {
            projects.Clear();
            Projects result = new Projects();

            Progress.Report(0);

            do
            {
                result = await RedmineApi.GetPaginatedList <Projects>(result);

                if (result == null)
                {
                    return(false);
                }

                foreach (Project p in result.Items)
                {
                    projects.Add(p.Id, p);
                }

                Progress.Report(projects.Count * 100 / result.TotalCount);
                result.Offset += result.Limit;
            }while (projects.Count < result.TotalCount);
            Progress.Report(100);

            return(true);
        }
예제 #2
0
        public static async Task <bool> Update(Dictionary <int, Query> queries)
        {
            queries.Clear();
            Queries result = new Queries();

            Progress.Report(0);

            do
            {
                result = await RedmineApi.GetPaginatedList <Queries>(result);

                if (result == null)
                {
                    return(false);
                }

                foreach (Query q in result.Items)
                {
                    queries.Add(q.Id, q);
                }

                Progress.Report(queries.Count * 100 / result.TotalCount);
                result.Offset += result.Limit;
            }while (queries.Count < result.TotalCount);
            Progress.Report(100);

            return(true);
        }
예제 #3
0
        public static async Task <bool> Update(Dictionary <int, TimeEntry> timeEntries)
        {
            timeEntries.Clear();
            TimeEntries result = new TimeEntries();

            Progress.Report(0);

            do
            {
                result = await RedmineApi.GetPaginatedList <TimeEntries>(result);

                if (result == null)
                {
                    return(false);
                }

                foreach (TimeEntry e in result.Items)
                {
                    timeEntries.Add(e.Id, e);
                }

                Progress.Report(timeEntries.Count * 100 / result.TotalCount);
                result.Offset += result.Limit;
            }while (timeEntries.Count < result.TotalCount);
            Progress.Report(100);

            return(true);
        }
예제 #4
0
파일: Users.cs 프로젝트: dkhalife/redmine
        public static async Task <bool> Update(Dictionary <int, User> users)
        {
            users.Clear();
            Users result = new Users();

            Progress.Report(0);

            do
            {
                result = await RedmineApi.GetPaginatedList <Users>(result);

                if (result == null)
                {
                    return(false);
                }

                foreach (User u in result.Items)
                {
                    users.Add(u.Id, u);
                }

                Progress.Report(users.Count * 100 / result.TotalCount);
                result.Offset += result.Limit;
            }while (users.Count < result.TotalCount);
            Progress.Report(100);

            return(true);
        }
예제 #5
0
        /// <summary>
        /// プロジェクト情報を取得します
        /// </summary>
        private void getProjectInfo()
        {
            try
            {
                if (Settings.Instance.IsValid())
                {
                    RedmineApi.apiKey  = Settings.Instance.redmineApiKey;
                    RedmineApi.baseUrl = Settings.Instance.redmineUrl;
                    RedmineApi.limit   = Settings.Instance.redmineApiLimit;

                    // URL,APIKey指定
                    this.issueStatus = RedmineApi.GetIssueStatus();
                    this.projectInfo = RedmineApi.GetProjects();

                    this.displayProjectInfo(this.projectInfo.projects);
                }
                else
                {
                    MessageBox.Show("設定を行って下さい。");
                    ConfigWindow.ShowWindow();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
예제 #6
0
        /// <summary>
        /// 終了プロジェクトを表示・非表示します
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        //private void closedProjectCheckBox_Checked(object sender, RoutedEventArgs e)
        //{
        //    // bool isChecked = this.showClosedProjectCheckBox.IsChecked == null ? false : (bool)this.showClosedProjectCheckBox.IsChecked;
        //    this.displayProjectInfo();
        //}


        /// <summary>
        /// 右クリックイベント
        /// チケット情報をブラウザで開きます
        /// </summary>
        /// <param name = "sender" ></ param >
        /// < param name="e"></param>
        private void IssueOpenInBrowser_Click(object sender, RoutedEventArgs e)
        {
            if (issueListView.SelectedIndex == -1)
            {
                return;
            }
            Issue item = issueListView.SelectedItem == null ? null : (Issue)issueListView.SelectedItem;

            if (item != null)
            {
                Utility.OpenUrl(RedmineApi.GetIssueUrl(item.id));
            }
        }
예제 #7
0
        /// <summary>
        /// 対象プロジェクトのチケット情報を読み込みます
        /// </summary>
        /// <param name="projectId"></param>
        private void getProjectIssuInfo(int projectId, int versionNo)
        {
            if (versionNo == 0)
            {
                this.issueInfo = RedmineApi.GetProjectIssues(projectId);
            }
            else
            {
                this.issueInfo = RedmineApi.GetProjectIssuesWithVersion(projectId, versionNo);
            }

            TermLabel.Text = "( " + this.issueInfo.startDateString + " ~ " + this.issueInfo.endDateString + " )";
            this.displayIssueInfo(this.issueInfo.issues);
        }
예제 #8
0
        /// <summary>
        /// ツリー選択
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            var item = this.treeView.SelectedItem as ProjectData;

            if (item != null)
            {
                this.selectedProject = item;
                this.Title.Text      = item.Name;
                this.versions        = RedmineApi.GetProjectVersions(item.id);
                this.displayVersionsInfo();
            }

            // menu close
            MenuToggleButton.IsChecked = false;
        }
예제 #9
0
        public static async Task <bool> Update(Dictionary <int, Tracker> trackers)
        {
            Trackers result = await RedmineApi.GetList <Trackers>();

            if (result == null)
            {
                return(false);
            }

            trackers.Clear();
            foreach (Tracker t in result.Items)
            {
                trackers.Add(t.Id, t);
            }

            return(true);
        }
예제 #10
0
        public static async Task <bool> Update(Dictionary <int, TimeEntryActivity> activities)
        {
            TimeEntryActivities result = await RedmineApi.GetList <TimeEntryActivities>();

            if (result == null)
            {
                return(false);
            }

            activities.Clear();
            foreach (TimeEntryActivity e in result.Items)
            {
                activities.Add(e.Id, e);
            }

            return(true);
        }
예제 #11
0
        public static async Task <bool> Update(Dictionary <int, IssueStatus> statuses)
        {
            IssueStatuses result = await RedmineApi.GetList <IssueStatuses>();

            if (result == null)
            {
                return(false);
            }

            statuses.Clear();
            foreach (IssueStatus s in result.Items)
            {
                statuses.Add(s.Id, s);
            }

            return(true);
        }
예제 #12
0
        public static async Task <bool> Update(Dictionary <int, IssuePriority> priorities)
        {
            IssuePriorities result = await RedmineApi.GetList <IssuePriorities>();

            if (result == null)
            {
                return(false);
            }

            priorities.Clear();
            foreach (IssuePriority p in result.Items)
            {
                priorities.Add(p.Id, p);
            }

            return(true);
        }
예제 #13
0
        public static async Task <bool> Update(Dictionary <int, Issue> issues, DateTime lastUpdated)
        {
            Issues result = new Issues();

            Progress.Report(0);

            string since = lastUpdated.ToString("yyyy-MM-dd\\THH:mm:ss\\Z");

            do
            {
                result = await RedmineApi.GetPaginatedList <Issues>(result, $"updated_on=%3E%3D{since}");

                if (result == null)
                {
                    return(false);
                }

                foreach (Issue i in result.Items)
                {
                    if (issues.ContainsKey(i.Id))
                    {
                        issues[i.Id] = i;
                    }
                    else
                    {
                        issues.Add(i.Id, i);
                    }
                }

                Progress.Report(issues.Count * 100 / result.TotalCount);
                result.Offset += result.Limit;
            }while (issues.Count < result.TotalCount);
            Progress.Report(100);

            return(true);
        }
예제 #14
0
 public static async Task <Issue> Get(int issue_id)
 {
     return(await RedmineApi.GetSingle <Issue>(issue_id));
 }
예제 #15
0
 public static async Task <Project> Get(int project_id)
 {
     return(await RedmineApi.GetSingle <Project>(project_id));
 }
예제 #16
0
파일: Users.cs 프로젝트: dkhalife/redmine
 public static async Task <User> Get(int user_id)
 {
     return(await RedmineApi.GetSingle <User>(user_id));
 }