frmindex.pas 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. unit frmindex;
  2. {$mode ObjFPC}
  3. interface
  4. uses
  5. SysUtils, Classes, Rtl.HTMLActions, htmlfragment, dbwebwidget, webwidget,
  6. DB, Web, jsondataset, localjsondataset;
  7. type
  8. { TIndexFragment }
  9. TIndexFragment = class(THTMLFragment)
  10. DSCountries: TDataSource;
  11. ltwFlags: TDBLoopTemplateWidget;
  12. alIndex: THTMLElementActionList;
  13. alShowHide: THTMLElementAction;
  14. jdsCountries: TLocalJSONDataset;
  15. jdsCountriesContinent: TStringField;
  16. jdsCountriesContinentFull: TStringField;
  17. jdsCountriesFlagCode: TStringField;
  18. jdsCountriesISO2: TStringField;
  19. jdsCountriesISO3: TStringField;
  20. jdsCountriesName: TStringField;
  21. jdsCountriesPrefix: TIntegerField;
  22. procedure alShowHideExecute(Sender: TObject; Event: TJSEvent);
  23. procedure DataModuleRendered(Sender: TObject);
  24. procedure ltwFlagsGetGroupValue(Sender: TObject;
  25. aDataset: TDataset; aValue: TLoopTemplateValue);
  26. procedure jdsCountriesCalcFields(DataSet: TDataSet);
  27. private
  28. public
  29. end;
  30. var
  31. IndexFragment: TIndexFragment;
  32. implementation
  33. uses JS;
  34. {$R *.lfm}
  35. var
  36. // In countrycodes.js
  37. Countries : TJSArray; external name 'countries';
  38. { TIndexFragment }
  39. procedure TIndexFragment.ltwFlagsGetGroupValue(Sender: TObject;
  40. aDataset: TDataset; aValue: TLoopTemplateValue);
  41. begin
  42. aValue.Value:=IntToStr((aDataset.RecNo-1) div 4);
  43. end;
  44. procedure TIndexFragment.jdsCountriesCalcFields(DataSet: TDataSet);
  45. Var
  46. S : String;
  47. begin
  48. jdsCountriesFlagCode.AsString:=LowerCase(jdsCountriesISO2.AsString);
  49. Case jdsCountriesContinent.AsString of
  50. 'AF' : S:='Africa';
  51. 'AN' : S:='Antarctica';
  52. 'AS' : S:='Asia';
  53. 'EU' : S:='Europe';
  54. 'OC' : S:='Oceania';
  55. 'NA' : S:='North America';
  56. 'SA' : S:='South America';
  57. end;
  58. jdsCountriesContinentFull.AsString:=S;
  59. end;
  60. procedure TIndexFragment.DataModuleRendered(Sender: TObject);
  61. begin
  62. jdsCountries.Rows:=Countries;
  63. end;
  64. procedure TIndexFragment.alShowHideExecute(Sender: TObject; Event: TJSEvent);
  65. begin
  66. if jdsCountries.Active then
  67. begin
  68. jdsCountries.Close;
  69. (sender as THTMLElementAction).Value:='Show flags';
  70. end
  71. else
  72. begin
  73. if not Assigned(jdsCountries.Rows) then
  74. jdsCountries.Rows:=Countries;
  75. jdsCountries.Open;
  76. (sender as THTMLElementAction).Value:='Hide flags';
  77. end;
  78. end;
  79. end.