/// <summary> /// 获取注册到数据库提供者的插件服务实例。 /// </summary> /// <typeparam name="TProvider">插件服务的类型。</typeparam> /// <returns></returns> public override TProvider GetService <TProvider>() { var database = DatabaseFactory.GetDatabaseFromScope(); if (database == null) { return(base.GetService <TProvider>()); } var parameter = GetConnectionParameter(database.ConnectionString); if (parameter == null || parameter.Database == null) { return(base.GetService <TProvider>()); } var fileName = parameter.Database.ToLower(); if (fileName.EndsWith(".mdb") || fileName.EndsWith(".accdb")) { return(ProviderExtension.GetService <TProvider>(this, "Access")); } return(base.GetService <TProvider>()); }
void Refresh(IEnumerable <ScheduledEvent> schedule, TimeRange period) { ProviderExtension.GenerateSubjectColors(); var WeekSwitcher = transform.Find("Top").Find("Week"); WeekSwitcher.Find("Text").GetComponent <Text>().text = Screen.width > Screen.height ? LangueAPI.Get("schedule.period", "from [0] to [1]", period.Start.ToString("dd/MM"), period.End.ToString("dd/MM")) : period.Start.ToString("dd/MM"); transform.Find("Content").gameObject.SetActive(schedule?.Count() > 0); transform.Find("Empty").gameObject.SetActive(!(schedule?.Count() > 0)); if (schedule == null || schedule.Count() == 0) { return; } for (int i = 1; i < content.childCount; i++) { Destroy(content.GetChild(i).gameObject); } min = schedule.Min(s => s.start.TimeOfDay); foreach (var Schedule in schedule.GroupBy(e => e.start.Date)) { var datePanel = Instantiate(content.GetChild(0).gameObject, content).transform; datePanel.Find("Day").GetComponentInChildren <Text>().text = Schedule.Key.ToString("dddd", language); datePanel.name = Schedule.Key.ToString("yyyy-MM-dd"); var dateContent = datePanel.Find("Content"); var lastTime = min; foreach (var Event in Schedule) { if (lastTime < Event.start.TimeOfDay) { var hole = new GameObject(); hole.transform.SetParent(dateContent); hole.AddComponent <RectTransform>().sizeDelta = new Vector2(1, sizePerHour * (float)(Event.start.TimeOfDay - lastTime).TotalHours); } var go = Instantiate(dateContent.GetChild(0).gameObject, dateContent).transform; var goColor = Event.subject?.color ?? Color.gray; goColor.a = Event.canceled ? 0.4F : 1; go.GetComponent <Image>().color = goColor; var subject = Event.subject; if (subject == null) { Debug.LogError(Event.room + " " + Event.start + "\n" + Event.subjectID); } go.Find("Subject").GetComponent <Text>().text = subject?.name ?? Event.subjectID; go.Find("Room").GetComponent <Text>().text = Event.canceled ? $"<color=#F56E6E>{LangueAPI.Get("schedule.canceled", "Canceled")}</color>" : Event.room; go.Find("Teacher").GetComponent <Text>().text = Event.teacher ?? string.Join(" / ", subject.teachers); go.Find("Hours").GetComponent <Text>().text = $"{Event.start.ToString("HH:mm")} - {Event.end.ToString("HH:mm")}"; ((RectTransform)go).sizeDelta = new Vector2(1, sizePerHour * (float)(Event.end - Event.start).TotalHours); go.gameObject.SetActive(true); lastTime = Event.end.TimeOfDay; } datePanel.gameObject.SetActive(true); } }
public void Reload() { if (!Manager.provider.TryGetModule(out Integrations.SessionContent module)) { gameObject.SetActive(false); return; } StartCoroutine(module.GetSessionContent(week, () => { ProviderExtension.GenerateSubjectColors(); Refresh(Manager.Data.ActiveChild.SessionsContents?.Where(h => week.Contains(h.date))); })); }
public IEnumerator OpenHomeworkAttachment(Document doc) { if (string.IsNullOrEmpty(sessionId)) { yield return(Connect(Modules.Accounts.GetCredential)); } UnityWebRequest webRequest = UnityWebRequest.Post($"https://cambridgekids.sophiacloud.com/console/sophiacloud/file_mgr.php?up_file_id={doc.id}", new Dictionary <string, string> { { "User-Agent", "Mozilla/5.0 Firefox/74.0" }, { "Cookie", sessionId } }); yield return(ProviderExtension.DownloadDoc(webRequest, doc)); }
public void Initialise() { if (!Manager.provider.TryGetModule(out Integrations.Homeworks module)) { gameObject.SetActive(false); return; } if (periodsMethod == null) { periodsMethod = module.DiaryPeriods(); } var period = periods.ElementAtOrDefault(periodIndex); if (period != null) { Void(); } else if (periodIndex >= 0) { LoadNext((p) => { period = p; Void(); }); } void Void() { Action <List <Homework> > action = (homeworks) => { ProviderExtension.GenerateSubjectColors(); Refresh(homeworks.OrderBy(h => h.forThe), period); Manager.OpenModule(gameObject); }; List <Homework> GetHomeworks() => Manager.Data.ActiveChild.Homeworks?.Where(h => h.periodID != null ? h.periodID == period.id : period.timeRange.Contains(h.forThe)).ToList(); var _homeworks = GetHomeworks(); if (_homeworks?.Count > 0) { action(_homeworks); } else { StartCoroutine(module.GetHomeworks(period, () => action(GetHomeworks()))); } } }
/// <summary> /// 获取注册到数据库提供者的所有插件服务。 /// </summary> /// <returns></returns> public virtual IEnumerable <IProviderService> GetServices() { return(ProviderExtension.GetServices(this)); }
/// <summary> /// 获取注册到数据库提供者的插件服务实例。 /// </summary> /// <typeparam name="TProvider">插件服务的类型。</typeparam> /// <returns></returns> public virtual TProvider GetService <TProvider>() where TProvider : class, IProviderService { return(ProviderExtension.GetService <TProvider>(this)); }