akfatimeline 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/Timeline.js +16 -48
  2. package/{src/components/Timeline/DailyView.js → dist/components/Timeline/DailyView.jsx} +1 -0
  3. package/{src/components/Timeline/EventTooltip.js → dist/components/Timeline/EventTooltip.jsx} +207 -206
  4. package/{src/components/Timeline/Indicator.js → dist/components/Timeline/Indicator.jsx} +27 -26
  5. package/{src/components/Timeline/MasterHeader.js → dist/components/Timeline/MasterHeader.jsx} +105 -104
  6. package/{src/components/Timeline/Resources.js → dist/components/Timeline/Resources.jsx} +54 -53
  7. package/{src/components/Timeline/ResourcesHeader.js → dist/components/Timeline/ResourcesHeader.jsx} +15 -14
  8. package/{src/components/Timeline/Timeline.js → dist/components/Timeline/Timeline.jsx} +572 -607
  9. package/{src/components/Timeline/TimelineContent.js → dist/components/Timeline/TimelineContent.jsx} +837 -838
  10. package/{src/components/Timeline/TimelineHeader.js → dist/components/Timeline/TimelineHeader.jsx} +55 -54
  11. package/dist/components/Timeline/TimelineMonthContainer.js +2 -2
  12. package/package.json +25 -25
  13. package/src/components/Timeline/AutocompleteSelect.jsx +150 -0
  14. package/src/components/Timeline/ContextMenu.jsx +149 -0
  15. package/src/components/Timeline/DailyView.jsx +256 -0
  16. package/src/components/Timeline/EventBadge.jsx +26 -0
  17. package/src/components/Timeline/EventDetailModal.jsx +138 -0
  18. package/src/components/Timeline/EventIcon.jsx +47 -0
  19. package/src/components/Timeline/EventTooltip.jsx +207 -0
  20. package/src/components/Timeline/Indicator.jsx +27 -0
  21. package/src/components/Timeline/LoadingSpinner.jsx +48 -0
  22. package/src/components/Timeline/MasterHeader.jsx +105 -0
  23. package/src/components/Timeline/Resources.jsx +54 -0
  24. package/src/components/Timeline/ResourcesHeader.jsx +15 -0
  25. package/src/components/Timeline/Timeline.jsx +572 -0
  26. package/src/components/Timeline/TimelineContent.jsx +837 -0
  27. package/src/components/Timeline/TimelineHeader.jsx +55 -0
  28. package/src/components/Timeline/TimelineMonthContainer.js +2 -2
  29. package/src/library.js +8 -8
  30. /package/{src/components/Timeline/AutocompleteSelect.js → dist/components/Timeline/AutocompleteSelect.jsx} +0 -0
  31. /package/{src/components/Timeline/ContextMenu.js → dist/components/Timeline/ContextMenu.jsx} +0 -0
  32. /package/{src/components/Timeline/EventBadge.js → dist/components/Timeline/EventBadge.jsx} +0 -0
  33. /package/{src/components/Timeline/EventDetailModal.js → dist/components/Timeline/EventDetailModal.jsx} +0 -0
  34. /package/{src/components/Timeline/EventIcon.js → dist/components/Timeline/EventIcon.jsx} +0 -0
  35. /package/{src/components/Timeline/LoadingSpinner.js → dist/components/Timeline/LoadingSpinner.jsx} +0 -0
@@ -1,104 +1,105 @@
1
- import React from "react";
2
- import "./Timeline.css";
3
-
4
- const MasterHeader = ({
5
- selectedDate,
6
- onDateSelect,
7
- onToday,
8
- onAdvance,
9
- onRetreat,
10
- onMonthAdvance,
11
- onMonthRetreat,
12
- dayRange,
13
- setDayRange,
14
- zoomLevel = 1.0,
15
- setZoomLevel,
16
- zoomOn = true,
17
- minZoomLevel = 0.5,
18
- maxZoomLevel = 3.0,
19
- zoomStep = 0.25,
20
- }) => {
21
- const formattedDate = new Date(
22
- selectedDate.getTime() + 24 * 60 * 60 * 1000 - selectedDate.getTimezoneOffset() * 60000
23
- )
24
- .toISOString()
25
- .split("T")[0]; // YYYY-MM-DD formatı
26
-
27
- return (
28
- <div className="master-header-container">
29
- <div className="master-header-buttons">
30
- <button className="master-header-btn" onClick={onMonthRetreat}>
31
- 1 Ay Geri
32
- </button>
33
-
34
- <button className="master-header-btn" onClick={onRetreat}>
35
- 5 Gün Geri
36
- </button>
37
-
38
- <input
39
- type="date"
40
- className="master-header-date-picker"
41
- value={formattedDate} // Seçili tarih burada gösteriliyor
42
- onChange={(e) => onDateSelect(e.target.value)} // Tarih seçimi
43
- onKeyDown={(e) => e.preventDefault()} // Manuel girişleri engelle
44
- />
45
-
46
-
47
- <button className="master-header-btn" onClick={onAdvance}>
48
- 5 Gün İleri
49
- </button>
50
-
51
- <button className="master-header-btn" onClick={onMonthAdvance}>
52
- 1 Ay İleri
53
- </button>
54
-
55
- <button className="master-header-btn" onClick={onToday}>
56
- Bugün
57
- </button>
58
- </div>
59
-
60
- <select
61
- className="master-header-select"
62
- value={dayRange}
63
- onChange={(e) => setDayRange(parseInt(e.target.value, 10))}
64
- >
65
- <option value={30}>30 Gün</option>
66
- <option value={60}>60 Gün</option>
67
- <option value={90}>90 Gün</option>
68
- </select>
69
-
70
- {/* Zoom Kontrolleri */}
71
- {zoomOn && setZoomLevel && (
72
- <div className="master-header-zoom-controls">
73
- <button
74
- className="master-header-btn"
75
- onClick={() => {
76
- const newZoom = Math.max(minZoomLevel, zoomLevel - zoomStep);
77
- setZoomLevel(newZoom);
78
- }}
79
- disabled={zoomLevel <= minZoomLevel}
80
- title={`Zoom Out (${Math.round((zoomLevel - zoomStep) * 100)}%)`}
81
- >
82
-
83
- </button>
84
- <span className="master-header-zoom-level">
85
- {Math.round(zoomLevel * 100)}%
86
- </span>
87
- <button
88
- className="master-header-btn"
89
- onClick={() => {
90
- const newZoom = Math.min(maxZoomLevel, zoomLevel + zoomStep);
91
- setZoomLevel(newZoom);
92
- }}
93
- disabled={zoomLevel >= maxZoomLevel}
94
- title={`Zoom In (${Math.round((zoomLevel + zoomStep) * 100)}%)`}
95
- >
96
- +
97
- </button>
98
- </div>
99
- )}
100
- </div>
101
- );
102
- };
103
-
104
- export default MasterHeader;
1
+ import React from "react";
2
+ import "./Timeline.css";
3
+
4
+ const MasterHeader = ({
5
+ selectedDate,
6
+ onDateSelect,
7
+ onToday,
8
+ onAdvance,
9
+ onRetreat,
10
+ onMonthAdvance,
11
+ onMonthRetreat,
12
+ dayRange,
13
+ setDayRange,
14
+ zoomLevel = 1.0,
15
+ setZoomLevel,
16
+ zoomOn = true,
17
+ minZoomLevel = 0.5,
18
+ maxZoomLevel = 3.0,
19
+ zoomStep = 0.25,
20
+ }) => {
21
+ const formattedDate = new Date(
22
+ selectedDate.getTime() + 24 * 60 * 60 * 1000 - selectedDate.getTimezoneOffset() * 60000
23
+ )
24
+ .toISOString()
25
+ .split("T")[0]; // YYYY-MM-DD formatı
26
+
27
+ return (
28
+ <div className="master-header-container">
29
+ <div className="master-header-buttons">
30
+ <button className="master-header-btn" onClick={onMonthRetreat}>
31
+ 1 Ay Geri
32
+ </button>
33
+
34
+ <button className="master-header-btn" onClick={onRetreat}>
35
+ 5 Gün Geri
36
+ </button>
37
+
38
+ <input
39
+ type="date"
40
+ className="master-header-date-picker"
41
+ value={formattedDate} // Seçili tarih burada gösteriliyor
42
+ onChange={(e) => onDateSelect(e.target.value)} // Tarih seçimi
43
+ onKeyDown={(e) => e.preventDefault()} // Manuel girişleri engelle
44
+ />
45
+
46
+
47
+ <button className="master-header-btn" onClick={onAdvance}>
48
+ 5 Gün İleri
49
+ </button>
50
+
51
+ <button className="master-header-btn" onClick={onMonthAdvance}>
52
+ 1 Ay İleri
53
+ </button>
54
+
55
+ <button className="master-header-btn" onClick={onToday}>
56
+ Bugün
57
+ </button>
58
+ </div>
59
+
60
+ <select
61
+ className="master-header-select"
62
+ value={dayRange}
63
+ onChange={(e) => setDayRange(parseInt(e.target.value, 10))}
64
+ >
65
+ <option value={30}>30 Gün</option>
66
+ <option value={60}>60 Gün</option>
67
+ <option value={90}>90 Gün</option>
68
+ </select>
69
+
70
+ {/* Zoom Kontrolleri */}
71
+ {zoomOn && setZoomLevel && (
72
+ <div className="master-header-zoom-controls">
73
+ <button
74
+ className="master-header-btn"
75
+ onClick={() => {
76
+ const newZoom = Math.max(minZoomLevel, zoomLevel - zoomStep);
77
+ setZoomLevel(newZoom);
78
+ }}
79
+ disabled={zoomLevel <= minZoomLevel}
80
+ title={`Zoom Out (${Math.round((zoomLevel - zoomStep) * 100)}%)`}
81
+ >
82
+
83
+ </button>
84
+ <span className="master-header-zoom-level">
85
+ {Math.round(zoomLevel * 100)}%
86
+ </span>
87
+ <button
88
+ className="master-header-btn"
89
+ onClick={() => {
90
+ const newZoom = Math.min(maxZoomLevel, zoomLevel + zoomStep);
91
+ setZoomLevel(newZoom);
92
+ }}
93
+ disabled={zoomLevel >= maxZoomLevel}
94
+ title={`Zoom In (${Math.round((zoomLevel + zoomStep) * 100)}%)`}
95
+ >
96
+ +
97
+ </button>
98
+ </div>
99
+ )}
100
+ </div>
101
+ );
102
+ };
103
+
104
+ export default MasterHeader;
105
+
@@ -1,53 +1,54 @@
1
- import React from "react";
2
-
3
- const Resources = ({
4
- groupedResources = [], // Kaynakların listesi
5
- collapsedGroups = {}, // Grupların açık/kapalı durumunu tutan nesne
6
- toggleGroupCollapse, // Grupları açma/kapama fonksiyonu
7
- resourceSettings = {
8
- showIdAsName: false, // Varsayılan: `name` varsa onu göster, yoksa `id`
9
- isGrouped: true, // Varsayılan: Gruplama açık
10
- isCollapsible: true, // Varsayılan: Gruplar açılıp kapanabilir
11
- },
12
- }) => {
13
- const { showIdAsName, isGrouped, isCollapsible } = resourceSettings;
14
-
15
- return (
16
- <div className="timeline-resources">
17
- {isGrouped ? (
18
- // Gruplama aktif
19
- groupedResources.map((group, groupIndex) => (
20
- <div key={groupIndex} className="resource-group">
21
- {/* Grup Başlığı */}
22
- <div
23
- className="resource-group-header"
24
- onClick={() => isCollapsible && toggleGroupCollapse(group.groupName)}
25
- >
26
- {group.groupName}{" "}
27
- {isCollapsible && (collapsedGroups[group.groupName] ? "▲" : "▼")}
28
- </div>
29
-
30
- {/* Grup İçindeki Kaynaklar */}
31
- {!collapsedGroups[group.groupName] &&
32
- group.resources.map((resource, resourceIndex) => (
33
- <div key={resourceIndex} className="resource-cell">
34
- {showIdAsName ? resource.id : resource.name || resource.id}
35
- {/* Eğer `name` yoksa `id` kullanılır */}
36
- </div>
37
- ))}
38
- </div>
39
- ))
40
- ) : (
41
- // Gruplama yok
42
- groupedResources.flatMap((group) => group.resources).map((resource, resourceIndex) => (
43
- <div key={resourceIndex} className="resource-cell">
44
- {showIdAsName ? resource.id : resource.name || resource.id}
45
- {/* Eğer `name` yoksa `id` kullanılır */}
46
- </div>
47
- ))
48
- )}
49
- </div>
50
- );
51
- };
52
-
53
- export default Resources;
1
+ import React from "react";
2
+
3
+ const Resources = ({
4
+ groupedResources = [], // Kaynakların listesi
5
+ collapsedGroups = {}, // Grupların açık/kapalı durumunu tutan nesne
6
+ toggleGroupCollapse, // Grupları açma/kapama fonksiyonu
7
+ resourceSettings = {
8
+ showIdAsName: false, // Varsayılan: `name` varsa onu göster, yoksa `id`
9
+ isGrouped: true, // Varsayılan: Gruplama açık
10
+ isCollapsible: true, // Varsayılan: Gruplar açılıp kapanabilir
11
+ },
12
+ }) => {
13
+ const { showIdAsName, isGrouped, isCollapsible } = resourceSettings;
14
+
15
+ return (
16
+ <div className="timeline-resources">
17
+ {isGrouped ? (
18
+ // Gruplama aktif
19
+ groupedResources.map((group, groupIndex) => (
20
+ <div key={groupIndex} className="resource-group">
21
+ {/* Grup Başlığı */}
22
+ <div
23
+ className="resource-group-header"
24
+ onClick={() => isCollapsible && toggleGroupCollapse(group.groupName)}
25
+ >
26
+ {group.groupName}{" "}
27
+ {isCollapsible && (collapsedGroups[group.groupName] ? "▲" : "▼")}
28
+ </div>
29
+
30
+ {/* Grup İçindeki Kaynaklar */}
31
+ {!collapsedGroups[group.groupName] &&
32
+ group.resources.map((resource, resourceIndex) => (
33
+ <div key={resourceIndex} className="resource-cell">
34
+ {showIdAsName ? resource.id : resource.name || resource.id}
35
+ {/* Eğer `name` yoksa `id` kullanılır */}
36
+ </div>
37
+ ))}
38
+ </div>
39
+ ))
40
+ ) : (
41
+ // Gruplama yok
42
+ groupedResources.flatMap((group) => group.resources).map((resource, resourceIndex) => (
43
+ <div key={resourceIndex} className="resource-cell">
44
+ {showIdAsName ? resource.id : resource.name || resource.id}
45
+ {/* Eğer `name` yoksa `id` kullanılır */}
46
+ </div>
47
+ ))
48
+ )}
49
+ </div>
50
+ );
51
+ };
52
+
53
+ export default Resources;
54
+
@@ -1,14 +1,15 @@
1
- // ResourcesHeader.js
2
- import React from "react";
3
- import "./Timeline.css";
4
-
5
- const ResourcesHeader = ({ content }) => {
6
- return (
7
- <div className="resources-header">
8
- {/* content => string veya React node */}
9
- {content}
10
- </div>
11
- );
12
- };
13
-
14
- export default ResourcesHeader;
1
+ // ResourcesHeader.jsx
2
+ import React from "react";
3
+ import "./Timeline.css";
4
+
5
+ const ResourcesHeader = ({ content }) => {
6
+ return (
7
+ <div className="resources-header">
8
+ {/* content => string veya React node */}
9
+ {content}
10
+ </div>
11
+ );
12
+ };
13
+
14
+ export default ResourcesHeader;
15
+