public async Task Search()
        {
            string             text      = SearchBar.Text ?? "";
            ApiRecordViewModel viewModel = await GetRecordsFromApi(this.GetAppUrl(), text);

            BindingContext = viewModel;
        }
        async protected override void OnAppearing()
        {
            base.OnAppearing();
            ApiRecordViewModel viewModel = await GetRecordsFromApi(this.GetAppUrl(), "");

            BindingContext = viewModel;
        }
        async void OnSourceScriptClicked(object sender, EventArgs args)
        {
            Label senderLabel = sender as Label;

            if (senderLabel == null)
            {
                return;
            }
            String             scriptName = senderLabel.FormattedText.ToString().Replace("Plik:", "");
            ApiRecordViewModel viewModel  = await GetRecordsFromApi(ScriptUrl, scriptName);

            BindingContext = viewModel;
        }
 public ItemsPage()
 {
     _cache = new MemoryCache(new MemoryCacheOptions()
     {
     });
     BindingContext = viewModel = new ApiRecordViewModel();
     InitializeComponent();
     ViewsCominicator.Instance.Register("ItemsPage", this);
     if (this.CurrentPage <= 0)
     {
         PrevButton.IsEnabled = false;
         PrevButton.IsVisible = false;
     }
     SearchBar.SearchCommand = new Command(async() =>
     {
         this.CurrentPage = 0;
         await this.Search();
     });
 }
        async Task <ApiRecordViewModel> GetRecordsFromApi(String baseUrl, String name)
        {
            string content = "";

            if (!_cache.TryGetValue(name + this.CurrentPage, out content))
            {
                Task <string> downloadTask = HttpClient.GetStringAsync(baseUrl + name);
                content = await downloadTask;
                _cache.Set(name, content);
            }
            JObject            jObject    = JObject.Parse(content);
            List <ApiRecord>   records    = JsonConvert.DeserializeObject <List <ApiRecord> >(jObject["records"].ToString());
            ApiRecordViewModel resultView = new ApiRecordViewModel(records);

            resultView.DefaultPageSize         = (int)jObject["defaultPageSize"];
            resultView.RecordCoundTotal        = (int)jObject["recordCountTotal"];
            resultView.PageNumber              = (int)jObject["pageNumber"];
            resultView.RecordsOnPage           = (int)jObject["recordsOnPage"];
            resultView.FirstRecordOnPageNumber = (resultView.PageNumber * resultView.DefaultPageSize) + 1;
            int lastNumber = resultView.FirstRecordOnPageNumber + resultView.RecordsOnPage - 1;

            resultView.LastRecordOnPageNumber = lastNumber;
            return(resultView);
        }